國際化與本地化的目的為了能為各個不同的用戶以他們最熟悉的語言和格式來顯示網頁。
Django能完美支持文本翻譯、日期時間和數字的格式化、時區。
另外,Django還有兩點優勢:
- 允許開發者和模板作者指定他們哪些app應該被翻譯或被格式化為本地形式。
- 允許用戶根據自己的偏好來實現本地化顯示。翻譯依據語言,格式化依據國家, 這些信息由瀏覽器中的
Accept-Language
頭來決定。不過目前為止時區還未能實現。
參考官方文檔:https://docs.djangoproject.com/en/1.9/topics/i18n/
配置
實際上django的國際化做的非常好了,配置很簡單。
settings.py
首先在settings中,添加如下內容:
1 |
from django.utils.translation import ugettext_lazy as _ |
通過LANGUAGES
執行語言列表,LOCALE_PATHS
指定國際化目錄。
在項目根目錄下面創建一個locale文件夾,然后使用命令創建國際化文件:
django-admin.py makemessages -l zh_CN |
執行完后,locale文件夾下面創建zh_CN/LC_MESSAGES/django.po
,里面的內容類似下面:
1 |
# SOME DESCRIPTIVE TITLE. |
將你頁面上面需要翻譯的內容寫到這里面來即可。比如previous
要翻譯成上一頁
。
寫好了所有的翻譯后,再執行:
django-admin.py compilemessages |
這時候會生成文件zh_CN/LC_MESSAGES/django.mo
,這個是最終的目標文件了。
使用
我們用base.html
來做演示,打開mysite/templates/mysite/base.html
1 |
{% load staticfiles %} |
注意
<title>{% trans 'Simple Blog'%}</title> |
這句,如果用戶選擇中文,那么就會被翻譯成極簡博客
。這個在django.po文件中定義過。其他的內容也是類似,就不多說了。
好了,i18n國際化就是這么簡單。