Django ブログサイト locale/LC_MESSAGES 多言語対応

2020/07/04 (更新:2020/11/19)

本サイトは複数の言語に対応します。

アプリケーション設定

MIDDLEWAREdjango.middleware.locale.LocaleMiddlewareを定義します。
LANGUAGESに使用する言語を指定します。

settings

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

LANGUAGE_CODE = 'ja'    
LANGUAGES = [
    ('ja', gettext_lazy('Japanese')),
    ('en', gettext_lazy('English')),
]
LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

コード

template html

{% load i18n %}
<h1>{% trans 'Test' %}</h1>

メッセージファイル作成

Djangoツールよりメッセージファイルlocale/*/LC_MESSAGESを作成します。

Command

python manage.py makemessages -l en --no-location
python manage.py makemessages -l ja --no-location

メッセージファイルlocale/*/LC_MESSAGESを修正し、Djangoツールよりビルドします。

Command

python manage.py compilemessages