Skip to content

Как добавить свой языковой пакет ​

В KaevCMS можно добавить, например, немецкий, французский или испанский язык. Для установки базового пакета не нужно менять файлы ядра или выполнять миграции.

Рассмотрим пример с немецким языком (de). Для другого языка замените de на нужный код.

1. Подготовьте файлы ​

В корне установленной KaevCMS откройте каталог lang. Он находится рядом с папками app, config и public, а не внутри public.

Добавьте два файла:

text
KaevCMS/
└── lang/
    ├── en.json
    ├── ru.json
    ├── de.json             ← переводы интерфейса
    └── de/
        └── language.php    ← информация о языке

Остальные существующие файлы не удаляйте.

2. Создайте описание языка ​

Файл lang/de/language.php:

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. Небольшой пример:

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. Включите язык в админке ​

  1. Откройте Админка → Настройки → Языки.
  2. В списке появится Deutsch (de) с отметкой «Языковой пакет».
  3. Отметьте его как включённый.
  4. При необходимости выберите его как язык сайта по умолчанию. Для незаполненных переводов оставьте русский или английский резервным языком.
  5. Нажмите «Сохранить настройки языков».

После этого 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% не гарантирует, что переведены все тексты модулей, писем и страниц.

Настройки языков · Общая документация

Независимый открытый проект. Lineage II — собственность правообладателей.