# 國際化和本地化 #
## 概述 ##
國際化和本地化的目的就是讓一個網站應用能做到根據用戶語種和指定格式的不同而提供不同的內容。
Django 對文本翻譯, 日期、時間和數字的格式化,以及時區提供了完善的支持。
實際上,Django做了兩件事:
+ 由開發者和模板作者指定應用的哪些部分應該翻譯,或是根據本地語種和文化進行相應的格式化。
+ 根據用戶的偏好設置,使用鉤子將web應用本地化。
很顯然,翻譯取決于用戶所選語言,而格式化通常取決于用戶所在國家。 這些信息由瀏覽器通過`Accept-Language` 協議頭提供。不過確定時區就不是這么簡單了。
## 定義 ##
國際化和本地化通常會被混淆,這里我們對其進行簡單的定義和區分:
**國際化**
讓軟件支持本地化的準備工作,通常由開發者完成。
**本地化**
編寫翻譯和本地格式,通常由翻譯者完成。
更多細節詳見[W3C Web Internationalization FAQ](http://www.w3.org/International/questions/qa-i18n)、[Wikipedia article](http://en.wikipedia.org/wiki/Internationalization_and_localization)和[GNU gettext documentation](http://www.gnu.org/software/gettext/manual/gettext.html#Concepts)。
> 警告
>
> 是否啟用翻譯和格式化分別由配置項`USE_I18N`和 `USE_L10N` 決定。 但是,這兩個配置項都同時影響國際化和本地化。 這種情況是Django的歷史因素所致。
下面幾項可幫助我們更好地處理某種語言:
**本地化名稱**
表示地域文化的名稱,可以是 `ll` 格式的語種代碼,也可以是 `ll_CC` 格式的語種和國家組合代碼。例如:`it`, `de_AT`, `es`, `pt_BR` 。語種部分總是小寫而國家部分則應是大寫,中間以下劃線(\_)連接。
**語言代碼**
表示語言的名稱。瀏覽器會發送帶有語言代碼的 ``Accept-Language`` HTTP報頭給服務器。例如:`it`, `de-at`, `es`, `pt-br`. 語種和國家部分都是小寫,中間以破折線(-)連接。
**消息文件**
消息文件是純文本文件,包含某種語言下所有可用的[翻譯字符串](http://python.usyiyi.cn/django/topics/i18n/index.html#term-translation-string)及其對應的翻譯結果。消息文件以 `.po` 做為文件擴展名。
**翻譯字符串**
可以被翻譯的文字。
**格式文件**
針對某個地域定義數據格式的Python模塊。
> 譯者:[Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html),原文:[Overview](https://docs.djangoproject.com/en/1.8/topics/i18n/)。
>
> 本文以 [CC BY-NC-SA 3.0](http://creativecommons.org/licenses/by-nc-sa/3.0/cn/) 協議發布,轉載請保留作者署名和文章出處。
>
> [Django 文檔協作翻譯小組](http://python.usyiyi.cn/django/index.html)人手緊缺,有興趣的朋友可以加入我們,完全公益性質。交流群:467338606。
- 新手入門
- 從零開始
- 概覽
- 安裝
- 教程
- 第1部分:模型
- 第2部分:管理站點
- 第3部分:視圖和模板
- 第4部分:表單和通用視圖
- 第5部分:測試
- 第6部分:靜態文件
- 高級教程
- 如何編寫可重用的應用
- 為Django編寫首個補丁
- 模型層
- 模型
- 模型語法
- 元選項
- 模型類
- 查詢集
- 執行查詢
- 查找表達式
- 模型的實例
- 實例方法
- 訪問關聯對象
- 遷移
- 模式編輯器
- 編寫遷移
- 高級
- 管理器
- 原始的SQL查詢
- 聚合
- 多數據庫
- 自定義查找
- 條件表達式
- 數據庫函數
- 其它
- 遺留的數據庫
- 提供初始數據
- 優化數據庫訪問
- 視圖層
- 基礎
- URL配置
- 視圖函數
- 快捷函數
- 裝飾器
- 參考
- 內建的視圖
- TemplateResponse 對象
- 文件上傳
- 概覽
- File 對象
- 儲存API
- 管理文件
- 自定義存儲
- 基于類的視圖
- 概覽
- 內建顯示視圖
- 內建編輯視圖
- API參考
- 分類索引
- 高級
- 生成 CSV
- 生成 PDF
- 中間件
- 概覽
- 內建的中間件類
- 模板層
- 基礎
- 面向設計師
- 語言概覽
- 人性化
- 面向程序員
- 表單
- 基礎
- 概覽
- 表單API
- 內建的Widget
- 高級
- 整合媒體
- 開發過程
- 設置
- 概覽
- 應用程序
- 異常
- 概覽
- django-admin 和 manage.py
- 添加自定義的命令
- 測試
- 介紹
- 部署
- 概述
- WSGI服務器
- 部署靜態文件
- 通過email追蹤代碼錯誤
- Admin
- 管理操作
- 管理文檔生成器
- 安全
- 安全概述
- 說明Django中的安全問題
- 點擊劫持保護
- 加密簽名
- 國際化和本地化
- 概述
- 本地化WEB UI格式化輸入
- “本地特色”
- 常見的網站應用工具
- 認證
- 概覽
- 使用認證系統
- 密碼管理
- 日志
- 分頁
- 會話
- 數據驗證
- 其它核心功能
- 按需內容處理
- 重定向
- 信號
- 系統檢查框架