多语言
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.po中19400行左右)被翻译成您希望译成的字符集。webERP使用此字符集送出html头,因此您的网页浏览器知道如果翻译送出的字符集。
研究一下poedit软件是值得的,因它在创建gettext翻译文件时,有些节约时间功能。
将您的翻译文件发送到submissions@weberp.org
在sourceforge上会为此新语言创建一个新的路径和说明档案供所有人访问。
技术概论
这是如何实现的
webERP
使用GNU
gettext包作语言翻译。要使用gettex库,它必须装到网络服务器上,PHP必须用gettxt函数编译。然而,从3.01版开始,由于
Briain
Gomez和PHP-GETTEXT作者Danilo
Segan和Nico
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,GBK,
GB18030用于简体中文
*BIG5,
BIG5-HKSCS用于正体中文
*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包括:
标题,包含翻译人员的详细信息和要显示语言的字符的关键字符集。
信息识别字符串,以msgid开始,然后是要翻译的用引号因用的英语字符串,字符串被引用的脚本也被标明。
每个msgid声明的字符串例如msgstr""--在一个新的messages.po文件中,他们都是“”。翻译工作就是要求输入新 语言的msgstr来代表msgid字符串中的文字。
编辑一个语言文件标题
可以用这个工具修改语言文件标题。修改标题的一个重要原因是变更适合这种语言环境的字符集。例如对en,字符集通常设定为8829-1,或者类似的。当编辑了标题的不同部分后,确保点击位于底部的输入信息Enter
Information按钮以保存修改。
编辑语言文件模块
通过这个工具,大多的翻译工作就完成了。首先选择你要编辑的语言,然后就可以选择要翻译的模块。为完整翻译整个系统,所有的模块都必须被完成。很多人偏好
首先翻译index.php和includes/header.php,为了将他们语言的主菜单翻译完成。从这点而言,最重要的模块可以首先翻译,其他的
可以安装字母顺序翻译。需要一些记忆系统,来记住后续需要翻译那些模块。
一旦语言和模块被选择,点击Proceed处理。这时会弹出一个界面,它会列出模块里的所有的字符串,每个字符串旁边是输入你翻译的字符串的区域。右边是
一个列表,表示模垮中字符串出现在代码中的行号。输入一些翻译后,点击Enter
Information输入信息来保存变更。
如果你的webERP版本中有些开
发工作,将开发者新创建的字符与已经存在的语言文件合并,并且创建一个新的messages.po文件,它包括系统要求的全部字符串。如果有些信息还是显
示为英文,但是当你编辑那个屏幕的模块时,他们并没有出现,于是你知道您必须将已经存在的messages.po文件与任何新的信息合并。要保证所有的字
符串都被gettext工具摘取,首要确保首先运行"Rebuild
the System Default Language File"重建系统默认语言。然后从“Edit
a Language File Module"“编辑语言文件模块屏幕”,点击”Refresh
Messages With Latest
Strings"”用最近的字符串刷新信息“--这完成了Rebuild新创建的主messages.po文件与你已有的翻译的合并。