本文档介绍如何在接口项目中启用和配置内置国际化功能。
目录结构
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[] |
请求语言解析器,可选值:QueryString、Cookie、AcceptLanguageHeader,设置空数组 [] 则强制使用默认语言 |
翻译文件配置
英文翻译
创建 Resources.MyModuleLocalizer.en.json:
1 2 3 4
| { "中文键": "English description", "{0}中文键": "{0}English description" }
|
[!TIP]
推荐使用中文作为语言索引键,便于维护和查找。
繁体翻译
创建 Resources.MyModuleLocalizer.zh-TW.json:
语言资源类
创建共享语言资源类 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;
[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; }
public async Task UpdateAsync(ModuleUpdateInput input) { if (!(input?.Id > 0)) { throw ResultOutput.Exception( _myModuleLocalizer["{0}中文键", "动态字符串参数"] ); } } }
|
调用方式
1 2 3 4 5
| _myModuleLocalizer["欢迎"]
_myModuleLocalizer["{0}用户,{1}消息", "张三", "登录成功"]
|
#中台 #中台/新建接口项目 #中台/配置文件 #中台/特性注解