После включения арабского языка часть экрана визуально зеркалится неверно. Как отличить ошибку RTL-адаптации приложения от неподдерживаемого направления интерфейса?
Сначала нужно подтвердить, что операционная система действительно установила для интерфейса направление справа налево, а затем проверить, какие элементы приложение обязано зеркалить, а какие должны сохранять направление. Если системные экраны и стандартные компоненты отображаются корректно, а проблема остаётся только в конкретном экране приложения, наиболее вероятна ошибка RTL-адаптации приложения.
Поддержка RTL появилась как решение проблемы интерфейсов, рассчитанных только на языки с письмом слева направо. Простая замена текста не исправляет порядок элементов, направление отступов, выравнивание, жесты и изображения со смысловым направлением.
Поэтому мобильные платформы связывают направление интерфейса с локалью и предоставляют семантические понятия вроде начала и конца строки. Это позволяет одному экрану корректно работать в обоих направлениях без отдельной ручной вёрстки для каждого языка.
Ошибка может возникать на разных уровнях: локаль устройства не активировала RTL, приложение принудительно использует LTR, ограничения привязаны к левому и правому краям, либо изображение ошибочно зеркалится или не зеркалится.
Неверная диагностика приводит к плохому исправлению. Например, глобальное зеркалирование всего экрана может исправить расположение текста, но одновременно перевернуть логотип, график, фотографию или иконку, направление которой имеет самостоятельный смысл.
Проверку следует проводить поэтапно:
У Android направление обычно участвует в расчёте start и end, а у iOS — в семантическом направлении интерфейса и понятиях leading и trailing. Однако сам факт использования этих механизмов не доказывает полную поддержку RTL: пользовательские компоненты, рисование на Canvas, жесты и изображения могут содержать собственную логику.
Для доказательства причины полезно сравнить несколько экранов и использовать минимальный воспроизводимый сценарий. Если стандартный экран работает корректно, а проблемный экран нарушает направление только в собственном компоненте, это указывает на дефект приложения, а не на неподдерживаемое направление ОС.
В приложении интернет-магазина после выбора арабского языка карточки товаров начинались с правильной стороны, но иконка стрелки перехода указывала в прежнем направлении, а логотип магазина оказался зеркальным.
Рассматривались три варианта:
Выбрали третий вариант. Ограничения экрана перевели на логические стороны, стрелку сделали зависимой от направления, а логотип исключили из зеркалирования. После этого системные и пользовательские элементы совпали по направлению, а визуальные ресурсы сохранили исходный смысл.
Нет. Проверка RTL — это не только проверка текста. Нужно оценить геометрию экрана, порядок интерактивных элементов, выравнивание, жесты, прокрутку, поля ввода, диалоги, табличные данные и изображения. Короткая арабская строка может не выявить переполнение, а английский текст в RTL-режиме может показать проблемы смешанного направления.
Нет. Зеркалятся только элементы, чьё изображение зависит от направления: например, стрелки перехода или навигационные указатели. Логотипы, фотографии, диаграммы с фиксированной системой координат и многие служебные символы должны оставаться неизменными. Решение принимают по смыслу изображения, а не по его расположению на экране.
Нет. ОС может определить направление и корректно обработать стандартные компоненты, но не исправит жёстко заданные координаты, пользовательскую отрисовку, неправильно выбранные ресурсы или бизнес-логику жестов. Совместимость подтверждается проверкой реальных пользовательских сценариев на поддерживаемых версиях iOS и Android, включая переходы, формы, ошибки валидации и экраны с динамическим содержимым.