【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");
        });
    }
} 
posted @ 2021-11-10 23:42  wosperry  阅读(249)  评论(0编辑  收藏  举报