很多软件都支持gettext,比如WordPress、ZenPhoto等。那么要想做个语言包,就得用到gettext这个工具。以ZenPhoto为例,使用方法如下:
首先要找出所有需要翻译的文件:
$ cd zenphoto $ find . -name "*.php" > filelist.txt
然后从所有需要翻译的文件中提取出英文字符串。
$ xgettext --from-code utf-8 -f filelist.txt -d zenphoto
这样,xgettext命令就会分析所有文件,找出其中需要翻译的字符串(即php中调用gettext所用的字符串)并输出到zenphoto.po中。--from-code参数指定源代码的编码格式。ZenPhoto的源代码中,gettext函数参数中含有一些UTF-8的字符(实际上应该没有),如果不指定这个参数,xgettext就无法正确识别这些UTF-8字符。-f 指定要分析的文件列表。-d指明输出文件的名称,扩展名为.po。
然后创建语言文件夹,把.po文件放进去。ZenPhoto的话,操作方法如下(当前目录为zenphoto根目录):
$ mkdir -p locale/zh-CN/LC_MESSAGES $ mv zenphoto.po locale/zh-CN/LC_MESSAGES $ cd locale/zh-CN/LC_MESSAGES
接下来翻译zenphoto.po文件就行了。
翻译完成后,执行如下命令将.po文件编译成.mo文件:
$ msgfmt -o zenphoto.mo zenphoto.po
然后重启httpd就能看到翻译的效果。
忘了说了,如果系统上没有xgettext和msgfmt命令,只需安装gettext包即可。
最近一直在忙点私活,又好久没写blog了,再不写点的话二月份就又要以单篇文章结束了。 前一阵子一直在研究Unicode,索性把研究结果介绍一下吧。
可能大家都听说过 Unicode、UCS-2、UTF-8 等等词汇,但它们具体是什么意思, 是什么原理,之间有什么关系,恐怕就很少有人明白了。 下面就分别介绍一下它们。
阅读全文 »