国际化和本地化

概述¶ T0>

国际化和本地化的目标是允许单个Web应用程序提供为观众量身定制的语言和格式的内容。

Django has full support for translation of text, formatting of dates, times and numbers, and time zones.

基本上,Django做了两件事:

  • 它允许开发人员和模板作者指定他们的应用程序的哪些部分应该翻译或格式化本地语言和文化。
  • 它使用这些钩子根据自己的喜好为特定用户本地化Web应用程序。

显然,翻译取决于目标语言,格式通常取决于目标国家。 这些信息由浏览器在Accept-Language标题中提供。 但是,时区不是现成的。

定义¶ T0>

“国际化”和“本地化”这两个词经常引起混淆;这是一个简化的定义:

internationalization
准备本地化的软件。 通常由开发人员完成。
localization
编写翻译和本地格式。 通常由翻译人员完成。

更详细的信息可以在W3C Web国际化FAQ维基百科文章GNU gettext文档中找到。

警告

Translation and formatting are controlled by USE_I18N and USE_L10N settings respectively. 但是,这两个功能都涉及国际化和本地化。 设置的名称是Django历史的一个不幸的结果。

以下是一些有助于我们处理共同语言的术语:

locale name
语言环境名称,可以是ll格式的语言规范,也可以是ll_CC格式的组合语言和国家/地区规范。 例如:itde_ATespt_BR 语言部分总是小写,国家是大写。 分隔符是下划线。
language code
代表一种语言的名称。 浏览器使用此格式在Accept-Language HTTP标头中发送它们接受的语言的名称。 例如:itde-atespt-br 语言代码通常以小写字母表示,但HTTP Accept-Language标头不区分大小写。 分隔符是一个破折号。
message file
消息文件是纯文本文件,表示单一语言,包含所有可用的translation strings以及如何以给定语言表示它们。 消息文件具有.po文件扩展名。
translation string
一个可以翻译的文字。
format file
格式文件是一个Python模块,用于定义给定语言环境的数据格式。