OpenERP 翻译

在OpenERP源码中,所有翻译的术语都用国际英语来书写 (语言编码 en_US)。一个OpenERP的管理员可以在官方的翻译包中安装额外的语言包。所有已安装的模块对应的翻译将在数据库中被加载,当用户改变他的首选语言时这些翻译会替换默认的英语术语中的应用程序界面。

不管是哪个流程,只要你想要参与到OpenERP的翻译工作来,在开始准备写下你的第一个翻译单词之前,请阅读 Launchpad 翻译指南 ,其中包含了对所有新翻译者都非常重要的建议。

参与者有两种途径来增加或修改他们的语言的翻译:

  1. 在Launchpad上的OpenERP社区平台工作,使用 在Launchpad的奉献翻译界面 ,其前身为rosetta。这保证了是在最新的翻译上工作,并且会自动同步到源码的 .po 文件中。想了解更多细节见 在Launchpad上翻译

  2. 直接在PO文件上进行修改工作,就把他们当作普通的源码文件,发送一个 .po 补丁的合并建议到OpenERP,就像一个普通的补丁。 这里有更详细的解释在 源代码中的翻译 部分。

第一种方案强烈推荐您用于OpenERP官方翻译工作,不过当您翻译一个新的社区模块时有时候第二种方案更有效率。这两种方案都有访问权限的要求,就像下面解释的。

Can I do batch translations locally and then upload the .po files in batch in Launchpad?

您可以通过翻译本地 .po 文件, 然后使用 导入一个翻译 的按钮上传它会在顶端显示每个模块的翻译.例如要上传 “会计模块” 的法语 (fr)翻译在trunk分支, 您可以使用下面的URL

  1. https://translations.launchpad.net/openobject-addons/trunk/+pots/account/fr/+translate

有一个(beta版的不带支持的)技术工具能完成在Launchpad进行大规模翻译上传。在您想离线进行翻译或者想要从一个分支复制翻译到另外一个分支的时候它可能会有帮助。这是个Python脚本,名字叫 lp_upload.py,用于命令行模式。可以在[http://bazaar.launchpad.net/~odo-openerp/+junk/openerp-utils/files](http://bazaar.launchpad.net/~odo-openerp/+junk/openerp-utils/files)\`_找到它.

如果可能的话,我们非常推荐使用launchpad的界面来直接翻译,因为这有很多的好处,详情参见 在Launchpad上翻译

在Launchpad上翻译

Launchpad提供了基于web的翻译界面,可以用于翻译。其主要特征有:

  • 基于web,任何人都可以在任意地方访问,不需要任何的开发技巧。

  • 能够投提供翻译所需的上下文信息,提示术语在软件中的出处等用于正确翻译的关键信息。

  • 使用位于Launchpad主机上的成千的开源项目,可以从其他所有的项目的类似翻译中给出翻译建议,加速翻译工作。

  • 提供审议机制,允许对个人认为需要其他翻译者审议的词条进行标记,使协作更加容易。

  • 有个特定的权限系统,Launchpad团队可以被分配到具体的语言,这个团队对此翻译的质量负责。

  • 自动与包含源代码的翻译文件同步,高效地完整替换需要手动更新的内容,原因参见 源代码中的翻译

在注册了Launchpad之后,您可以通过在主页的项目点击*Translations* 或者*Help Translate* 的链接访问任何OpenERP项目的翻译。您可以发现一个所有(官方和社团驱动)可翻译的列表OpenERP-相关的Launchpad项目:https://translations.launchpad.net/openobject.

到Openerp项目翻译的快速链接

也请看一看 Launchpad 翻译手册 https://help.launchpad.net/Translations/`和 `FAQ常见问题.

Launchpad上的翻译权限

OpenERP使用 结构化许可(structured permissions) 用于Launchpad翻译,这意味着三件事:

  • 任何人都可以自由建议OpenErp模块,客户端和服务端的翻译。

  • 如果没有指定某语言的翻译团队,任何人都能审议或者接收给出的防疫。

  • 如果一个翻译团队被分配到一种语言的翻译,在那种语言翻译中只有团队成员才被允许审核和确认,不过所有人依旧可以提出翻译建议。

也可以参考Launchpad翻译文档,获取更多详情:

请求指定翻译团队的创建

如果你的语言还没有指定翻译,你可以自由创建一个新的翻译并制定到你的语言。如果相应的团队已经存在,请联系其成员并参与到他们的工作中。

如果您下决心创建一个新的团队 [https://launchpad.net/people/+newteam](https://launchpad.net/people/+newteam)\`_ (任何人都可以做), 请给它命名为*openerp-i18n-XXX* XXX\就是您的语言,比如:*openerp-i18n-dutch*。请确认为这个团队放一个完整的描述,说明团队的目标,怎么加入它(如果您想让它适度或保密等等。)这个描述可以用您的语言,如果您需要一个样本您可以看看其他现有翻译团队的描述。并请看看 `Launchpad的运行一个本地化团队的建议书`_.

这些完成后,透过Launchpad发送信息到https://launchpad.net/~odo-openerp,请求对你的团队的指定(授权)。

这一点之后,任何文仍然可以提出和审议翻译你的语言,但是需要成为你的团队的成员,而成为成员的过程是需要验证和认可的。

在Launchpad检视(审查)翻译

当指定了翻译团队,这个团队将负责审查每个参与者完成的翻译,审查之后的翻译才能用于官方的软件包和分支。

如果您是一位翻译团队的成员,请确保新的翻译建议会被尽快的评审。很少有比贡献工作被忽视更让人失望的事了!幸运的是Launchpad让跟进很容易。

您可以看见在您语言的翻译项目页面中有多少字符串需要评审。只需要点击 “Need review” 下面的数字就会直接打开等待评审的页面。

/doc_static/6.0/_images/translation-lp-template-list.png

Launchpad有一个灵活的特点就是它可以针对同一个字段保留几个翻译建议。Launchpad也建议翻译者做出完全不同的翻译。作为一个评审者,您可以自由的选择您认为最好的翻译,或者做一个您自己的翻译。

当没有一个足够好的建议时,你可以选中 “Dismiss all suggestions above.” 忽略他们。他们将会从审核过程中移除而被遗忘——这是个明智的选择。

/doc_static/6.0/_images/translation-lp-review.png

Requesting review for your own translations

当您负责他人翻译的审核时,您也会希望自己翻译一个新的版本,会有其他的评审来复审他们。为此,launchpad将会呈现给您一个额外的检查框被冠以”应该有人评审这个翻译”。如果您选中这个框, 您的贡献将会被视为一个建议而不是一个翻译的评审。

如果你做了很多需要别人审议的翻译,只需要离开 “审议模式(Reviewer mode)”进入 “翻译模式(Translator mode)” 。Launchpad将会自动为你选中”需要审议“的选择框。

/doc_static/6.0/_images/translation-lp-translator-mode.png

Why am I credited for translations when I only reviewed someone else’s contribution?

审核翻译时,你必须小心选择建议,不要复制/粘贴到 “新翻译(New translation)” 文本框中,否则Launchpad可能认为参与贡献者是你。

同时,如果你改变哪怕一点点的翻译(如 更正了小的类型),也会被认为是一个新的翻译建议并记到你的名下。

源代码中的翻译

作为Launchpad的一种备选方案,翻译可以直接在源码上进行,考虑到翻译文件是常规的代码文件。这样的一个翻译工作的结果基本上被认为是一个正规的*补丁*,被限定以每个项目代码的特定权限发布。与此相反,当使用Launchpad中任何验证过的翻译则是直接被Launchpad承诺在发布在官方分支中,不会有任何进一步的延迟。

由于没有OpenERP质量团队之外的人被允许直接提交补丁到官方的分支,这意味着OpenERP官方项目的翻译补丁将需要使用常规的合并建议提交,如上述 合并申请 & 修补程序.如果您依然想用这项技巧,首先您需要理解 翻译文件目录结构.

您可以使用PO编辑器直接编辑 .po``文件比如`POEdit http://www.poedit.net`_, 或者利用OpenERP的翻译中的导出向导导出需要更新的文件直接更新翻译OpenERP替换已有的 ``.po。

推荐使用如下步骤来,确保使用者此技术的最佳结果:

  1. 阅读所有关于 翻译文件结构(translation_files_structure)

  2. 取得最新代码,创建新的数据开始使用OpenERP,以确定你有了所有最新的术语翻译。

  3. 在本地Openerp界面翻译或用其他任何你喜欢的方式

  4. 如果在OpenErp中翻译,使用OpenErp导出向导,重新导出你的语言的所有模块的 ‘.po’ 文件覆盖现有的源文件。

  5. 此时您的版本包含了您对此语言``.po``文件的修正。然后你需要把这些修改提交到launchpad的一个公共分支,提交合并建议。这样OpenERP的质量控制团队就能合并已更新的.po文件到官方分支。遵循之前描述的流程即可:ref:merge_proposals。

翻译文件目录结构

在 5.0 版更改: 和 6.0

从OpenERP5.0版本开始,使用GetText 便携 对象 (也就是 *.po [1])的标准文件来存储翻译。很对平台和编程语言都提供大量的工具,用以支持这种应用广泛的文件格式。

翻译被归类存放在不同的翻译*域*中,每个域是OpenERP的一个特定主题区域。每个*域*有翻译方面的单独列表,如* PO模板*文件,通常保存在 i18n [4] 子目录中的``domain.pot``域文件中。 OpenERP的每一个客户端(GTK/本机客户端和Web)代表一个单独的域,并且每个的OpenERP模块也是一个单独的域。

domain模板文件不包含任何的翻译,而只有列出已翻译的可用术语。翻译是常规的 .po 文件,位于与他们的domain模板同名的子目录内,同时使用下列的命名约定。

警告

Domain模板文件必须命名为 domain.pot 同时位于 po or i18n 子目录。

OpenERP 5.0,翻译文件必须命名为``lc_CC.po``以符合 ISO 3166 [#iso3166]_和 ISO 639-1 [#iso639_1]_中的国家和语言代码。比如法国的法语翻译文件名应该为 fr_FR.po,而巴西的葡萄牙语翻译的文件名则应为 pt_BR.po。

For OpenERP 6.0, translation files must be named lc_CC.po after the corresponding country and language code from ISO 3166 [2] and ISO 639-1 [3], except for the canonical combinations, such as French from France or Portuguese from Portugal, which must only have the language code. For example a translation in French from France would be fr.po and one for regular Portuguese would be pt.po, but one for Brazilian Portuguese would be pt_BR.po.

如果您要找这个范围的模板,或者比利时德文翻译,可以在addons项目下查找以下文件:

  1. account
  2. i18n
  3. account.pot
  4. nl_BE.po
[1]

http://www.gnu.org/software/autoconf/manual/gettext/PO-Files.html#PO-Files

[2](1, 2)

http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm

[3](1, 2)

http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

[4]

i18nInternationalization 的一个捷径(简写),因为在这个单词的第一个字母i和最后一个字母n之间有18个字母。