Browse Source

Language edit problem fixed

pull/21138/head
ahmetfarukulu 2 years ago
parent
commit
53ec3a6e5f
  1. 26
      framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs
  2. 6
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageChangedEto.cs

26
framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs

@ -9,13 +9,17 @@ using Microsoft.AspNetCore.Localization;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options; using Microsoft.Extensions.Options;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
using Volo.Abp.EventBus.Distributed;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Settings; using Volo.Abp.Settings;
using Volo.Abp.Threading; using Volo.Abp.Threading;
namespace Microsoft.AspNetCore.RequestLocalization; namespace Microsoft.AspNetCore.RequestLocalization;
public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizationOptionsProvider, ISingletonDependency public class DefaultAbpRequestLocalizationOptionsProvider :
IAbpRequestLocalizationOptionsProvider,
IDistributedEventHandler<LanguageChangedEto>,
ISingletonDependency
{ {
private readonly IServiceScopeFactory _serviceProviderFactory; private readonly IServiceScopeFactory _serviceProviderFactory;
private readonly SemaphoreSlim _syncSemaphore; private readonly SemaphoreSlim _syncSemaphore;
@ -28,12 +32,12 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
_syncSemaphore = new SemaphoreSlim(1, 1); _syncSemaphore = new SemaphoreSlim(1, 1);
} }
public void InitLocalizationOptions(Action<RequestLocalizationOptions>? optionsAction = null) public virtual void InitLocalizationOptions(Action<RequestLocalizationOptions>? optionsAction = null)
{ {
_optionsAction = optionsAction; _optionsAction = optionsAction;
} }
public async Task<RequestLocalizationOptions> GetLocalizationOptionsAsync() public virtual async Task<RequestLocalizationOptions> GetLocalizationOptionsAsync()
{ {
if (_requestLocalizationOptions == null) if (_requestLocalizationOptions == null)
{ {
@ -54,13 +58,11 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
: new RequestLocalizationOptions : new RequestLocalizationOptions
{ {
DefaultRequestCulture = DefaultGetRequestCulture(defaultLanguage, languages), DefaultRequestCulture = DefaultGetRequestCulture(defaultLanguage, languages),
SupportedCultures = languages SupportedCultures = languages
.Select(l => l.CultureName) .Select(l => l.CultureName)
.Distinct() .Distinct()
.Select(c => new CultureInfo(c)) .Select(c => new CultureInfo(c))
.ToArray(), .ToArray(),
SupportedUICultures = languages SupportedUICultures = languages
.Select(l => l.UiCultureName) .Select(l => l.UiCultureName)
.Distinct() .Distinct()
@ -69,8 +71,8 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
}; };
foreach (var configurator in serviceScope.ServiceProvider foreach (var configurator in serviceScope.ServiceProvider
.GetRequiredService<IOptions<AbpRequestLocalizationOptions>>() .GetRequiredService<IOptions<AbpRequestLocalizationOptions>>()
.Value.RequestLocalizationOptionConfigurators) .Value.RequestLocalizationOptionConfigurators)
{ {
await configurator(serviceScope.ServiceProvider, options); await configurator(serviceScope.ServiceProvider, options);
} }
@ -96,4 +98,12 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat
var (cultureName, uiCultureName) = LocalizationSettingHelper.ParseLanguageSetting(defaultLanguage); var (cultureName, uiCultureName) = LocalizationSettingHelper.ParseLanguageSetting(defaultLanguage);
return new RequestCulture(cultureName, uiCultureName); return new RequestCulture(cultureName, uiCultureName);
} }
}
public virtual async Task HandleEventAsync(LanguageChangedEto eventData)
{
using (await _syncSemaphore.LockAsync())
{
_requestLocalizationOptions = null;
}
}
}

6
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageChangedEto.cs

@ -0,0 +1,6 @@
using System;
namespace Volo.Abp.Localization;
[Serializable]
public class LanguageChangedEto {}
Loading…
Cancel
Save