using System.IO; using Abp; using Abp.Localization.Dictionaries.Xml; namespace WeOnlineApp.Localization { public class IwbXmlFileLocalizationDictionaryProvider : LocalizationDictionaryProviderBase { private readonly string _directoryPath; /// /// Creates a new . /// /// XML files Path public IwbXmlFileLocalizationDictionaryProvider(string directoryPath) { _directoryPath = directoryPath; } public override void Initialize(string sourceName) { 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); } } }