Налаштування багатомовності та Webspaces Sulu: повний посібник

Уявіть: у вас Sulu-сайт російською, потрібно додати англійську, але URL для кожної мови мають бути різними — ru.example.com та en.example.com. Ви гуглите, знаходите документацію Sulu по Webspace, але стикаєтеся з нюансами: як правильно скопіювати структуру сторінок без втрати даних? Як налаштувати h

Розробка та обслуговування будь-яких видів сайтів:

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

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

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

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

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Уявіть: у вас 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. Зв'яжіться з нами для консультації — оцінимо ваш проєкт протягом дня. Замовте налаштування багатомовного сайту та отримайте готове рішення під ключ. Вартість налаштування багатомовності, як правило, нижча, ніж переписування системи з нуля. Вартість визначається індивідуально після аналізу.

Терміни налаштування

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

Вартість розраховується індивідуально залежно від складності та кількості мов.