如何在我的 Odoo 代码中强制翻译一个字段?

how do I force a field to be translated in my Odoo code?

我正在开发一个电子发票模块,应该用西班牙语表达付款期限,所以我正在设置一个包含所有需要字段的字典,当我这样做时:

{
...
'FmaPago': inv.payment_term.name,
...
}

输出文件包含英文值 "name"。我试过

_(inv.payment_term.name)

但结果相同。

我应该如何强制在定义的翻译中表达该值?

  1. 对于您希望能够翻译的字符串,您必须使用 _()。
  2. 你必须制作翻译文件*.po(我记得),我就是这么想的。

别忘了检查文档link

Payment Terms 的字段名称已经可以翻译。您可以通过在编辑模式下单击字段中的小按钮来更改 Odoo 中的翻译。

如果你做对了,如果你使用旧的API,你必须在代码端避免一些典型的错误。

  1. 始终传递上下文

例如如果您浏览发票,请传递上下文,以使所有翻译正确

  1. 如果您想为他们翻译,请使用合作伙伴的语言

Odoo 在其上下文中使用用户语言,以正确翻译网络客户端。如果您为客户打印文档,您当然希望使用客户语言... 所以你可能需要操纵上下文(键'lang')。对于新的 API 你必须调用 with_context() 来做到这一点。