前2つのエントリでハマりまくったPHPのsetlocaleのまとめ。*1
Apache CLIの共通の認識
- $locale -a を行って表示されないロケールは(つまりOSで有効化されてないロケール)setlocale()しても無効である。
- ただし、言語パック(debianだとtask-japaneseパッケージなど)を入れる必要は無い。
- LC_MESSAGESディレクトリを置くフォルダ名は、文字コードが必要ない。付けてはいけない。(×:ja_JP.UTF8 〇:ja_JP)
- setlocale()第二引数で設定するロケールは、$locale -a の中にあるもので一致してなければならない。locale -a の中に、"ja_JP.utf8"があった場合"ja_JP"はN.G
- setlocale()の第二引数内の「utf8」は、文字表記の揺れを認める。UTF8/UTF-8/utf8/utf-8/UtF-8などは全て許容される。