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);
        }
Esempio n. 2
0
        /// ------------------------------------------------------------------------------------
        /// <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;
        }