Was ist der zweite Parameter von NSLocalizedString ()?

123

Was ist der *commentParameter in:

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

Wenn ich das mache:

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

und haben zwei Versionen eines Localizable.strings (Englisch und Spanisch), benötigt jeder den Eintrag:

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

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

Ist die englische nicht überflüssig?

4thSpace
quelle

Antworten:

72

Die Kommentarzeichenfolge wird von der Anwendung ignoriert. Es wird zum Vorteil eines Übersetzers verwendet, um der kontextbezogenen Verwendung des Schlüssels, in dem er sich in Ihrer Anwendung befindet, eine Bedeutung zu verleihen.

Beispielsweise kann der Hello_World_KeySchlüssel in einer bestimmten Sprache unterschiedliche Werte annehmen, je nachdem, wie formell oder informell die Hello WorldPhrase in dieser Sprache sein muss ("What's up World", "Yo World", "Good Day World" usw.).

Sie können im Kommentarfeld eine Zeichenfolge hinzufügen, um dem Übersetzer auf diese Verwendung hinzuweisen, der (man würde annehmen) Ihre Anwendung besser lokalisieren kann.

Alex Reynolds
quelle
277

Der zweite Parameter ist ein Kommentar, der automatisch in der Zeichenfolgendatei angezeigt wird, wenn Sie das Befehlszeilenprogramm genstrings verwenden, mit dem Sie die Zeichenfolgendatei durch Scannen Ihres Quellcodes für Sie erstellen können.

Der Kommentar ist nützlich für Ihre Lokalisierer. Beispielsweise:

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

Wenn Sie genstrings ausführen, wird ein Eintrag in der Datei Localizable.strings wie folgt erstellt:

/* Title of the Save button in the theme saving dialog */
"Save" = "Save";
Rob Keniger
quelle
@JuandelaTorre: Diese Frage ist einige Jahre alt, vielleicht hat 4thSpace (die Person, die die Frage gestellt hat) seine Frage nicht angesehen, da er eine der Antworten akzeptiert.
Manni
Dies wird auch verwendet, wenn die Zeichenfolgendatei keinen Eintrag enthält, der mit dem von Ihnen angegebenen Bezeichner übereinstimmt.
Oscar
4
Nein, in diesem Fall wird der Schlüssel verwendet, nicht der Kommentar.
Nick Lockwood
was ist der Sinn? Ja, es ist nützlich für eine kurze ID ( "id" - "word";wie in Ihrem Beispiel "Save" = "Save";), aber Sie müssen manuell etwas längeres hinzufügen"id" - "word 1 word 2 word 3";
user924
Der Kommentar (zweiter Parameter) ist für Lokalisierer. Jemand, der Zeichenfolgen für Ihre App in einer anderen Sprache hinzufügt, benötigt einen Kontext, um zu wissen, welche Übersetzung angewendet werden soll. Der erste Parameter gibt nur den Schlüssel in der Lokalisierungs-Zeichenfolgendatei an. In der Zeichenfolgendatei wird der Text gespeichert, der in der Benutzeroberfläche angezeigt werden soll.
Rob Keniger
0

Es dient nur dem Verständnis der Entwickler für die Übersetzung, dh Sie geben einen Schlüssel an, um die entsprechende Zeichenfolge aus der entsprechenden Zeichenfolgendatei abzurufen.

Mit dem Kommentarparameter kann der Entwickler verstehen, was der Schlüssel darstellt ...

Shanmugaraja G.
quelle