Ejemplo n.º 1
0
        public override void Initialize(string sourceName, ILocalizationConfiguration localizationConfiguration)
        {
            string[] fileNames = Directory.GetFiles(_directoryPath, "*.json", SearchOption.TopDirectoryOnly);

            foreach (string fileName in fileNames)
            {
                JsonLocalizationDictionary dictionary = CreateJsonLocalizationDictionary(fileName);
                string dicCultureInfoName             = dictionary.CultureInfo.Name;
                if (Dictionaries.ContainsKey(dicCultureInfoName))
                {
                    throw new Exception(sourceName + " source contains more than one dictionary for the culture: " + dicCultureInfoName);
                }

                Dictionaries[dicCultureInfoName] = dictionary;
                LanguageIcon languageIcon = LocalizationConsts.LanguageIcons.Where(p => dicCultureInfoName.StartsWith(p.CountryName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                localizationConfiguration.Languages.Add(
                    new LanguageInfo(dicCultureInfoName, dictionary.CultureInfo.NativeName, icon: languageIcon?.Icon, isDefault: CultureInfo.CurrentUICulture.Name.Equals(dicCultureInfoName)));

                if (!fileName.EndsWith(sourceName + ".json"))
                {
                    continue;
                }
                if (DefaultDictionary != null)
                {
                    throw new Exception("Only one default localization dictionary can be for source: " + sourceName);
                }

                DefaultDictionary = dictionary;
            }
        }
        public override void Initialize(string sourceName, ILocalizationConfiguration localizationConfiguration)
        {
            CultureInfo[] allCultureInfos = CultureInfo.GetCultures(CultureTypes.AllCultures);
            List<string> resourceNames = _assembly.GetManifestResourceNames().Where(resourceName =>
                allCultureInfos.Any(culture => resourceName.EndsWith($"{sourceName}.json", true, null) ||
                                               resourceName.EndsWith($"{sourceName}-{culture.Name}.json", true,
                                                   null))).ToList();
            foreach (string resourceName in resourceNames)
            {
                if (!resourceName.StartsWith(_rootNamespace)) continue;
                using (Stream stream = _assembly.GetManifestResourceStream(resourceName))
                {
                    string jsonString = Utf8Helper.ReadStringFromStream(stream);

                    JsonLocalizationDictionary dictionary = CreateJsonLocalizationDictionary(jsonString);
                    string dicCultureInfoName = dictionary.CultureInfo.Name;
                    if (Dictionaries.ContainsKey(dicCultureInfoName))
                    {
                        throw new Exception(sourceName + " source contains more than one dictionary for the culture: " + dicCultureInfoName);
                    }
                    Dictionaries[dicCultureInfoName] = dictionary;
                    LanguageIcon languageIcon = LocalizationConsts.LanguageIcons.Where(p => dicCultureInfoName.StartsWith(p.CountryName, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();
                    localizationConfiguration.Languages.Add(
                        new LanguageInfo(dicCultureInfoName, dictionary.CultureInfo.NativeName, icon: languageIcon?.Icon, isDefault: CultureInfo.CurrentUICulture.Name.Equals(dicCultureInfoName)));

                    if (!resourceName.EndsWith(sourceName + ".json")) continue;
                    if (DefaultDictionary != null)
                    {
                        throw new Exception("Only one default localization dictionary can be for source: " + sourceName);
                    }

                    DefaultDictionary = dictionary;
                }
            }
        }