Дмитрий Яковлев


GetSimple Legacy CMS 2025.1

Первый релиз GetSimple Legacy CMS в 2025 году выпущен в мой день рождения, как подарок сообществу пользователей, которые могут начать использовать новые возможности релиза уже сегодня. Об этих возможностях я хочу рассказать подробнее.

По сути, релиз GetSimple Legacy CMS 2025.1 расширяет одну вспомогательную функцию, незаметную на первый взгляд, но упрощающую повседневную работу с системой управления контентом для тех пользователей, которые публикуют контент на разных языках.

Главное изменение в GetSimple Legacy CMS 2025.1 – это новый подход к автоматической транслитерации.

В оригинальной версии GetSimple CMS автоматическая транслитерация использовалась при генерировании идентификаторов (слагов) страниц. В GetSimple Legacy CMS применение автоматической транслитерации было расширено, она стала применяться для создания идентификаторов компонентов и при формировании имён, создаваемых пользователем директорий, для загружаемых файлов.

Как работает стандартная транслитерация

Правила для автоматической транслитерации определяются таблицей транслитерации, заданной в языковом файле. Языковой файл en_US.php содержит таблицу транслитерации, которая может быть изменена при помощи таблицы транслитерации, определённой в языковом файле, подключённом в настройках пользователя. Как правило, языковые файлы создаются в первую очередь для перевода пользовательского веб-интерфейса панели управления на язык пользователя, поэтому таблица транслитерации в них рассчитана на использование одного языка. Существенный недостаток такого подхода — это ограниченный набор символов в таблице транслитерации.

Решением проблемы может служить расширение таблицы транслитерации по умолчанию, однако для этого требуется привлечение носителей языков для помощи в сопоставлении символов их алфавитов с латинскими символами. Это большая работа, которую я хотел бы выполнить в будущем. Однако эта работа уже сделана проектом ICU (International Components for Unicode), а воспользоваться её результатом позволяет PHP расширение Intl.

Транслитерация с использованием класса Transliterator из PHP расширения Intl

Релиз GetSimple Legacy CMS 2025.1 добавляет поддержку автоматической транслитерации с использованием класса Transliterator, предоставляемого PHP расширением Intl.

По умолчанию автоматическая транслитерация выполняется обычным способом, описанным выше. Если вы хотите расширить возможности транслитерации, и на вашем веб-сервере включено PHP расширение Intl, то в файле gsconfig.php объявите постоянную GSTRANSLITERATIONMODE, присвоив ей значения 1 или 2.

Постоянная GSTRANSLITERATIONMODE. Режимы автоматической транслитерации

Объявление переменной GSTRANSLITERATIONMODE включает автоматическую транслитерацию с использованием класса Transliterator. При этом доступны два режима работы транслитерации, выбираемые установленным значением постоянной.

define('GSTRANSLITERATIONMODE', 1);

Режим транслитерации 1. Используется стандартное правило для транслитерации, доступное в PHP расширении Intl.

define('GSTRANSLITERATIONMODE', 2);

Режим транслитерации 2. Используется комбинированное правило на основе доступной таблицы транслитерации, определённой в языковом файле GetSimple Legacy CMS, и стандартного правила, доступного в PHP расширении Intl.

Если постоянная GSTRANSLITERATIONMODE не определена или определена с другими значениями, применяется стандартный способ транслитерации, без использования возможностей класса Transliterator.

Если у вас возникает вопрос о том, как на практике помогает использование расширенной возможности транслитерации, то приведу следующий пример. Пользователь работает с GetSimple Legacy CMS, у него выбран русский язык для русскоязычного веб-интерфейса панели управления. Пока он создаёт страницы с заголовками на русском или на английском языке, ему можно не думать над идентификаторами (слагами) страниц – они генерируются автоматически при сохранении страниц. Но если пользователю надо добавить страницы с заголовками на китайском языке? В этом случае придётся придумывать и набирать осмысленные идентификаторы (слаги) страниц самостоятельно, потому что в стандартной таблице транслитерации отсутствует поддержка алфавита для китайского языка. В этом случае, включение транслитерации с поддержкой PHP расширения Intl, упрощает работу пользователю – осмысленные идентификаторы (слаги) страниц продолжат генерировать автоматически.

Пример использования автоматической транслитерации заголовка страницы с китайского языка с использованием класса Transliterator в GetSimple Legacy CMS 2025.1

Другие изменения в автоматической транслитерации

Тем, кто не может или не хочет использовать PHP расширение Intl, стоит обратить внимание на изменения в стандартной таблице транслитерации, произведённые в релизе GetSimple Legacy CMS 2025.1.

Транслитерация с учётом регистра

В оригинальной версии GetSimple CMS и предыдущих версиях GetSimple Legacy CMS, результат транслитерации приводился к нижнему регистру. Теперь транслитерация сохраняет регистр, использованный в оригинальной строке.

ГОСТ 7.79—2000

Для алфавита русского языка теперь используется таблица транслитерации, основанная на правилах транслитерации славянских алфавитов по системе Б (с использованием буквосочетаний), определённой в ГОСТ 7.79—2000.

Так как главное предназначение автоматической транслитерации – формирование идентификаторов (слагов) страниц, идентификаторов компонентов и имён директорий, из таблицы транслитерации исключено использование диактрического знака гравис.

Стоит ли обновляться с предыдущего релиза GetSimple Legacy CMS?

Если изменения, сделанные в GetSimple Legacy CMS 2025.1, востребованы вами и повысят удобство работы с системой управления контентом, вопрос об обновлении не стоит – обновиться однозначно стоит. В ином случае, это обновление может быть пропущено до выхода следующего релиза GetSimple Legacy CMS.

Как всегда, вы можете поделиться со мной мыслями, идеями об изменениях для будущих версий GetSimple Legacy CMS, прислать свои реализации новых возможностей системы управления контентом в сообщениях в Телеграм.