> For the complete documentation index, see [llms.txt](https://docs.johncms.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.johncms.com/10.0/multiyazychnost/perevod-johncms-na-drugie-yazyki.md).

# Перевод JohnCMS на другие языки

JohnCMS является мультиязычной CMS. К сожалению разработчики не знают всех языков, которые существуют на планете и для того чтобы система оставалась мультиязычной, необходимо чтобы люди, знающие другие языки, помогали с переводом.\
Мы постарались максимально упростить процесс перевода системы на другие языки.

Есть два способа поучаствовать в переводе:

1. **Через Crowdin** — перевод прямо в браузере, не требует навыков программирования. Подходит большинству переводчиков.
2. **Через пулреквест на GitHub** — редактирование `.po`-файлов в репозитории. Подходит тем, кто привык работать с git и программами вроде Poedit.

Переводы между Crowdin и репозиторием синхронизируют разработчики вручную, поэтому оба способа равнозначны — выбирайте удобный.

## Способ 1: перевод через Crowdin

Чтобы поучаствовать в переводе нужно выполнить некоторые действия. Давайте рассмотрим их по порядку.

Переходим по ссылке [translate.johncms.com](https://translate.johncms.com/)

Вам необходимо авторизоваться на сайте. Если у вас уже есть учетная запись на crowdin.com или вы зарегистрированы в Facebook, Google, Twitter, Github или Gitlab, то можете нажать на кнопку **Log in.** Перед вами появится окно авторизации в котором вы можете ввести логин и пароль от учетной записи или войти через описанные выше сервисы.\
Если учетной записи нет, то нажимаете на Sign up и регистрируетесь.

![страница авторизации](/files/-MUj27dr87Uhu2P1Yegd)

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

![список языков](/files/-MV1VSYmpwxtX1X45p3g)

Если нужного языка нет в списке, мы можем его добавить — см. раздел [Добавление нового языка](#dobavlenie-novogo-yazyka) ниже.

После выбора языка перед вами появится эта страница:

![список переводов](/files/-MUj2EaT-vrEeC7tMtD6)

На этой странице отображен список переводов для модулей системы и процент фраз, которые уже переведены.

Выбираете модуль, который хотите перевести. Попадаете на страницу со списком фраз:

![список фраз](/files/-MV1UQ50x-Alz-XXROng)

В левой части отображается список фраз для перевода.\
В центре отображается сам перевод и информация о том, в каких файлах содержится фраза (**context**). Так же вы можете посмотреть как эта фраза переведена на другие языки, для этого разверните блок **OTHER LANGUAGES.** Так же есть уже автоматически переведенные варианты (**TM and MT Suggestions**), которые вы можете выбрать если там есть подходящий вариант. Если подходящего варианта в автоматических переводах нет, то нужно вписать перевод вручную в поле ввода и нажать **Save** (сохранить). После сохранения автоматически откроется следующая фраза для перевода в текущем модуле.

После завершения перевода модуля, вы можете выйти назад в список модулей. Для этого вверху слева нажимаете на меню и выбираете Quit Editor. После этого вы попадете обратно в список модулей и можете переводить другие модули аналогичным образом.

После того как Вы выполняете перевод, Ваши переводы проходят проверку разработчиками и загружаются в CMS, а потом с выходом обновлений становятся доступны всем.

## Способ 2: перевод через пулреквест на GitHub

Если вам удобнее работать с файлами напрямую, вы можете переводить в репозитории и отправлять изменения пулреквестом.

Файлы переводов лежат в формате gettext `.po`:

* `system/locale/<язык>.po` — системные фразы (ядро, общие шаблоны);
* `modules/<модуль>/locale/<язык>.po` — фразы конкретного модуля (например, `modules/forum/locale/de.po`).

Порядок действий:

1. Сделайте форк репозитория [johncms/johncms](https://github.com/johncms/johncms) и создайте ветку.
2. Откройте нужный `.po`-файл в любом редакторе переводов — например, [Poedit](https://poedit.net/), Lokalize, Gtranslator или обычном текстовом редакторе. Специализированные программы удобнее: они показывают исходную фразу, перевод и формы множественного числа.
3. Переведите фразы и сохраните файл.
4. Отправьте пулреквест с изменёнными `.po`-файлами.

Важные моменты:

* **Редактируйте только `.po`-файлы.** Файлы `.lng.php` генерируются из `.po` автоматически (командой `composer translate`), а `.pot` — шаблоны, которые создаются из исходного кода. Их править вручную не нужно: если в пулреквесте будут только `.po`, словари `.lng.php` пересоберут разработчики.
* Не меняйте исходные фразы (`msgid`) — переводится только `msgstr`.
* Сохраняйте плейсхолдеры (`%s`, `%d`) и HTML-теги из оригинала — без них система не сможет подставить значения.
* После принятия пулреквеста разработчики загружают перевод в Crowdin вручную, так что конфликтов между способами не возникает.

## Добавление нового языка

Если нужного языка ещё нет ни в Crowdin, ни в репозитории, свяжитесь с разработчиками любым удобным способом (например: <info@johncms.com>) и напишите название языка — мы его добавим.

Обращаем Ваше внимание, что для того, чтобы перевод был включен в дистрибутив, он должен охватывать как минимум 50% фраз.
