Qual é o segundo parâmetro de NSLocalizedString ()?

123

Qual é o *commentparâmetro em:

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

Se eu fizer isso:

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

e tem duas versões de um Localizable.strings (inglês e espanhol), cada um precisa da entrada:

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

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

O inglês não é redundante?

4thSpace
fonte

Respostas:

72

A sequência de comentários é ignorada pelo aplicativo. É usado para o benefício de um tradutor, para adicionar significado ao uso contextual da chave em que ela é encontrada em seu aplicativo.

Por exemplo, a Hello_World_Keychave pode assumir valores diferentes em um determinado idioma, dependendo de quão formal ou informal a Hello Worldfrase precisa estar nesse idioma ("What's up World", "Yo World", "Good Day World" etc.).

Você pode adicionar uma string no campo de comentário para sugerir esse uso ao tradutor, que (presume-se) conseguirá localizar melhor seu aplicativo.

Alex Reynolds
fonte
277

O segundo parâmetro é um comentário que aparecerá automaticamente no arquivo de strings se você usar o utilitário de linha de comando genstrings , que pode criar o arquivo de strings para você, verificando seu código-fonte.

O comentário é útil para seus localizadores. Por exemplo:

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

Quando você executa genstrings, isso produz uma entrada no arquivo Localizable.strings como este:

/* Title of the Save button in the theme saving dialog */
"Save" = "Save";
Rob Keniger
fonte
@JuandelaTorre: Esta pergunta tem alguns anos, talvez o 4thSpace (a pessoa que fez a pergunta) não tenha visto sua pergunta desde que ele aceitou uma das respostas.
Manni
Também é o que será usado se o arquivo de strings não contiver uma entrada que corresponda ao identificador que você especificou.
Oscar
4
Não, a chave é usada nesse caso, não o comentário.
Nick Lockwood
qual é o ponto? sim, é útil para identificação curta ( "id" - "word";como no seu exemplo "Save" = "Save";), mas você precisa adicionar manualmente algo mais"id" - "word 1 word 2 word 3";
user924
O comentário (segundo parâmetro) é para localizadores. Alguém que está adicionando strings para seu aplicativo em outro idioma precisa de contexto para saber qual tradução aplicar. O primeiro parâmetro apenas especifica a chave no arquivo de strings de localização, o arquivo de strings é o que realmente armazena o texto a ser exibido na interface do usuário.
precisa saber é o seguinte
0

É apenas para o desenvolvedor entender a tradução, ou seja, você está dando uma chave para obter a string correspondente no arquivo de strings correspondente.

O parâmetro comment permite ao desenvolvedor entender o que a chave representa ...

Shanmugaraja G
fonte