@koshian's Tech Log

主に日本語に関する技術などこちらに書こうかと

CentOS 6 で日本語ロケールが存在しない場合の生成方法

まれな事態だとは思うが、locale -a しても ja_JP.* なロケールが出てこない場合がある。こういうとき、debian だと dpkg-reconfigure locales とか /etc/locale.gen に日本語ロケール書いて logele-gen コマンドでなんとかなるのだが、CentOS の方はどうやるのかさっぱりわからん。RHEL もたぶん同じなんだろうな。

というわけでいろいろ調べてたらどうやら /usr/share/i18n/locales に ja_JP はあるのよね。これを元に ja_JP.UTF-8 なり ja_JP.EUC-JP なりを生成すればいい。

# localedef -f UTF-8 -i ja_JP /usr/lib/locale/ja_JP.UTF-8

-f で charmap を、-i で元の言語を指定し、/usr/lib/locale 以下に置いてあげればいいらしい。

$ locale -a
C
POSIX
en_US
en_US.iso88591
en_US.iso885915
en_US.utf8
ja_JP.UTF-8

ちゃんと追加されている。これで LANG などに指定できるようだ。ただこうしても

$ export LC_ALL=ja_JP.UTF-8
-bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (ja_JP.UTF-8)

というエラーが出てしまう。これはよくわからん。まあメッセージまで日本語にしようとは思わないからいいんだけれども。