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; } } }