From 702589380b0bb76407befff94043b3a8faa077d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Mon, 5 Sep 2022 18:50:40 +0300 Subject: [PATCH] Introduce ApplicationLocalizationRequestDto.OnlyDynamics --- ...blyCachedApplicationConfigurationClient.cs | 3 ++- ...MvcCachedApplicationConfigurationClient.cs | 3 ++- .../ApplicationLocalizationRequestDto.cs | 2 ++ .../AbpApplicationLocalizationAppService.cs | 26 ++++++++++++++++--- .../DynamicLocalizationPreference.cs | 3 +-- 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs index 5b484a1b36..d6067f2ba0 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/WebAssemblyCachedApplicationConfigurationClient.cs @@ -39,7 +39,8 @@ public class WebAssemblyCachedApplicationConfigurationClient : ICachedApplicatio var localizationDto = await ApplicationLocalizationClientProxy.GetAsync( new ApplicationLocalizationRequestDto { - Culture = configurationDto.Localization.CurrentCulture.Name + Culture = configurationDto.Localization.CurrentCulture.Name, + OnlyDynamics = true } ); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs index 647501f6d3..edfed09708 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs @@ -71,7 +71,8 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu var localizationDto = await ApplicationLocalizationClientProxy.GetAsync( new ApplicationLocalizationRequestDto { - Culture = config.Localization.CurrentCulture.Name + Culture = config.Localization.CurrentCulture.Name, + OnlyDynamics = true } ); diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationRequestDto.cs b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationRequestDto.cs index 29b2874d87..d33346d149 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationRequestDto.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.Contracts/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/ApplicationLocalizationRequestDto.cs @@ -6,4 +6,6 @@ public class ApplicationLocalizationRequestDto { [Required] public string Culture { get; set; } + + public bool OnlyDynamics { get; set; } } \ No newline at end of file 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 407308f846..e8b2a245bd 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 @@ -42,18 +42,38 @@ public class AbpApplicationLocalizationAppService : foreach (var resource in resources) { var dictionary = new Dictionary(); - var localizer = await StringLocalizerFactory.CreateByResourceNameOrNullAsync(resource.ResourceName); if (localizer != null) { - var localizedStrings = await localizer.GetAllStringsAsync( + Dictionary staticLocalizedStrings = null; + + if (input.OnlyDynamics) + { + staticLocalizedStrings = (await localizer.GetAllStringsAsync( + includeParentCultures: true, + includeBaseLocalizers: false, + dynamicLocalizationPreference: DynamicLocalizationPreference.Exclude + )).ToDictionary(x => x.Name); + } + + var localizedStringsWithDynamics = await localizer.GetAllStringsAsync( includeParentCultures: true, includeBaseLocalizers: false, dynamicLocalizationPreference: DynamicLocalizationPreference.Include ); - foreach (var localizedString in localizedStrings) + foreach (var localizedString in localizedStringsWithDynamics) { + if (input.OnlyDynamics) + { + var staticLocalizedString = staticLocalizedStrings.GetOrDefault(localizedString.Name); + if (staticLocalizedString != null && + localizedString.Value == staticLocalizedString.Value) + { + continue; + } + } + dictionary[localizedString.Name] = localizedString.Value; } } diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs index ae3ceb3a5a..81b4d5b8f6 100644 --- a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/DynamicLocalizationPreference.cs @@ -3,6 +3,5 @@ namespace Volo.Abp.Localization; public enum DynamicLocalizationPreference : byte { Include = 0, - Exclude = 1, - Only = 2 + Exclude = 1 } \ No newline at end of file