国际化语言包创建和翻译操作说明
跳到导航
跳到搜索
目录
附加说明
ECJIA到家系统语言包是按照独立模块模式来进行相对应的翻译,system系统模块和每个app应用模块都有属于自己模块的语言包,互不干涉。
语言包存放位置
就用system系统模块语言包来讲述,因为支持多个国家的语言,所以会产生多种语言的语言包,则放置于languages文件夹下,如下图所示:
因目前只支持简体中文、英文两种语言,所以在languages下可以看到两个文件夹如图所示:
en_US文件夹用来存储“英文”语言包,zh_CN文件夹下面用来存储“简体中文”语言包。 注:翻译哪国语言所创建的文件夹名称需要与该国代号相一致,不清楚则可进行确认之后进行创建,不可以盲目添加哦。
生成POT模板文件
执行命令或者某种方法(暂不确定)会将该模块下文件中包含的中文语句进行罗列读取即生成POT文件模板,如下图所示:
注: 1、创建POT文件,必须以当前模块名称为准来命名;(系统模块就是system) 2、由于我们是以中文为主来翻译其他各国语言,所以POT模板存放路径应放入zh_CN中; 3、该文件生成之后不需要进行任何操作翻译。 谨记 :POT模板无需翻译。
下载并安装POEdit翻译软件
POEdit 是一款非常有用的语言包制作软件,你可以在 POEdit 官方下载
创建翻译文件
用Poedit软件打开刚刚所创建的POT文件,点击“创建新的翻译”按钮,如下图所示:
此时会弹出一个框如下图所示:
我们选择要翻译的语言即可,例如:我们要翻译成“英文”,就选择英文(美国),点击确定即可;
如何翻译
如下图所示:
A区域:system模块中包含的所有中文,也就是我们即将要翻译的中文都会列举在此。(其实就是我们生成的POT模板文件中的翻译数据)。 B区域:当前所选中的某个语句,可进行所以切换然后翻译。例如:我即将对“未找到搜索内容!”进行翻译,鼠标选中即可; C区域:而该区域就是对B区域选中的语句进行手动填写翻译后的句子如下图所示:
注意:为了用户体验最佳:翻译时我们最好打开两个翻译软件,进行比对选择最适合的语境。当然如果很牛逼,一气呵成喽~
翻译之后语言包存储
待一项项翻译完成之后,点击左上角选择“保存”如下图所示:
存储路径硬是当前模块下的languages文件下,翻译为英文就存储到en_US文件下,而此时产生的文件则是PO文件,才是我们真正的语言包件。名称应为和当前所翻译的模块名称一致应为system.po。点击保存按钮,此时语言包就产生 了,如下图所示:
不过可以看到还有一个后缀为MO的文件,自动生成,是一个编译文件,初次保存,则无需编译以及任何操作。只有PO文件有变动的时候才会操作该文件,下面会讲到的。 那么一个完整的语言包架构文件就形成了,如下图所示:
那后期如果语言翻译项进行变动,我们该怎么进行操作来维护呢?请看第八项。
更新语言包操作详解
在我们项目中,代码逻辑随着时间不断再升级,以及某个模块下功能也在不断的更新。此时我们的语言包就要随之进行更新维护。 第一步:使用命令或者其他方法(不确定)更新POT文件进行覆盖即可;(代码中相关语言描述就会重新被POT提取,产生新的POT文件) 第二步:更新PO文件,用软件打开PO文件,从POT文件更新PO文件,如下图所示:
然后PO文件会提示还未翻译的语言。进行翻译之后点击左上角的“文件”选择“保存”进行保存即可。
重新编译MO文件
更新POT文件,也更新了PO文件,我们最终一步就是要将该PO文件重新进行MO编译,这样可以在运行时更快地访问字符串。如下图所示:
点击文件选择“编译为MO”,覆盖原始即可。
进行测试,查看效果
- 先进行语言包的配置,在content/configs/system.php中,把locale的值从zh_CN修改为en_US即可;
'locale' => 'en_US'
- 然后打开所改动的进行测试,一定要进行测试。如下图所示:
翻译前:
翻译后: