Какой второй параметр NSLocalizedString ()?

123

Какой *commentпараметр в:

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

Если я сделаю это:

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

и у вас есть две версии Localizable.strings (английская и испанская), нужна ли каждая запись:

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

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

Разве английский не лишний?

4thSpace
источник

Ответы:

72

Строка комментария игнорируется приложением. Он используется для удобства переводчика, чтобы добавить смысл контекстному использованию ключа в том месте, где он находится в вашем приложении.

Например, Hello_World_Keyключ может принимать разные значения на данном языке, в зависимости от того, насколько формальной или неформальной Hello Worldдолжна быть фраза на этом языке («What's up World», «Yo World», «Good Day World» и т. Д.).

Вы можете добавить строку в поле комментария, чтобы намекнуть на это использование переводчику, который (можно предположить) лучше сможет локализовать ваше приложение.

Алекс Рейнольдс
источник
277

Второй параметр - это комментарий, который автоматически появится в файле строк, если вы используете утилиту командной строки 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 (человек, задавший вопрос) не смотрел на его вопрос, так как он принял один из ответов.
Манни
Это также то, что будет использоваться, если файл строк не содержит записи, соответствующей указанному вами идентификатору.
Оскар
4
Нет, в этом случае используется ключ, а не комментарий.
Ник Локвуд
какой в ​​этом смысл? да, это полезно для короткого идентификатора ( "id" - "word";как в вашем примере "Save" = "Save";), но вам нужно вручную добавить что-то более длинное"id" - "word 1 word 2 word 3";
user924
Комментарий (второй параметр) предназначен для локализаторов. Кто-то, кто добавляет строки для вашего приложения на другом языке, нуждается в контексте, чтобы знать, какой перевод применить. Первый параметр просто указывает ключ в файле строк локализации, файл строк - это то, что на самом деле хранит текст для отображения в пользовательском интерфейсе.
Роб Кенигер
0

Это просто для понимания разработчиками перевода, то есть вы даете ключ для получения соответствующей строки из соответствующего файла строк.

Параметр комментария позволяет разработчику понять, что представляет собой ключ ...

Шанмугараджа Дж.
источник