9

私はついに、いくつかの Linux コードを調べてみました。私は今「ls.c」を見ています。

下部の関数「usage()」で、これらのステートメントがたくさん見つかりました。

  fputs (_("\
  List information about the FILEs (the current directory by default).\n\
  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.\n\
  \n\
  "), stdout);

どういう意味?L"string" や _T"string" のようなものですか、それともまったく新しいものですか? また、このようなものを検索するためにどの単語を使用すればよいか分からないことも認めなければなりません。

あなたが私を助けてくれることを願っています。

4

3 に答える 3

11

これは、翻訳可能な文字列に対して libintl 別名 gettext で使用される規則です。実行すると、gettext関数 (_エイリアス化されている) は、ロケール設定とその文字列の可用性に応じて、元の文字列または翻訳された文字列を返します。

于 2012-05-12T17:59:05.650 に答える
4

_GNU gettext パッケージでよく使用されるマクロです。

GNU gettext は、次のパッケージです。

  • 人間が読むことを意図したメッセージ文字列のリストと、それらの文字列の他の言語への翻訳を取得し、それらをデータベースにコンパイルします。
  • gettext()は、そのデータベースでメッセージ文字列を検索し、メッセージを特定の言語に翻訳して返す、という名前のルーチンを提供します。

ユーザーが環境変数で選択し、setlocale()呼び出しによって取得された言語でメッセージを出力したい場合、プログラムは通常、次のようなことを行います。

fprintf(stderr, gettext("I cannot open the file named %s\n"), filename);

gettext()データベース内の文字列の適切な翻訳を検索し、翻訳された文字列"I cannot find the file named %s\n"を返します。

ただし、これは少し厄介です。GNU gettext ノートのドキュメントのように、多くのプログラムはマクロを使用して、文字列だけを_(文字列)のエイリアスにしgettext(ます)

于 2012-05-12T18:18:25.730 に答える
1

もちろん、関数名には を含めることができ、_関数_名を で始めることができます。したがって、関数に単純な名前を付けることができます_

起こっていることは、 a#defineまたは実際の関数が呼び出されることだけ_です。

于 2012-05-12T17:57:29.410 に答える