首页 > 解决方案 > 如何在英语中使用相同单词但在其他语言中使用不同单词的情况下保持翻译分开?

问题描述

想象一下,我有一份报告,实际上是一封信,我需要将其翻译成多种语言。我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,"

我可以直接申请的解决方案

#. module: stock
#: model:res.company,msg:stock.res_company
msgid "Dear"
msgstr "Estimado/a"

这只是一个例子。我可以想到许多在英语中看起来相同的单词,但根据上下文,它们在其他语言中使用不同的拼写或含义。

可能的最佳解决方案

是不是觉得我太重视了哈哈?不知道有没有更好的解决方案?为什么 poedit 根本没有考虑到这个问题?

标签: odootranslationmultilingualpopoedit

解决方案


我建议扩展模型res.partner.titleres.partner.

res.partner.title应该得到一个可翻译的字段来保存称呼前缀,如“亲爱的”或“Sehr geehrter”(德语)。也许也值得了解一些有关性别的信息,但我不会在这里详细介绍。您可能希望向配置用户显示“Dear Mr. Name”之类的示例或类似内容。计算字段应该可以工作。

res.partner你应该只实现一个计算字段或一个方法来获得合作伙伴记录的完整称呼。


推荐阅读