Satchmoがロケールでエラーになる
Satchmoの話。
現象
mproperlyConfigured at /shop/ bad settings.LANGUAGE_CODE
なんていうエラーが出る。
原因
- ブラウザが「Accept-Language」として「ja」を送ってくる。
- Satchmoは、この「ja」をロケール名だとして「setlocale()」する。
- Python付属の「locale.py」は、内蔵の変換テーブルで「ja」を「ja_JP.eucJP」として取り扱う。
- このサーバに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)
