wiki:DjangoSatchmoLocaleProblem

Satchmoがロケールでエラーになる

 Satchmoの話。

現象

mproperlyConfigured at /shop/
bad settings.LANGUAGE_CODE

なんていうエラーが出る。

原因

  1. ブラウザが「Accept-Language」として「ja」を送ってくる。
  2. Satchmoは、この「ja」をロケール名だとして「setlocale()」する。
  3. Python付属の「locale.py」は、内蔵の変換テーブルで「ja」を「ja_JP.eucJP」として取り扱う。
  4. このサーバにEUC-JPのロケールデータが無いと、setlocale()がエラーになる。

最近、世の中は「ja_JP.UTF8」だもんね。

対処

Satchmoのバグだろうけど、とりあえず対処。2通りあるので、いずれか好きな方を。

ja_JP.eucJPをインストールする

手元の Ubuntu Hardy Heron Betaの場合。 「/var/lib/locales/supported.d/local」に「ja_JP.EUC-JP EUC-JP」って行を追加してから「locale-gen」コマンドを実行。

ja_JP.UTF-8 UTF-8
en_US.UTF-8 UTF-8

# //sgk 2008/4/14
ja_JP.EUC-JP EUC-JP

Djangoのsettings.pyでなんとかする

自分のSatchmoなプロジェクトの「settings.py」の適当な場所に、以下の2行を追加する。

import locale
locale.locale_alias['ja'] = 'ja_JP.UTF8'

(2008/4/14 - sgk)