diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs index 40c720c68..49949ccf3 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs @@ -6,7 +6,7 @@ using Volo.Abp.Localization; namespace LINGYUN.Abp.Localization.Dynamic { - public class DynamicLocalizationInitializeService : IHostedService + public class DynamicLocalizationInitializeService : BackgroundService { protected ILocalizationStore Store { get; } protected AbpLocalizationOptions LocalizationOptions { get; } @@ -22,7 +22,7 @@ namespace LINGYUN.Abp.Localization.Dynamic LocalizationOptions = localizationOptions.Value; } - public virtual async Task StartAsync(CancellationToken cancellationToken) + protected override async Task ExecuteAsync(CancellationToken stoppingToken) { foreach (var resource in LocalizationOptions.Resources) { @@ -30,16 +30,14 @@ namespace LINGYUN.Abp.Localization.Dynamic { if (contributor.GetType().IsAssignableFrom(typeof(DynamicLocalizationResourceContributor))) { - var resourceLocalizationDic = await Store.GetLocalizationDictionaryAsync(resource.Value.ResourceName); + var resourceLocalizationDic = await Store + .GetLocalizationDictionaryAsync( + resource.Value.ResourceName, + stoppingToken); DynamicOptions.AddOrUpdate(resource.Value.ResourceName, resourceLocalizationDic); } } } } - - public Task StopAsync(CancellationToken cancellationToken) - { - return Task.CompletedTask; - } } } diff --git a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md index 9434a1b37..f2287d83a 100644 --- a/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md +++ b/aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md @@ -1,37 +1,38 @@ -# LINGYUN.Abp.Localization.Dynamic - -动态本地化提供者组件,添加动态提供者可实现运行时替换本地化文本 - -需要实现 ILocalizationStore 接口 - -LocalizationManagement项目提供支持 - - -由于框架设计为延迟初始化,当某个本地化资源被使用的时候才会进行初始化 -当资源被第一次使用到的时候,才会注册动态变更事件 -详情见: [DynamicLocalizationResourceContributor](./LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationResourceContributor.cs#L29-L34) - -## 配置使用 - -```csharp -[DependsOn(typeof(AbpLocalizationDynamicModule))] -public class YouProjectModule : AbpModule -{ - // other - public override void ConfigureServices(ServiceConfigurationContext context) - { - Configure(options => - { - options.Resources - .Get() - .AddDynamic(); // 添加动态本地化文档支持 - - // 添加所有资源的动态文档支持,将监听所有的资源包文档变更事件 - // options.Resources.AddDynamic(); - - // 添加所有资源的动态文档支持,忽略 IdentityResource 资源 - // options.Resources.AddDynamic(typeof(IdentityResource)); - }); - } -} -``` +# LINGYUN.Abp.Localization.Dynamic + +动态本地化提供者组件,添加动态提供者可实现运行时替换本地化文本 + +需要实现 ILocalizationStore 接口 + +LocalizationManagement项目提供支持 + +## 配置使用 + +```csharp +[DependsOn(typeof(AbpLocalizationDynamicModule))] +public class YouProjectModule : AbpModule +{ + // other + public override void ConfigureServices(ServiceConfigurationContext context) + { + Configure(options => + { + options.Resources + .Get() + .AddDynamic(); // 添加动态本地化文档支持 + + // 添加所有资源的动态文档支持,将监听所有的资源包文档变更事件 + // options.Resources.AddDynamic(); + + // 添加所有资源的动态文档支持,忽略 IdentityResource 资源 + // options.Resources.AddDynamic(typeof(IdentityResource)); + }); + } +} +``` + +## 注意事项 + +动态资源在启动时加载,如果通过LocalizationManagement模块查询,可能受后端存储资源体量影响整体启动时间 + +详情见: [DynamicLocalizationInitializeService](./LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs#L25-L38) \ No newline at end of file