Next: , Previous: , Up: Translators for other Languages   [Contents][Index]


15.3.1 Cフォーマット文字列

Cの書式文字列はPOSIX(IEEE P1003.1 2001)のセクションXSH 3 fprintf() http://www.opengroup.org/onlinepubs/007904975/functions/fprintf.htmlで説明されています。また fprintf()のman http://www.linuxvalley.it/encyclopedia/ldp/manpage/man3/printf.3.php, http://informatik.fh-wuerzburg.de/student/i510/man/printf.htmlも参照してください。

以下のような、引数の位置を再指定する書式文字列があったとします

"Only %2$d bytes free on '%1$s'."

これは以下の文と同じ意味をあらわします

"'%s' has only %d bytes free."

これはPOSIX/XSIの機能であり、ISO C 99には明記されていませんが、翻訳者はこの再配置の機能を信頼することができます: ネイティブではprintf()fprintf()などがこの機能をサポートしていないプラットフォームも存在しますが、libintl.a(またはlibintl.so)が再配置の関数を提供していて、<libintl.h>がこれらの再配置のための関数を自動的に有効化するからです。

Farsi(Persian)そして多分Arabicのための特別な機能として、翻訳者は数値の書式指定子に‘I’フラグを挿入できます。この場合、たとえば"%d""%Id" に翻訳されます。このフラグを指定すると、GNU libcのあるシステムでは、ASCIIでの数字の出力が、localeカテゴリーのLC_CTYPEで定義された‘outdigits’により置き換えられます。他のシステムでは、gettext関数がフラグを取り除くため、何の影響もありません。

プログラマーはこのフラグを未翻訳の文字列に 挿入するべきではないことに注意してください(文字列msgidの書式指定のフラグに‘I’を挿入すると、glibcがないシステムでNLSが無効になっているときに、未定義の動作を招きます)。