2009年11月04日

LANG=C

このCはANSI-CのC。

http://www.gnu.org/software/libc/manual/html_node/Standard-Locales.html

決してLANG=C とLANG=en_USはイコールじゃない。仕様上は。

青本
には
「C(POSIX)ロケールが指定された場合、メッセージカタログが使用されず、
プログラムがデフォルトとしてプログラムコードに記述したメッセージ(英語)が出力されます」

とある。まぁ、この英語ってのがen_USだとはどこにも書いていないがね。

まどろっこしい。
つまりこうだ。

printf (catgets (catd, 1, 1, "Hello, world.\n"));

LANGがC以外の場合、その実行ファイルに紐ついた
メッセージが引数2と3で検索。
(この場合、セット1のメッセージ1番が検索される)
NLSPATH(/usr/lib/nls/msg/)にメッセージはある。

無い場合や見つからない場合、第4引数のメッセージが表示される。
LANG=Cはこの第4メッセージを強制する。

en_USの内容がHello、THE WORLD!!!!! URYYYYY!!なら
LANG=Cとは一致しない。
しかし、青本の説明の「英語」という意味ではあっている。

http://euc.jp/i18n/msgcat.ja.html
http://www.linux.or.jp/JM/html/LDP_man-pages/man3/catgets.3.html
http://mstssk.blogspot.com/2009/04/whats-langc.html
http://d.hatena.ne.jp/elf/20090924/1253775215


posted by koteitan at 11:35| Comment(0) | TrackBack(0) | aix | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/131999609

この記事へのトラックバック