Ответ 1
Хотя я не совсем уверен, правильно ли я это сделаю, я постараюсь ответить на ваш вопрос TTBOMK.
Предположим, что вы используете NSLocalizedString(key, comment)
из своего кода. Вы можете ясно видеть, что первый аргумент на самом деле является ключом для строки, а не самой переведенной (или переведенной) строкой. Поэтому, когда вы "пишете код", вы фактически не записываете строки на базовом языке - или на любой другой язык. Вы должны думать, что вы добавляете в свой код строковые заполнители.
В дальнейшем вы должны создать файл Localizable.strings
для каждого языка, который вы хотели бы поддержать, в форме key = value;
. Чтобы ваш пользовательский интерфейс отображался, по крайней мере, на одном человеко-читаемом языке, у вас должен быть хотя бы один Localizable.strings
файл с соответствующими строковыми значениями для каждого ключа-заполнителя.
Например: если у вас в коде есть NSLocalizedString(@"ConfirmationButtonTitle", @"Yada yada")
, то имеет смысл иметь файл Localizable.strings
, содержащий в нем элемент "GreenButtonTitle" = "Tap here to confirm";
. Если вы не создаете файл Localizable.strings
или файл Localizable.strings
содержат ключ GreenButtonTitle
, тогда заголовок кнопки возвращается к ConfirmationButtonTitle
, так как это имя ключа-заполнителя.
Сказав это, большинство людей предпочитают называть свои ключи точно как строковые значения по разным причинам. Это, возможно, удобная и очень распространенная практика, но может привести к конфликтам в сознании людей.
Итак, если бы вы вместо этого использовали предыдущий пример NSLocalizedString
, например NSLocalizedString(@"Tap here to confirm", @"Yada yada")
, тогда ваш файл default/base Localizable.strings
, вероятно, содержал бы такой элемент, как "Tap here to confirm" = "Tap here to confirm";
.
Что происходит здесь, это не то, что вы повторяете себя, но вместо этого вы называете свой ключ точно так же, как и строковое значение вашего базового языка, вот и все.
ИЗМЕНИТЬ
Всегда существовала концепция базового языка, но, как я понимаю, Xcode 5 подчеркивает это еще больше: это хорошо. Если ваш базовый язык является английским, то вам еще не нужно иметь файл Localizable.strings
для английского языка.