国际化和本地化

Overview

国际化和本地化的目标是使得单个Web应用程序能够为用户提供语言和格式经过量身定制的内容。

Django完全支持文本翻译日期,时间和数字格式时区

Django本质上是做了这样两件事:

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

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

Definitions

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

internationalization
Preparing the software for localization. Usually done by developers.
localization
编写翻译和本地格式。 Usually done by translators.

More details can be found in the W3C Web Internationalization FAQ, the Wikipedia article or the GNU gettext documentation.

Warning

翻译和格式化分别由US0_I18NUSE_L10N设置进行控制。 但是,这两个功能都涉及国际化和本地化。 这些设置的名称是Django历史中的一个不幸结果。

Here are some other terms that will help us to handle a common language:

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