2013年10月8日星期二

如何合并po文件


我下载了一个bbPress,结果找到的中文语言包是一年前的,最新版的2.4的语言包没有中文的。虽然一年前的版本也能让界面变成中文的,但还是有一些地方没有显示为中文。

我对比了一下po文件,发现2.4的版本的有1014行需要翻译,而1年前的2.0只有704行,我想找出哪些没有翻译过的,结果这是一个非常巨大的工作量,我决定找找看是否有办法合并po文件,这样我就只需要翻译300多条了。

还真的是一个常见的需求,找到这个页面:
http://code.google.com/p/i18n-zh/wiki/Merge
升级原来已经翻译过的文件
这是最常见的情况了。由于程序升级,导致相应的 po 文件发生改变。作者将最新的 po 上传给了 TP。默认情况下,如果该软件以前曾经分派给你翻译的话,那你将会是新 po 文件的指定翻译者,不必再去申请了。 方法也简单。只要将新版本的 pot 文件跟原来翻译好的 po 文件放在同一个目录下。然后运行
msgmerge -U old.po new.pot
就行了。合并过的文件将以 old.po 命名,原有的 old.po 将被改为 old.po~。然后你要做的就是,在生成的的 po 上进行修订,最后用 svn ci 直接上传就 OK 了。old.po~ 会被 svn 自动忽略。如果你要觉得它不爽的话,直接用 rm old.po~ 删除就行了,因为这个文件是不受 svn 版本控制的。

msgmerge不是一个单独发行的程序,包含在gettext中,在Mac上不知道如何运行gettext,于是ssh连上ubuntu服务器,用
apt-get install gettext
一下子就安装上了,
再运行

root@zola:~# msgmerge -U bbpress-zh_CN.po bbpress.pot
........................................................................................................................................................................................................................................................................................................................................................................................................................................... done.
root@zola:~#


看来合并成功了,再下载回来用poEdit打开 bbpress-zh_CN.po,提示47%已翻译,1014个字条串,211个未翻译。这样一来节约大量时间了哇。


来都来了,抢个沙发,给点精神鼓励吧!求你啦!

发表评论