NSLocalizedString()の2番目のパラメーターは何ですか?


123

次の*commentパラメータは何ですか?

NSString *NSLocalizedString(NSString *key, NSString *comment)

私がこれをすると:

NSLocalizedString(@"Hello_World_Key", @"Hello World")

Localizable.strings(英語とスペイン語)の2つのバージョンがあり、それぞれにエントリが必要ですか。

English.lproj/Localization.strings: @"Hello_World_Key" = @"Hello World";

Spanish.lproj/Localization.strings: @"Hello_World_Key" = @"Hola Mundo";

英語のものは冗長ではありませんか?

回答:


72

コメント文字列はアプリケーションによって無視されます。これは、翻訳者の利益のために使用され、アプリケーションで見つかったキーのコンテキスト使用に意味を追加します。

たとえば、Hello_World_Keyキーが特定の言語でどの程度正式または非公式であるかに応じて、その言語での値が異なる場合がありHello Worldます(「What's up World」、「Yo World」、「Good Day World」など)。

コメントフィールドに文字列を追加して、翻訳者にこの使用法を示唆することができます。翻訳者は、アプリケーションをローカライズすることができます(推定されます)。


277

2番目のパラメーターはコメントです。これは、genstringsコマンドラインユーティリティを使用する場合に文字列ファイルに自動的に表示され、ソースコードをスキャンして文字列ファイルを作成できます。

コメントはローカライザに役立ちます。例えば:

NSLocalizedString(@"Save",@"Title of the Save button in the theme saving dialog");

genstringsを実行すると、Localizable.stringsファイルに次のようなエントリが作成されます。

/* Title of the Save button in the theme saving dialog */
"Save" = "Save";

@JuandelaTorre:この質問は数年前のものです。たぶん4thSpace(質問した人)は、彼が答えの1つを受け入れたので、彼の質問を見ていません。
Manni、2012年

また、stringsファイルに、指定した識別子と一致するエントリが含まれていない場合にも使用されます。
オスカー

4
いいえ、その場合、コメントではなくキーが使用されます。
Nick Lockwood 2013年

ポイントは?はい、それは短いID("id" - "word";例のように"Save" = "Save";)に役立ちますが、手動でもっと長いものを追加する必要があります"id" - "word 1 word 2 word 3";
user924

コメント(2番目のパラメーター)はローカライザー用です。別の言語でアプリの文字列を追加する人は、適用する翻訳を知るためにコンテキストが必要です。最初のパラメーターは、ローカリゼーション文字列ファイルのキーを指定するだけです。文字列ファイルは、UIに表示するテキストを実際に格納するものです。
Rob Keniger

0

これは、開発者が翻訳を理解するためのものです。つまり、対応する文字列ファイルから対応する文字列を取得するためのキーを提供しています。

コメントパラメータを使用すると、開発者はキーが何を表しているのかを理解できます...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.