国际化语言包创建和翻译操作说明

来自ECJiaWiki
跳转至: 导航搜索

附加说明

ECJIA到家系统语言包是按照独立模块模式来进行相对应的翻译,system系统模块和每个app应用模块都有属于自己模块的语言包,互不干涉。

语言包存放位置

就用system系统模块语言包来讲述,因为支持多个国家的语言,所以会产生多种语言的语言包,则放置于languages文件夹下,如下图所示:
国际化语言包创建和翻译操作说明 1.png
因目前只支持简体中文、英文两种语言,所以在languages下可以看到两个文件夹如图所示:
国际化语言包创建和翻译操作说明 2.png
en_US文件夹用来存储“英文”语言包,zh_CN文件夹下面用来存储“简体中文”语言包。
注:翻译哪国语言所创建的文件夹名称需要与该国代号相一致,不清楚则可进行确认之后进行创建,不可以盲目添加哦。

生成POT模板文件

执行命令或者某种方法(暂不确定)会将该模块下文件中包含的中文语句进行罗列读取即生成POT文件模板,如下图所示:
国际化语言包创建和翻译操作说明 3.png
注:
1、创建POT文件,必须以当前模块名称为准来命名;(系统模块就是system)
2、由于我们是以中文为主来翻译其他各国语言,所以POT模板存放路径应放入zh_CN中;
3、该文件生成之后不需要进行任何操作翻译。 
谨记 :POT模板无需翻译。

下载并安装POEdit翻译软件

国际化语言包创建和翻译操作说明 4.png

POEdit 是一款非常有用的语言包制作软件,你可以在 POEdit 官方下载

创建翻译文件

用Poedit软件打开刚刚所创建的POT文件,点击“创建新的翻译”按钮,如下图所示:
国际化语言包创建和翻译操作说明 5.png
此时会弹出一个框如下图所示:
国际化语言包创建和翻译操作说明 6.png
我们选择要翻译的语言即可,例如:我们要翻译成“英文”,就选择英文(美国),点击确定即可;

如何翻译

如下图所示:
国际化语言包创建和翻译操作说明 7.png
A区域:system模块中包含的所有中文,也就是我们即将要翻译的中文都会列举在此。(其实就是我们生成的POT模板文件中的翻译数据)。
B区域:当前所选中的某个语句,可进行所以切换然后翻译。例如:我即将对“未找到搜索内容!”进行翻译,鼠标选中即可;
C区域:而该区域就是对B区域选中的语句进行手动填写翻译后的句子如下图所示:
国际化语言包创建和翻译操作说明 8.png
注意:为了用户体验最佳:翻译时我们最好打开两个翻译软件,进行比对选择最适合的语境。当然如果很牛逼,一气呵成喽~

翻译之后语言包存储

待一项项翻译完成之后,点击左上角选择“保存”如下图所示:
国际化语言包创建和翻译操作说明 9.png
存储路径硬是当前模块下的languages文件下,翻译为英文就存储到en_US文件下,而此时产生的文件则是PO文件,才是我们真正的语言包件。名称应为和当前所翻译的模块名称一致应为system.po。点击保存按钮,此时语言包就产生 了,如下图所示:
国际化语言包创建和翻译操作说明 10.png
不过可以看到还有一个后缀为MO的文件,自动生成,是一个编译文件,初次保存,则无需编译以及任何操作。只有PO文件有变动的时候才会操作该文件,下面会讲到的。
那么一个完整的语言包架构文件就形成了,如下图所示:
国际化语言包创建和翻译操作说明 11.png
那后期如果语言翻译项进行变动,我们该怎么进行操作来维护呢?请看第八项。

更新语言包操作详解

在我们项目中,代码逻辑随着时间不断再升级,以及某个模块下功能也在不断的更新。此时我们的语言包就要随之进行更新维护。
第一步:使用命令或者其他方法(不确定)更新POT文件进行覆盖即可;(代码中相关语言描述就会重新被POT提取,产生新的POT文件)
第二步:更新PO文件,用软件打开PO文件,从POT文件更新PO文件,如下图所示:
国际化语言包创建和翻译操作说明 12.png
然后PO文件会提示还未翻译的语言。进行翻译之后点击左上角的“文件”选择“保存”进行保存即可。

重新编译MO文件

更新POT文件,也更新了PO文件,我们最终一步就是要将该PO文件重新进行MO编译,这样可以在运行时更快地访问字符串。如下图所示:
国际化语言包创建和翻译操作说明 13.png
点击文件选择“编译为MO”,覆盖原始即可。

进行测试,查看效果

  • 先进行语言包的配置,在content/configs/system.php中,把locale的值从zh_CN修改为en_US即可;
'locale' => 'en_US'
  • 然后打开所改动的进行测试,一定要进行测试。如下图所示:
翻译前:
国际化语言包创建和翻译操作说明 14.png
翻译后:
国际化语言包创建和翻译操作说明 15.png

猜你想看

国际化语言包代码升级说明

国际化语言包使用函数讲解