语言包

系统使用 Symfony/Translation 库进行 I18n 翻译,使用语言包可以友好的将应用提供多种语言供全球用户使用。

语言包定义

每个应用模块下应该包含 Langs 目录,目录中包含如下6种基本语言包:

manage.en-US.yaml
manage.ja-JP.yaml
manage.ko-KR.yaml
manage.ru-RU.yaml
manage.zh-CN.yaml
manage.zh-TW.yaml

文件名结构如下组成:

语言包.语言代码.yaml

每个资源路由均自动调用 manage 语言包作为权限的描述名,语言包如下:

content:
  name: 内容
  article:
    name: 文章

资源定义如下:

#[Resource(app: 'admin', route: '/content/article', name: 'content.article')]

该资源的权限则会读取 content.article.name 作为描述。

语言包调用

使用如下函数可调用指定分类的语言包,如表单验证提示等均可使用该函数进行调用。

__('content.article.name', 'manage')

机器翻译

前期开发中维护多语言可能会增加一些时间上的负担,Dux 平台集成了百度翻译可使用命令行工具进行自动翻译语言包。

翻译后端 yaml 语言

使用如下命令进行翻译,其中 article 为模块目录不区分大小写,pack为语言包名,lang为主语言,执行该命令后会自动翻译初主语言外的其他5类语言作为语言包。

./dux trans:yaml article --pack=manage --lang=zh-CN

翻译前端 json 语言

使用如下命令翻译后台前端的json语言包,其中 article 为模块目录不区分大小写,common为语言包名,lang为主语言,执行该命令后会自动翻译初主语言外的其他5类语言作为语言包。

./dux trans:json article --lang=zh-CN