Хорошо, я официально ошеломлен. Некоторое время назад я начал проект IOS и немного возился с локализацией в начале, что привело к некоторой путанице, потому что я еще не знал, как это сделать правильно.
Теперь я решил сделать локализацию с нуля, поэтому выбросил все файлы .string и создал правильную многоязычную структуру. Я начал с пустых файлов Localizable.strings и запустил приложение, чтобы проверить, все ли правильно очистил. Я предположил, что с пустыми файлами Localizable.string мои вызовы «NSLocalizedString» просто вернут ключ в виде текста. Они не делают. Они по-прежнему возвращают старый текст, который у меня был в старых файлах .strings.
На всякий случай я поместил оператор NSLog под одним из вызовов NSLocalizedString, как таковой:
NSString *text = NSLocalizedString( key, nil );
NSLog(@"key=%@ text=%@", key, text);
Затем я просматриваю весь свой жесткий диск в поисках возвращенного текста. Ни один файл на моем жестком диске не содержит строку, которую возвращает NSLocalizedString. И это совершенно другая строка, чем ключ, поэтому она также не может быть создана с помощью NSLocalizedString.
Кто-нибудь знает, как это может произойти? XCode где-то кэширует старую информацию? Как убедить инструмент использовать новые файлы Localizable.strings? Очевидно, я уже "очистил" и пересобрал весь проект.