IwbXmlFileLocalizationDictionaryProvider.cs 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.IO;
  2. using Abp;
  3. using Abp.Localization.Dictionaries.Xml;
  4. namespace WeOnlineApp.Localization
  5. {
  6. public class IwbXmlFileLocalizationDictionaryProvider : LocalizationDictionaryProviderBase
  7. {
  8. private readonly string _directoryPath;
  9. /// <summary>
  10. /// Creates a new <see cref="XmlFileLocalizationDictionaryProvider"/>.
  11. /// </summary>
  12. /// <param name="directoryPath"> XML files Path</param>
  13. public IwbXmlFileLocalizationDictionaryProvider(string directoryPath)
  14. {
  15. _directoryPath = directoryPath;
  16. }
  17. public override void Initialize(string sourceName)
  18. {
  19. var fileNames = Directory.GetFiles(_directoryPath, "*.xml", SearchOption.TopDirectoryOnly);
  20. foreach (var fileName in fileNames)
  21. {
  22. var dictionary = CreateXmlLocalizationDictionary(fileName);
  23. if (Dictionaries.ContainsKey(dictionary.CultureInfo.Name))
  24. {
  25. throw new AbpInitializationException(sourceName + " source contains more than one dictionary for the culture: " + dictionary.CultureInfo.Name);
  26. }
  27. Dictionaries[dictionary.CultureInfo.Name] = dictionary;
  28. if (fileName.EndsWith(sourceName + ".xml"))
  29. {
  30. if (DefaultDictionary != null)
  31. {
  32. throw new AbpInitializationException("Only one default localization dictionary can be for source: " + sourceName);
  33. }
  34. DefaultDictionary = dictionary;
  35. }
  36. }
  37. }
  38. public void Refresh(string sourceName)
  39. {
  40. var fileNames = Directory.GetFiles(_directoryPath, "*.xml", SearchOption.TopDirectoryOnly);
  41. foreach (var fileName in fileNames)
  42. {
  43. var dictionary = CreateXmlLocalizationDictionary(fileName);
  44. Dictionaries[dictionary.CultureInfo.Name] = dictionary;
  45. if (fileName.EndsWith(sourceName + ".xml"))
  46. {
  47. DefaultDictionary = dictionary;
  48. }
  49. }
  50. }
  51. protected virtual XmlLocalizationDictionary CreateXmlLocalizationDictionary(string fileName)
  52. {
  53. return XmlLocalizationDictionary.BuildFomFile(fileName);
  54. }
  55. }
  56. }