Xcode 9 - Локализация

В настоящее время я тестирую Xcode 9 beta 3 на момент написания этой статьи.

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

Приложение довольно сложно, и многие представления испытывают эти предупреждения.

Предупреждение:

Certain autolayout constraint combinations may result in an appropriate layout in the current development language but will pose issues in other languages and regions.

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

Есть ли способ отключить это предупреждение? Это звучит глупо, но я не могу видеть все мои взгляды с желтым значком предупреждения и считать вверху (110 предупреждений!)

проблема локализации

Ответ 1

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

Чтобы полностью отключить это предупреждение в конкретной раскадровке, вы должны позволить Xcode знать, что раскадровку нельзя считать локализуемым. Самый простой способ сделать это - просто переместить файл раскадровки из папки Base.lproj на один уровень и повторно добавить файл в проект. Как только я это сделал, предупреждения ушли.

Действия

Этот процесс должен работать со старыми и новыми проектами. Протестировано на Xcode 9.1, используя проект, созданный с помощью Xcode 9.1

  • Переместите раскадровку из папки Base.lproj на один уровень через Finder
  • Удалите ссылку на раскадровку из вашего проекта с помощью Xcode
  • Перетащите (или иначе добавьте) раскадровку в свой проект
  • Убедитесь, что с помощью Инспектора файлов в раскадровке больше нет базовой локализации

     

Изобразительное прохождение

По умолчанию Xcode имеет раскадровку, "подготовленную" для локализации

Структура раскладки раскладки по умолчанию Xcode по умолчанию

     

Извлеките файлы раскадровки из папки Base.lproj, чтобы предотвратить предупреждения

Структура желаемой папки

     

Удалить ссылку на файл

Удалить ссылку на файл

     

Повторно добавьте раскадровку

Перетащите файл обратно в проект введите описание изображения здесь

     

Когда вы преуспеете

, вы увидите кнопку "Локализовать..."

Yay! no more warnings

     

Если вы хотите локализовать в будущем

Просто нажмите кнопку "Локализовать..." и следуйте подсказкам из Xcode. Кроме того, вам действительно нужно будет устранить предупреждения, о которых вам сообщает Xcode. Существуют различные способы их решения, я рекомендую этот question для начала.

Для видео демонстрации процесса просмотрите эту экранную запись

Ответ 2

Предполагая, что ваше приложение не локализовано, вам необходимо восстановить параметр "Локализовать" в раскадровке. Один из наших был установлен на английском. Снимите флажок в поле English или независимо от того, что вы выбрали. Раскадровка находится в папке с кодом языка, en для английского. Если убрать этот флажок, он удалит его из каталога проекта, так как приложение больше не ищет папку en. Найдите раскадровку в папке finder, переместите ее из папки en и перетащите обратно в проект. Убедитесь, что целевое членство проверено. Очищайте, закрывайте, открывайте, принудительно завершайте и т.д. По мере необходимости, и вам должно быть хорошо идти! У нас было 360 предупреждений в одной раскадровке, поэтому было приятно, чтобы это разрешилось!

введите описание изображения здесь

Ответ 3

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

Используя представление контейнера, вы можете отключить предупреждение и по-прежнему локализовать раскадровку. Иногда вам нужно иметь ярлык или кнопку с фиксированной шириной, даже если язык будет меняться, и если вы уверены, что ширина исправления достаточно велика, это не должно быть проблемой, но Xcode не знает этого, поэтому вы получите предупреждение; -)

Ответ 4

Простое решение: отключите направление рекурсивного языка для каждого проблемного ограничения.

См. fooobar.com/info/94894/....