Подтвердить что ты не робот

Базовая интернационализация и многократная раскадровка не работают правильно

Я играю с несколькими раскадными версиями и базовой локализацией на xCode 4.6. Действительно, I

Я сделал:

1) отредактируйте локализацию информации о проекте: отметьте "Использовать базовую интернационализацию" и добавьте языки: английский, китайский

2) создайте новую раскадровку под названием "anotherstoryboard.storyboard"

3) локализуйте мою новую раскадровку (File Inspector/Localize - Localize) с использованием интернационализации базы данных.

4) в моем делете приложения, я динамически загружаю свою локализованную раскадровку, например:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"anotherstoryboard" bundle:nil];

case 1: = > работает

Для моей новой раскадровки (шаг 3) я выбираю Localization Chinese - Interface Builder Cocoa Touch Storyboard

enter image description here

Это работает, но теперь мне нужно поддерживать локализованный раскадровки, редактируя их с помощью IB. Я не хочу такого поведения, я просто хочу использовать базовую интернационализацию и локализовать файлы .strings.

случай 2: = > сбой

Для моей новой раскадровки (шаг 3) я выбираю Localization Chinese - Localizable Strings

enter image description here

Приложение вылетает, говоря, что не может найти мою раскадровку

'NSInvalidArgumentException', reason: 'Could not find a storyboard named 'anotherstoryboard' in bundle NSBundle </Users/me/Library/Application Support/iPhone Simulator/6.1/Applications/8E036C84-6058-4420-94B4-1726E1F686AD/HelloWorld.app> (loaded)'

Что я делаю неправильно? Почему iOS не находит правильную раскадровку в случае 2?

4b9b3361

Ответ 1

Я только что столкнулся с той же проблемой (снова) после начала локализации новой раскадровки в Xcode 4.6.2. Я проверил, что все было правильно настроено, как предложено здесь и в другом месте, и это действительно так.

Для меня проблема была решена, закрыв проект в Xcode и вручную очистив каталог "Производные данные" Xcode (см. настройки Xcode) из Finder. Затем я снова открыл проект, сделал чистую сборку, и воля, раскадровка была скомпилирована должным образом и работала, как ожидалось.

Ответ 2

Вы получаете эту ошибку, потому что для iOS 6 (требуется для интернационализации базы данных) файл раскадровки компилируется в файл storyboardc. Также он копирует файлы, принадлежащие ему, к цели. Таким образом, на устройстве iOS 6 нет файла .storyboard.

Чтобы скомпилировать файл раскадровки, вам нужно убедиться, что он находится в фазе сборки ресурсов копирования Bundle. Затем компилятор раскадровки (см. Правила сборки) запускается и должен скомпилировать его. Если нет, то это ошибка, и вы должны сообщить об этом.

Ответ 3

Я пробовал точно так же, как вы, и я могу сказать, что эта ошибка произойдет, как вы показали.

Решение заключается в удалении и добавлении файла раскадровки из фаз сборки целей. Поэтому нажмите на цель, как показано на рисунке Build Phases of a target

Затем удалите файл раскадровки из фаз сборки и добавьте его снова.

Это сработало для меня!

Ответ 4

Нажмите на проект внутри Project Navigator, выберите свой проект и выберите Info вверху. Затем вы должны отменить выбор Use Base Internationalization и нажать "Удалить".

enter image description here

Ответ 5

Я исправил проблему, перетащив свою панель рассказов в finder, а затем удалив ее на боковой панели Xcode, а затем повторно добавив ту, которую я изначально перетащил в finder обратно на боковую панель Xcode. Затем удалите старый RED файл раскадровки в "ресурсах копий" и добавьте новый вручную, перетащив его.

Ответ 6

Я столкнулся с той же проблемой и потратил 2 дня на ее устранение.

Конечно, я пробовал все выше, например: проект очистки, Резервное содержимое и настройки в iOS Simulator, удаление всех файлов в /Users/YourUsername/Library/Application Support/iPhone Simulator, удаление всех файлов в /Users/YourUsername/Library/Developer/Xcode/DerivedData, удаление приложения на устройстве iOS

и ничто не помогает мне решить мою проблему. Локализация раскадровки с использованием Base Internationalization + Storyboard.strings не компилирует локализованные раскадровки.

И причина в том, что ранее проект был нацелен на iOS 5.1, но теперь для iOS 6.1. После изменения Project Deployment Target я забыл изменить настройки компиляции в раскадровке.

Что мне помогает - просто измените "Builds", по крайней мере, на "iOS6.1 и более поздние версии" в File Inspector вашего раскадровки.

enter image description here

Ответ 7

РЕШИТЬ

У меня проблема с некоторыми арабскими переводами. Я перепробовал все возможные способы, упомянутые в посте, но ни один из них не помог мне.

Наконец я обнаружил, что мой Xcode не сообщает об ошибке в строковом файле для моей раскадровки! Я исправил проблему в строковом файле, и мое приложение работает как положено!

(Подсказка: вы также можете проверить консоль на наличие ошибок)

Ответ 8

В настройках локализации раскадровки попробуйте удалить флажок рядом с опцией "Base". Он не поддерживается в iOS6

Ответ 9

Поскольку это было предупреждение, а не ошибка, я не думал, что это будет проблема сначала, но в конечном итоге это был мой единственный груз. В правой боковой панели, самой левой опции (значок, который похож на документ), я увидел раздел Локализация с двумя флажками: Base и English. База была проверена и английский не отмечен.

enter image description here

Вместо этого я проверил английский язык, а затем изменил выпадающий список на Interface Builder. Затем я отключил Base.

enter image description here

Когда я снова проверил правило сборки, Main.storyboard больше не был красным. И когда я снова попытался запустить приложение в симуляторе 5.1, все получилось просто отлично. Примечание. Просто проверить английский язык/Интерфейс Builder достаточно, чтобы приложение запускалось в iOS 5.1, но тогда вы столкнулись с проблемой, когда обновления в Storyboard не будут отражены. Вам нужно снять отметку с базы, чтобы английский был единственной версией раскадровки; таким образом, обновления всегда будут отображаться сразу же после повторного запуска.

Ответ 10

Интернационализация базы поддерживается только на iOS 6.

Я столкнулся с той же проблемой, что и вы, но хуже, потому что я не тестировал iOS 5. Я знал об этом только после того, как многие из моих пользователей столкнулись с авариями.

Итак, обратите внимание.

Об этом подробно рассказывается в блоге. Как вы уже знаете, xib все еще работает. Поэтому преобразовать все строки в xib (совсем не сложно).

Ответ 11

Если в файле Storyboard.strings есть синтаксическая ошибка, например, отсутствует; или отсутствует ", похоже, нет никакого предупреждения (Xcode 10.2.1), и вы просто не получаете никакой локализации в этом файле Storyboard.strings.

Цвет текста не изменяется в следующих строках, чтобы указать на проблему.

Лучше всего проходить построчно и следить за тем, чтобы ничего не пропало.