Django 國際化
Django 支持國際化,多語言。Django的國際化是默認開啟的,如果您不需要國際化支持,那么您可以在您的設置文件中設置 USE_I18N = False,那么Django會進行一些優化,不加載國際化支持機制。
NOTE: 18表示Internationalization這個單詞首字母I和結尾字母N之間的字母有18個。I18N就是Internationalization(國際化)的意思。
Django 完全支持文本翻譯,日期時間數字格式和時區。
本質上講,Django做了兩件事:它允許開發者指定要翻譯的字符串
Django根據特定的訪問者的偏好設置 進行調用相應的翻譯文本。
一,開啟國際化的支持,需要在settings.py文件中設置MIDDLEWARE_CLASSES?=?(
...
'django.middleware.locale.LocaleMiddleware',
)
LANGUAGE_CODE?=?'en'
TIME_ZONE?=?'UTC'
USE_I18N?=?True
USE_L10N?=?True
USE_TZ?=?True
LANGUAGES?=?(
('en',?('English')),
('zh-cn',?('中文簡體')),
('zh-tw',?('中文繁體')),
)
#翻譯文件所在目錄,需要手工創建
LOCALE_PATHS?=?(
os.path.join(BASE_DIR,?'locale'),
)
TEMPLATE_CONTEXT_PROCESSORS?=?(
...
"django.core.context_processors.i18n",
)
注意:Django 1.9 及以上版本中,語言的代碼發生變化(詳情鏈接:github, django ticket,如下LANGUAGES?=?(
('en',?('English')),
('zh-hans',?('中文簡體')),
('zh-hant',?('中文繁體')),
)
二,生成需要翻譯的文件(Django 1.8及以下的版本):python?manage.py?makemessages?-l?zh-cn
python?manage.py?makemessages?-l?zh-tw
Django 1.9 及以上版本要改成python?manage.py?makemessages?-l?zh_hans
python?manage.py?makemessages?-l?zh_hant
三,手工翻譯 locale 中的 django.po此處省去500字
...
#:?.\tutorial\models.py:23
msgid?"created?at"
msgstr?"創建于"
#:?.\tutorial\models.py:24
msgid?"updated?at"
msgstr?"更新于"
...
此處省去幾百字
四,編譯一下,這樣翻譯才會生效python?manage.py?compilemessages
如果翻譯不生效,請檢查你的語言包的文件夾是不是有 中劃線,請用下劃線代替它。
比如 zh-hans 改成 zh_hans (但是要注意 setttings.py 中要用 中劃線,不要也改了,就這一句話,你可能會浪費幾個小時或幾天)