Element Plus предоставляет встроенную поддержку Right-to-Left (RTL) интерфейсов, что особенно важно для приложений на языках с правосторонним письмом, таких как арабский, иврит или персидский. RTL влияет на расположение элементов, выравнивание текста, направление анимаций и иконок. Корректная настройка RTL позволяет создавать интерфейсы, полностью адаптированные под языки с противоположным направлением письма, без необходимости ручного переопределения стилей.
Для глобального применения RTL необходимо воспользоваться свойством
configProvider или глобальной настройкой
ElConfigProvider. В базовом случае это выглядит так:
import { createApp } from 'vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import App from './App.vue'
const app = createApp(App)
app.use(ElementPlus, {
locale: {/* выбранный язык */},
zIndex: 3000,
// Включение RTL
rtl: true
})
app.mount('#app')
Ключевой момент: после включения
rtl: true все компоненты Element Plus автоматически
переключаются на правостороннее отображение. Это затрагивает панели,
формы, таблицы, кнопки и модальные окна.
Element Plus позволяет менять направление интерфейса в процессе
работы приложения. Для этого используется глобальный метод
useGlobalConfig:
import { useGlobalConfig } from 'element-plus'
const globalConfig = useGlobalConfig()
globalConfig.rtl = true // включение RTL
globalConfig.rtl = false // возвращение к LTR
Динамическое переключение полезно, когда приложение поддерживает несколько языков, включая LTR и RTL одновременно. Компоненты автоматически реагируют на изменение конфигурации без перезагрузки страницы.
RTL влияет на несколько ключевых аспектов работы компонентов:
Выравнивание текста и элементов
ElInput, ElSelect, ElTable
автоматически меняют выравнивание текста на правое.Направление анимаций и стрелок
ElDropdown,
ElPopover) изменяют направление анимации.Flex и Grid компоненты
flex-direction и порядок колонок.ElRow и ElCol автоматически учитывают RTL
при расчёте смещений и выравнивания.Иконки и символы
el-icon-arrow-left,
el-icon-arrow-right) меняются на противоположные при
активации RTL.Для компонентов, использующих кастомные стили, важно учитывать
специальный селектор [dir="rtl"]. Element
Plus добавляет атрибут dir="rtl" на корневой элемент при
включении RTL, что позволяет применять CSS-правила:
/* Переопределение отступов для RTL */
[dir="rtl"] .custom-button {
margin-left: 10px;
margin-right: 0;
}
/* Изменение выравнивания текста */
[dir="rtl"] .custom-label {
text-align: right;
}
Использование этого подхода гарантирует, что кастомные элементы будут корректно отображаться в обеих направлениях.
Для полноценной поддержки RTL в многоязычных приложениях
рекомендуется комбинировать Element Plus с библиотекой
интернационализации, например, vue-i18n. При смене языка
можно одновременно переключать направление интерфейса:
import { useI18n } from 'vue-i18n'
import { useGlobalConfig } from 'element-plus'
const { locale } = useI18n()
const globalConfig = useGlobalConfig()
function switchLanguage(lang) {
locale.value = lang
globalConfig.rtl = lang === 'ar' || lang === 'he'
}
Такой подход обеспечивает автоматическое соответствие направления текста и компонентов выбранному языку, без необходимости вручную управлять стилями и позициями элементов.
dir="rtl",
требуют отдельного стилирования.left, right).RTL поддержка в Element Plus позволяет создавать профессиональные интерфейсы для пользователей с правосторонними языками, обеспечивая адаптивное выравнивание элементов, корректное отображение иконок, анимаций и текстов без дополнительных библиотек. При правильной конфигурации и сочетании с i18n можно динамически переключать направление интерфейса и полностью управлять многоязычным опытом пользователя.