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