You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django i18n:Python字符串内嵌模板的翻译方案咨询

Django内嵌模板变量的邮件主题翻译方案

完全可以用Django的gettext翻译这类包含模板变量的字符串,以下是最优实现步骤:

1. 用gettext包裹原始模板字符串

直接使用django.utils.translation.gettext(通常别名_)包裹带模板变量的主题字符串,gettext会将整个字符串作为翻译单元,模板变量部分会被原样保留,不会影响后续渲染:

from django.utils.translation import gettext as _

subject_template = _(
    'Enlèvement programmé le {{ pickup_date }} {{ pickup.timeslot }} - {{ pickup.display_id }}'
)

2. 翻译时保留模板变量结构

运行makemessages命令提取翻译字符串后,生成的.po文件中会出现对应条目。翻译人员只需修改固定文本部分,严格保留{{ 变量名 }}的语法结构即可,比如中文翻译可以写成:

msgid "Enlèvement programmé le {{ pickup_date }} {{ pickup.timeslot }} - {{ pickup.display_id }}"
msgstr "{{ pickup_date }} {{ pickup.timeslot }} 已预约取件 - {{ pickup.display_id }}"

根据目标语言的表达习惯,还可以调整模板变量的位置,只要变量语法正确就不影响渲染。

3. 渲染翻译后的模板字符串

翻译完成后,按照常规方式用Django模板引擎渲染字符串即可:

from django.template import Template, Context

# 翻译后的带模板变量字符串
translated_subject = subject_template
# 准备渲染上下文
context = Context({
    'pickup_date': '2024-05-20',
    'pickup': pickup_instance  # 你的pickup对象实例
})
# 渲染得到最终邮件主题
final_subject = Template(translated_subject).render(context)

这种方案既利用了Django成熟的i18n翻译系统,又完全兼容模板变量的渲染逻辑,是处理此类场景的最优选择。

内容的提问来源于stack exchange,提问作者rezuz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:45:34