using Abp; using Abp.Localization.Dictionaries; using Abp.Localization.Dictionaries.Xml; namespace VberZero.Localization; public class VzXmlFileLocalizationDictionaryProvider : LocalizationDictionaryProviderBase { private readonly string _directoryPath; public VzXmlFileLocalizationDictionaryProvider(string directoryPath) { _directoryPath = directoryPath; } protected override void InitializeDictionaries() { var fileNames = Directory.GetFiles(_directoryPath, "*.xml", SearchOption.TopDirectoryOnly); foreach (var fileName in fileNames) { var dictionary = CreateXmlLocalizationDictionary(fileName); if (Dictionaries.ContainsKey(dictionary.CultureInfo.Name)) { throw new AbpInitializationException(SourceName + " source contains more than one dictionary for the culture: " + dictionary.CultureInfo.Name); } Dictionaries[dictionary.CultureInfo.Name] = dictionary; if (fileName.EndsWith(SourceName + ".xml")) { if (DefaultDictionary != null) { throw new AbpInitializationException("Only one default localization dictionary can be for source: " + SourceName); } DefaultDictionary = dictionary; } } } public void Refresh(string sourceName) { var fileNames = Directory.GetFiles(_directoryPath, "*.xml", SearchOption.TopDirectoryOnly); foreach (var fileName in fileNames) { var dictionary = CreateXmlLocalizationDictionary(fileName); Dictionaries[dictionary.CultureInfo.Name] = dictionary; if (fileName.EndsWith(sourceName + ".xml")) { DefaultDictionary = dictionary; } } } protected virtual XmlLocalizationDictionary CreateXmlLocalizationDictionary(string fileName) { return XmlLocalizationDictionary.BuildFomFile(fileName); } }