如何在我的 Odoo 代码中强制翻译一个字段?
how do I force a field to be translated in my Odoo code?
我正在开发一个电子发票模块,应该用西班牙语表达付款期限,所以我正在设置一个包含所有需要字段的字典,当我这样做时:
{
...
'FmaPago': inv.payment_term.name,
...
}
输出文件包含英文值 "name"。我试过
_(inv.payment_term.name)
但结果相同。
我应该如何强制在定义的翻译中表达该值?
- 对于您希望能够翻译的字符串,您必须使用 _()。
- 你必须制作翻译文件*.po(我记得),我就是这么想的。
别忘了检查文档link
Payment Terms 的字段名称已经可以翻译。您可以通过在编辑模式下单击字段中的小按钮来更改 Odoo 中的翻译。
如果你做对了,如果你使用旧的API,你必须在代码端避免一些典型的错误。
- 始终传递上下文
例如如果您浏览发票,请传递上下文,以使所有翻译正确
- 如果您想为他们翻译,请使用合作伙伴的语言
Odoo 在其上下文中使用用户语言,以正确翻译网络客户端。如果您为客户打印文档,您当然希望使用客户语言...
所以你可能需要操纵上下文(键'lang')。对于新的 API 你必须调用 with_context() 来做到这一点。
我正在开发一个电子发票模块,应该用西班牙语表达付款期限,所以我正在设置一个包含所有需要字段的字典,当我这样做时:
{
...
'FmaPago': inv.payment_term.name,
...
}
输出文件包含英文值 "name"。我试过
_(inv.payment_term.name)
但结果相同。
我应该如何强制在定义的翻译中表达该值?
- 对于您希望能够翻译的字符串,您必须使用 _()。
- 你必须制作翻译文件*.po(我记得),我就是这么想的。
别忘了检查文档link
Payment Terms 的字段名称已经可以翻译。您可以通过在编辑模式下单击字段中的小按钮来更改 Odoo 中的翻译。
如果你做对了,如果你使用旧的API,你必须在代码端避免一些典型的错误。
- 始终传递上下文
例如如果您浏览发票,请传递上下文,以使所有翻译正确
- 如果您想为他们翻译,请使用合作伙伴的语言
Odoo 在其上下文中使用用户语言,以正确翻译网络客户端。如果您为客户打印文档,您当然希望使用客户语言... 所以你可能需要操纵上下文(键'lang')。对于新的 API 你必须调用 with_context() 来做到这一点。