Как добавить свой языковой пакет
В KaevCMS можно добавить, например, немецкий, французский или испанский язык. Для установки базового пакета не нужно менять файлы ядра или выполнять миграции.
Рассмотрим пример с немецким языком (de). Для другого языка замените de на нужный код.
1. Подготовьте файлы
В корне установленной KaevCMS откройте каталог lang. Он находится рядом с папками app, config и public, а не внутри public.
Добавьте два файла:
KaevCMS/
└── lang/
├── en.json
├── ru.json
├── de.json ← переводы интерфейса
└── de/
└── language.php ← информация о языкеОстальные существующие файлы не удаляйте.
2. Создайте описание языка
Файл lang/de/language.php:
<?php
return [
'code' => 'de',
'name' => 'German',
'native_name' => 'Deutsch',
'direction' => 'ltr',
'fallback' => 'en',
'author' => 'Your name',
];codeдолжен соответствовать имени папки (de).name— название на английском,native_name— на самом языке.direction—ltr(слева направо) либоrtl(справа налево).author— необязательная подпись автора перевода.fallback— метаданные пакета. Рабочий резервный язык сайта выбирается в админке, независимо от этой записи.
Поддерживаются обычные двух- или трёхбуквенные коды, а также коды с регионом вроде pt-BR. Код папки, JSON-файла и поле code должны совпадать.
3. Добавьте переводы
Создайте lang/de.json. Небольшой пример:
{
"Home": "Startseite",
"News": "Neuigkeiten",
"Sign in": "Anmelden",
"Save changes": "Änderungen speichern"
}Левая часть — ключ, по которому CMS ищет текст. Не переводите ключи: меняйте только правые значения.
Для полноценного перевода удобнее скопировать lang/en.json в lang/de.json, а затем последовательно перевести все значения.
Сохраните файл как корректный UTF-8 JSON. Если встречаются параметры вроде :name, :count или разделители форм множественного числа |, сохраните их в переводе — они нужны для подстановки данных.
TIP
Можно начать с нескольких строк. Не переведённые фразы будут использовать резервный перевод, а сам язык уже можно включить в настройках.
4. Разместите пакет на сервере
Загрузите папку lang/de/ и файл lang/de.json в каталог lang установленного сайта через файловый менеджер хостинга, SFTP или обычное развёртывание файлов.
Безопасность
Файл language.php — это исполняемый PHP-файл. Используйте пакеты только из доверенных источников и просматривайте их содержимое перед установкой. Не размещайте языковые файлы в публичной папке сайта.
5. Включите язык в админке
- Откройте Админка → Настройки → Языки.
- В списке появится Deutsch (de) с отметкой «Языковой пакет».
- Отметьте его как включённый.
- При необходимости выберите его как язык сайта по умолчанию. Для незаполненных переводов оставьте русский или английский резервным языком.
- Нажмите «Сохранить настройки языков».
После этого de станет доступен в переключателе языков. Если в списке его нет, проверьте пути файлов, совпадение кодов и корректность language.php.
6. Если нужен полный перевод
Два основных файла переводят большую часть общих подписей CMS, но дополнительные разделы могут использовать отдельные словари:
| Что ещё перевести | Где находятся переводы |
|---|---|
| Дополнительные надписи ядра | Например, lang/en/drivers.php, lang/en/audit.php, lang/en/rewards.php и другие PHP-файлы. Их аналоги можно создать в lang/de/. |
| Тексты модулей | В самих модулях: например, modules/donations/lang/en/messages.php. Для немецкого нужен вариант modules/donations/lang/de/messages.php. Название и описание модуля также могут храниться в module.json. |
| Новости, страницы и настройки сайта | Создаются и редактируются для немецкого языка в админке CMS. |
| Шаблоны писем | Редактируются для нужного языка в разделе «Почта». |
Для PHP-словарей сохраняйте структуру ключей, меняя текстовые значения. Дополнительные словари и файлы модулей устанавливайте только из доверенных источников; перед обновлением CMS сохраняйте собственные файлы и переводы.
Как считается процент перевода
Показатель на странице «Языки» сравнивает только ключи de.json с en.json. Даже 100% не гарантирует, что переведены все тексты модулей, писем и страниц.
