国际化多语言(v8.0新增)
i18n(Internationalization 的缩写,首末字符 i 和 n 之间有 18 个字母)是软件国际化的标准缩写。它是指让软件支持多种语言和地区的功能,使得同一个软件可以面向不同语言地区的用户,显示相应的语言界面。
随着互联网的发展,越来越多的企业开始走向国际化,多语言的支持已经成为了一个必备的功能。Cool Admin 也对此做了支持。
实现
多语言是需要前后端共同支持的,前端请前往前端文档查看。
与其它实现方案不同的是,Cool Admin前后端的多语言都是基于大模型翻译的(比传统机翻更加准确),无需手动配置,只要开启就能自动翻译,而且不需要改变任何原有代码。
以前该怎么写还是怎么写!!!
使用
1、开启多语言
在src/config/config.default.ts
中开启多语言
cool: {
// 国际化配置
i18n: {
// 是否开启
enable: true,
// 语言
languages: ['zh-cn', 'zh-tw', 'en'],
},
}
开启之后,重启下后端,框架就会自动扫描并翻译成对应的语言。
当你在控制台看到这样的输出,则代表成功
// 翻译中
/ i18n translate...
// 翻译成功
✅ i18n translate success!!!
警告!!!
基于大模型Ai翻译的方式有时候会失效,删除src/locales
文件夹重启重试即可!!!
2、实现原理
只要开启并配置了国际化,在开发环境下重启,框架就会自动扫描菜单
、字典
、异常消息(CoolCommException)
,并调用大模型对其进行翻译
翻译完成之后会在路径src/locales
下生成对应种类的语言文件,每个种类都会有一个.lock
文件,如果这个文件存在
则该种类的国际化将不会进行翻译,也就是后续你有新增相关的内容,要让其再次翻译,得对应地删除该.lock
。
目录结构
├── src
│ └── locales(自动生成)
│ │ └── dict(字典)
│ │ │ └── info(字典信息)
│ │ │ └── zh-cn.json
│ │ │ └── en.json
│ │ │ └── type(字典类型)
│ │ │ └── zh-cn.json
│ │ │ └── en.json
│ │ │ └── .lock(锁定文件,防止重复翻译)
│ │ └── menu(菜单)
│ │ │ └── zh-cn.json
│ │ │ └── en.json
│ │ │ └── .lock(锁定文件,防止重复翻译)
│ │ └── msg(消息)
│ │ │ └── zh-cn.json
│ │ │ └── en.json
│ │ │ └── .lock(锁定文件,防止重复翻译)
│ │ └── comm(公共)
│ │ │ └── zh-cn.json
│ │ │ └── en.json
│ │ │ └── .lock(锁定文件,防止重复翻译)
提示
自动翻译只有在本地开发的时候才会进行,生产环境即使开启也不会进行翻译。
3、特殊场景
有些场景是需要在代码做特殊处理的,如:现在需要针对不同国家注册的用户推送消息,则需要根据用户的国家来推送不同语言。
Service示例:
@Inject()
translate: BaseTranslateService;
const value = this.translate.comm('一个很Cool的框架')['en'];
console.log('对应国家的语言', value);
注意
this.translate.comm
这个是固定的写法,不能改变,框架会根据这个识别扫描信息并翻译
4、语言配置对照表
- 简体中文(zh-cn)
- 美国英语(en)
- 阿塞拜疆语(az)
- 德语(de)
- 葡萄牙语(pt)
- 西班牙语(es)
- 丹麦语(da)
- 法语(fr)
- 挪威语(nb-NO)
- 繁体中文(zh-tw)
- 意大利语(it)
- 韩语(ko)
- 日语(ja)
- 荷兰语(nl)
- 越南语(vi)
- 俄语(ru)
- 土耳其语(tr)
- 巴西葡萄牙语(pt-br)
- 波斯语(fa)
- 泰语(th)
- 印度尼西亚语(id)
- 保加利亚语(bg)
- 普什图语(pa)
- 波兰语(pl)
- 芬兰语(fi)
- 瑞典语(sv)
- 希腊语(el)
- 斯洛伐克语(sk)
- 加泰罗尼亚语(ca)
- 捷克语(cs)
- 乌克兰语(uk)
- 土库曼语(tk)
- 泰米尔语(ta)
- 拉脱维亚语(lv)
- 南非荷兰语(af)
- 爱沙尼亚语(et)
- 斯洛文尼亚语(sl)
- 阿拉伯语(ar)
- 希伯来语(he)
- 立陶宛语(lt)
- 蒙古语(mn)
- 哈萨克语(kk)
- 匈牙利语(hu)
- 罗马尼亚语(ro)
- 库尔德语(ku)
- 库尔德语 (ckb)
- 维吾尔语 (ug-cn)
- 高棉语 (km)
- 塞尔维亚语 (sr)
- 巴斯克语 (eu)
- 吉尔吉斯语 (ky)
- 亚美尼亚语 (hy-am)
- 克罗地亚语(hr)
- 世界语 (eo)
- 孟加拉语 (bn)
- 马来语 (ms)