Ghost Localizable.используемые строки, «реальные» игнорируются

#ios #xcode #localization

#iOS #xcode #локализация

Вопрос:

Хорошо, это действует мне на нервы!

Должно быть, я сделал что-то не так с файлом, но мое приложение теперь использует подписи из «ghost» Localizable.strings. С тех пор я изменил содержимое файла, но все изменения игнорируются.

  • Я получаю подписи «обычным» способом: NSLocalizedString(@"captionKey", nil)
  • любое изменение Localizable.strings игнорируется
  • если я удалю ссылку и файл Localizable.strings, приложение по-прежнему отображает правильные подписи!
  • После удаления nslocalizable.strings я искал любой файл, содержащий мои подписи, и ничего не получил, но при сборке они отображаются.
  • Я попытался сбросить эмулятор, очистить свой проект.. ничего. Все еще отображаются старые подписи
  • Та же проблема на моем iPhone
  • На этот раз, когда я распространяю IPA по воздуху, подписи не отображаются, только клавиши

Пожалуйста, помогите!

Редактировать: следуя комментарию DarkDust, я удалил приложение с iPhone, очистил проект, создал и запустил, и теперь приложение отображает ключи. Вполне нормально. Но когда я добавляю новый Localizable.strings, он игнорируется. Если это поможет, приведенный ниже код регистрирует (null) :

NSLog(@"%@", [[NSBundle bundleForClass:[self class]] pathForResource:@"Localizable" ofType:@"strings"]);

Комментарии:

1. Вы удалили приложение с телефона, затем очистили свой проект и установили приложение заново?

2. Только что сделал это. На этот раз приложение отображает ключи. Затем я добавил новый «Localizable.strings» с некоторым содержимым, снова очистил, удалил приложение, построил, и приложение по-прежнему показывает ключи

3. Это сложно. У меня была эта проблема, а затем она разрешилась сама собой без объяснения причин несколько дней спустя.

Ответ №1:

Ok нашел проблему. Я каким-то образом перепутал правила сборки (Xcode 4 -> выберите свою цель -> вкладка «Правила сборки») Там у меня было несколько правил «CopyStringsFile», которые не использовали «CopyStringFile». Понятия не имею, как это произошло. Все, что мне нужно было сделать, это удалить их (убедившись, что хотя бы один остался с помощью «CopyStringFile»)

Хитрый материал