Как Вы знаете, JohnCMS сменил формата языков, то есть той системы, которая реализует многоязычность.
Ранее в JohnCMS для реализации многоязычности использовались .ini файлы, в которых хранились языки в формате ключ=>фраза. Эти файлы потом считываются системой и парсятся в PHP массив, который и доступен для применения в виде переменной $lng.
Мультиязычность была реализована еще в далеком 2010 году.
Однако время идет и появились отличные онлайн сервисы (к примеру Crowdin, Transifex и другие) и программы, которые очень сильно помогают разработчикам с переводом, систематизируют и упорядочивают их работу, позволяют избежать ошибок.
Работа с ключами массивов, несмотря на свою очевидность, в большом проекте превращается в реальный геморой.
Требовалось какое-то решение проблемы.
Прежде всего я исследовал возможности онлайн сервисов, программ, почитал кучу статей на тему как сегодня решается вопрос интернационализации (i18n) в современных программах.
Да, формат PHP array поддерживается многими сервисами перевода (в частности Crowdin), но хотелось чего-то более удобного и очевидного.
Сразу же натолкнулся на наиболее растространенное средство (для всех языков программирования) интернационализации - это GNU Gettext.
Данное расширение существует и для PHP, формат Gettext используется во многих популярных проектах, например Wordpress.
Несмотря на кажущуюся (по сравнению с PHP array) сложность самих языковых файлов, на деле данный формат дает большое удобство и предоставляет много возможностей для разработчика.
---
ВНИМАНИЕ!
Начиная с JohnCMS 9.0 используется значительно усовершенствованная и радикально упрощенная система работы с языками.
Данные инструкции считаются устаревшими.
Пожалуйста смотрите новые инструкции.