ubuntuでlocaleを追加する
普通にinstallして使う分には問題ないのですが、vagrantやdockerのofficial imageを使うとC localeしかない場合があります。(C localeしかないと言ってもC/C.utf8/POSIXが見えますが。C localeじゃなくてPOSIX localeって言う方がいいのかな……?)
これで問題ない時もありますが、変なところで引っかかることもあります。私はmultibyte characterが含まれたgemspecファイルで引っかかりました。
なので、utf-8のlocaleを追加してみます。
日本語のlocaleを追加する
aptでlanguage-packを追加する
language-pack-jaをインストールしてもいいです。
root@localhost # apt-get install language-pack-ja
ちなみにインストール可能なlanugage-packはapt-cacheで見れます。
root@localhost # apt-cache search language-pack
locale-genする
でもlocaleだけ追加したいことってありますよね。表示しなくていい、みたいな。そういう時はlocale-genとupdate-localeを使います。
root@localhost # locale-gen ja_JP.UTF-8
root@localhost # update-locale LANG=ja_JP.UTF-8
サポートしているlocaleを全部入れる
さて、ここまではなんてことないことで、検索するとすぐ出てきます。でも、Ubuntuがサポートしているlocaleを全部入れたいことってありますよね?(あるのか?)
まず、サポートしているlocaleのリストが /usr/share/i18n/SUPPORTED にあります。
root@localhost # head /usr/share/i18n/SUPPORTED
# This file names the currently supported and somewhat tested locales.
# If you have any additions please file a glibc bug report.
aa_DJ.UTF-8 UTF-8
aa_DJ ISO-8859-1
aa_ER UTF-8
aa_ER@saaho UTF-8
aa_ET UTF-8
af_ZA.UTF-8 UTF-8
af_ZA ISO-8859-1
am_ET UTF-8
念のためtailもしてみます。
root@localhost $ tail /usr/share/i18n/SUPPORTED
zh_HK.UTF-8 UTF-8
zh_HK BIG5-HKSCS
zh_SG.UTF-8 UTF-8
zh_SG.GBK GBK
zh_SG GB2312
zh_TW.EUC-TW EUC-TW
zh_TW.UTF-8 UTF-8
zh_TW BIG5
zu_ZA.UTF-8 UTF-8
zu_ZA ISO-8859-1
ふうむ…今回は.UTF-8が付いているやつだけ入れましょう。
root@localhost $ grep '\.UTF-8' /usr/share/i18n/SUPPORTED | awk '{ print $1 }'
とかで一覧が出ますので、
root@localhsot $ locale-gen $(grep '\.UTF-8' /usr/share/i18n/SUPPORTED | awk '{ print $1 }')
します。
(ここでたまにエラー出たりしますが、要望があれば調査してみるので、コメントを下さい。とりあえず私はいらないのでやっていません。)
この後にC以外でupdate-localeするのを忘れないようにしましょう。
終わりに
ものすごい手抜きですが、こんな手順で簡単にlocaleがだいたい全部入ります。もしドキュメントやフォント等が入れたかったら、apt-get install 'language-pack-*'すればいいです。手元では782MB、1184のnew packageで済みました。
まあ、勝負はここからなわけですので、がんばりましょう!