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); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Loads the string cache from all the specified tmx files /// </summary> /// ------------------------------------------------------------------------------------ internal LocalizedStringCache(LocalizationManager owningManager) { OwningManager = owningManager; TmxDocument = CreateEmptyStringFile(); _englishTuIdsNoLongerUsed = new HashSet <string>(); try { MergeTmxFilesIntoCache(OwningManager.TmxFilenamesToAddToCache); } catch (Exception e) { MessageBox.Show("Error occurred reading localization file:" + Environment.NewLine + e.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Warning); LocalizationManager.SetUILanguage(LocalizationManager.kDefaultLang, false); } _tuUpdater = new TransUnitUpdater(TmxDocument); var replacement = TmxDocument.Header.GetPropValue("x-ampersandreplacement"); if (replacement != null) { _ampersandReplacement = replacement; } replacement = TmxDocument.Header.GetPropValue(kHardLineBreakReplacementProperty); if (replacement != null) { s_literalNewline = replacement; } LeafNodeList = new List <LocTreeNode>(); IsDirty = false; }