Django 1.9进行国际化适配
环境
Ubuntu 14.04.4 长期支持版
Python 3.5.1
Django 1.9.7
前提条件 (Paraphrase in Chinese:
- Djangoが日本語環境で動いていること
只需按照以下步骤,准备好翻译文件,就能根据浏览器的语言环境自动选择语言。
追加:切换显示的语言在Django1.9
通过执行以下步骤,您可以在路径上切换语言。
步骤 (bù
更改settings.py文件。
-
- MIDDLEWARE_CLASSES に
‘django.middleware.locale.LocaleMiddleware’,
を追記
ファイルに以下を追記
settings.py
LOCALE_PATHS = (
os.path.join(BASE_DIR, ‘locale’),
)
更改模板
{% load i18n %} を追記
翻訳したい箇所を {% trans ‘hoge’ %} のように変更
翻訳データがない場合にはhogeが表示されます
创建翻译列表文件
コマンドラインで以下を実行(英語から日本語の場合)
mkdir /DJANGO_BASE_DIR/locale
django-admin.py makemessages -l ja
実行すると /DJANGO_BASE_DIR/locale/ja/LC_MESSAGES/django.po が作成される
生成されたdjango.po の編集
django.po
#: path/to/template/index.html:4
msgid “hoge”
msgstr “”
このようにtemplateで {% trans ‘hoge’ %} 等と指定した箇所のファイル名と行番号を含めたファイルが用意されるので、 msgstrに翻訳後の文字列を指定します。
编译翻译文件
コマンドラインで以下を実行
python manage.py compilemessages
実行するとコンパイル済みの /DJANGO_BASE_DIR/locale/ja/LC_MESSAGES/django.mo が作成される
追加说明:优先检测语言设置(转录自官方文档的内容)
-
- 首先,将查找请求的URL是否具有语言前缀。仅在使用了i18n_patterns函数的根URLconf中才会执行此操作。参考:切换在Django1.9中显示的语言。
-
- 然后,查看当前用户会话中是否存在django_language键。
-
- 接下来,查找cookie。cookie的名称由LANGUAGE_COOKIE_NAME设置的值确定(默认名称为django_language)。
-
- 接着,查看Accept-Language HTTP头。这个头部是由浏览器发送的,按照用户期望的语言优先级传递。Django会检查传递的所有语言,直到找到可用的翻译为止。
- 如果上述方法都失败了,将使用全局的LANGUAGE_CODE设置。