[英]How to copy value and translations from one field to another in Odoo?
[英]How to keep translations separated where the same word is used in English but a different one in other languages?
想象一下,我有一份報告,實際上是一封信,我需要將其翻譯成多種語言。 我在表單中創建了一個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
應該獲得一個可翻譯的字段,用於保存稱呼前綴,如“Dear”或“Sehr geehrter”(德語)。 也許也值得了解一些有關性別的信息,但我不會在這里詳細介紹。 您可能希望向配置用戶顯示“Dear Mr. Name”之類的示例或類似內容。 計算域應該可以工作。
在res.partner
,您應該只實現一個計算字段或只實現一個方法來獲得合作伙伴記錄的完整稱呼。
在某種程度上,這是一個語言學問題。 我相信最好的解決方案是使用不同的“源語言”,一種由鍵組成,然后將英語作為另一種翻譯。 英語中的“親愛的”一詞沒有性別上下文(通常,大部分英語都沒有),而西班牙語中的“Estimado”一詞則有。 從那個西班牙語單詞到英語的翻譯更合適的是“Masculine Dear”。 因此,使用鍵作為源語言,您將擁有:
SourceText (EnglishDescription) -> Translation (English) -> Translation (Spanish)
DearMasculine -> Dear -> Estimado
DearFeminine -> Dear -> Estimada
DearNuetral -> Dear -> Estimado/a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.