Три способа отразить язык в адресе
- языковой префикс в пути:
/ru/blog/,/en/blog/; - отдельный поддомен для каждого языка;
- отдельный домен для каждой языковой версии.
Сравнение этих вариантов приведено в статье про мультиязычный сайт. Для большинства приложений проще всего реализовать префикс в пути.
Префикс языка на уровне маршрутизации
Route group: /{locale}
/{locale}/blog
/{locale}/blog/{slug}
Ограничение: locale = ru|en|de
Ограничьте допустимые значения языка списком поддерживаемых, иначе любой произвольный префикс будет принят как «язык» и породит лишние адреса.
Переводить ли сами слаги
- переведённые слаги удобнее пользователю каждой языковой версии;
- общий слаг проще в реализации и связывании версий;
- любой вариант допустим, если применяется единообразно.
Если слаги различаются по языкам, храните их в отдельных полях для каждого языка и не путайте с идентификатором записи.
Связь между языковыми версиями страницы
Для каждой страницы приложение должно знать адреса всех её переводов, чтобы вывести на странице соответствующие ссылки и корректную разметку связей между версиями. Без этого поисковая система может показывать пользователю не тот язык.
Язык по умолчанию и перенаправление с корня
Осторожно: автоматическое перенаправление пользователя по языку браузера с одного и того же адреса мешает индексации. Лучше показать выбор языка и дать роботу стабильные адреса каждой версии.
Перевод не только слага, но и служебных сегментов
Слово «blog» или «catalog» в пути тоже можно переводить. Тогда адреса каждой языковой версии полностью читаемы для своей аудитории. Но такое решение усложняет систему: список переводов сегментов нужно хранить и поддерживать, а при добавлении языка — пополнять.
- переводимые сегменты удобны для пользователя;
- общие латинские сегменты проще в поддержке;
- выбирайте единый подход для всех языков сразу.
Связи между версиями и указания для поисковой системы
Для каждой страницы приложение должно выводить в разделе head ссылки на все языковые варианты, включая её саму. Такая взаимная разметка помогает показывать пользователю подходящую версию. Без неё разные языки конкурируют между собой, а не дополняют друг друга.
Проверьте: ссылки между версиями должны быть взаимными — если страница на русском указывает на английскую, то английская обязана указывать на русскую.
Частые вопросы
Какой способ указания языка в адресе самый простой?
Языковой префикс в пути, например /ru/ и /en/: он не требует отдельных доменов и легко реализуется на уровне маршрутов.
Нужно ли переводить слаги для каждого языка?
Не обязательно: важно применять выбранный подход единообразно, а переведённые слаги хранить в отдельных полях для каждого языка.
Почему нельзя автоматически перенаправлять по языку браузера?
Один адрес начинает отдавать разное содержимое в зависимости от пользователя, что мешает индексации языковых версий.
Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.