本文我们以经典ERP管理软件——浪潮PS cloud管理软件为例,对po文件进行简单的介绍。PS cloud的每个模块目录下,有个 i18n 的目录,这个目录中存放着本模块的语言包。例如,简体中文语言包的文件名是“ zh_CN.po”,繁体中文语言包是” zh_TW.po”。通过编辑 po 文件,可以实现对PS cloud界面的汉化。为编辑 po 文件,你虽然可以使用通用文本编辑器 EditPlus、UltraEdit 或 Notpad,但推荐使用 po 文件专用的编辑软件 Poedit,它操作简便,能提示那些还没有翻译,并能提示翻译中的格式错误。
po 文件来是用来翻译程序源代码里的字符串的,目前大部分自由软件实现国际化使用的是 gettext。国际化就是让程序可以使用多国语言来显示程序里的字符串。程序里一般都有很多字符串,菜单名也好,错误信息也好,都是字符串。假设字符串为 string,非国际化的程序里都是直接写"string"。如果用了 gettext 来实现国际化的话,就要写成 gettext("string")。这个 string就是 msgid。然后使用 xgettext 来从程序源代码文件产生 po 文件。然后交给专门的翻译人员来翻译 po 文件。
翻译人员根本不需要懂编程。翻译完毕后,使用 msgfmt 来把 po 转化成 mo 文件,并安装到系统里合适的位置。程序运行时,由 gettext 函数决定到底显示什么语言的字符串。主要有两个决定因素,一个是系统的 locale 及相关环境变量(LANGUAGE,LC_ALL,LC_MESSAGES 和 LANG),一个是相关的 mo 文件。
随着程序版本的升级,程序里的字符串的数量和内容都会发生变化,但变化不会很大,以前翻译过的 po 里大部分msgid都能被重复利用。所以维护po的翻译人员在每次得到从新的程序源代码产生的po时,都用msgmerge来根据旧的已翻译过的 po 来先处理一下新的未翻译的 po。处理过后,大部分情况下新 po 就翻译的差不多了,翻译人员的工作量被大幅度减轻了。
留言与评论(共有 0 条评论) |