/// <summary> /// Checks if we have a localization for the current culture's language and if not falls back /// the CurrentCulture and CurrentUICulture to the ones defined in the default resources. /// It also sets the language of the root visual. This affects all converters in data bindings. /// </summary> /// <remarks>This method should be called after App.InitializeComponent() </remarks> public static void InitializeCulture(this Application app, CultureInfo forcedCulture) { DebugManager.LogTrace("App initializing culture..."); var uiCulture = CultureInfo.CurrentUICulture; //var resourceCulture = new CultureInfo("ja"); if (uiCulture.TwoLetterISOLanguageName != forcedCulture.TwoLetterISOLanguageName) { Thread.CurrentThread.CurrentUICulture = forcedCulture; } Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture; DebugManager.LogTrace("App initializing culture completed for " + forcedCulture.TwoLetterISOLanguageName); var visualElement = app.GetMainVisual(); if (visualElement == null) { DebugManager.LogWarning("ApplicationEx.InitializeCulture() called before initialized App.RootVisual or App.MainWindow"); } else { visualElement.Language = XmlLanguage.GetLanguage(forcedCulture.Name); } }