3

我有一个国际化的 Django 1.3 站点并且想要这样做:

{% include "snippets/button.html" with button_text=_("Logout {{ user.username }} now") %}

snippets/button.html看起来像这样:

<button
  type="{{ button_type|default:_('submit') %}"
  class="all_my special classes"
  {% if button_title %} title="{{ button_title }}"{% endif %}>
  <span class=ui-button-text>{{ button_text|default:_("Submit") }}</span>
</button>

我能看到的唯一方法是:

{% include "snippets/button.html" with button_text="Logout "|add:user.username|add:" now" %}

但这是不可接受的,因为要翻译的字符串需要包含变量替换发生的位置。我见过Interpolate Django 模板包含变量,但这不包括这种用法。

4

2 回答 2

0

我认为在这种情况下你最好的选择是将已经翻译的字符串添加到你的上下文中。

在你的views.py

...
'button_text': _("Logout {} now").format(user.username),
...

然后在您的模板中:

{% include "snippets/button.html" with button_text=button_text %}
于 2017-04-25T08:40:51.153 回答
-1

这样的事情可能会让你继续:

{% blocktrans with value|filter as myvar %}
  This will have {{ myvar }} inside.
{% endblocktrans %}

从这里http://www.djangobook.com/en/1.0/chapter18/

它应该与包含一起使用,但我还没有测试过。

于 2011-12-21T09:50:54.773 回答