30 April 2011

(Ubuntu / FreeBSD) シェルの言語(ロケール)設定

シェルの言語(ロケール)設定のメモ

■ Linux : インストールされているロケールの表示

$ locale -a C POSIX en_AG en_AU.utf8 en_BW.utf8 en_CA.utf8 en_DK.utf8 en_GB.utf8 en_HK.utf8 en_IN en_NG en_NZ.utf8 en_PH.utf8 en_SG.utf8 en_US.utf8 en_ZA.utf8 en_ZW.utf8 fr_FR.utf8 ja_JP.utf8

■ FreeBSD : インストールされているロケールの表示

$ ls /usr/share/locale UTF-8/ en_GB.UTF-8/ is_IS.ISO8859-1/ pl_PL.ISO8859-2/ af_ZA.ISO8859-1/ en_IE.UTF-8/ is_IS.ISO8859-15/ pl_PL.UTF-8/ af_ZA.ISO8859-15/ en_NZ.ISO8859-1/ is_IS.UTF-8/ pt_BR.ISO8859-1/ af_ZA.UTF-8/ en_NZ.ISO8859-15/ it_CH.ISO8859-1/ pt_BR.UTF-8/ 〜 以下省略 〜

■ Ubuntu : ロケールの追加

/var/lib/locales/supported.d/local ファイルに必要なロケールを追加して、locale-genコマンドでロケール情報を生成する。

追加できるロケール名は /usr/share/i18n/SUPPORTED ファイルに書かれているので、この中から選択する。

/var/lib/locales/supported.d/local
ja_JP.UTF-8 UTF-8 en_US.UTF-8 UTF-8 fr_FR.UTF-8 UTF-8 ← フランス語を追加する場合 ja_JP.EUC-JP EUC-JP ← 日本語(EUC)を追加する場合

システム標準のロケールは /etc/defaults/locale ファイルにLANG="ja_JP.UTF-8"のように設定されているので、変更する場合はupdate-locale LANG=ja_JP.UTF-8のようなコマンドを実行してlocaleファイルを書き換える。

■ 指定したロケールでのコマンド実行(bashの場合)

1回だけコマンドを実行するにはLC_ALL=en_GB.UTF8 commandのように実行する。環境変数を書き換えて実行するには、LC_ALL=en_GB.UTF8;export LC_ALLとして環境変数を書き換える。(元に戻すときは、unset LC_ALL


■ 指定したロケールでのコマンド実行(cshの場合)

1回だけコマンドを実行するにはenv LC_ALL=en_GB.UTF8 commandのように実行する。環境変数を書き換えて実行するには、setenv LC_ALLen_GB.UTF8として環境変数を書き換える。(元に戻すときは、unsetenv LC_ALL

■ 特定のメッセージのみを対象としたロケール

日時はLC_TIME、表示言語はLC_MESSAGES、数値単位はLC_NUMERICなどで個別に指定できる。

■ ロケール変更のデモ

$ env LC_TIME=ja_JP.UTF-8 date 2011年 4月30日 土曜日 16時14分13秒 JST $ env LC_TIME=fr_FR.UTF-8 date Sam 30 avr 2011 16:14:18 JST $ env LC_TIME=de_DE.UTF-8 date Sa 30 Apr 2011 16:14:26 JST $ env LC_TIME=C date Sat Apr 30 16:15:28 JST 2011