我正在查看someone else's Django registration templates,我在每个文件中都看到了行{% load i18n %}
。什么是i18n
?
我知道它与International and localization有关,但有人可以解释一下并给出一个详细的例子吗?感谢。
答案 0 :(得分:24)
它加载可以在模板中使用的{% trans "Text" %}
等翻译标签。如果您不使用它,可以删除{% load i18n %}
当您对模板中非动态的所有文本使用trans
标记时,您可以通过运行创建将用于翻译的.po文件的./manage.py makemessages
来收集所有此类字符串。
答案 1 :(得分:7)
{% load i18n %}
。国际化的目的是允许单个应用程序以多种语言阅读。为了做到这一点:你需要一些称为翻译字符串的钩子。要让您的模板能够访问这些代码,请将{% load i18n %}
放在模板的顶部..
有关详细信息,请参阅此处:https://docs.djangoproject.com/en/1.10/topics/i18n/
答案 2 :(得分:2)
为了使Django项目可以翻译,你必须在Python代码和模板中添加少量的钩子。这些钩子称为translation strings。他们告诉Django:“如果用这种语言提供该文本的翻译,这篇文章应该翻译成最终用户的语言。”你有责任标记可翻译的字符串;系统只能翻译它知道的字符串。
Django的国际化挂钩默认开启,这意味着在框架的某些位置有一些与i18n相关的开销。如果您不使用国际化,则应该花两秒钟在设置文件中设置USE_I18N = False
。然后Django将进行一些优化,以免加载国际化机制。您可能还想从TEMPLATE_CONTEXT_PROCESSORS设置中删除['django.core.context_processors.i18n']
。
了解更多信息:https://docs.djangoproject.com/en/dev/topics/i18n/translation/