odoo - 如何在英语中使用相同单词但在其他语言中使用不同单词的情况下保持翻译分开?
问题描述
想象一下,我有一份报告,实际上是一封信,我需要将其翻译成多种语言。我greeting
在表单中创建了一个字段,该字段由 onchange 事件方法以编程方式填充。
if self.partner_id.gender == 'female':
self.letter_greeting = _('Dear %s %s,') % ( # the translation should be "Estimada"
self.repr_recipient_id.title.shorcut, surname
)
elif self.partner_id.gender == 'male':
self.letter_greeting = _('Dear %s %s,') % ( # translation "Estimado"
self.repr_recipient_id.title.shorcut, surname
)
else:
self.letter_greeting = _('Dear %s %s,') % ( # translation: "Estimado/a"
self.partner_id.title.shorcut, surname
)
在这种情况下,应该根据使用的选项将单词Dear
翻译成不同的西班牙语翻译,这是因为我们根据性别使用不同的终止。导出po
文件后,我发现所有选项都是完整的,这是有道理的,因为几乎所有情况下的翻译都是相同的,但在这种情况下并非如此:
#. module: custom_module
#: code:addons/custom_module/models/sale_order.py:334
#: code:addons/custom_module/models/sale_order.py:338
#: code:addons/custom_module/models/sale_order.py:342
#, python-format
msgid "Dear %s %s,"
msgstr "Dear %s %s,"
我可以直接申请的解决方案
每次我需要更新 po 文件时,将所有术语放在不同的条目中,以避免手动进行相同的翻译。如果您对这个问题有很多不同的词,这可能会很麻烦。如果我这样做并使用 poedit 打开文件,则会出现此错误:
duplicate message definition
将所有可能的组合与斜线放在一起,这是在 Odoo 的其他部分完成的。对于两种性别都是:
#. module: stock
#: model:res.company,msg:stock.res_company
msgid "Dear"
msgstr "Estimado/a"
这只是一个例子。我可以想到许多在英语中看起来相同的单词,但根据上下文,它们在其他语言中使用不同的拼写或含义。
可能的最佳解决方案
我不知道 Odoo 是否了解某个单词的上下文,以了解它是否已被翻译。手动添加上下文可以解决问题,至少对于具有不同含义的单词而言。
最好的解决方案是为翻译模块提供一个参数,以确保将单词作为特定翻译的独立条目导出。
是不是觉得我太重视了哈哈?不知道有没有更好的解决方案?为什么 poedit 根本没有考虑到这个问题?
解决方案
我建议扩展模型res.partner.title
和res.partner
.
res.partner.title
应该得到一个可翻译的字段来保存称呼前缀,如“亲爱的”或“Sehr geehrter”(德语)。也许也值得了解一些有关性别的信息,但我不会在这里详细介绍。您可能希望向配置用户显示“Dear Mr. Name”之类的示例或类似内容。计算字段应该可以工作。
res.partner
你应该只实现一个计算字段或一个方法来获得合作伙伴记录的完整称呼。
推荐阅读
- javascript - 在使用 react-google-recaptcha npm 包的 recaptcha v2 中的 window.reacptcha.reset() 之后 onChange 事件不起作用 - [recaptcha 只是继续加载]
- python - 如何在不转换为字符串的情况下计算所有列表元素中的总大写字母
- sql - Oracle 调用一个包来解密一个字符串
- angular - 角材料键盘中的自定义键盘键,如隐藏键盘、布局更改等
- python - 如何在单个 y 刻度上绘制散点图
- android - 禁用对讲的双击以激活首选项屏幕中的功能?
- boost - boost 库(v1.75 到 1.77)不是完全由编译生成的
- r - 在 R 中安装 Rttf2pt1 版本 1.3.8 时出现错误消息
- javascript - 是否可以使用 GStreamer 在 Vue 应用程序中显示 rtsp 流?使用 Node.js 和 Electron
- java - 杰克逊可以用来从一个类中创建一个类型树吗?