LOCALE(7) Linux Programmer's Manual LOCALE(7)
locale - 多言語サポートの解説
#include <locale.h>
ロケール (locale) は言語や文化ルールの集合である。
これらは、メッセージ出力に使用する言語・いろいろな文字集合・ 表-
に関する慣習といったような面をカバーしている。
プログラムをいろいろな文化に移植可能とするには、
そのプログラムは自分のロケールを決めて、 それに応じた適切な動作がで-
なければならない。
ヘッダーファイル <locale.h>
には、この目的に便利なデータ型・関数・マクロなどの宣言がある。
このヘッダーファイルで宣言されている関数には、 現在のロケールを設定する
setlocale(3) と、数値のフォーマット方法についての情報を取得する locale-
conv(3) がある。
プログラムの必要に応じて、ローカル情報はいろいろなカテゴリに分かれており、
それらはマクロとして宣言されている。 これらのマクロを setlocale(3)
関数の最初の引た瑤僕僂い襪函 これらのどれかを望むロケールに設定でい襦
LC_COLLATE
これは地域的なアルファベット文字列の比較に使用する strcoll(3)
関数と strxfrm(3)
関数の動作を変更する。例えばドイツ語のエスツェット (鋭い s)
は、ソートの際 "ss" として扱われる。
LC_CTYPE
これは isupper(3) や toupper(3)
のような文字の判定・操作をする関数や、多バイト文字を扱う
mblen(3) や wctomb(3) のような関数の動作を変更する。
LC_MONETARY
localeconv(3) によって返される情報を変更する。
これには小数点や区切りコンマの位置など、
数字の表示方法に関する詳細が含まれている。この情報は strfmon(3)
関数が内部で使用する。
LC_MESSAGES
メッセージ表示に使用する言語を変更する。
また肯定的・否定的な回答をどのように表示するかを変更する。
これらの情報を簡単に使用するために、 GNU C ライブラリには get-
text(3), ngettext(3), rpmatch(3) 関数が含まれている。 GNU get-
text ファミリーに属する関数は、環曲竸 LANGUAGE にも従う。
LC_NUMERIC
printf(3) 関数および scanf(3)
関数のファミリーでロケール設定を使うよう指示された場合に
用いる情報を変更する。この情報は localeconv(3)
関数で取得することもでい襦
LC_TIME
strftime(3) 関数の動作を変更し、
地域で利用されている方法で現在時刻を表示する。
例えば、ヨーロッパの多くでは 24時間式の時計を使うが、
アメリカでは 12時間式の時計を使う。
LC_ALL 上気料瓦董
setlocale(3) の二番目の引た瑤空文字列 "" の場合、
デフォルトのロケールは以下の手順で決定する:
1. 環曲竸 LC_ALL が設定されている場合には LC_ALL
の値が使用される。
2. 上気離テゴリのどれかと同じ名前の環-
変数が設定されている場合には、
そのカテゴリにはその値が使用される。
3. 環曲竸 LANG が設定されている場合には LANG の値が使用される。
地域的な数値フォーマットの情報は localeconv(3) 関数によって返される
struct lconv で得ることがでぁ△海譴楼焚爾里茲Δ棒觚世気譴討い:
struct lconv {
/* (通貨以外の) 数値情報 */
char *decimal_point; /* 小数点の文字 */
char *thousands_sep; /* 小数点の左側の数字のグループの
区切り文字 */
char *grouping; /* それぞれの要素は各グループの数字の個数である。
インデックス値が大いい曚鼻∈限Δ離哀襦璽廚鯢修后
要素の値が CHAR_MAX の場合は、最後のグループで
あることを意味する。要素の値が 0 の場合は、
その要素より左側の全ての要素に前の要素と同じ値を
使用することを意味する。 */
/* 残りのフィールドは通貨情報用である */
char *int_curr_symbol; /* 最初の三つの文字は ISO 4217 の通貨宜罅
四番目の文字は区切り文字。
五番目は ' '。 */
char *currency_symbol; /* 地域の通貨宜 */
char *mon_decimal_point; /* 小数点の文字 */
char *mon_thousands_sep; /* 上気 `thousands_sep' と同様 */
char *mon_grouping; /* 上気 `grouping' と同様 */
char *positive_sign; /* 正の値の符号 */
char *negative_sign; /* 負の値の符号 */
char int_frac_digits; /* 国際的な小数部の数字 */
char frac_digits; /* 地域の小数部の数字 */
char p_cs_precedes; /* 正の値の前に通貨宜罎鮹屬場合は 1,
後ろに置く場合は 0 */
char p_sep_by_space; /* 正の値と通貨宜罎隆屬縫好據璽垢
入れる場合は 1 */
char n_cs_precedes; /* 負の値の前に通貨宜罎鮹屬場合は 1,
後ろに置く場合は 0 */
char n_sep_by_space; /* 負の値と通貨宜罎隆屬縫好據璽垢
入れる場合は 1 */
/* 正と負の符号の位置:
0 値と通貨宜罎魍膰未念呂
1 符号は値と通貨宜罎料阿肪屬
2 符号は値と通貨宜罎慮紊肪屬
3 符号は通貨宜罎猟掌紊肪屬
4 符号は通貨宜罎猟樵阿肪屬 */
char p_sign_posn;
char n_sign_posn;
};
POSIX.1-2001
GNU gettext 関数ファミリーは LI18NUX2000 で規定されている。
locale(1), localedef(1), gettext(3), localeconv(3), ngettext(3),
nl_langinfo(3), rpmatch(3), setlocale(3), strcoll(3), strfmon(3),
strftime(3), strxfrm(3)
Linux 1993-04-24 LOCALE(7)