Django アプリケーションの国際化

825 views
Skip to first unread message

deshi

unread,
Jul 24, 2008, 5:43:29 PM7/24/08
to django-ja
1.0 のリリース前で忙しいところすいません、
国際化でうまくいかないので教えてください。
Django svn 版 (7/23 のtrunk からチェックアウト)を使用しています。

プロジェクトディレクトリとは別ディレクトリ(もちろん PYTHONPATH は設定してある)に、自作のアプリケーションを作っています。
アプリケーション自体はうまく動作しているのですが、国際化を使った日本語メッセージがうまく表示されません。
・日本語化が必要なメッセージは ugettext_lazy を _ とした関数に渡してある
・プロジェクトディレクトリの settings.py には
   LANGUAGE_CODE = 'ja-JP'
   USE_I18N = True
 は設定済み
・アプリケーションディレクトリで
django-admin.py makemessages -l ja-JP
 で生成した locale/ja-JP/LC_MESSAGES/django.po を編集し、
django-admin.py compilemessages
 でコンパイルし、django.mo ファイルは生成されている。

ですが、設定した日本語が表示されてくれません(_() に渡した英語のまま)。
不慣れな国際化でへぼしているかもしれませんが、お分かりになる方、ご助言ください。

Hiroshi Ayukawa

unread,
Jul 25, 2008, 11:44:20 AM7/25/08
to djan...@googlegroups.com
国際化はいくつかの関門があり、問題を切り分けることが重要と思います。
自分もこれまでいくつも国際化アプリを作ってますが、最初に日英を切り替えられるようになるまでにたいていどこか引っかかります。
自分は例えば以下のように切り分けたりします。(スマートなやり方ではないかもしれませんが。)

1. LANGUAGE CODEは正しく認識されているか?
{% get_current_language as LANGUAGE_CODE %} などで、テンプレートに渡ってきたLANGUAGE
CODEをテンプレート上で取得できます。 {{ LANGUAGE_CODE }} などとして表示してみてください。
ここで日本語以外の言語として認識されているなら、ブラウザの言語設定などに問題がある可能性もあります。

2. settings.py には設定が書かれているか?
自分の場合、以下の項目を設定しています。(自分のsettings.pyでは英語をデフォルトにしています。)
TIME_ZONE = 'Asia/Tokyo'
LANGUAGE_CODE = 'en-us'
_ = lambda s: s
LANGUAGES = (
('ja', _('Japanese')),
('en', _('English')),
)
USE_I18N = True

さらに、Djangoドキュメントにもありますが、以下のmiddleware設定もよく忘れがち。
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)

3. compileをしたか。(moができているなら大丈夫かな?多分)

4. 開発時のcompile後には、開発用の./manage.py runserver は、きちんと再起動が必要です。自動では反映されません。

だいたい以上のような感じだと思います。
上記ではないなら、ちょっとよくわからないです。
ちなみに自分は"ja_JP"じゃなく、"ja"を使っています。これは影響するんだろうか。自分はよくわかりません。


鮎川 寛


2008/07/25 6:43 deshi <deshi...@gmail.com>:

deshi

unread,
Jul 25, 2008, 3:42:21 PM7/25/08
to django-ja
鮎川さん、フォローありがとうございます。
一人でコーディングしているもので心強く思います。

>>ちなみに自分は"ja_JP"じゃなく、"ja"を使っています。
これでした。
ja-JP で locale を作っていたのがいけなかったようです。
デフォルトで生成される settings.py の LANGUAGE_CODE に付記される
コメントにある http://www.i18nguy.com/unicode/language-identifiers.html
を見たところ、純粋な言語コードとしては ja-JP って存在しないんですね…
Reply all
Reply to author
Forward
0 new messages