Языки и локализация
Поддерживаемые языки
| Код | Язык |
|---|---|
ru | Русский |
en | Английский |
Язык платформы в runtime
Админ-панель → Общие настройки (/admin-panel/settings/general) → поле Язык по умолчанию.
Значение хранится в таблице config (ключ language) и применяется в runtime через GetLanguageRepository и middleware SetLocaleFromConfig:
- HTML-атрибут
langиog:locale - PHP-локаль Laravel (
config/app.php) - Moment.js (
moment.localeвresources/js/app.js) - Загрузка frontend-переводов (
laravel-vue-i18n)
Изменение языка в админ-панели вступает в силу сразу, без пересборки frontend.
VITE_APP_LOCALE vs runtime
VITE_APP_LOCALE (.env) | Язык из админ-панели | |
|---|---|---|
| Назначение | Первоначальный сид (ConfigSeeder) и production-сборка | Активный язык работающего сайта |
| Когда менять | При деплое / первом запуске | В любой момент через админ-панель |
ini
VITE_APP_LOCALE=ruПосле сида runtime-язык определяется настройкой в БД, а не переменной окружения.
Файлы переводов
Frontend (Vue / JavaScript)
resources/lang/ru.json — строки интерфейса (русский)
resources/lang/en.json — строки интерфейса (английский)Файлы загружаются динамически в resources/js/app.js через laravel-vue-i18n:
js
resolve: (lang) => import(`../lang/${lang}.json`)Добавляйте новые строки в оба файла с одинаковыми ключами.
PHP / Backend
resources/lang/ru/*.php — auth, validation, mail, errors, meta и др.
resources/lang/en/*.php — те же группы для английскогоLaravel использует fallback_locale = 'en'. Локаль берётся из настроек админ-панели, а не из .env.
Форматирование дат
Moment.js использует локали ru (русский) и en-gb (английский). Локаль переключается автоматически вместе с языком платформы.
Добавление нового языка
- Создайте
resources/lang/{code}.jsonс переведёнными строками - Создайте каталог
resources/lang/{code}/с PHP-файлами переводов (скопируйте структуру изen/) - Добавьте локаль Moment.js в
resources/js/app.js - Добавьте код в список допустимых языков в
GeneralSettingsController(in:en,ru)