Django最初是在美国中部开发的 - 就像字面意义上的那样,堪萨斯州劳伦斯距离美国大陆的地理中心不到40英里。然而,与大多数开源项目一样,Django的社区也逐渐成长为包括来自全球各地的人们。随着Django的社区日益多元化,国际化和本地化变得越来越重要。
Django本身已经完全国际化;所有字符串都被标记为翻译,并且设置控制显示与日期和时间等语言环境相关的值。 Django还附带有50多个不同的本地化文件。如果您不是以英语为母语的人,Django很可能已经被翻译成您的主要语言。
用于这些本地化的相同国际化框架可供您在自己的代码和模板中使用。
由于许多开发人员至多对国际化和本地化实际上意味着什么有模糊的理解,因此我们将从几个定义开始。
定义
国际化
指的是为潜在使用任何语言环境而设计程序的过程。这个过程通常由软件开发人员完成。国际化包括为未来翻译标记文本(如UI元素和错误消息),抽象显示日期和时间,以便可以观察不同的本地标准,为不同时区提供支持,并且通常确保代码不包含任何假设关于其用户的位置。您经常会看到国际化缩写为I18N。 (18代表在初始I和终端N之间省略的字母数目。)
本土化
指实际翻译国际化程序以用于特定语言环境的过程。这项工作通常由翻译人员完成。您有时会看到缩写为L10N的本地化。
以下是一些有助于我们处理共同语言的术语:
区域设置名称
语言环境名称,可以是形式ll的语言规范,也可以是形式ll_CC的组合语言和国家/地区规范。例如:it,de_AT,es,pt_BR。语言部分总是小写,国家部分大写。分隔符是下划线。
语言代码
代表一种语言的名称。浏览器使用此格式在Accept-Language HTTP标头中发送它们接受的语言的名称。例如:it,de-at,es,pt-br。语言代码通常以小写字母表示,但HTTP Accept-Language标头不区分大小写。分隔符是一个短划线。
消息文件
消息文件是纯文本文件,表示单一语言,其中包含所有可用的翻译字符串以及它们应如何用给定语言表示。消息文件具有.po文件扩展名。
翻译字符串
可以翻译的文字。
格式文件
格式文件是一个Python模块,用于定义给定语言环境的数据格式。
翻译
为了使Django项目可以翻译,你必须在你的Python代码和模板中添加最少数量的钩子。这些钩子被称为翻译字符串。他们告诉Django:如果该文本的翻译可以用该语言翻译,则应将该文本翻译成最终用户的语言。标记可翻译的字符串是您的责任;该系统只能翻译它所知道的字符串。
然后Django提供实用程序将翻译字符串提取到消息文件中。此文件是翻译人员提供目标语言翻译字符串的等效方法。一旦译员填写了消息文件,它必须被编译。这个过程依赖于GNU gettext工具集。
完成此操作后,Django会根据用户的语言偏好,按照每种可用语言即时翻译Web应用程序。
基本上,Django做了两件事:
- 它允许开发人员和模板作者指定应用程序的哪些部分应该可翻译。
- 它使用该信息根据他们的语言偏好为特定用户翻译Web应用程序。
Django的国际化挂钩默认开启,这意味着在框架的某些地方会有一些与i18n相关的开销。如果你不使用国际化,你应该花两秒钟在你的设置文件中设置USE_I18N = False。然后Django将进行一些优化,以免加载国际化机器,这将为您节省一些开销。还有一个独立但相关的USE_L10N设置,用于控制Django是否应该实现格式本地化。
网友评论