外观
国际化8.3.0
要使用内置的国际化功能,在接口项目中创建类似于下面的目录结构:
Resources/
├─ MyModuleLocalizer.cs
├─ Resources.MyModuleLocalizer.en.json
然后在启动项目 ConfigCenter/appconfig.json 中增加下面的配置:
json
{
"AppConfig": {
//语言配置
"Lang": {
//默认 true 启用, 为 false 不使用内置国际化
"Enable": true,
//默认语言
"DefaultLang": "zh-CN",
//语言列表
"Langs": [ "zh-CN", "en" ],
//语言请求解析列表,设置[]可强制使用默认语言
"RequestCultureProviders": [] //["QueryString","Cookie","AcceptLanguageHeader"]
}
}
}
设置语言翻译文件
新建 Resources.MyModuleLocalizer.en.json 英文翻译文件
推荐用中文作为语言索引键
json
{
"中文键": "English description"
}
动态字符串参数配置,索引从0开始设置
json
{
"{0}中文键": "{0}English description"
}
设置语言资源类
新建共享语言资源类 MyModuleLocalizer.cs
cs
using Microsoft.Extensions.Localization;
using ZhonTai.Admin.Core.Attributes;
using ZhonTai.Admin.Resources;
namespace MyCompanyName.MyProjectName.Resources;
/// <summary>
/// Admin国际化
/// </summary>
[InjectSingleton]
public class MyModuleLocalizer: ModuleLocalizer
{
public AdminLocalizer(IStringLocalizer<MyModuleLocalizer> localizer) : base(localizer)
{
}
}
使用语言资源类
cs
[Order(20)]
[DynamicApi(Area = AppConsts.AreaName)]
public class ModuleService : BaseService, IDynamicApi
{
private readonly MyModuleLocalizer _myModuleLocalizer;
public ModuleService(MyModuleLocalizer myModuleLocalizer)
{
_myModuleLocalizer = myModuleLocalizer;
}
/// <summary>
/// 修改
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task UpdateAsync(ModuleUpdateInput input)
{
if (!(input?.Id > 0))
{
throw ResultOutput.Exception(_myModuleLocalizer["{0}中文键", "动态字符串参数"]);
}
...
}
}