GAE/Pを使ったアプリをローカライズする方法

Djangoをローカライズと同じようにできるので、以前書いたメモ「メモ: Djangoのローカライズ」の通りにできます。

なお、そのメモには、「settings.py」に「gettext_noop = lambda s: s」を追加する記述が漏れていたので注意が必要です。

以下、簡単に列挙します。

  1. 「settings.py」を作成
  2. GAEのmain.py(app.yamlに定義したやつ)にて「settings.py」を読み込み
  3. 読み込んだ「settings.py」の「_target」にNoneを設定
  4. 「WSGIHandler」を「django.core.handlers.wsgi.WSGIHandler」に変更
  5. 「locale」ディレクトリを作成
  6. 「django-admin.py makemessages -l [言語コード]」で言語ファイルを作成
  7. 言語ファイルを修正
  8. 「django-admin.py compilemessages」で言語ファイルをコンパイル
  9. 「urls.py」を作成し、ルーティングを記載
  10. 「urls.py」の通りに「views.py」などを作成
  11. テンプレートを「settings.py」に記述したディレクトリに配置

記載漏れがなければ、上記で動きます。

※「settings.py」の例

--- settings.py ---

gettext_noop = lambda s: s
import os
DEBUG = True
TEMPLATE_DEBUG = DEBUG
TIME_ZONE = ‘Asia/Tokyo'
LANGUAGE_CODE = ‘ja'
LANGUAGES = {
    (‘en',gettext_noop(‘English')),
    (‘ja',gettext_noop(‘Japanese')),
}
USE_I18N = True
USE_L10N = True
TEMPLATE_LOADERS = (
    ‘django.template.loaders.filesystem.load_template_source',
)
MIDDLEWARE_CLASSES = (
    ‘django.middleware.common.CommonMiddleware',
    ‘django.middleware.locale.LocaleMiddleware',
)
ROOT_URLCONF = ‘urls'
TEMPLATE_DIRS = (
    os.path.join(os.path.dirname(__file__), ‘templates'),
)

この記事が役に立った場合、シェアしていただけると励みになります!!