diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs index 0b88f72fe8..61621c2479 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -14,14 +14,17 @@ public class AbpDictionaryBasedStringLocalizer : IStringLocalizer, IStringLocali public List BaseLocalizers { get; } + public AbpLocalizationOptions AbpLocalizationOptions { get; } + public virtual LocalizedString this[string name] => GetLocalizedString(name); public virtual LocalizedString this[string name, params object[] arguments] => GetLocalizedStringFormatted(name, arguments); - public AbpDictionaryBasedStringLocalizer(LocalizationResource resource, List baseLocalizers) + public AbpDictionaryBasedStringLocalizer(LocalizationResource resource, List baseLocalizers, AbpLocalizationOptions abpLocalizationOptions) { Resource = resource; BaseLocalizers = baseLocalizers; + AbpLocalizationOptions = abpLocalizationOptions; } public IEnumerable GetAllStrings(bool includeParentCultures) @@ -95,23 +98,29 @@ public class AbpDictionaryBasedStringLocalizer : IStringLocalizer, IStringLocali return null; } - //Try to get from same language dictionary (without country code) - if (cultureName.Contains("-")) //Example: "tr-TR" (length=5) + if (AbpLocalizationOptions.TryToGetFromBaseCulture) { - var strLang = Resource.Contributors.GetOrNull(CultureHelper.GetBaseCultureName(cultureName), name); - if (strLang != null) + //Try to get from same language dictionary (without country code) + if (cultureName.Contains("-")) //Example: "tr-TR" (length=5) { - return strLang; + var strLang = Resource.Contributors.GetOrNull(CultureHelper.GetBaseCultureName(cultureName), name); + if (strLang != null) + { + return strLang; + } } } - //Try to get from default language - if (!Resource.DefaultCultureName.IsNullOrEmpty()) + if (AbpLocalizationOptions.TryToGetFromDefaultCulture) { - var strDefault = Resource.Contributors.GetOrNull(Resource.DefaultCultureName, name); - if (strDefault != null) + //Try to get from default language + if (!Resource.DefaultCultureName.IsNullOrEmpty()) { - return strDefault; + var strDefault = Resource.Contributors.GetOrNull(Resource.DefaultCultureName, name); + if (strDefault != null) + { + return strDefault; + } } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs index b2f289dfec..5228f886e9 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs @@ -21,6 +21,10 @@ public class AbpLocalizationOptions public Dictionary> LanguageFilesMap { get; } + public bool TryToGetFromBaseCulture { get; set; } + + public bool TryToGetFromDefaultCulture { get; set; } + public AbpLocalizationOptions() { Resources = new LocalizationResourceDictionary(); @@ -28,5 +32,7 @@ public class AbpLocalizationOptions Languages = new List(); LanguagesMap = new Dictionary>(); LanguageFilesMap = new Dictionary>(); + TryToGetFromBaseCulture = true; + TryToGetFromDefaultCulture = true; } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs index 8ee1eaefc4..3f47fd779d 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs @@ -68,7 +68,8 @@ public class AbpStringLocalizerFactory : IStringLocalizerFactory, IAbpStringLoca return new StringLocalizerCacheItem( new AbpDictionaryBasedStringLocalizer( resource, - resource.BaseResourceTypes.Select(Create).ToList() + resource.BaseResourceTypes.Select(Create).ToList(), + AbpLocalizationOptions ) ); }