Дизайн2026-03-225 мин

RTL — это ограничение, которое несёшь с первого вайрфрейма, а не CSS-зеркало

«Поддержка арабского» обычно означает, что строки прогнали через переводчик. Настоящий справа-налево — это дисциплина проектирования: зеркалирование по смыслу, bidi-изоляция и серверный рендеринг в нужном направлении с первой отрисовки.

Команды говорят, что они «поддерживают арабский», а имеют в виду, что прогнали строки через переводчик. Затем макет переворачивается — и швы проступают: стрелки указывают не туда, отступ застрял на той стороне, к которой был жёстко привязан, цифры путаются посреди предложения. Right-to-left — это не зеркало, которое переворачивают в самом конце. Это ограничение, которое несёшь с первого вайрфрейма.

Что для этого реально требуется в нашей сборке: направление документа определяется на сервере и отправляется в первой же отрисовке — локаль задаёт dir="rtl" и lang ещё до того, как что-либо отрисуется, поэтому нет вспышки left-to-right-макета, который перещёлкивается после гидратации. Направленные элементы зеркалятся по смыслу, а не по случайности: стрелки переворачиваются через намеренный transform, а макет использует логические свойства (start/end, а не left/right), чтобы поля, границы и выравнивание следовали оси чтения, а не жёстко заданной стороне. Встроенные латинские слова, цифры и моноширинные токены изолированы по правилам bidi, поэтому «Brief #A7F3» или «LCP < 2.5s» остаются целыми внутри арабского предложения, а не переупорядочиваются; межбуквенный интервал, предназначенный для латинских прописных, нейтрализуется, чтобы связное арабское письмо не разрывалось визуально. Даже транзакционное письмо уходит в направлении right-to-left.

Дело не только в арабском. Сайт поставляется с полностью переведённым контентом также на русском и китайском, поэтому эти посетители читают родной текст, а не английский с прикрученными к нему чужими словами. Перевод — это базовый минимум; учитывающий направление макет — это та часть, которую большинство команд пропускают.

От чего мы отказываемся: машинно переводить и выкатывать, относиться к RTL как к постфактумной задаче на CSS или позволять макету, который дышал только на английском, решать, как каждый другой язык ляжет на страницу. Мы не измеряем качество критерием «оно отрисовывается» — арабский должен читаться так, словно он был спроектирован первым.

Принцип: язык — это не таблица строк, это система чтения. Для right-to-left это означает направление в первой же отрисовке, логические свойства вместо жёстко заданных сторон и изолированные по bidi числа — а не перевёрнутую таблицу стилей, прикрученную в конце. Когда арабский читается как преднамеренный, а не портированный, значит, вы построили сайт для него, а не вокруг него.

Обсудить проект