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