diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs index b18eba1f46..d65e36a8f1 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/VirtualFiles/VirtualFileLocalizationResourceContributorBase.cs @@ -89,7 +89,7 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza private Dictionary CreateDictionaries() { - var dictionaries = new Dictionary(); + var rawDictionaries = new Dictionary>(); foreach (var file in _virtualFileProvider.GetDirectoryContents(_virtualPath) .Where(f => !f.IsDirectory && CanParseFile(f)) @@ -102,20 +102,19 @@ public abstract class VirtualFileLocalizationResourceContributorBase : ILocaliza continue; } - if (!dictionaries.ContainsKey(dictionary.CultureName)) + if (!rawDictionaries.TryGetValue(dictionary.CultureName, out var raw)) { - dictionaries[dictionary.CultureName] = dictionary; - } - else - { - var merged = new Dictionary(); - dictionaries[dictionary.CultureName].Fill(merged); - dictionary.Fill(merged); - dictionaries[dictionary.CultureName] = new StaticLocalizationDictionary(dictionary.CultureName, merged); + raw = new Dictionary(); + rawDictionaries[dictionary.CultureName] = raw; } + + dictionary.Fill(raw); } - return dictionaries; + return rawDictionaries.ToDictionary( + kvp => kvp.Key, + kvp => (ILocalizationDictionary)new StaticLocalizationDictionary(kvp.Key, kvp.Value) + ); } protected abstract bool CanParseFile(IFileInfo file); diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs index 9dbc5b8c1f..c39ff9b105 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpStringLocalizerFactory_Tests.cs @@ -93,7 +93,7 @@ public class AbpStringLocalizerFactory_Tests : AbpIntegratedTest