本博客包含多个文档和书籍的翻译,但有能力者推荐阅读英文原版

Odoo 13开发者文档:模块翻译

Odoo Alan 4个月前 (01-21) 1768次浏览 0个评论
本文来自Odoo 13官方文档之开发者文档系列文章
这部分讲解如何对自己的模块进行翻译。

你的模块中的词汇数结果是“隐式可翻译”, 即使你没有对翻译进行具体的操作也可以导出模块的可翻译词汇并能查找可操作的内容。

翻译通过登录后台界面并访问Settings ‣ Translations ‣ Import / Export ‣ Export Translations来导出

  • 将语言保持为默认 (新语言/空模板)
  • 选择PO File格式
  • 选择模块
  • 点击Export下载文件

Odoo 13开发者文档:模块翻译这会给出一个名为yourmodule.pot 的文件,应移动到 yourmodule/i18n/ 目录。该文件是一个PO 模板,仅列出可翻译字段及通过什么创建实际翻译 (PO 文件)。PO文件可使用msginit进行创建,有一个类似POEdit 专门的翻译工具或者只是将模板拷贝到名为language.po的新文件。翻译文件应放到yourmodule/i18n/中,紧邻yourmodule.pot,并将在安装相应语言时自动(通过Settings ‣ Translations ‣ Languages)由Odoo加载

Odoo自动从“data”类型内容导出可翻译字符串:

  • 在非QWeb视图中,会导出所有文本节点及stringhelpsumconfirm 和 placeholder 属性的内容
  • QWeb模板(服务端及客户端),导出除 t-translation="off"代码块内的所有文本节点, titlealtlabel 和 placeholder属性的内容也会进行导出
  • 对于Field, 除非它们的模型通过 _translate = False进行标记:
    • 其 string 和 help 属性会进行导出
    • 如出现 selection 及列表(或元组),会导出
    • 如若其translate 属性设置为 True,它们的所有(跨越所有记录的)已存在值会导出
  •  _constraints 和 _sql_constraints 的帮助/错误信息会导出

在Python或Javascript代码中更“迫切”的场景中, Odoo不能自动导出词,因此它们必须进行显式的标记来导出。这通过在函数调用中封装字面量字符串来实现。

在Python中,封装的函数是odoo._()

在JavaScript中,封装的函数通常是 odoo.web._t()

_ 和 _t 懒翻译版本为python中为 odoo._lt() ,在javascript中为 odoo.web._lt() 。翻译查找仅在渲染时查找并可用于声明全局变量类方法的可翻译属性。

不要 提取可能起作用但不会正确地翻译文本:

 在翻译查找之外设置动态变量:

不要 在一些代码块或多行中分隔翻译:

 保持在一个代码块中,将全文本给到翻译器:

不要 按英文的方式设置词汇的复数:

 记住各种语言有不同的复数形式:

不要 在服务启动时调用翻译查询:

不要 在读取javascript文件时调用翻译查询:

使用懒翻译查找方法:

动态运行可翻译内容:

在读取JS文件时翻译查找完成,在使用时用 _lt 而非 _t来翻译启发式规则:

喜欢 (2)
[]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址