Django中的trans和url标签

22

我想在Django 1.3应用程序中翻译一个包含URL的段落。

<p>
    First <a href="{% url edit-profile username=user.username %}">edit your profile</a>, please.
</p>

根据语言不同,被<a>标签包围的文本肯定会改变。我该如何让翻译者自己决定链接的位置?将整个内容包裹在{% trans %}中会导致错误:

<p>{% trans "First <a href='{% url edit-profile username=user.username %}'>edit your profile</a>, please." %}</p>

抛出的错误是TemplateSyntaxError: Searching for value. Unexpected end of string in column 64: trans "First <a href='{% url edit-profile username=user.username

我该怎么做?我是否需要在视图中确定URL,然后将该URL作为字符串传递给模板?这似乎是一个非常错综复杂的解决方案,对于我认为是一个非常常见的问题。

2个回答

54

使用{% blocktrans %}Django翻译文档中包含了这个例子:

{% url path.to.view arg arg2 as the_url %}
{% blocktrans %}
This is a URL: {{ the_url }}
{% endblocktrans %}

同时,不要使用命名URL {% url "my_url" as the_url %}:会出现在'msgstr'中不存在参数'the_url'的格式规范的错误。 - Escher

1
这对我有效:
{% url "app-name:name-of-view" as the_url %}
{% blocktrans %}
This is a URL: {{ the_url }}
{% endblocktrans %}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接