public void All()
        {
            var cache = new IsolatedKeyValueCache <string, string>(
                new[] { new CacheIsolateByLocale() },
                new MemoryCache <IsolatedCacheKey <string>, string>());

            // Set
            LocaleUtils.SetThreadLanguage("zh-CN");
            cache.Put("Key", "ValueForCN", TimeSpan.FromSeconds(5));
            LocaleUtils.SetThreadLanguage("en-US");
            cache.Put("Key", "ValueForUS", TimeSpan.FromSeconds(5));
            // Get
            LocaleUtils.SetThreadLanguage("zh-CN");
            Assert.Equals(cache.GetOrDefault("Key"), "ValueForCN");
            LocaleUtils.SetThreadLanguage("en-US");
            Assert.Equals(cache.GetOrDefault("Key"), "ValueForUS");
            // Remove
            LocaleUtils.SetThreadLanguage("zh-CN");
            cache.Remove("Key");
            Assert.Equals(cache.GetOrDefault("Key"), null);
            LocaleUtils.SetThreadLanguage("en-US");
            Assert.Equals(cache.GetOrDefault("Key"), "ValueForUS");
            cache.Remove("Key");
            Assert.Equals(cache.GetOrDefault("Key"), null);
        }
Пример #2
0
 public void Render()
 {
     LocaleUtils.SetThreadLanguage("zh-CN");
     Assert.Equals(Template.Parse("{% html_lang %}").Render(), "zh-CN");
     LocaleUtils.SetThreadLanguage("en-US");
     Assert.Equals(Template.Parse("{% html_lang %}").Render(), "en-US");
 }
Пример #3
0
 public void SetThreadLanguage()
 {
     Assert.IsTrue(LocaleUtils.SetThreadLanguage("zh-CN"));
     Assert.Equals(CultureInfo.CurrentCulture.Name, "zh-CN");
     Assert.Equals(CultureInfo.CurrentUICulture.Name, "zh-CN");
     Assert.IsTrue(LocaleUtils.SetThreadLanguage("en-US"));
     Assert.Equals(CultureInfo.CurrentCulture.Name, "en-US");
     Assert.Equals(CultureInfo.CurrentUICulture.Name, "en-US");
     Assert.IsTrue(!LocaleUtils.SetThreadLanguage(null));
     Assert.IsTrue(!LocaleUtils.SetThreadLanguage("NotExist"));
     Assert.Equals(CultureInfo.CurrentCulture.Name, "en-US");
     Assert.Equals(CultureInfo.CurrentUICulture.Name, "en-US");
 }
Пример #4
0
 public void SerializeT()
 {
     using (Application.OverrideIoc()) {
         Application.Ioc.Unregister <ITranslateProvider>();
         Application.Ioc.Unregister <TranslateManager>();
         Application.Ioc.RegisterMany <TranslateManagerTest.TestTranslateProviderCN>();
         Application.Ioc.RegisterMany <TranslateManager>(ReuseType.Singleton);
         LocaleUtils.SetThreadLanguage("zh-CN");
         var obj  = new { field = new T("Original") };
         var json = JsonConvert.SerializeObject(obj);
         Assert.Equals(json, "{\"field\":\"TranslatedCN\"}");
     }
 }
Пример #5
0
 public void DeserializeT()
 {
     using (Application.OverrideIoc()) {
         Application.Ioc.Unregister <ITranslateProvider>();
         Application.Ioc.Unregister <TranslateManager>();
         Application.Ioc.RegisterMany <TranslateManagerTest.TestTranslateProviderCN>();
         Application.Ioc.RegisterMany <TranslateManager>(ReuseType.Singleton);
         LocaleUtils.SetThreadLanguage("zh-CN");
         var json = "\"Original\"";
         var t    = JsonConvert.DeserializeObject <T>(json);
         Assert.Equals(t.ToString(), "TranslatedCN");
     }
 }
        public void ByLocale()
        {
            var policy = Application.Ioc.Resolve <ICacheIsolationPolicy>(serviceKey: "Locale");

            LocaleUtils.SetThreadLanguage("zh-CN");
            LocaleUtils.SetThreadTimezoneAutomatic("China Standard Time");
            Assert.Equals(policy.GetIsolationKey(), Pair.Create(
                              "zh-CN", LocaleUtils.GetTimezoneInfo("China Standard Time")));
            LocaleUtils.SetThreadLanguage("en-US");
            LocaleUtils.SetThreadTimezoneAutomatic("GMT Standard Time");
            Assert.Equals(policy.GetIsolationKey(), Pair.Create(
                              "en-US", LocaleUtils.GetTimezoneInfo("GMT Standard Time")));
        }
        /// <summary>
        /// 根据传入的Http头设置语言和时区
        /// </summary>
        public void OnRequest()
        {
            var request  = HttpManager.CurrentContext.Request;
            var language = request.GetHeader(LanguageHeader);
            var timezone = request.GetHeader(TimezoneHeader);

            if (!string.IsNullOrEmpty(language))
            {
                LocaleUtils.SetThreadLanguage(language);
            }
            if (!string.IsNullOrEmpty(timezone))
            {
                LocaleUtils.SetThreadTimezone(timezone);
            }
        }
Пример #8
0
 public void Translate()
 {
     using (Application.OverrideIoc()) {
         Application.Ioc.Unregister <ITranslateProvider>();
         Application.Ioc.Unregister <TranslateManager>();
         Application.Ioc.RegisterMany <TestTranslateProviderCN>();
         Application.Ioc.RegisterMany <TestTranslateProviderUS>();
         Application.Ioc.RegisterMany <TranslateManager>(ReuseType.Singleton);
         var translateManager = Application.Ioc.Resolve <TranslateManager>();
         Assert.Equals(translateManager.Translate("Original", "zh-CN"), "TranslatedCN");
         Assert.Equals(translateManager.Translate("Original", "en-US"), "TranslatedUS");
         LocaleUtils.SetThreadLanguage("zh-CN");
         Assert.Equals(translateManager.Translate("Original"), "TranslatedCN");
         LocaleUtils.SetThreadLanguage("en-US");
         Assert.Equals(translateManager.Translate("Original"), "TranslatedUS");
     }
 }