django.contrib.admin - 为什么i18n在模板中使用?

时间:2011-12-30 09:44:12

标签: django django-admin

是否有理由在django admin app的app_index模板中的app.name代码中包含blocktrans

{% for app in app_list %}
{% blocktrans with app.name as name %}{{ name }}{% endblocktrans %}
{% endfor %}

据我所见,结果总是与此结果类似:

{% for app in app_list %}
{{ app.name }}
{% endfor %}

2 个答案:

答案 0 :(得分:0)

从技术上讲,可以在其app_label类中的模型上指定Meta,并且可能自定义值可以使用ugettext将其翻译为不同的语言。不过,这是一个非常奇怪的场景,并且很可能在实践中存在问题。

Django开发人员很可能仅仅为了未来的证明并覆盖边缘情况。通过blocktrans传递内容并不会伤害。如果没有翻译,那么它只会按原样返回值,并且不假设应该或不应该翻译的内容更安全。

答案 1 :(得分:0)

发现Django国际化和本地化thread。我在这里粘贴了Django开发人员的相关答案:

  

我同意你的结论。 “blocktrans”标签就是这样   在这里使用不当。它本质上是一个很好的翻译标签   静态模板内容。什么它不做它看里面   它替代的变量,因此适用于翻译的地方   无论变量内容如何都有效。它显得特别   在这种情况下严重,因为块转换部分包括a   变量替换。