From 43510eb9f4a897a9c4ebb313ba623c413baeb3c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Sep 2022 17:23:02 +0300 Subject: [PATCH] Introduce DynamicLocalizationPreference --- .../AbpApplicationLocalizationAppService.cs | 2 +- .../AbpDictionaryBasedStringLocalizer.cs | 36 +++++++++---------- .../DynamicLocalizationPreference.cs | 8 +++++ .../Abp/Localization/IAbpStringLocalizer.cs | 4 +-- .../LocalizationResourceContributorList.cs | 8 ++--- .../Abp/Localization/AbpLocalization_Tests.cs | 4 +-- 6 files changed, 35 insertions(+), 27 deletions(-) create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs index 77d3269ad7..407308f846 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationLocalizationAppService.cs +++ b/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) 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 cf5c1ebb82..13a635c27d 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/AbpDictionaryBasedStringLocalizer.cs @@ -50,26 +50,26 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer public IEnumerable GetAllStrings( bool includeParentCultures, bool includeBaseLocalizers, - bool includeDynamicContributors) + DynamicLocalizationPreference dynamicLocalizationPreference) { return GetAllStrings( CultureInfo.CurrentUICulture.Name, includeParentCultures, includeBaseLocalizers, - includeDynamicContributors + dynamicLocalizationPreference ); } public async Task> 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 GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers, bool includeDynamicContributors) + public IEnumerable GetAllStrings(bool includeParentCultures, bool includeBaseLocalizers, DynamicLocalizationPreference dynamicLocalizationPreference) { - return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, includeDynamicContributors); + return _innerLocalizer.GetAllStrings(_cultureName, includeParentCultures, includeBaseLocalizers, dynamicLocalizationPreference); } public Task> GetAllStringsAsync(bool includeParentCultures) @@ -325,12 +325,12 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer return _innerLocalizer.GetAllStringsAsync(includeParentCultures); } - public Task> GetAllStringsAsync(bool includeParentCultures, bool includeBaseLocalizers, bool includeDynamicContributors) + public Task> GetAllStringsAsync(bool includeParentCultures, bool includeBaseLocalizers, DynamicLocalizationPreference dynamicLocalizationPreference) { return _innerLocalizer.GetAllStringsAsync( includeParentCultures, includeBaseLocalizers, - includeDynamicContributors + dynamicLocalizationPreference ); } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs new file mode 100644 index 0000000000..ae3ceb3a5a --- /dev/null +++ b/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 +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs index 59fbbcb7b4..e69ef01d0f 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/IAbpStringLocalizer.cs @@ -9,7 +9,7 @@ public interface IAbpStringLocalizer : IStringLocalizer IEnumerable GetAllStrings( bool includeParentCultures, bool includeBaseLocalizers, - bool includeDynamicContributors + DynamicLocalizationPreference dynamicLocalizationPreference ); Task> GetAllStringsAsync( @@ -19,7 +19,7 @@ public interface IAbpStringLocalizer : IStringLocalizer Task> GetAllStringsAsync( bool includeParentCultures, bool includeBaseLocalizers, - bool includeDynamicContributors + DynamicLocalizationPreference dynamicLocalizationPreference ); Task> GetSupportedCulturesAsync(); diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs index 6df15920da..8d575ed75c 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LocalizationResourceContributorList.cs @@ -32,11 +32,11 @@ public class LocalizationResourceContributorList : List 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 dictionary, - bool includeDynamicContributors = true) + DynamicLocalizationPreference dynamicLocalizationPreference = DynamicLocalizationPreference.Include) { foreach (var contributor in this) { - if (!includeDynamicContributors && contributor.IsDynamic) + if (dynamicLocalizationPreference == DynamicLocalizationPreference.Exclude && contributor.IsDynamic) { continue; } diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs index ee0e929e32..342e6d8708 100644 --- a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs +++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/AbpLocalization_Tests.cs @@ -311,7 +311,7 @@ public class AbpLocalization_Tests : AbpIntegratedTest