ТестированиеМобильное тестированиеИнженер по тестированию мобильных приложений

После включения арабского языка часть экрана визуально зеркалится неверно. Как отличить ошибку RTL адаптаци...

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

Проходите собеседования с ИИ помощником Hintsage

Краткий ответ

Сначала нужно подтвердить, что операционная система действительно установила для интерфейса направление справа налево, а затем проверить, какие элементы приложение обязано зеркалить, а какие должны сохранять направление. Если системные экраны и стандартные компоненты отображаются корректно, а проблема остаётся только в конкретном экране приложения, наиболее вероятна ошибка RTL-адаптации приложения.

Исторический контекст

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

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

Постановка проблемы

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

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

Подробное решение

Проверку следует проводить поэтапно:

  1. Установить на устройстве RTL-язык и перезапустить приложение, если платформа требует пересоздания интерфейса после смены локали.
  2. Проверить направление на системном экране и в стандартном компоненте платформы. Если они также отображаются неправильно, проблема может быть в настройках устройства или в особенностях конкретной оболочки.
  3. Сравнить экран приложения с тем же экраном в LTR-локали. Нужно отдельно оценить порядок блоков, выравнивание текста, отступы, положение кнопок, направление жестов и поведение прокрутки.
  4. Найти элементы, которые изменились неправильно. Привязки к физическим левому и правому краям часто требуют замены на логические начало и конец строки.
  5. Проверить изображения по смыслу. Стрелка перехода обычно должна изменить направление, а логотип или фотография — нет.

У Android направление обычно участвует в расчёте start и end, а у iOS — в семантическом направлении интерфейса и понятиях leading и trailing. Однако сам факт использования этих механизмов не доказывает полную поддержку RTL: пользовательские компоненты, рисование на Canvas, жесты и изображения могут содержать собственную логику.

Для доказательства причины полезно сравнить несколько экранов и использовать минимальный воспроизводимый сценарий. Если стандартный экран работает корректно, а проблемный экран нарушает направление только в собственном компоненте, это указывает на дефект приложения, а не на неподдерживаемое направление ОС.

Ситуация из практики

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

Рассматривались три варианта:

  • принудительно оставить весь экран в LTR — быстро устраняет часть визуальных различий, но нарушает ожидания пользователей RTL-языков;
  • зеркалить весь экран целиком — исправляет расположение некоторых блоков, но повреждает логотип и другие недирекционные изображения;
  • использовать логическое направление для компоновки и отдельно классифицировать графические ресурсы — требует проверки компонентов, зато сохраняет смысл каждого элемента.

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

Что кандидаты часто упускают

  1. Достаточно ли проверить только арабский перевод?

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

  1. Нужно ли зеркалить все иконки?

Нет. Зеркалятся только элементы, чьё изображение зависит от направления: например, стрелки перехода или навигационные указатели. Логотипы, фотографии, диаграммы с фиксированной системой координат и многие служебные символы должны оставаться неизменными. Решение принимают по смыслу изображения, а не по его расположению на экране.

  1. Можно ли считать приложение RTL-совместимым, если системная настройка автоматически зеркалит интерфейс?

Нет. ОС может определить направление и корректно обработать стандартные компоненты, но не исправит жёстко заданные координаты, пользовательскую отрисовку, неправильно выбранные ресурсы или бизнес-логику жестов. Совместимость подтверждается проверкой реальных пользовательских сценариев на поддерживаемых версиях iOS и Android, включая переходы, формы, ошибки валидации и экраны с динамическим содержимым.