Quel est le deuxième paramètre de NSLocalizedString ()?

123

Quel est le *commentparamètre dans:

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

Si je fais ceci:

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

et ont deux versions d'un Localizable.strings (anglais et espagnol), chacun a-t-il besoin de l'entrée:

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

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

L'anglais n'est-il pas redondant?

4e espace
la source

Réponses:

72

La chaîne de commentaire est ignorée par l'application. Il est utilisé au profit d'un traducteur, pour donner du sens à l'utilisation contextuelle de la clé là où elle se trouve dans votre application.

Par exemple, la Hello_World_Keyclé peut prendre des valeurs différentes dans une langue donnée, selon le degré de formalité ou d'informel de la Hello Worldphrase dans cette langue ("What's up World", "Yo World", "Good Day World", etc.).

Vous pouvez ajouter une chaîne dans le champ de commentaire pour indiquer cette utilisation au traducteur, qui sera (on suppose) mieux en mesure de localiser votre application.

Alex Reynolds
la source
277

Le deuxième paramètre est un commentaire qui apparaîtra automatiquement dans le fichier de chaînes si vous utilisez l' utilitaire de ligne de commande genstrings , qui peut créer le fichier de chaînes pour vous en analysant votre code source.

Le commentaire est utile pour vos localisateurs. Par exemple:

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

Lorsque vous exécutez genstrings, cela produira une entrée dans le fichier Localizable.strings comme ceci:

/* Title of the Save button in the theme saving dialog */
"Save" = "Save";
Rob Keniger
la source
@JuandelaTorre: Cette question date de quelques années, peut-être que 4thSpace (la personne qui a posé la question) n'a pas jeté un coup d'œil à sa question depuis qu'il a accepté l'une des réponses.
Manni
C'est également ce qui sera utilisé si le fichier de chaînes ne contient pas d'entrée correspondant à l'identifiant que vous avez spécifié.
Oscar
4
Non, la clé est utilisée dans ce cas, pas le commentaire.
Nick Lockwood
dans quel but? oui, c'est utile pour un identifiant court ( "id" - "word";comme dans votre exemple "Save" = "Save";), mais vous devez ajouter manuellement quelque chose de plus"id" - "word 1 word 2 word 3";
user924
Le commentaire (deuxième paramètre) est pour les localisateurs. Une personne qui ajoute des chaînes pour votre application dans une autre langue a besoin d'un contexte pour savoir quelle traduction appliquer. Le premier paramètre spécifie simplement la clé dans le fichier de chaînes de localisation, le fichier de chaînes est ce qui stocke réellement le texte à afficher dans l'interface utilisateur.
Rob Keniger
0

C'est juste pour la compréhension du développeur sur la traduction, c'est-à-dire que vous donnez une clé pour obtenir la chaîne correspondante à partir du fichier de chaînes correspondant.

Le paramètre comment permet au développeur de comprendre ce que représente la clé ...

Shanmugaraja G
la source