#include <locale.h>
ヘッダーファイル <locale.h> には、この目的に便利なデータ型・関数・マクロなどの宣言がある。
このヘッダーファイルで宣言されている関数には、 現在のロケールを設定する setlocale(3) と、数値のフォーマット方法についての情報を取得する localeconv(3) がある。
プログラムの必要に応じて、ローカル情報はいろいろなカテゴリに分かれており、 それらはマクロとして宣言されている。 これらのマクロを setlocale(3) 関数の最初の引き数に用いると、 これらのどれかを望むロケールに設定できる。
setlocale(3) の二番目の引き数が空文字列 "" の場合、 デフォルトのロケールは以下の手順で決定する:
地域的な数値フォーマットの情報は 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; };
GNU gettext 関数ファミリーは LI18NUX2000 で規定されている。