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); }
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"); }
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"); }
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\"}"); } }
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); } }
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"); } }