using System.IO; using Abp.Localization.Dictionaries.Xml; using Abp.Localization.Sources; namespace Abp.Localization.Dictionaries.Json { /// /// Provides localization dictionaries from json files in a directory. /// public class JsonFileLocalizationDictionaryProvider : LocalizationDictionaryProviderBase { private readonly string _directoryPath; /// /// Creates a new . /// /// Path of the dictionary that contains all related XML files public JsonFileLocalizationDictionaryProvider(string directoryPath) { _directoryPath = directoryPath; } public override void Initialize(string sourceName) { var fileNames = Directory.GetFiles(_directoryPath, "*.json", SearchOption.TopDirectoryOnly); foreach (var fileName in fileNames) { var dictionary = CreateJsonLocalizationDictionary(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 + ".json")) { if (DefaultDictionary != null) { throw new AbpInitializationException("Only one default localization dictionary can be for source: " + sourceName); } DefaultDictionary = dictionary; } } } protected virtual JsonLocalizationDictionary CreateJsonLocalizationDictionary(string fileName) { return JsonLocalizationDictionary.BuildFromFile(fileName); } } }