Как убрать диакритику и сделать 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 Tips | cafe-creme-brulee-10-tips |
| İstanbul'da Gezilecek Yerler | istanbulda-gezilecek-yerler |
| Öffnungszeiten & Preise (немецкий) | oeffnungszeiten-preise |
| Cách nấu phở bò Hà Nội | cach-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 делает их равными.
Неправильно ли писать имя без диакритики?
Там, где система её не принимает, например в машиночитаемой зоне паспорта или в старой системе бронирования, — нет. Там, где знаки можно использовать, правильное написание их сохраняет.