From 53ec3a6e5f273003b5d17cfe9d33bc02e2d6edd5 Mon Sep 17 00:00:00 2001 From: ahmetfarukulu Date: Wed, 25 Sep 2024 13:55:44 +0300 Subject: [PATCH] Language edit problem fixed --- ...ltAbpRequestLocalizationOptionsProvider.cs | 26 +++++++++++++------ .../Abp/Localization/LanguageChangedEto.cs | 6 +++++ 2 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageChangedEto.cs diff --git a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs b/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs index bb3b58c321..35d30e9f64 100644 --- a/framework/src/Volo.Abp.AspNetCore/Microsoft/AspNetCore/RequestLocalization/DefaultAbpRequestLocalizationOptionsProvider.cs +++ b/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.Options; using Volo.Abp.DependencyInjection; +using Volo.Abp.EventBus.Distributed; using Volo.Abp.Localization; using Volo.Abp.Settings; using Volo.Abp.Threading; namespace Microsoft.AspNetCore.RequestLocalization; -public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizationOptionsProvider, ISingletonDependency +public class DefaultAbpRequestLocalizationOptionsProvider : + IAbpRequestLocalizationOptionsProvider, + IDistributedEventHandler, + ISingletonDependency { private readonly IServiceScopeFactory _serviceProviderFactory; private readonly SemaphoreSlim _syncSemaphore; @@ -28,12 +32,12 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat _syncSemaphore = new SemaphoreSlim(1, 1); } - public void InitLocalizationOptions(Action? optionsAction = null) + public virtual void InitLocalizationOptions(Action? optionsAction = null) { _optionsAction = optionsAction; } - public async Task GetLocalizationOptionsAsync() + public virtual async Task GetLocalizationOptionsAsync() { if (_requestLocalizationOptions == null) { @@ -54,13 +58,11 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat : new RequestLocalizationOptions { DefaultRequestCulture = DefaultGetRequestCulture(defaultLanguage, languages), - SupportedCultures = languages .Select(l => l.CultureName) .Distinct() .Select(c => new CultureInfo(c)) .ToArray(), - SupportedUICultures = languages .Select(l => l.UiCultureName) .Distinct() @@ -69,8 +71,8 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat }; foreach (var configurator in serviceScope.ServiceProvider - .GetRequiredService>() - .Value.RequestLocalizationOptionConfigurators) + .GetRequiredService>() + .Value.RequestLocalizationOptionConfigurators) { await configurator(serviceScope.ServiceProvider, options); } @@ -96,4 +98,12 @@ public class DefaultAbpRequestLocalizationOptionsProvider : IAbpRequestLocalizat var (cultureName, uiCultureName) = LocalizationSettingHelper.ParseLanguageSetting(defaultLanguage); return new RequestCulture(cultureName, uiCultureName); } -} + + public virtual async Task HandleEventAsync(LanguageChangedEto eventData) + { + using (await _syncSemaphore.LockAsync()) + { + _requestLocalizationOptions = null; + } + } +} \ No newline at end of file diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageChangedEto.cs b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageChangedEto.cs new file mode 100644 index 0000000000..e4bb3cd4aa --- /dev/null +++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/LanguageChangedEto.cs @@ -0,0 +1,6 @@ +using System; + +namespace Volo.Abp.Localization; + +[Serializable] +public class LanguageChangedEto {} \ No newline at end of file