Библиотека Element Plus предоставляет механизм локализации интерфейса с помощью встроенных языковых пакетов. Каждый компонент поддерживает отображение текстов, сообщений об ошибках, подсказок и других элементов на нескольких языках, что позволяет легко создавать многоязычные приложения.
Для использования встроенного языкового пакета необходимо
импортировать его из основной библиотеки
element-plus/es/locale. Например, для русского языка:
import { createApp } from 'vue';
import ElementPlus from 'element-plus';
import ruLocale from 'element-plus/es/locale/lang/ru';
const app = createApp(App);
app.use(ElementPlus, { locale: ruLocale });
app.mount('#app');
В данном примере ruLocale содержит все переводы для
компонентов Element Plus на русский язык. При инициализации плагина
через app.use(ElementPlus, { locale: ruLocale }) библиотека
автоматически подставляет соответствующие тексты в компоненты.
Element Plus включает несколько предопределённых языковых пакетов:
en — английскийzhCn — китайский (упрощённый)zhTw — китайский (традиционный)ru — русскийfr — французскийde — немецкийes — испанскийja — японскийКаждый пакет предоставляет объект с ключами для всех компонентов, включая сообщения об ошибках в формах, подписи к кнопкам, уведомления и подсказки.
Element Plus поддерживает динамическую смену языка без перезагрузки
приложения. Для этого используется функция ElLocale и метод
use:
import { ElMessage } from 'element-plus';
import { locale } from 'element-plus';
import enLocale from 'element-plus/es/locale/lang/en';
import ruLocale from 'element-plus/es/locale/lang/ru';
// Установка русского языка
locale.use(ruLocale);
// Сообщение будет на русском
ElMessage({
message: 'Привет, мир!',
type: 'success'
});
// Переключение на английский
locale.use(enLocale);
ElMessage({
message: 'Hello, world!',
type: 'success'
});
Это особенно полезно для приложений с пользовательским выбором языка.
Каждый языковой пакет — это объект с вложенной структурой, где ключи соответствуют компонентам и типам сообщений:
{
el: {
colorpicker: { confirm: 'OK', clear: 'Очистить' },
datepicker: {
now: 'Сейчас',
today: 'Сегодня',
cancel: 'Отмена',
confirm: 'OK',
sel ectDate: 'Выберите дату'
},
messagebox: {
title: 'Сообщение',
confirm: 'OK',
cancel: 'Отмена',
error: 'Некорректный ввод'
}
}
}
Эта структура обеспечивает точное соответствие перевода каждому компоненту и типу сообщения.
Можно создавать свои дополнения или модифицировать существующие
языковые пакеты. Например, для добавления собственного текста к
компоненту ElTable:
import ruLocale fr om 'element-plus/es/locale/lang/ru';
const customLocale = {
...ruLocale,
el: {
...ruLocale.el,
table: {
...ruLocale.el.table,
emptyText: 'Нет данных для отображения'
}
}
};
app.use(ElementPlus, { locale: customLocale });
Такой подход позволяет сохранять стандартные переводы и одновременно адаптировать отдельные компоненты под конкретные требования приложения.
Для сложных проектов, где требуется полноценная система многоязычности, Element Plus интегрируется с Vue I18n. В этом случае языковые пакеты Element Plus объединяются с основными переводами приложения:
import { createI18n } from 'vue-i18n';
import ElementPlus from 'element-plus';
import ruElement from 'element-plus/es/locale/lang/ru';
import ruApp from './locales/ru.json';
const i18n = createI18n({
locale: 'ru',
messages: {
ru: {
...ruApp,
...ruElement
}
}
});
const app = createApp(App);
app.use(i18n);
app.use(ElementPlus, { locale: i18n.global.t });
app.mount('#app');
Такой способ обеспечивает единый источник переводов для всего приложения, включая компоненты Element Plus и пользовательские элементы интерфейса.
Встроенные языковые пакеты Element Plus обеспечивают мощный и гибкий инструмент для локализации интерфейса, позволяя создавать удобные и понятные многоязычные приложения без необходимости ручного перевода каждого компонента.