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

Локализация Xcode сводит меня с ума! Не загружать раскадровки

Это было 2 дня, эта проблема меня заводила.

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

Я добавил языки в локализации с помощью "+", я локализовал раскадровку, но когда я проверяю симулятор или устройство, я все еще вижу английскую версию. И на самом деле это даже не английский, потому что, если я изменю Maintsoryboard (английский), я не вижу изменений в устройстве... Я все еще вижу исходные тексты.

Я пробовал переиздавать симулятор, удалять приложение и т.д. Не повезло.

Я вернусь к резервной копии, попробовал добавить все снова. Не повезло.

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

FYI, когда я просматриваю папку приложения в Developer, у меня изначально нет en.lproj, когда кажется, что я должен иметь его по умолчанию?

4b9b3361

Ответ 1

Похоже, вы уже поняли это, но я думаю, что, вероятно, произошло то, что изначально у вас была "MainStoryboard.storyboard" как нелокализованный ресурс. Это означает, что при создании приложения вы получаете "MainStoryboard.storyboardc" как нелокализованный ресурс. Когда вы меняете раскадровку, чтобы быть локализованной, вы получаете "Base.lproj/MainStoryboard.storyboardc" в своих ресурсах пакета.

При создании в Xcode есть несколько копий вашего приложения. Там копия на вашем устройстве или в симуляторе, а также копия в вашей производной папке данных в Xcode. Когда вы делаете инкрементную сборку своего приложения, копия в производной папке данных в Xcode представляет собой слияние вашего нового контента и вашего старого контента. Итак, когда вы изменяете ресурс в Xcode и перестраиваете, вы получаете новейший ресурс. Однако при переименовании или удалении ресурсов старая копия остается в каталоге сборки до тех пор, пока вы не выполните чистую операцию.

Это означает, что у вашего продукта сборки, вероятно, были и "MainStoryboard.storyboardc" , и "Base.lproj/MainStoryboard.storyboardc". Когда NSBundle загружает ресурсы, он предпочитает нелокализованный контент и загружает старую "MainStoryboard.storyboardc" .

Ответ 2

Будьте абсолютно уверены, что у вас нет опечаток в файле Main.strings, например. двойные кавычки и точки с запятой. Если у вас есть опечатки, устройство просто игнорирует локализованные строки и применяет интернационализацию базы.

Ответ 3

Слепой снимок: проверьте, что файл строк - UTF-16 (немного верно, если я правильно помню), и у него нет синтаксических ошибок (отсутствует или цитата). Также запустите проект чистый до создания после изменений в файлах строк.

Ответ 4

Попробуйте выбрать все различные .strings, .xib и .storyboard файлы, которые локализованы.

В "Инспекторе файлов" убедитесь, что для каждого файла отмечены все необходимые локализации.

После добавления локализации English был снят флажок в нескольких файлах. Таким образом, некоторые взгляды были локализованы на непреднамеренные языки. Проверка English исправила проблему.

Английская локализация не отмечена