ロケール
Linux では Locale を使ってユーザーがどの言語を使うか定義します。また、locale は使われる文字セットも定義するので、あなたの使っている言語が非 ASCII 文字を含んでいる場合、正しい locale を設定することは特に重要になります。
Locale の名前は次のフォーマットを使って定義されます:
<lang>_<territory>.<codeset>[@<modifiers>]
目次
必要なロケールを有効にする
locale がシステムで使われる前に、まず有効にする必要があります。全ての利用可能な locale を表示するには:
$ locale -a
有効にするには、/etc/locale.gen
ファイルの中の有効にする locale をアンコメントしてください。このファイルにはシステムで使うことができる全ての locale が含まれています。locale を無効にしたいときは戻すだけです。必要な locale を有効にした後、システムをアップデートしなくてはなりません:
# locale-gen
現在使っているロケールを表示するには:
$ locale
Japanese example
初めに /etc/locale.gen
の次の行をアンコメントします:
ja_JP.UTF-8 UTF-8
それからシステムを root でアップデートします:
# locale-gen
システム全体のロケールを設定する
システム全体の locale を定義するには、locale.conf
の /etc/locale.conf
を設定してください。
locale.conf
では一行毎に環境変数を指定します: LANG
以外にも、LC_ALL
を除く全ての LC_*
変数をサポートしています。
/etc/locale.conf
LANG="ja_JP.UTF-8"
高度な設定サンプル:
/etc/locale.conf
# 日本語の UTF-8 を有効にする LANG="ja_JP.UTF-8" # デフォルトのソート順を保つ (例えば '.' で始まるファイルは # ディレクトリのリストで最初に並ぶ) LC_COLLATE="C" # 短い月日表示を YYYY-MM-DD に設定 ("date +%c" でテスト) LC_TIME="en_DK.UTF-8"
デフォルトの locale は localectl
を使うことでも設定できます、例えば:
# localectl set-locale LANG="ja_JP.UTF-8"
詳しくは man 1 localectl
や man 5 locale.conf
を見て下さい。
再起動した後に設定が反映され、ログイン時の個々のセッションごとに locale が設定されます。
フォールバック locale を設定
翻訳に gettext を使っているプログラムは、通常使われる設定と合わせて LANGUAGE
オプションを使います。これによってユーザーは locale の リスト を指定して、使われる順番を設定できます。好ましいロケールの翻訳がなされていない場合、他のロケールがデフォルトに代わって使われることになります。例えば、オーストラリアのユーザーはアメリカ流の綴りよりも英国流のほうが好ましいかもしれません:
/etc/locale.conf
LANG="en_AU.UTF-8" export LANGUAGE="en_AU:en_GB:en"
ユーザーごとにロケールを設定
先に触れたように、ユーザー別にシステム全体のロケールとは異なった locale を使えます。これには、LANG
変数のロケールの定義を ~/.bashrc
ファイルに写すことで実現できます。例えば、ja_JP.UTF-8
ロケールを使うには:
export LANG=ja_JP.UTF-8
ロケールは次に ~/.bashrc
が source された時に更新されます。更新するには、ログインしなおすか、手動で source してください:
$ source ~/.bashrc
照合順序を設定
照合順序、もしくは並び替え、には少し変わったところがあります。並び替えはグーフィー(間抜け動物)でありロケール毎に異なったことをします。潜在的な問題を迂回するために、Arch では /etc/profile
で LC_COLLATE="C"
を設定することになっていました。しかし、現在この方法は既に使われていません。同じ挙動を有効にするには、/etc/locale.conf
に次を追加してください:
LC_COLLATE="C"
ls
コマンドは今ではドットファイルを先に並べ、その後に大文字、小文字のファイル名と続きます。LC_COLLATE
の設定をしないと、ロケールの設定に従うプログラムでは LC_ALL
や LANG
によってソートします。しかし LC_COLLATE
の設定は LC_ALL
がセットされると上書きされます。このことが問題になるのならば、LC_ALL
がセットされないように /etc/profile
に次を加えて下さい:
export LC_ALL=
LC_ALL
は LC 変数の中で唯一 /etc/locale.conf
でセットできません。
週の始まりの曜日を設定する
多くの国では週の初めは月曜日です。これを変えるには、/usr/share/i18n/locales/<your_locale>
の LC_TIME
セクションに次の行を追加・変更してください:
week 7;19971130;5 first_weekday 2 first_workday 2
それからシステムをアップデートします:
# locale-gen
トラブルシューティング
ターミナルが UTF-8 をサポートしていません
不運なことに、ターミナルには UTF-8 をサポートしていないものがあります。違うターミナルを使ってください。UTF-8 をサポートしているターミナル:
- vte-based terminals
- gnustep-terminal
- konsole
- mlterm
- rxvt-unicode
- xterm
Xterm が UTF-8 をサポートしていません
xterm は、uxterm
か xterm -u8
で起動した時だけ UTF-8 をサポートします。
Gnome-terminal や rxvt-unicode が UTF-8 をサポートしていません
それらのアプリケーションを UTF-8 ロケールから起動してください。上の指示に従って en_US.UTF-8
locale (もしくはあなたの言語の UTF-8) を有効にしてからデフォルト locale に設定して、再起動します。
設定を変更しても GNOME の言語が変わらない
いくつかの GUI ツールは環境変数の定義に ~/.pam_environment
を使っています。GNOME はこのファイルを読みます。