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

В проектах Shuklina Consulting я работал с двумя рыночными конфигурациями. У французского проекта английская версия находится в корне, французская — в /fr. У словацкого проекта корневой язык — словацкий, английский находится в /en. Это не одна схема с заменённым флажком.

Повторяемый код, отдельные решения

Оба приложения используют React, Vite и TypeScript. Тексты вынесены в языковые сообщения, настройки рынка — в конфигурацию. Оформление написано на обычном CSS. При этом публикация и набор адресов у проектов самостоятельные.

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

На экране «Shuklina Consulting — первый экран» сохранены настоящие материалы и оформление проекта.

Shuklina Consulting — первый экран

Архивный интерфейс · демонстрационные данные

Shuklina Consulting — первый экран
Сохранённый экран проекта · без интерактивного управления

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

На экране «Shuklina Consulting — внутренний раздел» сохранены настоящие материалы и оформление проекта.

Shuklina Consulting — внутренний раздел

Архивный интерфейс · демонстрационные данные

Shuklina Consulting — внутренний раздел
Сохранённый экран проекта · без интерактивного управления

У каждого рынка свой выпуск

Французский и словацкий проекты публикуются отдельно. Можно менять содержимое и контакты одного рынка, не затрагивая другой. Поэтому общие компоненты здесь сочетаются с отдельными конфигурациями.

Shuklina Consulting — контактный раздел

Архивный интерфейс · демонстрационные данные

Shuklina Consulting — контактный раздел
Сохранённый экран проекта · без интерактивного управления

Работая с AI, такую схему приходится задавать явно. Если поручить агенту «сделать второй сайт так же», он вполне может аккуратно повторить всё, включая неподходящий порядок языков. Повторяемость полезна только после того, как определено, какие решения действительно повторяются.

В этом проекте я повторно использовал код, сохраняя отдельные решения для каждого рынка. История словацкого репозитория не описывает всю работу над французской версией. Архивные экраны остаются свидетельством выбранного этапа; доступность действующих доменов проверяется отдельно.

Связанные истории: Connection.me и RTL · Общая платформа трёх сайтов.