多语言


webERP
可以被翻译成任何语言,这样整个网络界面就会显示为任何用户的语言。系统可以为不同的用户显示不同的语言--在同一时间--根据个人用户设置中的语言设置。

创建翻译的建议程序如下:
1. Join the mailing list here
加入邮件列表

让这个列表知道你要帮助翻译--有些人可能已经在为此工作了。

2.
取得最新的messages.po文件,使用你喜欢的编辑器(或者poedit)输入译文。最近的messages.po文件包含在最新的档案中:
www_root/webERP/locale/en_GB/LC_MESSAGES/message.po


编辑提供的文件,输入标记为msgid的字串的翻译,放在标记为msgstr的位置。注意字串中嵌入的html字符串,html也要求翻译到译文里。并且确保每个译成的字串包裹在符号('')里。请也完成文件头信息—输入您的信息因此您可以为您的贡献得到适当认可。

尤其重要的是确保字符串“ISO-8859-1”(大约位于文件messages.po19400行左右)被翻译成您希望译成的字符集。webERP使用此字符集送出html头,因此您的网页浏览器知道如果翻译送出的字符集。

研究一下poedit软件是值得的,因它在创建gettext翻译文件时,有些节约时间功能。

将您的翻译文件发送到submissions@weberp.org

sourceforge上会为此新语言创建一个新的路径和说明档案供所有人访问。


技术概论

这是如何实现的

webERP
使用GNU gettext包作语言翻译。要使用gettex库,它必须装到网络服务器上,PHP必须用gettxt函数编译。然而,从3.01版开始,由于 Briain GomezPHP-GETTEXT作者Danilo SeganNico Kaiser努力,他们的php类使翻译成为可能(尽管他们会比gettex库函数慢),与webERP绑定,所以甚至没有安装gettext,翻译还是可以完成。
gettext
翻译文件储存在locale路径里,在这个路径下,有每种当地语言环境的次级目录。五位代码代表使用的语言。例如en代表英文,接着一个下划线,接着是另外两个大写字符代表语言版本,例如US代表USA--这样整个的语言环境代码变成en_US. 对于大不列颠英语,完整的语言环境代码就变成en_GB--这是编写webERP默认的语言。这个代码(en_GB)的语言环境要安装在web- server上。在linux网络服务器上,可以用命令行 #locale -a检视所有安装的语言环境。(Ubuntu下,在命令提示符后,直接输入local3 -a即可)

New directories will need to be made up if a translator wishes to have a local version for their language. Under the locale directory the five character locale abbreviation code directory there is a further sub-directory called LC_MESSAGES - this is where the translation files exist. There are two files in each of these directories:
如果翻译人员希望为他们自己的语言创建一个本地版本,需要设立一个新的路径。在语言环境目录locale下--由五个字符的语言环境缩写代码表示的路径下,有一个更下层的路径叫做LC_MESSAGES--这是翻译文件所在的地方。在每个这样的路径下有两个文件:

1
messages.po 这个文件包含要翻译的所有字符串。这是翻译人员要考虑的唯一文件。

2. messages.mo
这是一个二进制的机器可以查询的翻译文件,被gettext引用。这个.mo文件是gettext工具(msgfmt.exe或者msgfmt 在 *nix),使用messages.po文件(从命令行窗口的语法是 msgfmt.ext messages.po)自动产生的,.主要的努力在于将.po文件翻译过来--.mo文件是由webERP项目管理员非常容易与开心地创建的。

任何的文字编辑器可以用来编辑.po文件 (GNU Emacs包含专业的功能编辑.po文件,它含有一个特殊的PO-模式)--也有一个工具叫做poedit,翻译人员经常建议使用这个工具。

理解messages.po文件


翻译就是把messages.po文件的字符串转换成其他语言。最重要的是最近的CVS文件中,路径locale/en_GB/LC_MESSAGES/messages.po文件。当然,最新的模板文件可以电邮至info@weberp.org或者发一个信息给翻译清单索取。

messages.po由几部分组成

例如,要翻译成法文

#: AccountGroups.php:8 index.php:890
msgid "An example string in English that needs to be translated"
msgstr="Une corde d'exemple dans le ce anglais doit
re traduite "


这行#: AccountGroups.php:8 index.php:890
意味着跟随的字符串被使用在AccountGroups.php脚本第8行和index.php脚本的 890行。 理解了脚本用于何处的文字可能会有用。在程序中使用了几次的脚本只需要翻译一次。在有些例子下,#行显示的字符使用的地方,有时会是很长的脚本清单。
msgid "An example string in English that needs to be translated"

这行是在msgstr中要替代的英文字符串。如果msgstr的值是空白-"",gettext会返回英文字符串。

翻译的努力在于编辑messages.po文件,并且把翻译的语言输入到msgstr的引号中去。

.po
文件标题

.po
文件的一些注释开头也应该翻译出来。

"SOME DESCRIPTIVE TITLE", - should be replaced with webERP - LANGUAGE Translation File - where LANGUAGE is the language being translated into
“SOME DESCRIPTIVE TITLE”
,--应该被用webERP-语言翻译文件(这里的语言是指翻译成的语言)取代
# FIRST AUTHOR , YEAR. -
应该是你的名字和电子邮件地址--连同工作完成的年份。

Project-Id-Version
应该是webERP的版本号

PO-Revision-Date
这是你最后一次编辑入文件的日期

Last-Translator
这是你的名字和电邮地址,用于当有些翻译不是很清楚时,使用这种语言的用户联络您。
Content-Type
用你用的文字编码取代‘CHARSET',这是你的语言环境或者UTF-8.

GNU系统中,下述的编码经常用于对应的语言:

* ISO-8859-1 for Afrikaans, Albanian, Basque, Catalan, Dutch, English, Estonian, Faroese, Finnish, French, Galician, German, Greenlandic, Icelandic, Indonesian, Irish, Italian, Malay, Norwegian, Portuguese, Spanish, Swedish,
* ISO-8859-2 for Croatian, Czech, Hungarian, Polish, Romanian, Serbian, Slovak, Slovenian,
* ISO-8859-3 for Maltese,
* ISO-8859-5 for Macedonian, Serbian,
* ISO-8859-6 for Arabic,
* ISO-8859-7 for Greek,
* ISO-8859-8 for Hebrew,
* ISO-8859-9 for Turkish,
* ISO-8859-13 for Latvian, Lithuanian,
* ISO-8859-15 for Basque, Catalan, Dutch, English, Finnish, French, Galician, German, Irish, Italian, Portuguese, Spanish, Swedish,
* KOI8-R for Russian,
* KOI8-U for Ukrainian,
* CP1251 for Bulgarian, Byelorussian,
*GB2312
GBKGB18030用于简体中文
*BIG5
BIG5HKSCS用于正体中文
*EUC
JP用于日文
*EUC
KR用于韩文
*TIS
620用于泰文
*UTF
8用于任何语言,包括上述列出的

由于在utf-8中有大量潜在字符,要嵌入pdf文件的字体文件导致这个pdf文件太大而不能通过拨号方式传输,因此为避免上述情况,最好使用以上特别指定的文字。

字符集的名称可以用大写或者小写字符。通常偏好大写。

Content-Transter-Encoding

设置为8字节

管理

一旦这个练习完成,文件必须传回给项目管理员:submissions@weberp.org,用来创建.mo文件。会用压缩文件zip返回一个新的路径,用于从web路径中释放。这个语言会被加入到webERP 系统从而让其他用户受益。

在每次登人系统时,系统通过查看用户信息,确定用户设定的语言,然后设定使用语言。用户可以改变设置的语言,通过点击左上角的用户名,会显示用户设定。变更语言设定会在储存设置时立即激活新语言。用户只被允许选择在locale路径下,设置在下级路径中语言。

其他资源

The GNU gettext manual

翻译工具

webERP
自身携带了一些在线工具来管理翻译--使用这些工具维护翻译会有些问题--尤其是某些文字对脚本造成问题,并且字符编码集可能丢失。所以不建议使用这些工具,除了有时最新的messages.po的备份放在其他的地方,而不得不作些特殊维护。

下面的文字解释了如何使用webERP提供的语言翻译工具来增加语言和维护他们的翻译。

总而言之,在使用这些工具前,你需要点击左上角你的用户名字,以打开用户参数。选择要翻译的语言,在点击修改Modify.语言工具全部使用目前选择的用户语言。如果你希望使用的语言不在那里,那么可以使用‘Add a New Language'’增加一个新语言‘工具来开始新翻译--参考后面。默认情形下,新安装的webERP只有英语-en_GB.最新提交的语言包可从这里得到sourceforge webERP page


翻译从工具菜单维护--在主菜单没有独立的连接,由于这是只有系统管理员才可以获取的区域。对翻译文件未 授权的更改因此禁止。工具菜单是 Z_index.php-因此你可以变更主菜单的URL(超连接),在它前面加上Z_,这样就会出现工具菜单--只有你的用户帐号里得到系统管理员的授 权。翻译管理可以通过“Maintain Language Files"维护语言文件”链接进行。

共有四个翻译工具:



为系统增加一个新语言

使用这个工具创建一个新语言。必须清楚只有在你的web-server网络服务器有适当的语言环境文件的语言才可被增加。语言的识别符必须与web- server网络服务器的语言文件相符。以xx_XX的格式输入语言,前两位字符是代表语言的小写标准代码,例如en代表英语,后两位是代表国家的大写标 准代码例如US代表美国。这个例子就是en_US.下划线必须将语言和国家分开,总共5个字符。输入要创建的语言后,点击处理Proceed按钮。系统于 是创建一个新语言路径,位于locale语言环境路径下,并且在新语言路径下会有一个LC_MESSAGES路径。于是,在新的locale/xx_XX /LC_MESSAGES路径下,复制了默认语言文件(messages.po).开始时,在新的messages.po文件里没有翻译。
一旦创建了新语言,要用语言翻译工具来维护新的翻译(你要专用的新语言)。要变换语言,点击显示在webERP屏幕左上角的用户名,下拉菜单会显示上述创建的新语言。选择新的语言让你可以使用翻译工具操作。

如果使用提供的翻译工具,你不必了解语言文件的结构。下面提供的细节只是作为信息而已。语言文件-messages.po包括: