Я знаю, что многие разработчики делают это так: они начинают разрабатывать свое приложение на английском языке и ставят NSLoclaizedString(@"Tap this to do that!", @"Telling what to do...")
вместо просто @"Tap this to do that!"
.
Затем они запускают genstrings
, который каким-то образом создает файл Localizable.strings, извлекая все эти строки. Беспорядочная часть: длинный текст, используемый в коде, становится ключевым. Оно работает. До тех пор, пока однажды вы не войдете в свой код, не измените строку на английском и не забудете о локализации, которая станет ключом для всех этих файлов Localizable.strings.
Поэтому я предпочитаю использовать «настоящие» ключи, которые не путаются со строками. Для быстрого тестирования я создал проект, локализованный на английский и французский языки. Затем я установил язык симулятора на немецкий. Потому что, знаете, было бы ужасно, если бы пользователь когда-нибудь увидел ключ вроде TTTDT
.
Итак, имея только английский и немецкий языки, я запустил демонстрационное приложение. И я получил английский текст из файла English Localizable.strings.
Вывод. Похоже, что NSLocalizedString возвращается к английскому файлу, если язык ОС не поддерживается приложением.
Вопрос: Предположим, что всегда ЕСТЬ Localizable.strings (English)
файл, а ключи ЕСТЬ в файле вместе с правильно отформатированными значениями. Существуют ли обстоятельства, при которых NSLocalizedString выйдет из строя, а затем отобразит ключ напрямую?