我试图翻译Qweb报告中出现的特定字词,但其行为与预期完全不同。
如果您在Odoo 10中安装标准sale
模块,请查看其销售订单报告(XML ID = report_saleorder_document
)。其代码位于report
文件夹,文件sale_report_templates.xml
。您将找到以下行:
<td><span t-esc="amount_by_group[0] or 'Taxes'"/></td>
如您所见,有一个文字字符串 Taxes ,如果您选择的语言与英语不同,则必须翻译。尝试将单词翻译成尚未翻译的语言。
就我而言,我试图将这个词翻译成加利西亚语,其中 Taxes 的翻译是空的:
#. module: sale
#: model:ir.model.fields,field_description:sale.field_sale_order_amount_tax
#: model:ir.model.fields,field_description:sale.field_sale_order_line_price_tax
#: model:ir.model.fields,field_description:sale.field_sale_order_line_tax_id
#: model:ir.ui.view,arch_db:sale.report_invoice_layouted
#: model:ir.ui.view,arch_db:sale.report_saleorder_document
msgid "Taxes"
msgstr "Impostos"
但重启服务后,更新sale
模块,加载加利西亚语翻译覆盖条款,同步条款,更新浏览器,删除cookie,甚至更新base
模块,都没有发生任何事情。
然后我在PostgreSQL中进行了以下查询:
SELECT id,lang,src,name,module,value,res_id FROM ir_translation WHERE src =&#39; Taxes&#39; AND lang =&#39; gl_ES&#39; ORDER BY id DESC;
id | lang | src | name | module | value | res_id
--------+-------+-------+-----------------------------------+----------+-------------+--------
123634 | gl_ES | Taxes | account.account.tag,applicability | account | Taxes | 0
121625 | gl_ES | Taxes | ir.ui.view,arch_db | account | Taxes | 364
121624 | gl_ES | Taxes | ir.ui.view,arch_db | account | Taxes | 428
121619 | gl_ES | Taxes | ir.ui.view,arch_db | account | Taxes | 414
121618 | gl_ES | Taxes | ir.ui.view,arch_db | account | Taxes | 415
121617 | gl_ES | Taxes | ir.ui.view,arch_db | account | Taxes | 441
120817 | gl_ES | Taxes | ir.ui.menu,name | account | Taxes | 108
113387 | gl_ES | Taxes | ir.model.fields,field_description | account | Taxes | 2878
113385 | gl_ES | Taxes | ir.model.fields,field_description | account | Taxes | 2700
111845 | gl_ES | Taxes | ir.actions.act_window,name | account | Taxes | 158
111431 | gl_ES | Taxes | account.tax.group,name | account | Taxes | 1
47094 | gl_ES | Taxes | ir.ui.view,arch_db | account | Taxes | 430
46953 | gl_ES | Taxes | ir.ui.view,arch_db | purchase | Impostos | 746
46952 | gl_ES | Taxes | ir.model.fields,field_description | purchase | Impostos | 5045
46951 | gl_ES | Taxes | ir.model.fields,field_description | purchase | Impostos | 4992
45544 | gl_ES | Taxes | ir.ui.view,arch_db | sale | Impostos | 554
45543 | gl_ES | Taxes | ir.ui.view,arch_db | sale | Impostos | 556
45542 | gl_ES | Taxes | ir.model.fields,field_description | sale | Impostos | 4128
45541 | gl_ES | Taxes | ir.model.fields,field_description | sale | Impostos | 4120
45540 | gl_ES | Taxes | ir.model.fields,field_description | sale | Impostos | 4085
(20 rows)
我意识到问题在于我可能需要翻译account
模块(我不明白,因为这个术语在sale
模块中),所以我去了到account
模块的加利西亚语翻译文件并更新它:
#. module: account
#: selection:account.account.tag,applicability:0
#: model:account.tax.group,name:account.tax_group_taxes
#: model:ir.actions.act_window,name:account.action_tax_form
#: model:ir.model.fields,field_description:account.field_account_invoice_line_invoice_line_tax_ids
#: model:ir.model.fields,field_description:account.field_account_move_line_tax_ids
#: model:ir.ui.menu,name:account.menu_action_tax_form
#: model:ir.ui.view,arch_db:account.account_planner
#: model:ir.ui.view,arch_db:account.invoice_form
#: model:ir.ui.view,arch_db:account.invoice_supplier_form
#: model:ir.ui.view,arch_db:account.report_invoice_document
#: model:ir.ui.view,arch_db:account.view_account_config_settings
#: model:ir.ui.view,arch_db:account.view_move_line_form
msgid "Taxes"
msgstr "Impostos"
但是同样的问题,所以我再次做同样的查询,结果就是这样:
id | lang | src | name | module | value | res_id
--------+-------+-------+-----------------------------------+----------+-------------+--------
123634 | gl_ES | Taxes | account.account.tag,applicability | account | Impostos | 0
121625 | gl_ES | Taxes | ir.ui.view,arch_db | account | Impostos | 364
121624 | gl_ES | Taxes | ir.ui.view,arch_db | account | Impostos | 428
121619 | gl_ES | Taxes | ir.ui.view,arch_db | account | Impostos | 414
121618 | gl_ES | Taxes | ir.ui.view,arch_db | account | Impostos | 415
121617 | gl_ES | Taxes | ir.ui.view,arch_db | account | Impostos | 441
120817 | gl_ES | Taxes | ir.ui.menu,name | account | Impostos | 108
113387 | gl_ES | Taxes | ir.model.fields,field_description | account | Impostos | 2878
113385 | gl_ES | Taxes | ir.model.fields,field_description | account | Impostos | 2700
111845 | gl_ES | Taxes | ir.actions.act_window,name | account | Impostos | 158
111431 | gl_ES | Taxes | account.tax.group,name | account | Taxes | 1
47094 | gl_ES | Taxes | ir.ui.view,arch_db | account | Impostos | 430
46953 | gl_ES | Taxes | ir.ui.view,arch_db | purchase | Impostos | 746
46952 | gl_ES | Taxes | ir.model.fields,field_description | purchase | Impostos | 5045
46951 | gl_ES | Taxes | ir.model.fields,field_description | purchase | Impostos | 4992
45544 | gl_ES | Taxes | ir.ui.view,arch_db | sale | Impostos | 554
45543 | gl_ES | Taxes | ir.ui.view,arch_db | sale | Impostos | 556
45542 | gl_ES | Taxes | ir.model.fields,field_description | sale | Impostos | 4128
45541 | gl_ES | Taxes | ir.model.fields,field_description | sale | Impostos | 4120
45540 | gl_ES | Taxes | ir.model.fields,field_description | sale | Impostos | 4085
(20 rows)
所以我认为问题出在这个翻译上:
111431 | gl_ES | Taxes | account.tax.group,name | account | Taxes
确实如此。如果我通过PostgreSQL中的查询修改此翻译,那么当我打印销售订单报告时,我可以看到翻译成加利西亚语的单词。
但我的问题是:我需要做些什么来通过PO文件翻译该术语而不执行查询?
令人讨厌,因为在西班牙语这样的语言中这个词通过PO文件很好地翻译了...我认为这个问题很容易复制,所以如果有人尝试的话,我会很感激,了解正在发生的事情并向我解释。
答案 0 :(得分:0)
我看到你所描述的问题,看起来确实有点令人惊讶。
无论我尝试了什么,我都无法通过更改gl.po
文件或创建自己的gl.po
文件来更新该术语。我 能够通过该方法更新其他术语,这表明由于某种原因,这可能是该特定术语的错误。
话虽如此,您可以通过用户界面手动更新该术语。
如果您特别需要一种自动方式来处理此问题而不能依赖手动过程,那么您可以修改_get_tax_amount_by_group
的工作方式。
@api.multi
def _get_tax_amount_by_group(self):
...
from openerp.tools.translate import translate
res = map(lambda l: (translate(self._cr, 'ir.ui.view,arch_db', 'model', self.partner_id.lang, l[0].name), l[1]), res)
...