Как сделать предварительный просмотр многоязычного интерфейса в Xcode 27? Приёмка локализации в 2026 году
📋 Содержание
На экране всё выглядит нормально, пока длинный перевод не обрезается, а интерфейс на RTL-языке не меняет направление?
Сначала подготовьте целевые локализации и проверьте макет в Xcode 27; затем запустите приложение в симуляторе или на устройстве с нужными языком и регионом. Предварительный просмотр помогает найти проблемы компоновки, но не заменяет проверку работающего приложения.
Это руководство пригодится независимым разработчикам, которые добавляют или обновляют переводы для зарубежных рынков.
Если вы используете SwiftUI или Interface Builder, здесь разобраны подходящие способы предварительной проверки для обоих типов интерфейса.
Небольшие команды также смогут определить, какие этапы удобно выполнять на удалённом Mac, а какие требуют проверки на целевом устройстве.
Последнее обновление: 14 октября 2026 года. Возможности и порядок проверки сверены с примечаниями к выпуску Xcode 27 и документацией Apple по локализациям. Набор функций может различаться в установленных патч-версиях: перед повторением шагов сверьтесь с примечаниями именно к своей версии Xcode.
Подготовка локализации: готовые ресурсы против незавершённого перевода
До открытия превью убедитесь, что проект знает о целевом языке и содержит нужные локализованные ресурсы. Если перевода ещё нет или файл локализации не импортирован, превью может показать исходную строку. Это не обязательно сбой предпросмотра: сначала нужно проверить состояние ресурсов.
Apple описывает добавление языков и регионов отдельно от импорта локализованных файлов. Используйте инструкцию по поддержке языков и регионов и процесс импорта локализаций, сверяя названия пунктов с установленной версией Xcode.
| Что вы видите | Вероятная причина | Что проверить до оценки интерфейса |
|---|---|---|
| В превью осталась исходная строка | Локализованный ресурс не добавлен, не импортирован или не выбран | Наличие языка в проекте, импортированные ресурсы и соответствие ключей |
| Текст переведён, но занимает неожиданно много места | Перевод длиннее исходной строки или выбран другой вариант ресурса | Полную строку, переносы, ограничения ширины и поведение соседних элементов |
| Макет выглядит как LTR при переводе на RTL-язык | Изменился текст, но не направление интерфейса | Локаль превью и поведение layout direction в самом интерфейсе |
| Превью не соответствует запуску приложения | Отличаются настройки окружения или фактический выбор языка и региона | Параметры запуска и настройки симулятора или устройства |
Под «языком» и «регионом» не следует понимать одно и то же. Локаль влияет на форматирование и выбор языковых ресурсов, а пользовательские настройки запуска должны соответствовать тому сценарию, который вы принимаете. Apple отдельно описывает поддержку нескольких языков в приложении в документации по многоязычным приложениям.
Для первичной проверки выпишите языки, которые действительно поддерживаются в проекте, и выберите один репрезентативный сценарий для каждой группы: например, язык с длинными строками и RTL-язык, если приложение их поддерживает. Не подменяйте проверку настоящего перевода псевдоязыком: псевдолокализация помогает выявить чувствительные к длине строки места, но не подтверждает смысл и качество перевода.
Если вы недавно импортировали локализации, не начинайте с правок ограничений. Сначала убедитесь, что превью показывает именно нужный ресурс; иначе можно исправлять макет, сравнивая его не с тем текстом.
SwiftUI: обычная локаль против проверки направления
Как переключить язык локализации в SwiftUI Preview? Выберите локализацию в средствах предварительного просмотра Xcode, если соответствующая возможность доступна в вашей версии, либо задайте локаль для конкретного представления. Запись ниже показывает принцип явной настройки окружения; замените идентификатор на локаль, которую проверяете:
#Preview {
ContentView()
.environment(\.locale, Locale(identifier: "fr"))
}
Синтаксис оболочки превью может меняться между версиями Xcode и способом, которым устроен проект. Существенно другое: проверяемое представление должно получить целевую локаль, а ресурс для неё должен присутствовать. Возможность предварительного просмотра в разных локализованных окружениях описана в документации Apple по локализационным превью; изменение поведения в Xcode 27 следует сверять с официальными примечаниями к выпуску.
При проверке не ограничивайтесь тем, что строка стала другой. Пройдите по экрану и проверьте:
- помещается ли текст в кнопки и навигационные элементы;
- допускает ли текстовое поле перенос и не перекрывает ли соседние элементы;
- остаются ли заголовок, описание и действие в понятной иерархии;
- не теряются ли важные слова при обрезке;
- выглядят ли состояния загрузки, ошибки и пустого списка приемлемо при более длинных строках.
Для RTL-локали отдельно проверьте направление компоновки. Перевод текста на арабский или иврит сам по себе не доказывает, что интерфейс корректно зеркалируется: порядок элементов, стрелки, выравнивание и расположение действий могут требовать отдельного внимания. SwiftUI предоставляет окружение направления раскладки; его поведение описано в документации по LayoutDirection. Проверьте, что элементы, которые должны следовать направлению чтения, действительно меняют расположение, а элементы с фиксированным смыслом не отражаются ошибочно.
| Вариант проверки | Что он выявляет лучше всего | Что остаётся за пределами проверки | Оценка для ранней приёмки |
|---|---|---|---|
| SwiftUI Preview с целевой локалью | Длинные строки, переносы, размеры и локализованные состояния отдельного экрана | Поведение приложения при реальном запуске и фактический выбор языковых настроек | Высокая полезность для быстрой правки макета |
| SwiftUI Preview с RTL-направлением | Зависимость представления от направления чтения и ошибки в зеркалировании | Ошибки, возникающие только в полном потоке приложения или конкретном устройстве | Обязательная проверка, если поддерживается RTL |
| Запуск в симуляторе или на устройстве | Поведение приложения в выбранной языковой и региональной конфигурации | Качество перевода без проверки носителем языка | Основной этап подтверждения работающего приложения |
В SwiftUI Preview полезно сравнивать один и тот же экран в одинаковом состоянии: например, заполненный список с длинным заголовком или форму с сообщением об ошибке. Иначе изменение данных легко принять за проблему локализации. Если отдельное представление зависит от данных приложения, подставьте стабильный тестовый набор, чтобы повторная проверка показывала то же содержимое.
Apple рекомендует готовить интерфейс с учётом локализации, а не только заменять исходные строки. В руководстве по подготовке интерфейса к локализации проверьте рекомендации по тексту и компоновке. На практике это означает, что важные подписи не следует принудительно ограничивать фиксированной шириной, если переводы могут быть длиннее.
Interface Builder: локализованный экран против проверки во время запуска
Можно ли увидеть псевдолокализацию в Interface Builder? Если проект и установленная версия Xcode предоставляют соответствующий вариант предварительного просмотра, используйте его для раннего поиска проблем с длиной текста и ограничениями. Выберите подготовленную локализацию или псевдоязык в доступных средствах Interface Builder, затем проверьте размеры элементов, переносы и работу constraints. Конкретные пункты интерфейса сверяйте с документацией по локализованным превью: доступность и расположение функций зависят от версии и типа ресурса.
Псевдоязык — нагрузочная проверка формы строки, а не перевод для выпуска. Он может выявить, что метка рассчитана только на короткую исходную фразу, но не говорит, правильно ли передан смысл локализованного текста. Для Interface Builder поэтому разделяйте два результата: «элемент выдерживает тестовую строку» и «реальный перевод принят».
В Storyboard и XIB проверяйте, не зафиксированы ли размеры так, что локализованный текст не может расширить контрол. Просмотрите ограничения контейнера, минимальную высоту, расположение кнопок и взаимное расстояние между элементами. Если подпись пропадает или становится нечитаемой, запишите точный экран, выбранный язык и состояние интерфейса, а не только формулировку «сломался перевод».
Предварительный просмотр Interface Builder показывает компоновку в редакторе. Он не доказывает, что приложение при запуске выберет правильный язык, применит нужный регион или покажет тот же набор ресурсов.
Разбор дефектов: визуальное совпадение против воспроизводимого исправления
При обнаружении дефекта не правьте сразу несколько слоёв интерфейса. Сначала определите, к какой группе относится проблема. От этого зависит, стоит ли менять ограничения, локализованный ресурс или конфигурацию запуска.
| Дефект | Различающий признак | Первое действие | Повторная проверка |
|---|---|---|---|
| Текст обрезан | В превью видна только часть переведённой строки | Проверить ширину, перенос, приоритеты сжатия и ограничения родительского элемента | Вернуться к тому же экрану и той же локали |
| Макет не растёт по высоте или ширине | Контрол остаётся тесным, хотя тексту доступен перенос | Найти фиксированные размеры и конфликтующие constraints | Повторить превью с самой длинной строкой |
| RTL не соответствует направлению чтения | Текст локализован, а порядок элементов или выравнивание нет | Проверить локаль, layout direction и ручное позиционирование | Осмотреть порядок, стрелки и действия на том же состоянии |
| Ресурс не локализован | Показывается исходная строка или непредусмотренное значение | Проверить импорт, ключ и наличие ресурса для целевого языка | Перезапустить превью после исправления ресурсов |
Чтобы ошибка не потерялась между редактором и проверкой, фиксируйте её как воспроизводимый дефект: экран или компонент, выбранная локаль, исходное состояние данных, ожидаемое поведение и фактический результат. Например, запись «кнопка обрезается» слишком расплывчата; запись «на экране регистрации, при выбранной локали и длинном варианте подписи, действие не помещается в контейнер» уже указывает, что сравнивать после исправления.
Список проверки перед переходом к запуску:
- [ ] Целевой язык добавлен в проект, а нужные локализованные ресурсы импортированы.
- [ ] В превью выбран именно тот язык, который вы собирались проверить.
- [ ] Проверены экраны с длинными подписями, кнопками и сообщениями об ошибках.
- [ ] Для RTL-языка отдельно проверено направление раскладки, а не только текст.
- [ ] Для каждого дефекта записаны экран, локаль и условия воспроизведения.
- [ ] После изменения ресурсов или ограничений проблемный сценарий открыт повторно.
Эта проверка помогает не смешивать состояния. Если локаль превью настроена неправильно, исправление constraints не устранит причину. Если же ресурс выбран верно, но кнопка не вмещает перевод, повторное импортирование того же файла не исправит макет.
Запуск приложения: превью против приёмки в целевой среде
Нужно ли запускать приложение в симуляторе после успешного превью? Да. Предварительный просмотр локализованного интерфейса — это этап проверки представления, а не итоговая приёмка приложения. Запустите приложение с целевыми языком и регионом и проверьте поведение в работающем сценарии. Apple отдельно описывает проверку локализаций при запуске приложения.
Действуйте последовательно:
- Выберите локаль и регион, которые соответствуют проверяемому рынку.
- Запустите приложение в симуляторе или на устройстве с выбранными настройками.
- Откройте те же экраны и состояния, которые проверяли в превью.
- Проверьте переходы между экранами, системные элементы и динамические сообщения.
- Сопоставьте фактические строки с ресурсами, которые должны использоваться для выбранной локали.
- Отдельно проверьте RTL-поведение в работающем приложении, если поддерживается такой язык.
- Зафиксируйте найденные ошибки и повторите запуск после исправления.
- Если нужна оценка естественности перевода, передайте тексты человеку, владеющему целевым языком.
Не объединяйте выводы в одно «локализация прошла». Здесь есть разные уровни готовности:
| Результат | Что он подтверждает | Чего он не подтверждает |
|---|---|---|
| Превью прошло | Основные строки и компоновка выглядят приемлемо в редакторе | Корректный выбор ресурсов и поведение полного приложения |
| Проверка запуска прошла | Приложение работает в выбранной языковой и региональной конфигурации | Качество перевода для носителя языка |
| Подготовка локализации к выпуску завершена | Проверены ресурсы, интерфейс, работа приложения и языковая корректность в требуемом объёме | Отсутствие любых ошибок за пределами проверенных сценариев |
Если в вашем процессе Xcode установлен на удалённом Mac, интерфейсную проверку можно включить в разработческий цикл там же: открыть проект, выбрать нужное представление и локаль, исправить макет, а затем выполнить запуск в доступном симуляторе или на подключённом устройстве. Не считайте удалённое превью подтверждением работы на физическом устройстве, если такого запуска не было. Для выбора между выделенной машиной и виртуализированной средой полезно отдельно сравнить bare metal и виртуализацию macOS.
Если у вас пока нет Mac, но вы регулярно проверяете многоязычные экраны в Xcode, оцените, насколько часто нужны именно интерактивная работа с проектом и запуск приложения. Удалённая машина не отменяет проверку на целевом устройстве, однако позволяет не привязывать повседневные действия в Xcode к локальному компьютеру. Перед выбором сверьте доступные варианты в разделе тарифов Mac для macOS и убедитесь, что способ доступа подходит вашему процессу.
Для разовой локализации или небольшого набора экранов может хватить имеющегося Mac и локального симулятора. Если же вы не хотите покупать Mac только ради Xcode, а многоязычные изменения нужно проверять в течение ограниченного периода, аренда удалённого Mac у MacDate — вариант, который стоит оценить по доступности нужной среды и удобству доступа. При этом удалённая сессия не заменяет переводческую проверку и физическое устройство там, где оно требуется; перед началом работы проверьте условия доступа к удалённым Mac.