LoginSignup
125
128

More than 1 year has passed since last update.

ロケール(locale)まとめ

Last updated at Posted at 2015-12-13

情報源

Archのwikiがとてもよくまとまっている。
man 5 localeman 7 localeにも情報がある。
基本的にロケールはlibcの機能だと知っていると理解が進むと思う。

現在のロケール設定を確認するにはlocaleコマンド

# locale                        
LANG=ja_JP.UTF-8
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=

システムにインストールされているロケールの一覧を確認するにはlocale -a

# locale -a
C
POSIX
ja_JP.utf8

またはlocaledef --list-archive -v

システムに使いたいロケールがインストールされていない場合

自分でロケールのソースからコンパイルすればよい。やり方はディストリビューションによって異なるが、locale-genコマンドがある場合はそれを使う。
locale-genはシェルスクリプトになっていて、内部で

localedef -i ja_JP -c -f UTF-8 -A /usr/share/locale/locale.alias ja_JP.UTF-8

に相当することをやっている。

環境変数の意味と優先順位

環境変数 意味
LC_CTYPE 文字の分類および大文字/小文字の変換。
LC_NUMERIC 小数区切り文字 (または基数文字)、千の区切り文字、およびグループ化を指定します。
LC_TIME 月の名前、曜日、一般的な完全表示や短縮表示など、日付や時刻の書式を指定します。
LC_MONETARY ロケールの通貨記号、千の区切り文字、符号の位置、小数点以下の桁数など、通貨の書式を指定します。
LC_COLLATE ロケールの照合順序および正規表現の定義を指定します。
LC_MESSAGES ロケールのローカライズメッセージの記述言語、および肯定と否定の応答 (yes と no の文字列と表現) を指定します。

以上の6個はPOSIXで定義されているもの。それ以外のLC_PAPERなどはGNU C libraryの独自拡張、とman 5 localeに書いてあった。

LANG < LC_CTYPE, LC_MESSAGE等 < LC_ALL

右に行くほど優先される。
~/.bash_profileではLANGだけ設定しておけば十分。もし必要ならLC_CTYPEなどを個別に設定、さらにそれらを全て(一時的に)上書きしたい場合にLC_ALLを使う。
シェルスクリプト内で必ずCロケールにしてsortコマンドなどを使いたい場合はLC_ALL=Cを使うと良い。

ファイルとディレクトリの配置(Arch Linuxの場合)

ファイル 説明
/etc/locale.gen 生成すべきロケールの一覧。これは手で編集する
/usr/bin/localedef ロケールをコンパイルするプログラム。glibcの一部なので、CentOS等にも入っている
/usr/bin/locale-gen /etc/locale.genで定義された各ロケールに対してlocaledefを呼び出すシェルスクリプト
/usr/share/i18n/locales/ localedefでコンパイルする入力ファイルが置かれる
/usr/lib/locale/locale-archive localedefでコンパイルされたロケールの実体
/usr/share/locale/ gettextで使用する翻訳ファイル(*.mo)が置かれる
125
128
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
125
128