private static ILocalizationManager Create(string desiredUiLangId, string appId, string appName, string relativeSettingPathForLocalizationFolder, Icon applicationIcon, Func <string, ILocalizationManagerInternal <T> > createMethod) { if (string.IsNullOrEmpty(relativeSettingPathForLocalizationFolder)) { relativeSettingPathForLocalizationFolder = appName; } else if (Path.IsPathRooted(relativeSettingPathForLocalizationFolder)) { throw new ArgumentException("Relative (non-rooted) path expected", "relativeSettingPathForLocalizationFolder"); } var directoryOfWritableTranslationFiles = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), relativeSettingPathForLocalizationFolder, "localizations"); if (!LoadedManagers.TryGetValue(appId, out var lm)) { lm = createMethod(directoryOfWritableTranslationFiles); LoadedManagers[appId] = lm; PreviouslyLoadedManagers.Remove(appId); } lm.ApplicationIcon = applicationIcon; if (string.IsNullOrEmpty(desiredUiLangId)) { desiredUiLangId = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName; } var ci = L10NCultureInfo.GetCultureInfo(desiredUiLangId); if (!GetUILanguages(true).Contains(ci)) { using (var dlg = new LanguageChoosingDialog(ci, applicationIcon)) { dlg.ShowDialog(); desiredUiLangId = dlg.SelectedLanguage; } } LocalizationManager.SetUILanguage(desiredUiLangId, false); LocalizationManager.EnableClickingOnControlToBringUpLocalizationDialog = true; return(lm); }
/// ------------------------------------------------------------------------------------ public static void SetUILanguage(string langId, bool reapplyLocalizationsToAllObjectsInAllManagers) { if (UILanguageId == langId || string.IsNullOrEmpty(langId)) { return; } var ci = L10NCultureInfo.GetCultureInfo(langId); if (ci.RawCultureInfo != null) { Thread.CurrentThread.CurrentUICulture = ci.RawCultureInfo; } else { Thread.CurrentThread.CurrentUICulture = CultureInfo.InvariantCulture; } L10NCultureInfo.CurrentCulture = ci; s_uiLangId = langId; switch (TranslationMemoryKind) { default: LocalizationManagerInternal <TMXDocument> .SetAvailableFallbackLanguageIds(GetAvailableLocalizedLanguages()); break; case TranslationMemory.XLiff: LocalizationManagerInternal <XLiffDocument> .SetAvailableFallbackLanguageIds(GetAvailableLocalizedLanguages()); break; } if (reapplyLocalizationsToAllObjectsInAllManagers) { ReapplyLocalizationsToAllObjectsInAllManagers(); } }