Symphony CMS: транслитерация русских символов в строке URL (russian handles)

Содержание

По умолчанию в Symphony CMS нет транслитерации русских символов. Но это легко сделать самому.

Я очень долго негодовал, потому что не знал как научить могучему русскому языку видимо не менее могучую Симфонию. А решение простое.

Все настройки и языковые тоже, Symphony хранит в symphony/lib/lang/lang.en.php, по умолчанию это английский язык. Есть русифицирование — lang_russian.php (можете найти его в расширениях и обсуждениях - разработка Игоря Богданова (a.k.a. bogdanov, ibcico) — https://github.com/igorbogdanov/lang_russian

Установка

Вариант 1

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

Необходимо скачать расширение Localisation Manager и установить его. Скорее всего данный языковой файл уже будет включен в расширение Localisation Manager. Если русский язык еще не доступен в Localisation Manager, скопируйте файл lang.ru.php в директорию /extensions/localisationmanager/lang в месте установки Symphony CMS.

После установки Localisation Manager в настройках системы появится возможность изменять язык. Языковые настройки могут быть изменены каждым отдельным пользователем для себя лично по своему усмотрению.

Вариант 2

Данный вариант установки можно использовать без установки расширения Localisation Manager. Однако он позволяет изменить только глобальные языковые настройки без возможности выбора языка каждым отдельным пользователем.

Скопируйте lang.ru.php в директорию /symphony/lib/lang. Откройте для редактирования файл /manifest/config.php и найдите там строчку 'lang' => 'en'. Замените её на 'lang' => 'ru'.

Другой вариант (не устанавливать расширение), а просто дополнить lang.en.php транслитерацией для русских символов. То есть добавить:

'/А/' => 'A',
'/а/' => 'a',
'/Б/' => 'B',
'/б/' => 'b',
'/В/' => 'V',
'/в/' => 'v',
'/Г/' => 'G',
'/г/' => 'g',
'/Д/' => 'D',
'/д/' => 'd',
'/Е/' => 'E',
'/е/' => 'e',
'/Ё/' => 'E',
'/ё/' => 'e',
'/Ж/' => 'ZH',
'/ж/' => 'zh',
'/З/' => 'Z',
'/з/' => 'z',
'/И/' => 'I',
'/и/' => 'i',
'/Й/' => 'J',
'/й/' => 'j',
'/К/' => 'K',
'/к/' => 'k',
'/Л/' => 'L',
'/л/' => 'l',
'/М/' => 'M',
'/м/' => 'm',
'/Н/' => 'N',
'/н/' => 'n',
'/О/' => 'O',
'/о/' => 'o',
'/П/' => 'P',
'/п/' => 'p',
'/Р/' => 'R',
'/р/' => 'r',
'/С/' => 'S',
'/с/' => 's',
'/Т/' => 'T',
'/т/' => 't',
'/У/' => 'U',
'/у/' => 'u',
'/Ф/' => 'F',
'/ф/' => 'f',
'/Х/' => 'H',
'/х/' => 'h',
'/Ц/' => 'TS',
'/ц/' => 'ts',
'/Ч/' => 'CH',
'/ч/' => 'ch',
'/Ш/' => 'SH',
'/ш/' => 'sh',
'/Щ/' => 'SCH',
'/щ/' => 'sch',
'/Ъ/' => '',
'/ъ/' => '',
'/Ы/' => 'Y',
'/ы/' => 'y',
'/Ь/' => '',
'/ь/' => '',
'/Э/' => 'E',
'/э/' => 'e',
'/Ю/' => 'YU',
'/ю/' => 'yu',
'/Я/' => 'YA',
'/я/' => 'ya',

Лучше сделать 2 варианта!!! Вдруг вы решите переключить язык обратно на English; тогда при редактировании контента handles перезапишутся согласно новым установкам и если в системном файле lang.en.php не будет транслитерации для русских символов (а вы уже решили, что она вам нужна), то с сохранением документа обновятся и handles.

Всё должно заработать. Всё таки великая вещь Симфония!!