Перейти к содержимому
LeedyBox
Поддержать

Как убрать диакритику и сделать slug для URL

Имена в загранпаспорте, адреса электронной почты, имена файлов и веб-адреса часто пишут латиницей без диакритических знаков. Убрать знак у é просто, но у вьетнамской đ, турецкой ı, немецкой ß и датской ø свои правила. Это руководство объясняет их и показывает, как превратить заголовок в аккуратный slug для ЧПУ.

Два вида букв со знаками

Большинство букв с диакритикой — это базовая буква плюс знак: é — e с акутом, ü — u с умлаутом, вьетнамская ệ — e с циркумфлексом и точкой снизу. Unicode хранит сведения о том, как раскладывается каждая из них, поэтому после удаления знаков остаётся базовая буква. Компьютер может хранить одну и ту же букву двумя способами — одним символом или базовой буквой с отдельными знаками; выглядят они одинаково и теряют знаки одинаково.

Другие буквы не образованы от базовой: вьетнамская đ, турецкая ı, немецкая ß, датские и норвежские ø и æ, исландская þ. Удаление знаков их не меняет, поэтому для каждой нужно своё написание.

Таблица для паспортов

Машиночитаемая зона внизу паспорта использует только буквы от A до Z. В документе ИКАО 9303 — международной спецификации паспортов — есть таблица, как записывать там национальные буквы. Это хороший нейтральный ориентир для написания имён без диакритики:

БукваИКАО Doc 9303Язык
É È Ê Ç ÑE E E C NФранцузский, испанский, португальский …
Ä Ö ÜAE или A, OE или O, UE или UНемецкий, шведский, турецкий …
ẞ (ß)SSНемецкий
ĐDВьетнамский, хорватский …
Ğ Ş Ç İ I (ı)G S C I IТурецкий
Ø Æ ÅOE, AE, AA или AДатский, норвежский
Ł Þ ŒL, TH, OEПольский, исландский, французский

В той же таблице ИКАО есть раздел о транслитерации кириллицы; по нему генератор slug пишет русские буквы латиницей. Системы транслитерации с русского сравниваются в отдельном руководстве, а здесь речь идёт о буквах латиницы с диакритикой.

Вьетнамский, турецкий и немецкий

  • Вьетнамский. Кроме знаков, образующих новые гласные (ă, â, ê, ô, ơ, ư), у каждого слога может быть один из пяти знаков тона. Без знаков («không dấu») убирают все, а đ пишут как d: Nguyễn Văn Đức — Nguyen Van Duc.
  • Турецкий. В нём есть i и İ с точкой, ı и I без точки. Без знаков ı становится i, İ — I. Осторожно со строчными буквами: общее правило Unicode превращает İ в i с комбинируемой точкой сверху (U+0307) — невидимым символом, который попадает в имена файлов и URL. Лучше сначала заменить турецкие буквы, а потом переводить в нижний регистр.
  • Немецкий. Без точек пишут ae, oe, ue: Müller — Mueller. Для ß официальные правила немецкой орфографии (Amtliches Regelwerk, § 25 E2) предписывают писать ss, если ß недоступна: Straße — Strasse.

Как превратить заголовок в slug

Slug — часть веб-адреса, которая называет страницу. Хороший slug короткий, строчными буквами, слова соединены дефисами:

ЗаголовокSlug
Café & Crème Brûlée: 10 Tipscafe-creme-brulee-10-tips
İstanbul'da Gezilecek Yerleristanbulda-gezilecek-yerler
Öffnungszeiten & Preise (немецкий)oeffnungszeiten-preise
Cách nấu phở bò Hà Nộicach-nau-pho-bo-ha-noi
  • Дефисы, а не подчёркивания. Руководство Google по структуре URL советует разделять слова дефисами и использовать понятные слова вместо длинных числовых ID.
  • Апострофы удаляются. don't становится dont, а не don-t.
  • Буквы со знаками удлиняют адрес. Браузер показывает их как есть, но в скопированной ссылке они закодированы: в примере Google gemüse превращается в gem%C3%BCse.
  • Не меняйте опубликованный slug без нужды. Старый адрес перестанет работать, если не настроить постоянное перенаправление (301) на новый.

Кириллица в адресах

Генератор slug по умолчанию пишет русский заголовок латиницей по таблице ИКАО: «Новости компании» → novosti-kompanii. Флажок «Русские буквы латиницей» можно снять, чтобы оставить кириллицу. С кириллицей адресная строка показывает русские слова, но при копировании ссылки каждая буква превращается в код вида %D0%BC, и адрес становится длинным. Выбирайте одну систему транслитерации и придерживайтесь её на всём сайте.

Частые вопросы

Ä писать как AE или как A?

Таблица для паспортов допускает оба варианта. Для немецких имён обычно пишут AE, для турецких, финских и шведских слов часто A, O и U. Ориентируйтесь на написание в документе, с которым нужно совпасть.

Какой длины должен быть slug?

Жёсткого предела нет. Оставьте слова, описывающие страницу, и уберите остальное; у многих систем управления контентом есть и собственное ограничение длины.

Почему два одинаковых на вид текста не совпадают?

В одном é может храниться одним символом, в другом — как e с комбинируемым знаком. Удаление диакритики или нормализация обоих текстов к одной форме Unicode делает их равными.

Неправильно ли писать имя без диакритики?

Там, где система её не принимает, например в машиночитаемой зоне паспорта или в старой системе бронирования, — нет. Там, где знаки можно использовать, правильное написание их сохраняет.