天天看点

Odoo10参考系列--翻译模块

导出可翻译的条款

在你的模块的一些条款是作为一个结果的“隐式翻译”,即使你没有对翻译做任何具体的工作,你可以导出你的模块的可译性条款和可以找到进行翻译工作的内容。

翻译导出通过管理接口执行,通过登录到后端接口和打开 设置 ‣ 翻译 ‣ 导入/导出 ‣ 导出翻译

  • 将语言保留到默认值(新语言/空模板)
  • 选择 PO 文件格式
  • 选择你的模块
  • 点击导出按钮并下载文件
Odoo10参考系列--翻译模块

这将给你一个叫yourmodule.pot的文件,它应该移动到

yourmodule/i18n/

 目录。 这个文件是一个PO模版,它简单列出可翻译的字符串并从中可以创建实际的翻译文件(PO文件) 。PO文件可以使用msginit创建,用一个专门的翻译工具如POEdit或者通过简单的复制模版到一个叫的新文件language.po中。翻译文件应该放到

yourmodule/i18n/

,紧邻

yourmodule.pot

,并当相应的语言被安装时将被Odoo自动的加载 (通过 设置 ‣ 翻译 ‣ 加载翻译)

在安装或更新模块时,也会安装或更新所有加载语言的翻

隐式导出

Odoo自动从"data"-type内容导出翻译字符串:

  • 在非QWeb视图中,所有文本节点导出,以及 

    string

    help

    sum

    confirm

     和 

    placeholder

     等属性的内容
  • QWeb模版(包括服务器端和客户端),所有文本节点将导出除了在t-translation="off"块中,

    title

    alt

    label

     and 

    placeholder

     等属性的内容也导出
  • 对于

    Field

    , 除非它们的模型使用_translate = False标志:
    • 它们的

      string

       和

      help

       属性导出
    • 如果

      selection

       显示并是一个列表(或元组),导出它
    • 如果它们的 

      translate

       属性设置为 

      True

      ,所有现有的值(在所有记录中)都是导出的
  • _constraints

     和

    _sql_constraints

     的帮助/错误信息将导出

显示导出

当谈到在Python代码和JavaScript代码更“必要”的情况下,Odoo不能自动导出翻译条款,因此这些条款必须显示的标注以导出。这是通过在函数调用中封装一个字面字符串来完成的。

在Python中,封装的函数是 

odoo._()

:

title = _("Bank Accounts")
           

在JavaScript中,封装的函数通常是

odoo.web._t()

:

title = _t("Bank Accounts")
           

警告

只有文字字符串可以标记为导出,而不是表达式或变量。对于字符串格式的情况,这意味着格式字符串必须被标记,而不是格式化字符串:

# bad, the extract may work but it will not translate the text correctly
_("Scheduled meeting with %s" % invitee.name)

# good
_("Scheduled meeting with %s") % invitee.name
           

ps:有翻译不当之处,欢迎留言指正。

原文地址:https://www.odoo.com/documentation/10.0/reference/translations.html

继续阅读