Верстка сайту з підтримкою RTL-мов

Наша компанія займається розробкою, підтримкою та обслуговуванням сайтів будь-якої складності. Від простих односторінкових сайтів до масштабних кластерних систем, побудованих на мікро сервісах. Досвід розробників підтверджено сертифікатами від вендорів.
Розробка та обслуговування будь-яких видів сайтів:
Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Пропоновані послуги
Показано 1 з 1 послугУсі 2065 послуг
Верстка сайту з підтримкою RTL-мов
Середня
~2-3 робочих дні
Часті питання
Наші компетенції:
Етапи розробки
Останні роботи
  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1171
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    874
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1094
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    831
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851

Підтримка RTL-мов у верстці веб-сайту

RTL (Right-to-Left) забезпечує підтримку мов, які пишуться справа наліво: арабська, іврит, перська (фарсі), урду. RTL-верстка — це не просто direction: rtl, це системна переробка всіх direction-sensitive CSS-властивостей та UI-компонентів.

Основна настройка RTL

<html dir="rtl" lang="ar">
/* Глобальний скид для RTL */
[dir="rtl"] {
  direction: rtl;
  unicode-bidi: embed;
}

CSS Logical Properties

Замість фізичних властивостей (left, right, margin-left), використовуйте logical properties, які автоматично адаптуються до dir:

Фізичне Логічне
margin-left margin-inline-start
margin-right margin-inline-end
padding-left padding-inline-start
border-left border-inline-start
left: 0 inset-inline-start: 0
text-align: left text-align: start
float: left float: inline-start

Приклад: кнопка «назад» зі стрілкою — в LTR стрілка ←, в RTL стрілка →. За допомогою logical properties це обробляється автоматично:

.back-arrow {
  margin-inline-end: 8px; /* в LTR: margin-right, в RTL: margin-left */
  /* іконка переворачується через transform або напрямок іконки */
}

Іконки та зображення

Іконки з семантичним напрямком (стрілки, кнопки back/forward) мають дзеркалитися для RTL:

[dir="rtl"] .directional-icon {
  transform: scaleX(-1);
}

Іконки без напрямку (серце, зірка, галочка) НЕ мають дзеркалитися. Іконки з текстом (логотипи) НЕ мають дзеркалитися.

Flexbox та Grid в RTL

flex-direction: row в RTL автоматично розворачується. Однак явні margin-left/margin-right не змінюються — їх потрібно замінити на logical properties.

/* Неправильно: */
.nav-item + .nav-item { margin-left: 16px; }

/* Правильно: */
.nav-item + .nav-item { margin-inline-start: 16px; }

Шрифти для RTL-мов

Арабський текст вимагає спеціальних шрифтів: Noto Sans Arabic, Tajawal, Cairo, IBM Plex Sans Arabic. Цифри в арабському контексті можуть відображатися як східноарабські цифри (٠١٢٣٤٥٦٧٨٩) або західні — залежить від locale.

Двонаправлений текст (BiDi)

Сторінка може містити обидва напрямки (арабська + англійська). CSS-властивість unicode-bidi: isolate ізолює блоки:

.ltr-content {
  direction: ltr;
  unicode-bidi: isolate;
}

Для інлайнових елементів із протилежним напрямком — використовуйте тег <bdi>.

Тестування RTL

Інструмент для швидкої перевірки: Chrome DevTools → Elements → додайте dir="rtl" до <html>. Або використовуйте розширення RTL Toggler.

Тест Playwright:

test('RTL layout', async ({ page }) => {
  await page.goto('/ar');
  await expect(page.locator('html')).toHaveAttribute('dir', 'rtl');
  // Перевіріть позиціонування ключових елементів
});

Терміни

Додавання RTL-підтримки до готового LTR-сайту: 2–5 днів (залежить від обсягу використання фізичних CSS-властивостей). Розробка з RTL з нуля з використанням logical properties: без додаткового часу при правильній практиці.