2015-10-02 3 views
1

Я работаю в компании, у которой есть приложение в производстве с ошибкой локализации только в iOS 9. Приложение показывает ключ локализованных строк, а не значения. По-видимому, он не может найти соответствующую строку в таблице. На iOS 8 приложение отлично работает.Локализованная строка, не найденная в таблице строк в iOS 9

Я плохо знаю исходный код, но я убедился, что файл Localization.strings находится в правильном комплекте с правильной целью. Я уверен, что ресурс есть, из-за тестов, которые я сделал, и в основном потому, что строки находятся в iOS 8!

Я искал изменения в API в iOS 9, но не смог найти ничего, связанного с моей проблемой. Я также запустил команду plutil во всех файлах .strings, и у меня все получилось для всех.

Любые подсказки относительно того, где искать?

+0

Вы пробовали метод NSBundle для получения локализованных строк, чтобы узнать, отличается ли поведение? –

+0

Разумеется, вы имеете в виду '[[NSBundle mainBundle] localizedStringForKey: value: table:]' в отличие от макроса 'NSLocalizedString (key, comment)'? Если да, то да. Он тоже не работает. – invalidArgument

+0

То есть метод. Вы подтвердили, что файл строк присутствует в комплекте в симуляторе? Вы должны иметь возможность распечатать путь пакета к консоли, а затем проверить его. Папки .lproj должны находиться непосредственно в папке пути пакета, содержащей ваши файлы строк. –

ответ

1

Оказалось, что приложение использует несколько файлов Localization.strings для определенных локализаций (настройка системы и системы локализации). Удаление всех этих файлов (с дублируемыми именами) и замена его другой системой (в основном, файл plist) заставляют ее работать правильно.

Кажется очевидным, что здесь возникла проблема с конфликтующим именем, но я все еще озадачен тем фактом, что она работала со старыми iOS (8 и младше).