软件翻译/Old:修订间差异
无编辑摘要 |
无编辑摘要 |
||
第32行: | 第32行: | ||
很神奇是吧,为什么会这样的效果呢?因为在编译MonoDevelop的时候,会生成前面提到的各种语言的mo文件,当你使用中文的时候,使用的就是中文的翻译mo文件,当系统环境变量设置为其他的语言,软件启动后会找对应语言的mo文件。我们搜索一下,就可以看到MonoDevelop的mo放在了系统的语言包文件夹里,我们看到MonoDevelop有很多的语言版本。 | 很神奇是吧,为什么会这样的效果呢?因为在编译MonoDevelop的时候,会生成前面提到的各种语言的mo文件,当你使用中文的时候,使用的就是中文的翻译mo文件,当系统环境变量设置为其他的语言,软件启动后会找对应语言的mo文件。我们搜索一下,就可以看到MonoDevelop的mo放在了系统的语言包文件夹里,我们看到MonoDevelop有很多的语言版本。 | ||
administrator@ubuntu:~$ locate monodevelop.mo<br> | |||
administrator@ubuntu:~$ locate | /usr/share/locale/ca/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/ca/LC_MESSAGES/ | /usr/share/locale/cs/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/cs/LC_MESSAGES/ | /usr/share/locale/da/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/da/LC_MESSAGES/ | /usr/share/locale/es/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/es/LC_MESSAGES/ | /usr/share/locale/fr/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/fr/LC_MESSAGES/ | /usr/share/locale/gl/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/gl/LC_MESSAGES/ | /usr/share/locale/hu/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/hu/LC_MESSAGES/ | /usr/share/locale/id/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/id/LC_MESSAGES/ | /usr/share/locale/it/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/it/LC_MESSAGES/ | /usr/share/locale/ja/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/ja/LC_MESSAGES/ | /usr/share/locale/nl/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/nl/LC_MESSAGES/ | /usr/share/locale/pl/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/pl/LC_MESSAGES/ | /usr/share/locale/pt/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/pt/LC_MESSAGES/ | /usr/share/locale/pt_BR/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/pt_BR/LC_MESSAGES/ | /usr/share/locale/ru/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/ru/LC_MESSAGES/ | /usr/share/locale/sl/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/sl/LC_MESSAGES/ | /usr/share/locale/sv/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/sv/LC_MESSAGES/ | /usr/share/locale/tr/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/tr/LC_MESSAGES/ | /usr/share/locale/zh_CN/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/zh_CN/LC_MESSAGES/ | /usr/share/locale/zh_TW/LC_MESSAGES/monodevelop.mo<br> | ||
/usr/share/locale/zh_TW/LC_MESSAGES/ | |||
2009年3月14日 (六) 00:04的版本
开源软件的国际化的原理
软件,总是从程序代码开始的。程序源代码中有很多的字符串,国际化的目的,就是把这些字符串从代码中取出来,翻译成其他语种。开源软件国际化有一种使用广泛的实现方式,整个过程会涉及到三种格式的文件:pot格式、po格式、mo格式,并有一套GNU工具完成其中的转化,其流程可以参见下面的图:
具体的步骤如下:
- 使用工具软件提取出代码中的字符串,生成的结果是pot(Portable Object Template )格式的文件,这是po(Portable Object)格式文件的模板,在将来程序可能配置成其他语种,其他语言的po文件都从它而来
- 如果需要翻译中文版,则由pot格式生成po格式的初始文件ZH_CN.po,这时的po文件还没有翻译,与pot文件差别还不大
- 软件翻译者完成po文件中字符串的翻译,这是开源软件翻译的工作主体
- po格式文件翻译完成后,生成可以被程序使用的mo(Machine Object)格式的文件ZH_CN.mo
- 生成的mo格式文件存放在系统中,启动程序,中文版本的ZH_CN.mo被调用,软件摇身变成中文版了
以一个例子说明开源软件的翻译
上面的介绍有点晦涩难懂,那么我们看一个已经完成翻译的软件MonoDevelop,相信就比较清楚了。 MonoDevelop 是个Linux平台上的开放源代码集成开发环境,主要用来开发Mono与.NET Framework软件。在ubuntu环境下,我们下载MonoDevelop的源代码,可以看到有一个po的文件夹,有很多不同语言的po文件,如意大利语po文件it.po,也包括已经翻译完成的中文po文件zh_CN.po。
在ubuntu环境下,首先成功编译安装MonoDevelop(具体参照INSTALL文件的方法).
然后,如下设置系统的语言为英文:
export LANG=es_US
然后设置系统的语言为中文: export LANG=zh_CN.UTF-8
很神奇是吧,为什么会这样的效果呢?因为在编译MonoDevelop的时候,会生成前面提到的各种语言的mo文件,当你使用中文的时候,使用的就是中文的翻译mo文件,当系统环境变量设置为其他的语言,软件启动后会找对应语言的mo文件。我们搜索一下,就可以看到MonoDevelop的mo放在了系统的语言包文件夹里,我们看到MonoDevelop有很多的语言版本。
administrator@ubuntu:~$ locate monodevelop.mo
/usr/share/locale/ca/LC_MESSAGES/monodevelop.mo
/usr/share/locale/cs/LC_MESSAGES/monodevelop.mo
/usr/share/locale/da/LC_MESSAGES/monodevelop.mo
/usr/share/locale/es/LC_MESSAGES/monodevelop.mo
/usr/share/locale/fr/LC_MESSAGES/monodevelop.mo
/usr/share/locale/gl/LC_MESSAGES/monodevelop.mo
/usr/share/locale/hu/LC_MESSAGES/monodevelop.mo
/usr/share/locale/id/LC_MESSAGES/monodevelop.mo
/usr/share/locale/it/LC_MESSAGES/monodevelop.mo
/usr/share/locale/ja/LC_MESSAGES/monodevelop.mo
/usr/share/locale/nl/LC_MESSAGES/monodevelop.mo
/usr/share/locale/pl/LC_MESSAGES/monodevelop.mo
/usr/share/locale/pt/LC_MESSAGES/monodevelop.mo
/usr/share/locale/pt_BR/LC_MESSAGES/monodevelop.mo
/usr/share/locale/ru/LC_MESSAGES/monodevelop.mo
/usr/share/locale/sl/LC_MESSAGES/monodevelop.mo
/usr/share/locale/sv/LC_MESSAGES/monodevelop.mo
/usr/share/locale/tr/LC_MESSAGES/monodevelop.mo
/usr/share/locale/zh_CN/LC_MESSAGES/monodevelop.mo
/usr/share/locale/zh_TW/LC_MESSAGES/monodevelop.mo
开源软件的翻译工具使用
使用网站launchpad.net做在线翻译
以上简要里描述了开源软件的翻译的大致过程,现在还有一种比较新颖的方式,那就是通过UBUNTU的网站launchpad.net做在线翻译。Launchpad.net 是由 Ubuntu 的母公司 Canonical 有限公司所架设,其功能之一就是提供了在线翻译的功能,不过建议大家只选择于 Launchpad 翻译 Ubuntu 上独有的软体,而其他的软体则直接到其社群参与翻译的工作,有关其介绍请参考Ubuntu的wiki,这里不再赘述。