示例#1
0
        /// <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);
            }
        }