Django 支持國(guó)際化,多語(yǔ)言。Django的國(guó)際化是默認(rèn)開啟的,如果您不需要國(guó)際化支持,那么您可以在您的設(shè)置文件中設(shè)置 USE_I18N = False,那么Django會(huì)進(jìn)行一些優(yōu)化,不加載國(guó)際化支持機(jī)制。NOTE: 18表示Internationlization這個(gè)單詞首字母I和結(jié)尾字母N之間的字母有18個(gè)。I18N就是Internationlization的意思。
Django 完全支持文本翻譯,日期時(shí)間數(shù)字格式和時(shí)區(qū)。 本質(zhì)上講,Django做了兩件事: 它允許開發(fā)者指定要翻譯的字符串 Django根據(jù)特定的訪問(wèn)者的偏好設(shè)置 進(jìn)行調(diào)用相應(yīng)的翻譯文本。
一,開啟國(guó)際化的支持,需要在settings.py文件中設(shè)置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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' , ( '中文簡(jiǎn)體' )),
( 'zh-tw' , ( '中文繁體' )),
)
#翻譯文件所在目錄,需要手工創(chuàng)建
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'locale' ),
)
TEMPLATE_CONTEXT_PROCESSORS = (
...
"django.core.context_processors.i18n" ,
)
|
注意:Django 1.9 及以上版本中,語(yǔ)言的代碼發(fā)生變化(詳情鏈接:github, django ticket,如下 1 2 3 4 5 | LANGUAGES = (
( 'en' , ( 'English' )),
( 'zh-hans' , ( '中文簡(jiǎn)體' )),
( 'zh-hant' , ( '中文繁體' )),
)
|
二,生成需要翻譯的文件(Django 1.8及以下的版本): 1 2 | python manage.py makemessages -l zh-cn
python manage.py makemessages -l zh-tw
|
Django 1.9 及以上版本要改成 1 2 | python manage.py makemessages - l zh_hans
python manage.py makemessages - l zh_hant
|
三,手工翻譯 locale 中的 django.po 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 此處省去500字
...
#: .\tutorial\models.py:23
msgid "created at"
msgstr "創(chuàng)建于"
#: .\tutorial\models.py:24
msgid "updated at"
msgstr "更新于"
...
此處省去幾百字
|
四,編譯一下,這樣翻譯才會(huì)生效
1 | python manage.py compilemessages
|
如果翻譯不生效,請(qǐng)檢查你的語(yǔ)言包的文件夾是不是有 中劃線,請(qǐng)用下劃線代替它。 比如 zh-hans 改成 zh_hans
Django 官方教程:internationalization-and-localization
|