【发布时间】:2013-01-17 11:17:46
【问题描述】:
如何处理翻译中的 HTML?我想翻译带有 HTML 的句子。比如这样一个字符串([login]是一个链接):
Please [login] to view your profile.
我不想打扰我的翻译人员翻译与 html 交织在一起的文本。另一方面,我不想费心在我的视图中创建所有链接,就像this question 中建议的那样。因此,理想情况下,我想要一个仅模板的解决方案,以具有制作 HTML 的灵活性,同时允许翻译人员只处理文本字符串。
例如,这个伪代码实现了这些要求:
{% render as login_html %}
<a href="{{ url 'login' }}?next={{ request.path|urlencode }}">
{% trans "Login" %}
</a>
{% endrender %}
{% blocktrans with login=login_html %}
Please {{ login }} to view your profile.
{% endblocktrans %}
首先,登录 HTML 被渲染并存储为login_url。然后在我的 blocktrans 中,我可以简单地使用 {{ login }} 来提供呈现的登录 HTML。这个问题有(类似的)解决方案,还是需要自定义模板标签?
【问题讨论】:
-
您的解决方案翻译了两次。
-
这是为什么呢?
{{ login }}是一个变量,不会被翻译(再次)。 -
除非模板 i18n 不是这样工作的。
-
是的,这就是我首先要问的原因。