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/....