原文: Internationalization and localization
国际化和本地化的目标是,允许一个单一的Web应用程序提供适合用户的语言和格式的内容。
Django完全支持文本翻译,日期,时间和数字格式,以及时区。
从本质上讲,Django做了两件事:
- 它允许开发者和模板的作者指定应用程序的某些部分应该为当地的语言和文化进行翻译或格式化。
- 根据特定用户的喜好,使用这些钩子来对Web应用程序进行本地化。
显然,翻译取决于目标的语言和格式,通常取决于目标国家。此信息通过报头的Accept-Language属性,由浏览器提供。然而,并不容易获得时区。
词语“国际化”和“本土化”,往往会造成混乱; 这里有一个简单的定义:
国际化
准备用于本地化的软件,通常由开发者完成。
本地化
编写翻译及本地格式。通常由翻译器完成。
更多详细信息,见W3网络国际化FAQ, 维基百科的文章或GNU gettext文档。
警告
翻译和格式化通过USE_I18N和USE_L10N设置项分别设置。然而,这两种功能都包括国际化和本地化。设置项的名字是Django历史上的一个不幸的结果。
这里有一些其他术语,以助于我们处理一个共同的语言:
区域设置名称
语言环境的名称,或者是由ll形式或者由语言和指定国家组成的ll_CC形式指定的语言例如: it, de_AT, es, pt_BR。语言部分始终是小写,而国家部分始终是大写。分隔符是下划线。
语言代码
代表一种语言的名字。浏览器使用这种格式来发送它们在Accept-Language报头接收的语言的名称。例如:it, de-at, es, pt-br。语言代码通常用小写表示,但是HTTP Accept-Language报头不区分大小写。其分隔符是一个破折号。
消息文件
一个信息文件是一个纯文本文件,它代表一种语言,其包含了所有可用的翻译字符串,以及应如何在给定的语言中展示。消息文件具有**.po**文件扩展名。
翻译字符串
可翻译文字。
格式化文件
格式化文件是为给定的语言环境定义数据格式的Python模块。