Django 汉化
Django 漢化
1 簡介
Django 支持國際化,多語言。Django的國際化是默認開啟的,如果您不需要國際化支持,那么您可以在您的設置文件中設置 USE_I18N = False,那么Django會進行一些優化,不加載國際化支持機制。
NOTE: 18表示Internationalization這個單詞首字母I和結尾字母N之間的字母有18個。I18N就是Internationalization(國際化)的意思。
Django 完全支持文本翻譯,日期時間數字格式和時區。
本質上講,Django做了兩件事:
2 漢化配置
這是在Django 2.1下進行的。
2.1 在settings.py中進行配置
TIME_ZONE = 'Asia/Shanghai' LANGUAGE_CODE = 'zh-Hans'USE_I18N = True USE_L10N = True USE_TZ = TrueLANGUAGES = ( # ('en', ('English')),('zh-Hans', ('中文簡體')), # ('zh-Hant', ('中文繁體')), )#翻譯文件所在目錄,需要手工創建 LOCALE_PATHS = (os.path.join(BASE_DIR, 'locale'), )TEMPLATES = [{............'OPTIONS': {'context_processors': [............'django.template.context_processors.i18n',],},}, ]MIDDLEWARE = [............'django.middleware.locale.LocaleMiddleware', ]2.2 生成翻譯文件
python manage.py makemessages -l zh_Hans # 簡體 python manage.py makemessages -l zh_Hant # 繁體2.3 手工翻譯 locale 中的 django.po
... ...#: .\tutorial\models.py:23 msgid "created at" msgstr "創建于"#: .\tutorial\models.py:24 msgid "updated at" msgstr "更新于"... ...2.4 編譯翻譯文件
通過編譯后才會翻譯才會生效。
python manage.py compilemessages經過編譯后得到的目錄結構如下:
├── locale │?? └── zh_Hans # 通過makemessages生成的 │?? └── LC_MESSAGES │?? ├── django.mo # 編譯生成的翻譯文件 │?? └── django.po # 要編寫的翻譯文件參考:
https://code.ziqiangxuetang.com/django/django-internationalization.html
總結
- 上一篇: 汉诺塔问题(含四柱加强版)
- 下一篇: 20万天猫智慧门店背后的商业思考和技术重