【Abp】本地化
本地化
1. 在自己模块添加本地化模块依赖
在自己模块的DependsOn
特性参数里,添加一个依赖 typeof(AbpLocalizationModule)
,
如果没有,就添加一个 [DependsOn(typeof(AbpLocalizationModule))]
[DependsOn(
typeof(AModule),
typeof(BModule),
...
...
typeof(AbpLocalizationModule) // 添加这个依赖
)]
public class MainModule : AbpModule
{
}
2. 创建本地化文件
比如下方文件结构
└─ Localization
└─ Files
└─ zh.json
└─ en.json
└─ MyResource.cs
zh.json 注意设置为嵌入的资源
{
"culture": "zh",
"texts": {
"HelloPerry": "你好,Perry !!!"
}
}
en.json 注意设置为嵌入的资源
{
"culture": "en",
"texts": {
"HelloPerry": "Hello Perry !!!"
}
}
MyResource.cs 就是个普通类型,用于定位的好像
public class MyResource
{
}
3. 配置
在任何可以配置 IServiceCollection
的地方配置。
services.Configure<AbpVirtualFileSystemOptions>(options =>
{
// 一般项目默认项目名就是根命名空间
// 如果设置为空了,则不用加字符串参数
options.FileSets.AddEmbedded<MainModule>("根命名空间");
});
services.Configure<AbpLocalizationOptions>(options =>
{
options.Resources
// 这个是默认的语言,对应JSON文件内的 culture
.Add<MyResource>("en")
// 这里对应JSON文件位置
.AddVirtualJson("/Localization/Files");
});
当然,也可以在入口Program直接使用Configure方法,效果是一样的。
下面是在自己的 Module 内使用的示例
[DependsOn(
typeof(AbpLocalizationModule)
)]
public class MyModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
Configure<AbpVirtualFileSystemOptions>(options =>
{
options.FileSets.AddEmbedded<MyModule>("ConsoleApp_Localization");
});
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Add<MyLocalizationResource>("zh")
.AddVirtualJson("/Localization/Files");
});
}
}