public virtual async Task <Dictionary <string, ILocalizationDictionary> > GetLocalizationDictionaryAsync( string resourceName, CancellationToken cancellationToken = default) { // TODO: 引用缓存? var dictionaries = new Dictionary <string, ILocalizationDictionary>(); var resource = await ResourceRepository.FindByNameAsync(resourceName, cancellationToken); if (resource == null || !resource.Enable) { // 资源不存在或未启用返回空 return(dictionaries); } var texts = await TextRepository.GetListAsync(resourceName, cancellationToken); foreach (var textGroup in texts.GroupBy(x => x.CultureName)) { var cultureTextDictionaires = new Dictionary <string, LocalizedString>(); foreach (var text in textGroup) { // 本地化名称去重 if (!cultureTextDictionaires.ContainsKey(text.Key)) { cultureTextDictionaires[text.Key] = new LocalizedString(text.Key, text.Value.NormalizeLineEndings()); } } // 本地化语言去重 if (!dictionaries.ContainsKey(textGroup.Key)) { dictionaries[textGroup.Key] = new StaticLocalizationDictionary(textGroup.Key, cultureTextDictionaires); } } return(dictionaries); }