home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/Linux/localeメモ

技術/Linux/localeメモ

技術 / Linux / localeメモ
id: 487 所有者: msakamoto-sf    作成日: 2009-11-18 12:41:02
カテゴリ: C言語 Linux プログラミング 

Linux locale の自分用メモ

出典:

locale名(ロカール名), カテゴリ

ロカール名の構造:

language[_territory][.codeset][@modifier]
language 言語名 : ISO 639 で定義された言語コードの小文字(2文字)
territory 国家名 or 地域名 : ISO 3166 で定義された国/地域コード大文字2文字
codeset IANA定義の文字コード名
modifier 任意の修飾子

※プログラムの起動時は常に"C"or"POSIX"ロカールとなっている。変更するにはsetlocale(3)を呼ぶ必要がある。"POSIX"ロカールは"C"ロカールと同じで、基本的に英語のみ使用可能なロカールである。
なお省略や別名定義が行われている場合もあり、"ja_JP.UTF-8"なら"ja_JP", "ja.UTF-8", "ja", さらには"japanese"ロカールが準備されている場合もある。

カテゴリ:通常は環境変数として、"LC_XXYY=ja_JP.UTF-8"のように設定する。

LC_CTYPE
文字の分類/比較/変換の方法、および文字の解釈と表現の方法。
正規表現のマッチング、文字の分類、文字の変換、大文字小文字比較、ワイド文字関数に影響する。
LC_COLLATE
文字の照合方法や整列方法の規定。文字の大小関係や、合字の取り扱いを規定する。
正規表現のマッチング (範囲表現と等価クラスのマッチングを決定する) と文字列の照合 (collation) に影響する。
LC_MESSAGES
メッセージの表示に利用する言語。地域化可能な自然言語メッセージを規定する。
LC_MONETARY
通貨の書式を規定する。小数点の区切りやカンマの位置, 通貨記号など。
LC_NUMERIC
数値の書式(小数点や 3 桁ごとの区切り)
LC_TIME
時刻と日付けの書式(strftime(3)に影響)
LC_ALL
上記の全て。

ロカール定義情報の確認 : localeコマンドで確認できる。

$ locale -a # 現在システムにインストールされているロカールの一覧
C
POSIX
aa_DJ
aa_DJ.iso88591
...
$ locale -m # 利用可能な文字コードの一覧
ANSI_X3.110-1983
ANSI_X3.4-1968
...
# 幾つかのキーを指定して取得
$ LC_ALL=zh_CN.UTF8 locale -k yesexpr day
yesexpr="^[yY是]"
day="星期日;星期一;星期二;星期三;星期四;星期五;星期六"

$ LC_ALL=en_US locale -k yesexpr day
yesexpr="^[yY].*"
day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday"

$ LC_ALL=ja_JP.UTF8 locale -k yesexpr day
yesexpr="^([yYyY]|はい|ハイ)"
day="日曜日;月曜日;火曜日;水曜日;木曜日;金曜日;土曜日"

setlocale()の使い方メモ

基本:

char *setlocale(int category, const char *locale);

全てのカテゴリで"ja_JP.UTF-8"を設定:

setlocale(LC_ALL, "ja_JP.UTF-8");

ロカール名は環境変数から取得:

setlocale(LC_ALL, "");

現在のロカール名を取得:

char *current = NULL;
current = setlocale(LC_CTYPE, NULL);

ロカール名を環境変数から取得する場合、具体的にどの環境変数を検査するのかは実装依存となる。
glibcの場合は以下の順序で環境変数を検査し、最初に見つかった値を使う。

  1. LC_ALL環境変数
  2. LC_TIME, LC_NUMERICなど指定されたcategoryと同じ名前
  3. LANG環境変数

ロカール名として不正であれば、setlocale()はNULLを返す。



プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2009-11-18 12:42:39
md5:7e028e0980ba74d8657710695ab04e7c
sha1:ec8d393c022a4c6e0e0d35cf593e290f27856bea
コメント
コメントを投稿するにはログインして下さい。