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
{
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;
}
}
}

75
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<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<YouProjectResource>()
.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<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<YouProjectResource>()
.AddDynamic(); // 添加动态本地化文档支持
// 添加所有资源的动态文档支持,将监听所有的资源包文档变更事件
// options.Resources.AddDynamic();
// 添加所有资源的动态文档支持,忽略 IdentityResource 资源
// options.Resources.AddDynamic(typeof(IdentityResource));
});
}
}
```
## 注意事项
动态资源在启动时加载,如果通过LocalizationManagement模块查询,可能受后端存储资源体量影响整体启动时间
详情见: [DynamicLocalizationInitializeService](./LINGYUN/Abp/Localization/Dynamic/DynamicLocalizationInitializeService.cs#L25-L38)
Loading…
Cancel
Save