Browse Source

Merge pull request #12363 from abpframework/AbpDictionaryBasedStringLocalizer

Add `TryToGetFromBaseCulture` and `TryToGetFromDefaultCulture` to `AbpLocalizationOptions`.
pull/12387/head
Halil İbrahim Kalkan 4 years ago
committed by GitHub
parent
commit
da9ef381c2
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 31
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs
  2. 6
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs
  3. 3
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpStringLocalizerFactory.cs

31
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs

@ -14,14 +14,17 @@ public class AbpDictionaryBasedStringLocalizer : IStringLocalizer, IStringLocali
public List<IStringLocalizer> 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<IStringLocalizer> baseLocalizers)
public AbpDictionaryBasedStringLocalizer(LocalizationResource resource, List<IStringLocalizer> baseLocalizers, AbpLocalizationOptions abpLocalizationOptions)
{
Resource = resource;
BaseLocalizers = baseLocalizers;
AbpLocalizationOptions = abpLocalizationOptions;
}
public IEnumerable<LocalizedString> 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;
}
}
}

6
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpLocalizationOptions.cs

@ -21,6 +21,10 @@ public class AbpLocalizationOptions
public Dictionary<string, List<NameValue>> 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<LanguageInfo>();
LanguagesMap = new Dictionary<string, List<NameValue>>();
LanguageFilesMap = new Dictionary<string, List<NameValue>>();
TryToGetFromBaseCulture = true;
TryToGetFromDefaultCulture = true;
}
}

3
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
)
);
}

Loading…
Cancel
Save