From 56d12224079ca7847a587807db73132f324f724c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Wed, 24 Aug 2022 15:23:30 +0300 Subject: [PATCH] Introduce IDistributedLocalizationStore. --- .../AbpApplicationConfigurationAppService.cs | 13 ++++++++++- .../DistributedLocalizationData.cs | 18 +++++++++++++++ .../DistributedLocalizationResourceData.cs | 22 +++++++++++++++++++ .../IDistributedLocalizationStore.cs | 10 +++++++++ .../NUllDistributedLocalizationStore.cs | 19 ++++++++++++++++ 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationResourceData.cs create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NUllDistributedLocalizationStore.cs diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs index 7bcc0b3cd9..5e48b42d0b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs @@ -17,6 +17,7 @@ using Volo.Abp.Data; using Volo.Abp.Features; using Volo.Abp.GlobalFeatures; using Volo.Abp.Localization; +using Volo.Abp.Localization.Distributed; using Volo.Abp.MultiTenancy; using Volo.Abp.Settings; using Volo.Abp.Timing; @@ -42,6 +43,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp private readonly ITimezoneProvider _timezoneProvider; private readonly AbpClockOptions _abpClockOptions; private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService; + private readonly IDistributedLocalizationStore _distributedLocalizationStore; private readonly AbpApplicationConfigurationOptions _options; public AbpApplicationConfigurationAppService( @@ -61,7 +63,8 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp ITimezoneProvider timezoneProvider, IOptions abpClockOptions, ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService, - IOptions options) + IOptions options, + IDistributedLocalizationStore distributedLocalizationStore) { _serviceProvider = serviceProvider; _abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; @@ -77,6 +80,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp _timezoneProvider = timezoneProvider; _abpClockOptions = abpClockOptions.Value; _cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService; + _distributedLocalizationStore = distributedLocalizationStore; _options = options.Value; _localizationOptions = localizationOptions.Value; _multiTenancyOptions = multiTenancyOptions.Value; @@ -227,6 +231,13 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp localizationConfig.Values[resource.ResourceName] = dictionary; } + var distributedLocalizationData = await _distributedLocalizationStore.GetAsync(); + + foreach (var resource in distributedLocalizationData.Resources) + { + localizationConfig.Values[resource.ResourceName] = resource.Texts; + } + localizationConfig.CurrentCulture = GetCurrentCultureInfo(); if (_localizationOptions.DefaultResourceType != null) diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs new file mode 100644 index 0000000000..b8374f7119 --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs @@ -0,0 +1,18 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Localization.Distributed; + +public class DistributedLocalizationData +{ + public List Resources { get; } + + public DistributedLocalizationData() + { + Resources = new(); + } + + public DistributedLocalizationData(List resources) + { + Resources = Check.NotNull(resources, nameof(resources)); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationResourceData.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationResourceData.cs new file mode 100644 index 0000000000..bbb449a380 --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationResourceData.cs @@ -0,0 +1,22 @@ +using System.Collections.Generic; + +namespace Volo.Abp.Localization.Distributed; + +public class DistributedLocalizationResourceData +{ + public string ResourceName { get; } + + public Dictionary Texts { get; } + + public DistributedLocalizationResourceData(string resourceName) + { + ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName)); + Texts = new(); + } + + public DistributedLocalizationResourceData(string resourceName, Dictionary texts) + { + ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName)); + Texts = Check.NotNull(texts, nameof(texts)); + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs new file mode 100644 index 0000000000..9dbf699838 --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs @@ -0,0 +1,10 @@ +using System.Threading.Tasks; + +namespace Volo.Abp.Localization.Distributed; + +public interface IDistributedLocalizationStore +{ + Task SaveAsync(); + + Task GetAsync(); +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NUllDistributedLocalizationStore.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NUllDistributedLocalizationStore.cs new file mode 100644 index 0000000000..51fae60544 --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NUllDistributedLocalizationStore.cs @@ -0,0 +1,19 @@ +using System.Threading.Tasks; +using Volo.Abp.DependencyInjection; + +namespace Volo.Abp.Localization.Distributed; + +public class NUllDistributedLocalizationStore : IDistributedLocalizationStore, ISingletonDependency +{ + private readonly DistributedLocalizationData _data = new(); + + public Task SaveAsync() + { + return Task.CompletedTask; + } + + public Task GetAsync() + { + return Task.FromResult(_data); + } +} \ No newline at end of file