约定#
本地化键名称是任意的。可以设置任何名称。但对于特定文本类型有一些约定;
- 为菜单项添加
Menu:
前缀 - 使用
<enum-type>.<enum-value>
或Enum:<enum-type>.<enum-value>
命名约定来本地化枚举成员。当你这样做时, ABP 可以在一些适当的情况下自动定位枚举
设置默认本地语言#
因为 ABP 自带了很多语言包,但是我们并不会用到那么多国的语言,一般来说就是英文和中文两种,多余的就需要删除了。但比如中文又有很多分支,如何确定自己的本地化语言是什么?通过在浏览器执行 navigator.language
确定,比如我的输出结果是 zh-CN
,那意味着会使用 culture
为 zh-CN
的 json 语言包文件,比如 zh-CN.json
,这整个过程是自动化的,不需要配置什么,只是注意不要把自己 culture
的语言包删除了,否则只会显示英文。
我之前想为项目指定一种默认的 culture
,但未成功,我用过的办法有:
- 在
XXW.XXX.Domain.Shared
项目的XXDomainSharedModule.ConfigureServices
函数中配置:
options.Resources
// 添加本地化并指定默认的本地语言
// https://docs.abp.io/en/abp/latest/Localization#inherit-from-other-resources
.Add<IDCloudResource>("zh-CN")
.AddBaseTypes(typeof(AbpValidationResource))
.AddVirtualJson("/Localization/IDCloud");
- 在
*.Web
项目的appsettings.json
文件中配置以下内容:
{
"Settings": {
// https://github.com/abpframework/abp/issues/2469#issuecomment-569518267
"Abp.Localization.DefaultLanguage": "zh-CN"
}
}
也有可能是初始化数据时数据库 AbpSettingDefinitions
表中设置了默认本地语言,偶然看到没改过,可以改一下试试:
还有一种方式,那就是 https://github.com/maliming/Owl.Abp.CultureMap
还没用过
参考: