VzXmlFileLocalizationDictionaryProvider.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. using Abp;
  2. using Abp.Localization.Dictionaries;
  3. using Abp.Localization.Dictionaries.Xml;
  4. namespace VberZero.Localization;
  5. public class VzXmlFileLocalizationDictionaryProvider : LocalizationDictionaryProviderBase
  6. {
  7. private readonly string _directoryPath;
  8. public VzXmlFileLocalizationDictionaryProvider(string directoryPath)
  9. {
  10. _directoryPath = directoryPath;
  11. }
  12. protected override void InitializeDictionaries()
  13. {
  14. var fileNames = Directory.GetFiles(_directoryPath, "*.xml", SearchOption.TopDirectoryOnly);
  15. foreach (var fileName in fileNames)
  16. {
  17. var dictionary = CreateXmlLocalizationDictionary(fileName);
  18. if (Dictionaries.ContainsKey(dictionary.CultureInfo.Name))
  19. {
  20. throw new AbpInitializationException(SourceName + " source contains more than one dictionary for the culture: " + dictionary.CultureInfo.Name);
  21. }
  22. Dictionaries[dictionary.CultureInfo.Name] = dictionary;
  23. if (fileName.EndsWith(SourceName + ".xml"))
  24. {
  25. if (DefaultDictionary != null)
  26. {
  27. throw new AbpInitializationException("Only one default localization dictionary can be for source: " + SourceName);
  28. }
  29. DefaultDictionary = dictionary;
  30. }
  31. }
  32. }
  33. public void Refresh(string sourceName)
  34. {
  35. var fileNames = Directory.GetFiles(_directoryPath, "*.xml", SearchOption.TopDirectoryOnly);
  36. foreach (var fileName in fileNames)
  37. {
  38. var dictionary = CreateXmlLocalizationDictionary(fileName);
  39. Dictionaries[dictionary.CultureInfo.Name] = dictionary;
  40. if (fileName.EndsWith(sourceName + ".xml"))
  41. {
  42. DefaultDictionary = dictionary;
  43. }
  44. }
  45. }
  46. protected virtual XmlLocalizationDictionary CreateXmlLocalizationDictionary(string fileName)
  47. {
  48. return XmlLocalizationDictionary.BuildFomFile(fileName);
  49. }
  50. }