Почему результат библиотеки может отличаться
У большинства универсальных библиотек одна таблица для множества языков. В ней «щ», «х», «ц», «й» и другие буквы могут быть записаны не так, как у Яндекса. Узнать это заранее по описанию невозможно: нужно запускать код. Исходный код готовой функции для PHP, JavaScript и Python есть в статье «Функция транслита на PHP, JavaScript и Python».
Набор слов и эталонные адреса
Эти слова охватывают буквы, в которых схемы чаще всего расходятся. Эталон — результат генератора на этом сайте.
| Слово | Эталон (Яндекс) |
|---|---|
| щука | shhuka |
| объём | obem |
| мыло | mylo |
| цирк | cirk |
| хлеб | hleb |
| йогурт | jogurt |
| Юрий | yurij |
| ёлка | elka |
| эхо | eho |
| джинсы | dzhinsy |
| съезд | sezd |
| письмо | pismo |
Скрипт проверки
Подставьте вместо my_slugify функцию вашей библиотеки. Скрипт покажет слова, на которых результат расходится.
tests = {
"щука": "shhuka",
"объём": "obem",
"мыло": "mylo",
"цирк": "cirk",
"хлеб": "hleb",
"йогурт": "jogurt",
"Юрий": "yurij",
"ёлка": "elka",
"эхо": "eho",
"джинсы": "dzhinsy",
"съезд": "sezd",
"письмо": "pismo"
}
for word, expected in tests.items():
got = my_slugify(word)
mark = "OK" if got == expected else "XX"
print(mark, word, got, expected)
Что делать, если результаты расходятся
- Если расходится несколько букв — настроить таблицу библиотеки (многие позволяют задать собственную карту символов).
- Если расходится много слов — использовать готовую функцию из статьи про PHP, JavaScript и Python.
- Если библиотека используется в CMS — проверить, как вставлять собственную таблицу.
- Если расхождение приемлемо — зафиксировать выбранную схему и не менять её: смена схемы ведёт к смене адресов.
Вывод
Проверять транслитерацию библиотеки нужно один раз при подключении и после каждого обновления: новая версия может изменить таблицу. Набор из двенадцати слов занимает минуту, а ошибка в адресах потом исправляется долго.
Типичные ошибки
- Доверять описанию библиотеки, а не проверять результат.
- Не фиксировать версию библиотеки в зависимостях.
- Не повторять проверку после обновлений.
- Проверять только простые слова без «щ», «х», «ц», «й».
Разбор заголовка по шагам
Возьмём заголовок «Щука, хлеб и цирк на ужин» и пройдём путь до адреса. Заголовок содержит «щ», «х» и «ц»: буквы, на которых библиотеки расходятся чаще всего.
Заголовок: Щука, хлеб и цирк на ужин
Без служебных слов: Щука, хлеб цирк ужин
Адрес целиком: shhuka-hleb-i-cirk-na-uzhin
Адрес короче: shhuka-hleb-cirk-uzhin
Режим «Убрать служебные слова» в генераторе делает второй шаг сам. Короткий адрес читается легче и лучше помещается в строку браузера. Ограничения по длине и другие правила составления адреса собраны в статье «Как составить ЧПУ-адрес страницы».
Памятка для редактора
Если в проекте несколько редакторов, дайте им короткую памятку. Достаточно этих правил:
- Прогнать набор из двенадцати слов.
- Зафиксировать версию библиотеки.
- Повторять проверку после обновлений.
Чек-лист
- Прогнать набор тестовых слов через библиотеку.
- Сравнить результат с эталоном.
- Зафиксировать версию библиотеки в зависимостях.
- Повторять проверку после обновлений.
Частые вопросы
Почему результат библиотеки не совпадает с Яндексом?
У универсальных библиотек общая таблица для многих языков, и она может отличаться для букв «щ», «х», «ц», «й».
Какие слова проверять?
Те, где схемы расходятся: «щука», «хлеб», «цирк», «йогурт», «ёлка», «объём», «мыло».
Можно ли настроить таблицу библиотеки?
Во многих библиотеках можно задать собственную карту замен. Для остальных проще написать небольшую функцию.
Как часто проверять?
При подключении библиотеки и после её обновлений.
Проверьте свои заголовки: вставьте их в генератор ЧПУ и посмотрите, как в адресе выглядят слова с этой буквой.