Browse Source

Introduce IDistributedLocalizationStore.

pull/13806/head
Halil İbrahim Kalkan 4 years ago
parent
commit
56d1222407
  1. 13
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ApplicationConfigurations/AbpApplicationConfigurationAppService.cs
  2. 18
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationData.cs
  3. 22
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/DistributedLocalizationResourceData.cs
  4. 10
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/IDistributedLocalizationStore.cs
  5. 19
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Distributed/NUllDistributedLocalizationStore.cs

13
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> abpClockOptions,
ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService,
IOptions<AbpApplicationConfigurationOptions> options)
IOptions<AbpApplicationConfigurationOptions> 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)

18
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<DistributedLocalizationResourceData> Resources { get; }
public DistributedLocalizationData()
{
Resources = new();
}
public DistributedLocalizationData(List<DistributedLocalizationResourceData> resources)
{
Resources = Check.NotNull(resources, nameof(resources));
}
}

22
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<string, string> Texts { get; }
public DistributedLocalizationResourceData(string resourceName)
{
ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName));
Texts = new();
}
public DistributedLocalizationResourceData(string resourceName, Dictionary<string, string> texts)
{
ResourceName = Check.NotNullOrWhiteSpace(resourceName, nameof(resourceName));
Texts = Check.NotNull(texts, nameof(texts));
}
}

10
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<DistributedLocalizationData> GetAsync();
}

19
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<DistributedLocalizationData> GetAsync()
{
return Task.FromResult(_data);
}
}
Loading…
Cancel
Save