在Django,什么是i18n?

时间:2012-03-08 21:46:51

标签: django

我正在查看someone else's Django registration templates,我在每个文件中都看到了行{% load i18n %}。什么是i18n

我知道它与International and localization有关,但有人可以解释一下并给出一个详细的例子吗?感谢。

3 个答案:

答案 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/