Browse Source

feat(localization): UPDATE README.md

pull/329/head
cKey 4 years ago
parent
commit
44980274a8
  1. 14
      aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs
  2. 75
      aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md

14
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 namespace LINGYUN.Abp.Localization.Dynamic
{ {
public class DynamicLocalizationInitializeService : IHostedService public class DynamicLocalizationInitializeService : BackgroundService
{ {
protected ILocalizationStore Store { get; } protected ILocalizationStore Store { get; }
protected AbpLocalizationOptions LocalizationOptions { get; } protected AbpLocalizationOptions LocalizationOptions { get; }
@ -22,7 +22,7 @@ namespace LINGYUN.Abp.Localization.Dynamic
LocalizationOptions = localizationOptions.Value; LocalizationOptions = localizationOptions.Value;
} }
public virtual async Task StartAsync(CancellationToken cancellationToken) protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{ {
foreach (var resource in LocalizationOptions.Resources) foreach (var resource in LocalizationOptions.Resources)
{ {
@ -30,16 +30,14 @@ namespace LINGYUN.Abp.Localization.Dynamic
{ {
if (contributor.GetType().IsAssignableFrom(typeof(DynamicLocalizationResourceContributor))) 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); DynamicOptions.AddOrUpdate(resource.Value.ResourceName, resourceLocalizationDic);
} }
} }
} }
} }
public Task StopAsync(CancellationToken cancellationToken)
{
return Task.CompletedTask;
}
} }
} }

75
aspnet-core/modules/common/LINGYUN.Abp.Localization.Dynamic/README.md

@ -1,37 +1,38 @@
# LINGYUN.Abp.Localization.Dynamic # LINGYUN.Abp.Localization.Dynamic
动态本地化提供者组件,添加动态提供者可实现运行时替换本地化文本 动态本地化提供者组件,添加动态提供者可实现运行时替换本地化文本
需要实现 ILocalizationStore 接口 需要实现 ILocalizationStore 接口
LocalizationManagement项目提供支持 LocalizationManagement项目提供支持
## 配置使用
由于框架设计为延迟初始化,当某个本地化资源被使用的时候才会进行初始化
当资源被第一次使用到的时候,才会注册动态变更事件 ```csharp
详情见: [DynamicLocalizationResourceContributor](./LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationResourceContributor.cs#L29-L34) [DependsOn(typeof(AbpLocalizationDynamicModule))]
public class YouProjectModule : AbpModule
## 配置使用 {
// other
```csharp public override void ConfigureServices(ServiceConfigurationContext context)
[DependsOn(typeof(AbpLocalizationDynamicModule))] {
public class YouProjectModule : AbpModule Configure<AbpLocalizationOptions>(options =>
{ {
// other options.Resources
public override void ConfigureServices(ServiceConfigurationContext context) .Get<YouProjectResource>()
{ .AddDynamic(); // 添加动态本地化文档支持
Configure<AbpLocalizationOptions>(options =>
{ // 添加所有资源的动态文档支持,将监听所有的资源包文档变更事件
options.Resources // options.Resources.AddDynamic();
.Get<YouProjectResource>()
.AddDynamic(); // 添加动态本地化文档支持 // 添加所有资源的动态文档支持,忽略 IdentityResource 资源
// options.Resources.AddDynamic(typeof(IdentityResource));
// 添加所有资源的动态文档支持,将监听所有的资源包文档变更事件 });
// options.Resources.AddDynamic(); }
}
// 添加所有资源的动态文档支持,忽略 IdentityResource 资源 ```
// options.Resources.AddDynamic(typeof(IdentityResource));
}); ## 注意事项
}
} 动态资源在启动时加载,如果通过LocalizationManagement模块查询,可能受后端存储资源体量影响整体启动时间
```
详情见: [DynamicLocalizationInitializeService](./LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs#L25-L38)
Loading…
Cancel
Save