如何让Odoo邮件模板始终发送西班牙语版本的发票附件?
解决Odoo邮件模板附件强制使用西班牙语的问题
我刚好处理过类似的需求,你的核心痛点是邮件主体用用户当前语言,但附件发票必须固定为西班牙语,之前的两种方法都没命中正确的处理逻辑,给你几个可行的方案:
方案一:在邮件模板中单独给附件渲染指定语言
这个方法最灵活,不会影响邮件主体的语言,只针对附件报表强制设置西班牙语上下文:
在邮件模板的<attachment>节点里,通过with_context临时切换报表渲染的语言环境:
<attachment> <!-- 临时给文档对象设置西班牙语上下文,渲染报表 --> <t t-set="pdf_content" t-value="doc.with_context(lang='es_ES').env.ref('wms_report.report_document').render_qweb_pdf(doc.id)[0]"/> <t t-set="attach_name" t-value="'Factura_' + doc.name + '.pdf'"/> <!-- 这里可以用西班牙语命名附件 --> <field name="datas" t-esc="pdf_content"/> <field name="name" t-esc="attach_name"/> <field name="res_model" t-esc="doc._name"/> <field name="res_id" t-esc="doc.id"/> </attachment>
原理:with_context(lang='es_ES')只会改变当前报表渲染时的语言上下文,邮件主体的渲染还是沿用原来的用户语言,完美分离了主体和附件的语言逻辑。
方案二:直接修改报表的默认语言(适合全局固定的场景)
如果这个发票报表无论何时生成都必须是西班牙语,可以直接在报表的XML定义中指定默认语言,一劳永逸:
找到报表wms_report.report_document的定义XML,添加lang="es_ES"属性:
<report id="report_document" model="your.invoice.model" <!-- 替换成你的发票模型,比如account.move --> string="Invoice Report" report_type="qweb-pdf" name="wms_report.report_document_template" file="wms_report.report_document_template" lang="es_ES" <!-- 强制报表使用西班牙语渲染 --> />
这样不管邮件模板用什么语言,调用这个报表生成的附件都会是西班牙语,不需要在邮件模板里额外处理。
方案三:用Python代码块手动创建附件(复杂场景适用)
如果需要更灵活的逻辑(比如根据某些条件动态调整,但这里固定西班牙语),可以在邮件模板中嵌入Python代码块来处理:
<t t-python=" import base64 # 获取文档对象 invoice = env[doc_model].browse(doc_id) # 引用报表并强制西班牙语上下文渲染 report = env.ref('wms_report.report_document').with_context(lang='es_ES') pdf_data, _ = report.render_qweb_pdf([invoice.id]) # 创建附件 attachment = env['ir.attachment'].create({ 'name': f'Factura_{invoice.name}.pdf', 'datas': base64.b64encode(pdf_data), 'res_model': doc_model, 'res_id': doc_id, 'type': 'binary', }) "/> <!-- 关联创建好的附件到邮件 --> <attachment t-esc="attachment.id"/>
这种方法自由度最高,适合需要额外处理附件的场景(比如添加水印、修改文件名等)。
为什么你之前的方法不行?
- 方法一设置
<field name="lang">es_ES</field>:这个字段是用来设置整个邮件模板的渲染语言上下文,所以会导致邮件主体也变成西班牙语,不符合你的需求。 - 方法二用
translate_doc:translate_doc是Odoo用来翻译模板文本内容的工具,不是用来渲染报表附件的,而且它的参数要求是模板上下文里的对象属性,直接传字符串会触发语法错误。
内容的提问来源于stack exchange,提问作者Marco Gonzalo Gómez Pérez
相关产品推荐
相关产品推荐

