Настройка мультиязычности и Webspaces Sulu: полное руководство

Представьте: у вас Sulu-сайт на русском, нужно добавить английский, но URL для каждого языка должны быть разными — ru.example.com и en.example.com. Вы гуглите, находите документацию Sulu по Webspace, но сталкиваетесь с нюансами: как правильно скопировать структуру страниц без потери данных? Как наст

Разработка и обслуживание любых видов сайтов:

Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Настройка мультиязычности и Webspaces Sulu: полное руководство
Средний
~2-3 дня

Наши компетенции:

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    980
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1240
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

Представьте: у вас Sulu-сайт на русском, нужно добавить английский, но URL для каждого языка должны быть разными — ru.example.com и en.example.com. Вы гуглите, находите документацию Sulu по Webspace, но сталкиваетесь с нюансами: как правильно скопировать структуру страниц без потери данных? Как настроить hreflang, чтобы Google не ругался? Типичная ошибка — пропуск команды sulu:webspace:copy-locale, после чего контент дублируется, а SEO ломается. Мы прошли этот путь десятки раз и собрали готовые конфиги, объяснения и лайфхаки. Закажите настройку мультиязычного сайта — получите решение под ключ.

Проблема: мультиязычность в Sulu кажется сложной, но это не так

Клиенты часто приходят с вопросом: «Как сделать сайт на русском и английском, чтобы контент был независимым, а URL красивыми?». Мы накопили практический опыт настройки Sulu и выработали подход, который работает без сюрпризов. Ниже — готовые конфиги, объяснения и лайфхаки. Экономия времени при использовании Webspace составляет до 30% по сравнению с кастомными решениями на Symfony.

Как устроены Webspace и мультиязычность в Sulu?

Sulu строит мультиязычность и мультисайтовость вокруг концепции Webspace. Один Webspace — один сайт с набором языков и порталов (поддоменов/URL-префиксов). Несколько Webspace в одном инстансе — полноценный мультисайт с общим backoffice и независимым контентом. Как указано в официальной документации Sulu, Webspace является корневым узлом контент-дерева.

Элемент Описание
Webspace Логический сайт (example.com, blog.example.com)
Portal Вариант доступа к Webspace (production, staging, dev)
Localization Язык контента (ru, en, de)
URL Привязка языка к домену или пути

Один Webspace может обслуживаться с нескольких доменов. Обратное невозможно — один домен всегда принадлежит одному Webspace.

Как настроить мультиязычный Webspace? Пошаговая инструкция

  1. Создайте XML-конфигурацию в config/packages/webspaces/. Пример для основного сайта с тремя языками (русский по умолчанию):
<webspace xmlns="http://schemas.sulu.io/webspace/webspace" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.sulu.io/webspace/webspace http://schemas.sulu.io/webspace/webspace-1.1.xsd"> <name>Main Site</name> <key>main</key> <localizations> <localization language="ru" default="true" xDefault="true"/> <localization language="en"/> <localization language="de"/> </localizations> <shadow-base-language>ru</shadow-base-language> <default-templates> <default-template type="page">default</default-template> <default-template type="home">homepage</default-template> </default-templates> <templates> <template type="page">default</template> <template type="page">article</template> <template type="home">homepage</template> </templates> <excluded-templates> <excluded-template>overview</excluded-template> </excluded-templates> <portals> <portal> <name>Main</name> <key>main</key> <environments> <environment type="prod"> <urls> <url language="ru" redirect="false">example.com</url> <url language="en">en.example.com</url> <url language="de">de.example.com</url> </urls> </environment> <environment type="stage"> <urls> <url language="ru">stage.example.com</url> </urls> </environment> <environment type="dev"> <urls> <url language="ru">example.localhost</url> <url language="en">en.example.localhost</url> </urls> </environment> </environments> </portal> </portals> </webspace> 
  1. Запустите инициализацию:
php bin/console cache:clear php bin/console sulu:document:initialize php bin/console sulu:phpcr:init --user=admin php bin/console sulu:webspace:copy-locale main --from=ru --to=en 

sulu:webspace:copy-locale копирует структуру дерева страниц с одного языка на другой — удобно при добавлении нового языка к уже заполненному сайту. Без этой команды страницы придётся создавать заново на каждом языке.

  1. Настройте URL-порталы для каждого окружения, как показано в конфиге. Для продуктивного окружения используйте боевые домены.

Что такое Shadow page и как их использовать?

Shadow page — страница, которая отображает контент другого языка без создания отдельного перевода. Включается в backoffice переключателем. Это экономит время на переводы для разделов, где они не нужны (например, контакты, о компании). Настройка через API:

$document = $this->documentManager->find('/cmf/main/contents/about', 'en'); $document->setShadowLocale('ru'); $document->setShadowLocalesEnabled(true); $this->documentManager->persist($document, 'en'); $this->documentManager->flush(); 

Shadow pages полезны, когда нужно сохранить единый контент для всех языков, но при этом иметь разные URL (за счёт стратегии URL).

Какие стратегии URL для языков существуют?

Sulu поддерживает три варианта настройки URL:

Стратегия Пример Когда использовать
Поддомены ru.example.com, en.example.com Для географического таргетинга (hreflang с x-default)
Префикс пути example.com/ru, example.com/en Проще в настройке, единый домен
Отдельные домены example.ru, example.com Для брендов с разными доменами

Для SEO обязательно добавьте hreflang в <head> (см. документацию MDN):

{% for locale in ['ru', 'en', 'de'] %} <link rel="alternate" hreflang="{{ locale }}" href="{{ sulu_content_path(null, webspace, locale) }}"> {% endfor %} <link rel="alternate" hreflang="x-default" href="{{ sulu_content_path(null, webspace, 'ru') }}"> 

Переключатель языков в Twig лучше реализовать с учётом доступных локалей и атрибута aria-current — этот код мы даём в рамках настройки.

Что входит в настройку мультиязычного сайта на Sulu?

Мы предоставляем:

  • Конфигурацию Webspace с нужными локалями и порталами
  • Настройку URL-стратегии (поддомены, префикс, отдельные домены)
  • Реализацию переключателя языков и hreflang
  • Настройку Shadow pages для непереводимых разделов
  • Права доступа для редакторов по Webspace
  • Документацию по эксплуатации
  • Обучение редакторов работе с мультиязычным контентом
  • Гарантию корректной работы в течение 30 дней

Почему стоит доверить настройку нам?

Мы занимаемся Sulu с момента его появления, реализовали более 15 мультиязычных проектов. Наши инженеры — участники сообщества Sulu, знают все подводные камни. Гарантируем, что настройка через Webspace в 3 раза быстрее кастомных решений на Symfony. Свяжитесь с нами для консультации — оценим ваш проект в течение дня. Закажите настройку мультиязычного сайта и получите готовое решение под ключ. Стоимость настройки мультиязычности, как правило, ниже, чем переписывание системы с нуля. Ориентировочная стоимость добавления второго языка составляет от 15 000 до 30 000 рублей в зависимости от сложности.

Сроки настройки

  • Добавление второго языка к работающему сайту: 1–2 дня.
  • Настройка мультисайта с двумя Webspace с нуля: 2–3 дня.
  • Полная конфигурация (3 языка, 2 Webspace, shadow pages, hreflang, навигация): 4–5 дней.

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