nl_langinfo -
言語とロケールの情報を問い合わせる
#include <langinfo.h>
char *nl_langinfo(nl_item item);
nl_langinfo() 関数は、
localeconv(3)
より柔軟なロケール情報へのアクセス方法を提供する。
ロケールカテゴリーの個々の要素や追加の要素を問い合わせることができる。
<langinfo.h>
に定数として定義されていて、
item
に指定できるロケール要素の例を以下に示す:
-
CODESET (LC_CTYPE)
- 選択されたロケールで用いられる文字エンコード名を示す文字列を返す。
文字エンコード名としては、"UTF-8"
や "ISO-8859-1"、"ANSI_X3.4-1968"
(これは US-ASCII
という名前の方がよく知られている)
などがある。
この文字列は、"locale
charmap"
を実行して得られるものと同じである。
文字エンコード名のリストを得るには、"locale
-m"
を実行するとよい。
参考: locale(1)
-
D_T_FMT (LC_TIME)
- ロケール固有の時間と日付を表現するときに、
strftime(3)
で使用できる書式付き文字列を返す。
-
D_FMT (LC_TIME)
- ロケール固有の日付を表現するときに、
strftime(3)
で使用できる書式付き文字列を返す。
-
T_FMT (LC_TIME)
- ロケール固有の時間を表現するときに、
strftime(3)
で使用できる書式付き文字列を返す。
-
DAY_{1–7} (LC_TIME)
- 曜日名 (週の n
番目の日の名前)
を返す。[警告:
この要素はアメリカの
慣習に従って DAY_1 が
日曜日となる。国際的な慣習
(ISO 8601) では月曜日が
週の最初の日である。]
-
ABDAY_{1–7} (LC_TIME)
- 曜日 (週の n
番目の日)
の省略名を返す。
-
MON_{1–12} (LC_TIME)
-
n
番目の月の名前を返す。
-
ABMON_{1–12} (LC_TIME)
-
n
番目の月の省略名を返す。
-
RADIXCHAR (LC_NUMERIC)
- 基数記号
(小数点やコンマなど)
を返す。
-
THOUSEP (LC_NUMERIC)
- 千の位 (3
桁の数値)
の区切り文字を返す。
-
YESEXPR (LC_MESSAGES)
- yes/no
の質問に対する肯定の応答を認識するために、
regex(3)
関数で使用できる正規表現を返す。
-
NOEXPR (LC_MESSAGES)
- yes/no
の質問に対する否定の応答を認識するために
regex(3)
関数で使用できる正規表現を返す。
-
CRNCYSTR (LC_MONETARY)
- 通貨記号を返す。
記号が数値の前に配置される場合は、"-"
が通貨記号に前置される。
数値の後に記号が配置される場合は
"+" が、
記号が基数文字と置き換わる場合は
"."
が前置される。
上記のリストは、要求できる定義のごく一部である。
詳細なリストは、
GNU C
ライブラリリファレンスマニュアル
を参照してほしい。
適切なカテゴリーのロケールが
setlocale(3)
によって選択されていない場合は、
nl_langinfo() は "C"
ロケールのときに相当する文字列へのポインターを返す。
無効な
item
の場合は、空文字列へのポインターが返される。
このポインターは静的なデータ領域を指し、その内容は次回の
nl_langinfo() や
setlocale(3)
の呼び出しによって書き替わることがある。
SUSv2, POSIX.1-2001.
以下のプログラムは、環境変数に基いて文字型
(character type)
と数値のロケール
を設定し、端末の文字集合と基数文字の問い合わせを行う。
#include <langinfo.h>
#include <locale.h>
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
setlocale(LC_CTYPE, "");
setlocale(LC_NUMERIC, "");
printf("%s\n", nl_langinfo(CODESET));
printf("%s\n", nl_langinfo(RADIXCHAR));
exit(EXIT_SUCCESS);
}
locale(1),
localeconv(3),
setlocale(3),
charsets(7),
locale(7)
GNU C
ライブラリリファレンスマニュアル
この man ページは Linux
man-pages
プロジェクトのリリース
3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。