using System.IO;
using Abp;
using Abp.Localization.Dictionaries.Xml;
namespace WeApp.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);
}
}
}