ロケール

提供: ArchWiki
移動先: 案内検索

Linux では Locale を使ってユーザーがどの言語を使うか定義します。また、locale は使われる文字セットも定義するので、あなたの使っている言語が非 ASCII 文字を含んでいる場合、正しい locale を設定することは特に重要になります。

Locale の名前は次のフォーマットを使って定義されます:

<lang>_<territory>.<codeset>[@<modifiers>]

必要なロケールを有効にする

locale は使用する前に、まずシステムで有効にする必要があります。全ての利用可能な locale を表示するには:

$ locale -a

有効にするには、/etc/locale.gen ファイルの中の有効にする locale をアンコメントしてください。このファイルにはシステムで使うことができる全ての locale が含まれています。locale を無効にしたいときは戻すだけです。必要な locale を有効にした後、システムをアップデートしなくてはなりません:

# locale-gen

現在使っているロケールを表示するには:

$ locale
ヒント: ほとんどの場合あなたのコンピュータで使われる言語はひとつだけですが、他のロケールも有効にしておくことは役に立つだけでなく時に必須でもあります。もし英語を喋らないユーザーとマルチユーザーシステムを使っている時は、そのユーザーの 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 はデフォルトでは存在しません、手動で作らなくてはなりません。
ヒント: インストール中 locale の出力があなたにふさわしいものだったら、次を chroot 中に実行することで時間を節約できます: # locale > /etc/locale.conf
/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 localectlman 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/profileLC_COLLATE="C" を設定することになっていました。しかし、現在この方法は既に使われていません。同じ挙動を有効にするには、/etc/locale.conf に次を追加してください:

LC_COLLATE="C"

ls コマンドは今ではドットファイルを先に並べ、その後に大文字、小文字のファイル名と続きます。LC_COLLATE の設定をしないと、ロケールの設定に従うプログラムでは LC_ALLLANG によってソートします。しかし 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
ヒント: もしシステムに問題が発生して、フォーラムやメーリングリスト、その他の方法で助けを求めたいときは、問題のあるプログラムから export LC_MESSAGES=C で出力させたメッセージを付け加えてください。これはアウトプットメッセージ(エラーやウォーニング)を英語に設定するもので、その問題がなんなのか多くの人が理解できるようになります。勿論、英語でないフォーラムに投稿するときは関係ありません。

トラブルシューティング

ターミナルが UTF-8 をサポートしていません

不運なことに、ターミナルには UTF-8 をサポートしていないものがあります。違うターミナルを使ってください。UTF-8 をサポートしているターミナル:

Xterm が UTF-8 をサポートしていません

xterm は、uxtermxterm -u8 で起動した時だけ UTF-8 をサポートします。

Gnome-terminal や rxvt-unicode が UTF-8 をサポートしていません

それらのアプリケーションを UTF-8 ロケールから起動してください。上の指示に従って en_US.UTF-8 locale (もしくはあなたの言語の UTF-8) を有効にしてからデフォルト locale に設定して、再起動します。

設定を変更しても GNOME の言語が変わらない

いくつかの GUI ツールは環境変数の定義に ~/.pam_environment を使っています。GNOME はこのファイルを読みます。

参照