Browse Source

Introduce DynamicLocalizationPreference

pull/13845/head
Halil İbrahim Kalkan 4 years ago
parent
commit
43510eb9f4
  1. 2
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs
  2. 36
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs
  3. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs
  4. 4
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs
  5. 8
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs
  6. 4
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

2
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs

@ -49,7 +49,7 @@ public class AbpApplicationLocalizationAppService :
var localizedStrings = await localizer.GetAllStringsAsync(
includeParentCultures: true,
includeBaseLocalizers: false,
includeDynamicContributors: true
dynamicLocalizationPreference: DynamicLocalizationPreference.Include
);
foreach (var localizedString in localizedStrings)

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

@ -50,26 +50,26 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
public IEnumerable<LocalizedString> GetAllStrings(
bool includeParentCultures,
bool includeBaseLocalizers,
bool includeDynamicContributors)
DynamicLocalizationPreference dynamicLocalizationPreference)
{
return GetAllStrings(
CultureInfo.CurrentUICulture.Name,
includeParentCultures,
includeBaseLocalizers,
includeDynamicContributors
dynamicLocalizationPreference
);
}
public async Task<IEnumerable<LocalizedString>> GetAllStringsAsync(
bool includeParentCultures,
bool includeBaseLocalizers,
bool includeDynamicContributors)
DynamicLocalizationPreference dynamicLocalizationPreference)
{
return await GetAllStringsAsync(
CultureInfo.CurrentUICulture.Name,
includeParentCultures,
includeBaseLocalizers,
includeDynamicContributors
dynamicLocalizationPreference
);
}
@ -169,7 +169,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
string cultureName,
bool includeParentCultures = true,
bool includeBaseLocalizers = true,
bool includeDynamicContributors = true)
DynamicLocalizationPreference dynamicLocalizationPreference = DynamicLocalizationPreference.Include)
{
//TODO: Can be optimized (example: if it's already default dictionary, skip overriding)
@ -187,7 +187,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
var baseLocalizedString = baseLocalizer.GetAllStrings(
includeParentCultures,
includeBaseLocalizers, // Always true, I know!
includeDynamicContributors
dynamicLocalizationPreference
);
foreach (var localizedString in baseLocalizedString)
@ -208,18 +208,18 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
//Fill all strings from default culture
if (!Resource.DefaultCultureName.IsNullOrEmpty())
{
Resource.Contributors.Fill(Resource.DefaultCultureName, allStrings, includeDynamicContributors);
Resource.Contributors.Fill(Resource.DefaultCultureName, allStrings, dynamicLocalizationPreference);
}
//Overwrite all strings from the language based on country culture
if (cultureName.Contains("-"))
{
Resource.Contributors.Fill(CultureHelper.GetBaseCultureName(cultureName), allStrings, includeDynamicContributors);
Resource.Contributors.Fill(CultureHelper.GetBaseCultureName(cultureName), allStrings, dynamicLocalizationPreference);
}
}
//Overwrite all strings from the original culture
Resource.Contributors.Fill(cultureName, allStrings, includeDynamicContributors);
Resource.Contributors.Fill(cultureName, allStrings, dynamicLocalizationPreference);
return allStrings.Values.ToImmutableList();
}
@ -228,7 +228,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
string cultureName,
bool includeParentCultures = true,
bool includeBaseLocalizers = true,
bool includeDynamicContributors = true)
DynamicLocalizationPreference dynamicLocalizationPreference = DynamicLocalizationPreference.Include)
{
//TODO: Can be optimized (example: if it's already default dictionary, skip overriding)
@ -246,7 +246,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
var baseLocalizedString = await baseLocalizer.GetAllStringsAsync(
includeParentCultures,
includeBaseLocalizers, // Always true, I know!
includeDynamicContributors
dynamicLocalizationPreference
);
foreach (var localizedString in baseLocalizedString)
@ -270,7 +270,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
await Resource.Contributors.FillAsync(
Resource.DefaultCultureName,
allStrings,
includeDynamicContributors
dynamicLocalizationPreference
);
}
@ -280,7 +280,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
await Resource.Contributors.FillAsync(
CultureHelper.GetBaseCultureName(cultureName),
allStrings,
includeDynamicContributors
dynamicLocalizationPreference
);
}
}
@ -289,7 +289,7 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
await Resource.Contributors.FillAsync(
cultureName,
allStrings,
includeDynamicContributors
dynamicLocalizationPreference
);
return allStrings.Values.ToImmutableList();
@ -315,9 +315,9 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures);
}
public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers, bool includeDynamicContributors)
public IEnumerable<LocalizedString> GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers, DynamicLocalizationPreference dynamicLocalizationPreference)
{
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, includeDynamicContributors);
return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, dynamicLocalizationPreference);
}
public Task<IEnumerable<LocalizedString>> GetAllStringsAsync(bool includeParentCultures)
@ -325,12 +325,12 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return _innerLocalizer.GetAllStringsAsync(includeParentCultures);
}
public Task<IEnumerable<LocalizedString>> GetAllStringsAsync(bool includeParentCultures, bool includeBaseLocalizers, bool includeDynamicContributors)
public Task<IEnumerable<LocalizedString>> GetAllStringsAsync(bool includeParentCultures, bool includeBaseLocalizers, DynamicLocalizationPreference dynamicLocalizationPreference)
{
return _innerLocalizer.GetAllStringsAsync(
includeParentCultures,
includeBaseLocalizers,
includeDynamicContributors
dynamicLocalizationPreference
);
}

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs

@ -0,0 +1,8 @@
namespace Volo.Abp.Localization;
public enum DynamicLocalizationPreference : byte
{
Include = 0,
Exclude = 1,
Only = 2
}

4
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs

@ -9,7 +9,7 @@ public interface IAbpStringLocalizer : IStringLocalizer
IEnumerable<LocalizedString> GetAllStrings(
bool includeParentCultures,
bool includeBaseLocalizers,
bool includeDynamicContributors
DynamicLocalizationPreference dynamicLocalizationPreference
);
Task<IEnumerable<LocalizedString>> GetAllStringsAsync(
@ -19,7 +19,7 @@ public interface IAbpStringLocalizer : IStringLocalizer
Task<IEnumerable<LocalizedString>> GetAllStringsAsync(
bool includeParentCultures,
bool includeBaseLocalizers,
bool includeDynamicContributors
DynamicLocalizationPreference dynamicLocalizationPreference
);
Task<IEnumerable<string>> GetSupportedCulturesAsync();

8
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs

@ -32,11 +32,11 @@ public class LocalizationResourceContributorList : List<ILocalizationResourceCon
public void Fill(
string cultureName,
Dictionary<string, LocalizedString> dictionary,
bool includeDynamicContributors = true)
DynamicLocalizationPreference dynamicLocalizationPreference = DynamicLocalizationPreference.Include)
{
foreach (var contributor in this)
{
if (!includeDynamicContributors && contributor.IsDynamic)
if (dynamicLocalizationPreference == DynamicLocalizationPreference.Exclude && contributor.IsDynamic)
{
continue;
}
@ -48,11 +48,11 @@ public class LocalizationResourceContributorList : List<ILocalizationResourceCon
public async Task FillAsync(
string cultureName,
Dictionary<string, LocalizedString> dictionary,
bool includeDynamicContributors = true)
DynamicLocalizationPreference dynamicLocalizationPreference = DynamicLocalizationPreference.Include)
{
foreach (var contributor in this)
{
if (!includeDynamicContributors && contributor.IsDynamic)
if (dynamicLocalizationPreference == DynamicLocalizationPreference.Exclude && contributor.IsDynamic)
{
continue;
}

4
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs

@ -311,7 +311,7 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule
using (CultureHelper.Use("tr"))
{
var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: true, includeDynamicContributors: true)
.GetAllStrings(true, includeBaseLocalizers: true, dynamicLocalizationPreference: DynamicLocalizationPreference.Include)
.ToList();
localizedStrings.ShouldContain(
@ -340,7 +340,7 @@ public class AbpLocalization_Tests : AbpIntegratedTest<AbpLocalizationTestModule
using (CultureHelper.Use("tr"))
{
var localizedStrings = _localizer
.GetAllStrings(true, includeBaseLocalizers: false, includeDynamicContributors: true)
.GetAllStrings(true, includeBaseLocalizers: false, dynamicLocalizationPreference: DynamicLocalizationPreference.Include)
.ToList();
localizedStrings.ShouldNotContain(

Loading…
Cancel
Save