Oracle Solaris でのアプリケーションの国際化とローカライズ

印刷ビューの終了

更新: 2014 年 7 月
 
 

ロケールデータの取得と書式設定に対する関数

ロケールデータを取得および書式設定するための関数は次のとおりです。

localeconv()

数値の書式情報を取得します

nl_langinfo()

言語およびロケール情報を取得します

strftime()

日付と時間を文字列に変換します

strptime()

文字列を時間構造に変換します

strfmon()

通貨値を文字列に変換します

これらの関数は、時間の書式または通貨記号など、ロケール固有のデータの問い合わせに使用されます。この関数は、時間、数値、または通貨情報を地域の表記規則に従って書式設定するためにも使用できます。詳細は、langinfo.h(3HEAD) および mktime(3C) のマニュアルページを参照してください。

使用例 2-4   ロケールのコードセット名の取得

次のコード抜粋部分は、現在のプログラムのロケールの codeset を取得する方法を示しています。

#include <langinfo.h>
:
char *cs;
cs = nl_langinfo(CODESET);

この例では、C ロケールの場合、cs 変数は文字列 "646" を指しています。これは US-ASCII コードセットの別名です。コードセットの詳細は、Converting Codesetsを参照してください。

使用例 2-5  ロケールの肯定応答文字列の問い合わせ

次のコード抜粋部分は、yesstr 変数を yes/no 文字列に設定する方法を示しています。これは現在のロケールの肯定応答に使用されます。

#include <langinfo.h>
:
char *yesstr;
yesstr = nl_langinfo(YESSTR);

たとえば、es_ES.UTF-8 ロケールでは、yesstr は文字列 を指しています。

使用例 2-6  ローカル時間の出力

次のコード抜粋部分は、環境に応じて設定されているロケールの地域規則に従って書式設定された現在の日付と時間を表示する方法を示しています。

#include <stdio.h>
#include <locale.h>
#include <time.h>
   :
char    *locale, ftime[BUFSIZ];
time_t  t;

locale = setlocale(LC_ALL, "");
if (locale == NULL) {
/* handle error */
}

if (0 != strftime(ftime, BUFSIZ, (char *)NULL, localtime(&t))) {
(void) printf("%s - %s\n", locale, ftime);
}