如何翻译OpenERP本地化模块的内容

时间:2012-10-17 11:23:24

标签: python translation openerp

我想为我的国家创建一个OpenERP l10n模块(会计科目表)。我需要将它翻译成两种语言。在account_chart.xml我用英语写了一下。所以,单词是静态的。 如何在以下示例中翻译帐户name的值:

<record id="chart01" model="account.account.template">
     <field name="code">01</field>
     <field name="parent_id" ref="chart0"/>
     <field name="type">view</field>
     <field name="user_type" ref="account.data_account_type_view"/>
     <field name="name">Expenses</field>
  </record>

例如,我想翻译单词费用。我不知道如何在* .po文件中配置它。有人能告诉我一些例子吗?干杯

2 个答案:

答案 0 :(得分:3)

好问题!创建OpenERP本地化模块的官方参考是this page of the documentation。但是,它没有解释如何翻译本地化模块,因为具有讽刺意味的是,本地化模块很少需要翻译

一些背景信息:与通用OpenERP模块的编写方式相比,单语国家的本地化模块具有在该国家/地区直接定义的税收,总账科目等的名称。 #39;的语言,而不是用英语定义,然后翻译成.po文件。事实上,用于本地化数据的OpenERP模型(税务模板,帐户模板等)会自动关闭翻译标志。原因很简单:如果这些项目的名称总是可翻译的,它们将出现在翻译所有OpenERP翻译的术语列表中!想象一下,如果要求每个翻译团队用他们的语言翻译所有税收的名称和世界的总账科目,那就完全没用了。

比利时是幸运的多语种国家之一,但有一种(实验性的)方法可以使您的会计科目表可以翻译。

解决方案有三个

  1. 您的l10n_xx模块必须依赖于l10n_multilang模块。对于您希望在帐户图表中翻译的大多数字段,此小模块会转换translation flag on。它还在会计科目表模板模型上添加了一个特殊的spoken_languages字段,并会在安装该会计科目表时自动尝试加载相应的翻译(前提是这些语言先前已安装在同一个数据库中)

  2. 您必须在您的会计科目表的XML声明中添加spoken_languages字段。它的值必须是以分号分隔的语言代码列表,其中每个代码是在OpenERP中安装时该语言的code字段的值。您可以看到所有可用语言代码in the source的列表。例如,如果要为“会计科目表”添加法语和德语翻译,可以使用以下值XML字段:
    <field name="spoken_languages">fr_FR;de_DE</field>

  3. 最后但并非最不重要的是,您需要实际创建翻译文件,类似于您为任何其他OpenERP模块所做的事情。理想情况下,您应该在主数据文件中使用英文名称,如果英语不是官方国家语言之一,可能会很尴尬,因此使用您所在国家/地区的官方语言之一也会有效。然后使用OpenERP中的翻译导出向导导出l10n_xx.pot PO模板文件(在导出向导中选择您的模块并且没有语言),并将其放在模块的l10n_xx/i18n/目录中。最后,您可以通过复制每种所需语言的l10n_xx.pot来创建初始翻译(例如,fr.po用于法语等),并使用PO编辑器(例如Poedit)填写翻译。
    查看有关OpenERP translations的文档,了解有关PO / POT文件格式和组织的更多详细信息,以及DReispt's related question(已提及)。

  4. 执行上述步骤后,应在您安装本地化模块的每个数据库中自动加载翻译(但请务必在安装帐户图表之前安装所有相关语言

    这项技术仍然有点实验性,所以如果它似乎没有按照描述的那样工作,请不要犹豫。

    PS:显然所有这些都应该在官方OpenERP localization文档中提及,所以如果有人想这样做,请记住documentation is open并且任何人都可以直接参与其中; - )

答案 1 :(得分:0)

我的经验是OpenERP导出的.po文件包含数据XML文件中的文本。我认为,为了将name字段值包含在.po文件中,它需要是可翻译的,即在其模型中有translated=Trueaccount.account.template是这个案件)。

您可能还会发现How to translate an OpenERP module?问题很有用。