[Translitor] - Альтернатива транслитерации псевдонимов
Оптимизированная альтернатива всем известного, популярного компонента translit.
Сравним вот такую фразу
«На _ (Золотом крыльце) / Сидели. Царь! Царевич»
Сравните что творит Translit
«na-(zolotom-kryilcze)-/-sideli.-czar!-czarevich»
С тем, как отработал Translitor
na-zolotom-kryltse-sideli-tsar-tsarevich
— Класс транслитерации позаимствован из Laravel, и немного допилен. Это принципиально другая работа, несмотря на схожее поведение.
— Улучшена фильтрация ненужных символов. В отличие от Translit, который пропускает скобки, подчеркивания, слеши, различные служебные символы, Translitor их не пропускает. В поле alias попадают только буквы, цифры. Все остальное заменяется разделителем-заменителем (дефисом)
— Оптимизирована таблица транслитерации. Мне не нравилось как меняются некоторые русские буквы
Вот и все. В целом никаких настроек не требуется. Компонент работает сразу из коробки.
Сравним вот такую фразу
«На _ (Золотом крыльце) / Сидели. Царь! Царевич»
Сравните что творит Translit
«na-(zolotom-kryilcze)-/-sideli.-czar!-czarevich»
С тем, как отработал Translitor
na-zolotom-kryltse-sideli-tsar-tsarevich
— Класс транслитерации позаимствован из Laravel, и немного допилен. Это принципиально другая работа, несмотря на схожее поведение.
— Улучшена фильтрация ненужных символов. В отличие от Translit, который пропускает скобки, подчеркивания, слеши, различные служебные символы, Translitor их не пропускает. В поле alias попадают только буквы, цифры. Все остальное заменяется разделителем-заменителем (дефисом)
— Оптимизирована таблица транслитерации. Мне не нравилось как меняются некоторые русские буквы
Вот и все. В целом никаких настроек не требуется. Компонент работает сразу из коробки.
Поблагодарить автора
Отправить деньги
Комментарии: 23
А где можно сам допиленный класс Translitor глянуть?
Спасибо
теперь у компонента уже 2 скачивания) Спасибо!
Обычный translit тоже так может!
Настройка friendly_alias_restrict_chars делаем alphanumeric и получаем тоже самое, без лишнего мусора.
Настройка friendly_alias_restrict_chars делаем alphanumeric и получаем тоже самое, без лишнего мусора.
Или так:
'friendly_alias_restrict_chars' => 'pattern',
'friendly_alias_restrict_chars_pattern' => '/[\0\x0B\t\n\r\f\a&=+°%#«»…<>—№!",.()\/\~:`@\?\[\]\{\}\|\^\'\\\\]/',
Возможно, я не знал. Как по мне, подобный функционал должен работать сразу. Может я и не прав.
Напомню, меня еще не устраивала транслитерация некоторых русских букв.
Напомню, меня еще не устраивала транслитерация некоторых русских букв.
Согласен, теперь буду этот транслит использовать на всех сайтах
Поставил себе, работает отлично. Спасибо за компонент!
Не за что. Для себя делал, в основном
присоединяюсь к благодарностям!
Translitor вырезает все точки, это не очень хорошо, например когда используешь плагины или компоненты для транслитерации других вещей (например папок или файлов). Посему в translit можно указать свой паттерн, а тут нет. Это большой минус.
Паттерн по умолчанию согласен — нужен. Сделаю.
+
Я отредактировай файл 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));
И норм, теперь точки на месте)
Надо попробовать у себя, автору спасибо.
Здравствуйте, у меня translitor не дружит с пакетом Gallery, в админке не отображаются превьюшки. В адресе вырезается точка. Удалил — сразу заработало. Последняя версия modx.
Помогите разобраться)
Помогите разобраться)
Здравствуйте. Вам наверное лучше установить родной пакет translit
На PHP версии 8 выдает ошибку
/home/s32719/www/core/components/translitor/model/translitor.class.php 188
PHP warning: Undefined array key «ru»
/home/s32719/www/core/components/translitor/model/translitor.class.php 188
PHP warning: Undefined array key «ru»
Так-то это не ошибка, а предупреждение.
modx 3.0.5 — при загрузке картинок удаляет точку перед расширением файла (получается вместо imagename.png — imagenamepng), соответственно картинка не работает. это норма или надо править где-то к конфиге? пробовал убирать точку из friendly_alias_trim_chars — ничего не поменялось. в friendly_alias_restrict_chars_pattern точка отсутствует.
пакет Translitor удаляет точку, проверьте, может он у вас установлен
Ну конечно был установлен, я ведь поэтому и писал в теме этого пакета. Я спрашивал, как отучить компонент удалять точку в имени файлов при загрузке (править какой-то конфиг?) или, если нет, то как заставить его не вмешиваться в имена файлов при зашрузке.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.