文件类型:
po:
用msginit分析pot文件,生成各语言对应的po文件,比如中文的zh_CN.po。
mo:
用msgfmt将po文件编译生成mo文件,这是二进制文件,不能直接编辑。
gmo:
与mo一致
pot:
是一种模板文件,与po文件一样,其中包含了从源代码中提取所有的翻译字符串的列表,主要提供给翻译人员使用。
msgfmt --output-file=zh_CN.gmo zh_CN.po //生成gmo
msgunfmt zh_CN.gmo -o zh_CN.po //反编译成po
有时添加patch修改po不生效,需要将source中的gmo或mo删除,重新生成
以上只提供了修改po,并生成mo或gmo的方法,如果一开始就没有po文件,怎么去生成呢?
步骤如下:
1、将src目录下的需要翻译的c文件列表生成到po目录下
find src -name "*.c" > POTFILE.in
2、使用xgettext提取需要翻译内容,生成.po文件
xgettext -f POTFILEE.in -d zh_CN --keyword=_ --keyword=N_ --from-code=UTF-
-f 读入输入文件的列表
-d 输出文件
--keyword= 不使用默认关键字
--from-code=名称 输入文件的编码
3、使用msgmerge将老的po文件和新的po文件进行merge
4、可以使用工具poedit gtranslator对生成的po进行翻译
5、将po生成gmo
msgfmt --output-file=zh_CN.gmo zh_CN.po