iOS: Локализация периодически прерывается

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

Когда я устанавливаю сборку с помощью Xcode Organizer (Xcode 3.2.5), локализация работает только иногда. Изменение языковых настроек в ОС, похоже, ничего не дает. Удаление из Xcode Organizer, а затем повторная установка не помогают.

Похоже, API локализации не могут найти мои ресурсы. Я добавил несколько операторов NSLog() в один из моих ViewController, чтобы распечатать строку, которая должна быть локализована, используя эту функцию:

NSLog(@"Value: %@", [[NSBundle mainBundle] localizedStringForKey:@"MY_KEY" value:@"none found" table:nil]);

Когда локализация работает, это выводит ожидаемый результат. Когда локализация не работает, выводится «ничего не найдено». Я проверил содержимое пакета, все файлы .lproj есть. Что мне не хватает?

Изменить: я обнаружил, что после сборки некоторые из полученных файлов *.lproj/Localizable.strings для различных языков не создаются должным образом - иногда. Я могу коснуться немецкого файла, и он будет сгенерирован правильно, но в следующий раз, когда я запущу сборку, он будет неправильным. Кодировка для всех файлов Localizable.strings в настоящее время установлена ​​​​на UTF-16, и я безуспешно пытался переключиться на UTF-8. Я не вижу никаких предупреждений или ошибок в журнале сборки, указывающих на проблему со строковыми файлами.


person mayonaise    schedule 06.01.2012    source источник


Ответы (1)


Я видел, как это случалось раньше из-за наличия более одного файла localizable.strings в вашем проекте. Это может легко произойти, если вы добавите в свое решение библиотеку с открытым исходным кодом (например, ShareKit, который поставляется с собственным файлом localizable.strings). См. вопрос по адресу Строки локализации не всегда работают с ShareKit в a project, чтобы узнать больше об этой возможной причине вашей проблемы.

person Clafou    schedule 06.01.2012
comment
Похоже, это и было причиной. Был еще один набор переводов для другой цели, которая была добавлена ​​в проект. Как только я переименовал их, все, кажется, хорошо. - person mayonaise; 07.01.2012