From 9f76a29f429e27ec85d936ca42bf26ce89b45d53 Mon Sep 17 00:00:00 2001 From: Hanpaopao <510423039@qq.com> Date: Fri, 28 Feb 2025 20:32:17 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DDynamicResourceLocaliz?= =?UTF-8?q?er?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DynamicResourceLocalizer.cs | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Domain/DynamicResourceLocalizer.cs b/aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Domain/DynamicResourceLocalizer.cs index d5ec12bf..487cbe2f 100644 --- a/aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Domain/DynamicResourceLocalizer.cs +++ b/aspnet-core/modules/LanguageManagement/src/Lion.AbpPro.LanguageManagement.Domain/DynamicResourceLocalizer.cs @@ -7,13 +7,13 @@ namespace Lion.AbpPro.LanguageManagement; /// public class DynamicResourceLocalizer : IDynamicResourceLocalizer, ISingletonDependency { - private readonly ILanguageTextManager _languageTextManager; private readonly IDistributedCache _distributedCache; + private readonly IServiceScopeFactory _serviceScopeFactory; - public DynamicResourceLocalizer(ILanguageTextManager languageTextManager, IDistributedCache distributedCache) + public DynamicResourceLocalizer(IDistributedCache distributedCache, IServiceScopeFactory serviceScopeFactory) { - _languageTextManager = languageTextManager; _distributedCache = distributedCache; + _serviceScopeFactory = serviceScopeFactory; } public LocalizedString GetOrNull(LocalizationResourceBase resource, string cultureName, string name) @@ -42,13 +42,17 @@ public class DynamicResourceLocalizer : IDynamicResourceLocalizer, ISingletonDep protected virtual async Task CreateCacheLanguageText(LocalizationResourceBase resource, string cultureName) { - var languageTexts = await _languageTextManager.FindAsync(cultureName, resource.ResourceName); var result = new LanguageTextCacheItem(); - foreach (var languageText in languageTexts) + using (var scope = _serviceScopeFactory.CreateScope()) { - result.Dictionary[languageText.Name] = languageText.Value; + var languageTexts = await scope.ServiceProvider + .GetRequiredService() + .FindAsync(cultureName, resource.ResourceName); + foreach (var languageText in languageTexts) + { + result.Dictionary[languageText.Name] = languageText.Value; + } } - return result; } } \ No newline at end of file