国际化和本地化

概述

国际化和本地化的目的就是让一个网站应用能做到根据用户语种和指定格式的不同而提供不同的内容。

Django 对文本翻译, 日期、时间和数字的格式化,以及时区提供了完善的支持。

实际上,Django做了两件事:

  • 由开发者和模板作者指定应用的哪些部分应该翻译,或是根据本地语种和文化进行相应的格式化。
  • 根据用户的偏好设置,使用钩子将web应用本地化。

很显然,翻译取决于用户所选语言,而格式化通常取决于用户所在国家。 这些信息由浏览器通过Accept-Language 协议头提供。不过确定时区就不是这么简单了。

定义

国际化和本地化通常会被混淆,这里我们对其进行简单的定义和区分:

国际化

让软件支持本地化的准备工作,通常由开发者完成。

本地化

编写翻译和本地格式,通常由翻译者完成。

更多细节详见W3C Web Internationalization FAQ、Wikipedia article和GNU gettext documentation。

警告

是否启用翻译和格式化分别由配置项USE_I18NUSE_L10N 决定。 但是,这两个配置项都同时影响国际化和本地化。 这种情况是Django的历史因素所致。

下面几项可帮助我们更好地处理某种语言:

本地化名称

表示地域文化的名称,可以是 ll 格式的语种代码,也可以是 ll_CC 格式的语种和国家组合代码。例如:it, de_AT, es, pt_BR 。语种部分总是小写而国家部分则应是大写,中间以下划线(_)连接。

语言代码

表示语言的名称。浏览器会发送带有语言代码的 Accept-Language HTTP报头给服务器。例如:it, de-at, es, pt-br. 语种和国家部分都是小写,中间以破折线(-)连接。

消息文件

消息文件是纯文本文件,包含某种语言下所有可用的翻译字符串及其对应的翻译结果。消息文件以 .po 做为文件扩展名。

翻译字符串

可以被翻译的文字。

格式文件

针对某个地域定义数据格式的Python模块。

译者:Django 文档协作翻译小组,原文:Overview。

本文以 CC BY-NC-SA 3.0 协议发布,转载请保留作者署名和文章出处。

Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质。交流群:467338606。

django 1.8 官方文档翻译: 9-1-1 国际化和本地化相关推荐

  1. django 1.8 官方文档翻译: 2-5-7 自定义查找

    自定义查找 New in Django 1.7. Django为过滤提供了大量的内建的查找(例如,exact和icontains).这篇文档阐述了如何编写自定义查找,以及如何修改现存查找的功能.关于查 ...

  2. django 1.8 官方文档翻译: 2-5-6 多数据库

    多数据库 这篇主题描述Django 对多个数据库的支持.大部分Django 文档假设你只和一个数据库打交道.如果你想与多个数据库打交道,你将需要一些额外的步骤. 定义你的数据库 在Django中使用多 ...

  3. django 1.8 官方文档翻译: 1-1-2 快速安装指南

    快速安装指南 在你开始使用 Django 之前,你需要先安装它.我们有一个 完整安装指南 它涵盖了所有的安装步骤和可能遇到的问题:本指南将会给你一个最简单.简洁的安装指引. 安装 Python 作为一 ...

  4. django 1.8 官方文档翻译: 3-4-2 基于类的内建通用视图

    基于类的内建通用视图 编写Web应用可能是单调的,因为你需要不断的重复某一种模式. Django尝试从model和 template层移除一些单调的情况,但是Web开发者依然会在view(视图)层经历 ...

  5. django 1.8 官方文档翻译:2-5-9 条件表达式

    条件表达式 New in Django 1.8. 条件表达式允许你在过滤器.注解.聚合和更新操作中使用 if ... elif ... else的逻辑.条件表达式为表中的每一行计算一系列的条件,并且返 ...

  6. django 1.8 官方文档翻译:8-5 加密签名

    加密签名 web应用安全的黄金法则是,永远不要相信来自不可信来源的数据.有时通过不可信的媒介来传递数据会非常方便.密码签名后的值可以通过不受信任的途径传递,这样是安全的,因为任何篡改都会检测的到. D ...

  7. django 1.8 官方文档翻译: 3-4-2 内建显示视图

    Django 文档协作翻译小组人手紧缺,有兴趣的朋友可以加入我们,完全公益性质. 交流群:467338606 网站:http://python.usyiyi.cn/django/index.html ...

  8. django 1.8 官方文档翻译:2-1-1 模型语法

    模型 模型是你的数据的唯一的.权威的信息源.它包含你所储存数据的必要字段和行为.通常,每个模型对应数据库中唯一的一张表. 基础: 每个模型都是django.db.models.Model 的一个Pyt ...

  9. django 1.8 官方文档翻译:6-3 Django异常

    Django异常 DJango会抛出一些它自己的异常,以及Python的标准异常. Django核心异常 Django核心异常类定义在django.core.exceptions中. ObjectDo ...

最新文章

  1. 跨链(5)“蚂蚁区块链”之预言机
  2. Python list(列表) 详细总结
  3. 俄科学家团队研发制备ALON新法,推进该材料在国防领域的应用
  4. android 开源网站
  5. 移动端触摸移动小demo
  6. 7-5 排列的字典序问题 (10 分)(思路加详解全排列问题+vector容器做法)Come Baby!
  7. MySQL之表结构设计
  8. 《深入理解Java虚拟机》读书笔记一
  9. 请给出一个时间为O(nlgk)、用来将k个已排序链表的算法。此处n为所有输入链表中元素的总数。...
  10. Java高并发编程详解系列-线程池原理自定义线程池
  11. 【ACL 2019】预训练语言模型的最新探索
  12. imageranger for Mac如何自定义过滤器选项
  13. sql 插入日期格式
  14. directx初第一卷
  15. FREEIPA:ipa-server的部署使用
  16. 2cm有多长实物图_一厘米有多长,求图片
  17. 使用格拉姆角场(GAF)以将时间序列数据转换为图像
  18. 加州房价篇 (一) : 了解数据
  19. win10便签常驻桌面_做备忘录,用win10自带的便笺工具就可以了,免费又方便
  20. javascript设计模式-原型模式(prototype pattern)

热门文章

  1. 组态王授权产品id和授权锁id_软件加密授权工具推荐
  2. STM32-SPI通信
  3. python算法应用(六)——搜索与排名2(PageRank算法及其拓展应用)
  4. linux input子系统分析--子系统核心.事件处理层.事件传递过程
  5. 【Shell教程】四----输入输出,条件判断,循环
  6. mysql 两行的差异_MySQL两行之间的日期差异
  7. 【LeetCode】剑指 Offer 25. 合并两个排序的链表
  8. 生产者消费者问题 操作系统
  9. 使用kubeadm安装kubernetes1.12.2版本脚本
  10. 物联网可能面临灾难性安全风险