Admin Core

后端国际化配置指南

本文档介绍如何在接口项目中启用和配置内置国际化功能。

本文档介绍如何在接口项目中启用和配置内置国际化功能。

目录结构

1
2
3
4
Resources/
├─ MyModuleLocalizer.cs
├─ Resources.MyModuleLocalizer.en.json
└─ Resources.MyModuleLocalizer.zh-TW.json

配置文件

ConfigCenter/appconfig.json 中添加语言配置:

1
2
3
4
5
6
7
8
9
10
{
"AppConfig": {
"Lang": {
"Enable": true,
"DefaultLang": "zh-CN",
"Langs": ["zh-CN", "zh-TW", "en"],
"RequestCultureProviders": ["AcceptLanguageHeader"]
}
}
}

配置项说明

配置项 类型 说明
Enable bool 是否启用国际化,默认true
DefaultLang string 默认语言
Langs string[] 支持的语言列表
RequestCultureProviders string[] 请求语言解析器,可选值:QueryStringCookieAcceptLanguageHeader,设置空数组 [] 则强制使用默认语言

翻译文件配置

英文翻译

创建 Resources.MyModuleLocalizer.en.json

1
2
3
4
{
"中文键": "English description",
"{0}中文键": "{0}English description"
}

[!TIP]
推荐使用中文作为语言索引键,便于维护和查找。

繁体翻译

创建 Resources.MyModuleLocalizer.zh-TW.json

1
2
3
{
"中文键": "中文鍵"
}

语言资源类

创建共享语言资源类 MyModuleLocalizer.cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using Microsoft.Extensions.Localization;
using ZhonTai.Admin.Core.Attributes;
using ZhonTai.Admin.Resources;

namespace MyCompanyName.MyProjectName.Resources;

/// <summary>
/// 模块国际化
/// </summary>
[InjectSingleton]
public class MyModuleLocalizer : ModuleLocalizer
{
public MyModuleLocalizer(IStringLocalizer<MyModuleLocalizer> localizer) : base(localizer)
{
}
}

使用示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
[Order(20)]
[DynamicApi(Area = AppConsts.AreaName)]
public class ModuleService : BaseService, IDynamicApi
{
private readonly MyModuleLocalizer _myModuleLocalizer;

public ModuleService(MyModuleLocalizer myModuleLocalizer)
{
_myModuleLocalizer = myModuleLocalizer;
}

/// <summary>
/// 修改
/// </summary>
public async Task UpdateAsync(ModuleUpdateInput input)
{
if (!(input?.Id > 0))
{
throw ResultOutput.Exception(
_myModuleLocalizer["{0}中文键", "动态字符串参数"]
);
}
// ...
}
}

调用方式

1
2
3
4
5
// 静态翻译
_myModuleLocalizer["欢迎"]

// 动态参数翻译(索引从 0 开始)
_myModuleLocalizer["{0}用户,{1}消息", "张三", "登录成功"]

#中台 #中台/新建接口项目 #中台/配置文件 #中台/特性注解