Element Plus предоставляет мощную систему компонентов для создания форм с валидацией, включающую возможность локализации сообщений об ошибках. Правильная настройка локализации особенно важна для многоязычных приложений, где пользовательский интерфейс должен быть адаптирован под язык пользователя.
Для изменения языка всего приложения используется функция
ElLocale из пакета element-plus. Локаль можно
установить глобально при инициализации приложения:
import { createApp } from 'vue';
import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import ru from 'element-plus/es/locale/lang/ru';
const app = createApp(App);
app.use(ElementPlus, { locale: ru });
app.mount('#app');
В этом примере подключена русская локаль. Все компоненты, включая сообщения валидации по умолчанию, будут использовать русский язык.
Ключевые моменты:
locale принимает объект локали, предоставленный Element
Plus.en, zhCn, fr и т.д.Element Plus использует объект rules для определения
правил валидации в компонентах <el-form>. Примеры
правил с локализованными сообщениями:
const rules = {
username: [
{ required: true, message: 'Пожалуйста, введите имя пользователя', trigger: 'blur' },
{ min: 3, max: 12, message: 'Длина имени должна быть от 3 до 12 символов', trigger: 'blur' }
],
email: [
{ required: true, message: 'Введите адрес электронной почты', trigger: 'blur' },
{ type: 'email', message: 'Введите корректный email', trigger: ['blur', 'change'] }
]
};
При подключении русской локали по умолчанию можно использовать
переводы встроенных сообщений валидации для правил типа
required, email и т.д. При необходимости можно
переопределять их вручную в объекте rules.
Особенности:
trigger определяет событие, на которое
срабатывает проверка.min и max.В приложениях с поддержкой нескольких языков может потребоваться
динамически менять язык сообщений. Для этого используется
ElForm в сочетании с реактивной локалью:
import { reactive, watch } from 'vue';
import { ElLocale } from 'element-plus';
import ru from 'element-plus/es/locale/lang/ru';
import en from 'element-plus/es/locale/lang/en';
const state = reactive({
currentLocale: 'ru'
});
watch(() => state.currentLocale, (newLocale) => {
ElLocale.use(newLocale === 'ru' ? ru : en);
});
После изменения currentLocale все компоненты Element
Plus автоматически обновят локализованные сообщения валидации.
Для кастомных правил валидации, которые реализуются через функцию
validator, сообщения также можно локализовать:
const rules = {
password: [
{
validator: (rule, value) => {
if (!/[A-Z]/.test(value)) {
return new Error(state.currentLocale === 'ru'
? 'Пароль должен содержать хотя бы одну заглавную букву'
: 'Password must contain at least one uppercase letter');
}
return true;
},
trigger: 'blur'
}
]
};
Это позволяет поддерживать единый язык интерфейса и сообщений при любых сложных правилах валидации.
Element Plus позволяет также локализовать глобальные сообщения ошибок
для всех форм через ElMessage:
import { ElMessage } from 'element-plus';
ElMessage({
message: state.currentLocale === 'ru'
? 'Произошла ошибка при отправке формы'
: 'An error occurred while submitting the form',
type: 'error'
});
Таким образом, все уведомления о валидации, включая глобальные и локальные ошибки, могут быть синхронизированы с выбранной локалью приложения.
required, email, number), чтобы
минимизировать ручную работу.ElLocale.use() и
реактивные watch для синхронизации компонентов.Локализация валидации в Element Plus позволяет создавать формы, полностью адаптированные под язык пользователя, включая стандартные и кастомные правила, а также динамическое переключение языков в реальном времени.