Создать URL
Генератор Правила транслитерации Как сделать ЧПУ Блог Вопросы и ответы Создать URL
Разработка

Локализация маршрутов в мультиязычном приложении

Переходя к мультиязычным проектам, разберём, как реализовать языковые версии на уровне маршрутизации в коде приложения.

Три способа отразить язык в адресе

  1. языковой префикс в пути: /ru/blog/, /en/blog/;
  2. отдельный поддомен для каждого языка;
  3. отдельный домен для каждой языковой версии.

Сравнение этих вариантов приведено в статье про мультиязычный сайт. Для большинства приложений проще всего реализовать префикс в пути.

Префикс языка на уровне маршрутизации

Route group: /{locale}
  /{locale}/blog
  /{locale}/blog/{slug}
Ограничение: locale = ru|en|de

Ограничьте допустимые значения языка списком поддерживаемых, иначе любой произвольный префикс будет принят как «язык» и породит лишние адреса.

Переводить ли сами слаги

  • переведённые слаги удобнее пользователю каждой языковой версии;
  • общий слаг проще в реализации и связывании версий;
  • любой вариант допустим, если применяется единообразно.

Если слаги различаются по языкам, храните их в отдельных полях для каждого языка и не путайте с идентификатором записи.

Связь между языковыми версиями страницы

Для каждой страницы приложение должно знать адреса всех её переводов, чтобы вывести на странице соответствующие ссылки и корректную разметку связей между версиями. Без этого поисковая система может показывать пользователю не тот язык.

Язык по умолчанию и перенаправление с корня

Осторожно: автоматическое перенаправление пользователя по языку браузера с одного и того же адреса мешает индексации. Лучше показать выбор языка и дать роботу стабильные адреса каждой версии.

Перевод не только слага, но и служебных сегментов

Слово «blog» или «catalog» в пути тоже можно переводить. Тогда адреса каждой языковой версии полностью читаемы для своей аудитории. Но такое решение усложняет систему: список переводов сегментов нужно хранить и поддерживать, а при добавлении языка — пополнять.

  • переводимые сегменты удобны для пользователя;
  • общие латинские сегменты проще в поддержке;
  • выбирайте единый подход для всех языков сразу.

Связи между версиями и указания для поисковой системы

Для каждой страницы приложение должно выводить в разделе head ссылки на все языковые варианты, включая её саму. Такая взаимная разметка помогает показывать пользователю подходящую версию. Без неё разные языки конкурируют между собой, а не дополняют друг друга.

Проверьте: ссылки между версиями должны быть взаимными — если страница на русском указывает на английскую, то английская обязана указывать на русскую.

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

Какой способ указания языка в адресе самый простой?

Языковой префикс в пути, например /ru/ и /en/: он не требует отдельных доменов и легко реализуется на уровне маршрутов.

Нужно ли переводить слаги для каждого языка?

Не обязательно: важно применять выбранный подход единообразно, а переведённые слаги хранить в отдельных полях для каждого языка.

Почему нельзя автоматически перенаправлять по языку браузера?

Один адрес начинает отдавать разное содержимое в зависимости от пользователя, что мешает индексации языковых версий.

Готовый адрес можно собрать прямо сейчас: откройте генератор ЧПУ — он транслитерирует фразу по таблице Яндекса, уберёт служебные слова и покажет длину адреса.

Читайте также