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

如何在Django的blocktrans标签中翻译含reverse url的文本?

解决Django模板中翻译带Reverse URL超链接的问题

你需要先将反向URL赋值为模板变量,再传递给blocktrans标签,同时处理翻译文本与HTML结构的结合,具体方案如下:

方案1:支持语序调整的灵活翻译(推荐)

该方式允许翻译人员根据目标语言习惯调整句子结构,同时完整保留超链接功能:

{# 1. 提前将register的反向URL赋值为模板变量 #}
{% url 'register' as register_url %}
{# 2. 单独翻译"Register"文本(也可直接在blocktrans内定义) #}
{% trans "Register" as register_label %}

{# 3. 在blocktrans中传递变量,编写带占位符的翻译内容 #}
{% autoescape off %}
{% blocktrans with link=register_url label=register_label %}
<p><a href="{{ link }}"><strong>{{ label }}</strong></a> and be happy</p>
{% endblocktrans %}
{% endautoescape %}

关键说明:

  • 必须通过{% url 'register' as register_url %}生成URL变量,不能在blocktrans的with参数中直接嵌套{% url %}标签,这是你之前报错的核心原因
  • 翻译字符串中的占位符({{ link }}、{{ label }})会被实际变量替换,翻译人员可自由调整整个句子的语序
  • 使用{% autoescape off %}确保HTML标签不被转义,正常渲染超链接样式

方案2:简单拆分翻译(适合语序无需调整的场景)

如果目标语言的句子结构和英文完全一致,可直接拆分翻译文本并拼接:

<p>
  <a href="{% url 'register' %}"><strong>{% trans "Register" %}</strong></a>
  {% trans " and be happy" %}
</p>

这种方式实现更简单,但无法应对需要调整语序的翻译场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 16:25:10