[Translitor] - Альтернатива транслитерации псевдонимов

Оптимизированная альтернатива всем известного, популярного компонента translit.

Сравним вот такую фразу
«На _ (Золотом крыльце) / Сидели. Царь! Царевич»

Сравните что творит Translit
«na-(zolotom-kryilcze)-/-sideli.-czar!-czarevich»

С тем, как отработал Translitor
na-zolotom-kryltse-sideli-tsar-tsarevich



— Класс транслитерации позаимствован из Laravel, и немного допилен. Это принципиально другая работа, несмотря на схожее поведение.

— Улучшена фильтрация ненужных символов. В отличие от Translit, который пропускает скобки, подчеркивания, слеши, различные служебные символы, Translitor их не пропускает. В поле alias попадают только буквы, цифры. Все остальное заменяется разделителем-заменителем (дефисом)

— Оптимизирована таблица транслитерации. Мне не нравилось как меняются некоторые русские буквы

Вот и все. В целом никаких настроек не требуется. Компонент работает сразу из коробки.
Николай Савин
18 апреля 2019, 10:00
modx.pro
11
3 745
+14
Поблагодарить автора Отправить деньги

Комментарии: 20

Павел Голубев
18 апреля 2019, 10:07
0
А где можно сам допиленный класс Translitor глянуть?
brioni
18 апреля 2019, 10:56
+1
теперь у компонента уже 2 скачивания) Спасибо!
    UDAV
    18 апреля 2019, 11:22
    3
    +6
    Обычный translit тоже так может!
    Настройка friendly_alias_restrict_chars делаем alphanumeric и получаем тоже самое, без лишнего мусора.
      Alexey T
      18 апреля 2019, 14:22
      3
      +2
      Или так:
      'friendly_alias_restrict_chars' => 'pattern',
      'friendly_alias_restrict_chars_pattern' => '/[\0\x0B\t\n\r\f\a&=+°%#«»…<>—№!",.()\/\~:`@\?\[\]\{\}\|\^\'\\\\]/',
        Николай Савин
        18 апреля 2019, 17:32
        +1
        Возможно, я не знал. Как по мне, подобный функционал должен работать сразу. Может я и не прав.
        Напомню, меня еще не устраивала транслитерация некоторых русских букв.
          Николай
          18 апреля 2019, 18:53
          0
          Согласен, теперь буду этот транслит использовать на всех сайтах
        Anton
        20 апреля 2019, 10:56
        +1
        Поставил себе, работает отлично. Спасибо за компонент!
        gruzoveek
        26 апреля 2019, 09:14
        +1
        присоединяюсь к благодарностям!
          iWatchYouFromAfar
          02 мая 2019, 01:28
          +1
          Translitor вырезает все точки, это не очень хорошо, например когда используешь плагины или компоненты для транслитерации других вещей (например папок или файлов). Посему в translit можно указать свой паттерн, а тут нет. Это большой минус.
            Николай Савин
            02 мая 2019, 20:41
            +1
            Паттерн по умолчанию согласен — нужен. Сделаю.
              Wassi Wassinen
              13 мая 2019, 03:58
              0
              +
                Владимир
                19 октября 2022, 16:04
                +1
                Я отредактировай файл translitor.class.php
                Строку
                $title = preg_replace('![^'.preg_quote($separator).'\pL\pN\s]+!u', '', $this->lower($title));
                заменил на
                $title = preg_replace('![^'.preg_quote($separator).'\.\pL\pN\s]+!u', '', $this->lower($title));
                И норм, теперь точки на месте)
            Andrew
            06 июля 2019, 09:57
            0
            Надо попробовать у себя, автору спасибо.
              Дмитрий
              22 июля 2022, 07:14
              0
              Здравствуйте, у меня translitor не дружит с пакетом Gallery, в админке не отображаются превьюшки. В адресе вырезается точка. Удалил — сразу заработало. Последняя версия modx.
              Помогите разобраться)
                Николай Савин
                22 июля 2022, 13:01
                0
                Здравствуйте. Вам наверное лучше установить родной пакет translit
                Вячеслав
                27 июня 2023, 17:10
                0
                На PHP версии 8 выдает ошибку
                /home/s32719/www/core/components/translitor/model/translitor.class.php 188
                PHP warning: Undefined array key «ru»
                Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
                20