Manuals
RU EN

Продукты · 86

Многоязычный сайт PHP-скрипт

Продукты 5 мин чтения

Многоязычный сайт на PHP-скрипте отдаёт контент на нескольких языках с отдельными URL. Это нужно white-label площадкам, корпоративам с аудиторией в разных странах и лендингам под гео. Недостаточно «Google Translate виджетом» в углу: поисковику и человеку нужны нормальные адреса, переводы сущностей и согласованный hreflang.

Связка: white label, сайт под ключ, корпоративный, лендинг.

Подходы к URL

  • Префикс: /ru/..., /en/... — самый частый и понятный.
  • Поддомены: en.example.com — гибко, но сложнее с cookies и сертификатами.
  • Отдельные домены — для сильных страновых брендов, дороже в поддержке.

Выберите один подход до запуска. Смена схемы URL после индексации = месяцы редиректов. Параметр ?lang=en для SEO обычно хуже префикса.

Что переводить

Интерфейс (кнопки, ошибки, письма), контентные сущности (услуги, карточки, новости), мета-теги, юридические страницы. Непереведённый кабинет при «мультиязычном» лендинге — обман ожидания. Наоборот, переведённый UI при рыбе в контенте тоже выглядит сыро: закрывайте языки поэтапно, но честно помечайте доступность.

В БД удобны таблицы переводов или JSON-поля по языку — зависит от продукта. Главное: не копировать целую строку сущности без связи с оригиналом, иначе потом не соберёте «эту же новость на en».

hreflang и каноникал

Для каждой языковой версии укажите взаимные hreflang и x-default по вашей политике. Каноникал указывает на себя, не на «главный язык» вслепую. Ошибки hreflang не взрывают сайт, но мешают международным сниппетам. Проверяйте после добавления языка, не раз в год.

Карта сайта — либо одна с языковыми URL, либо несколько sitemap по языкам. Главное — полнота и отсутствие мёртвых ссылок.

Переключатель языка

Переключатель ведёт на эквивалентную страницу, не всегда на главную. Если перевода страницы нет — честный fallback: заглушка «нет перевода» или редирект на язык по умолчанию с понятным сообщением. Тихий редирект на главную en с глубокой ru-страницы бесит.

Запоминание выбора — cookie. Не ломайте кэш полной персонализацией HTML без нужды.

SEO-контент по языкам

Машинный перевод без вычитки для коммерческих страниц опасен. Юридические тексты — только человеческий перевод. Для блога допустим черновик MT + редактура. Дубли одного языка на двух URL ловите сразу.

Локаль форматов дат, валют, телефонов — часть «языка». en-US и en-GB могут различаться; не усложняйте, пока нет спроса.

Кабинет и письма

Язык кабинета совпадает с выбором пользователя или аккаунта. Письма — на языке пользователя, не на языке админа, который нажимал кнопку. Шаблоны писем для каждого языка в админке, с фолбэком на дефолт.

Приёмка

  1. Главная и одна глубокая страница открываются на каждом языке по ЧПУ.
  2. Переключатель ведёт на эквивалент.
  3. hreflang проверен валидатором/вьюером.
  4. Форма и письмо на втором языке корректны.
  5. Нет смеси языков в одном шаблоне (кнопка en, текст ru) на сданных страницах.
  6. Sitemap включает языковые URL.

Процесс перевода в команде

Назначьте владельца каждого языка: кто утверждает формулировки, кто грузит в админку, кто проверяет вёрстку (длинные немецкие слова ломают кнопки). Статусы перевода сущности: нет / черновик / опубликован. Иначе маркетинг объявит запуск en, а половина кабинета останется на ru.

Глоссарий терминов (счёт, сделка, вывод, услуга) экономит нервы. Машинный перевод путает термины продукта каждый раз по-новому. Для white label глоссарий особенно важен: клиентский саппорт и UI должны говорить одинаково.

Не включайте язык в переключатель, пока не закрыт минимальный пакет страниц: главная, регистрация/контакт, ключевые услуги или кабинет, оферта. Пустой язык хуже его отсутствия.

Технические ловушки

Кэш страниц без учёта языка отдаёт чужую локаль. Письма и PDF-счета на чужом языке. Ошибки валидации форм в дефолтной локали. Sitemap с забытыми префиксами. Open Graph без локализованного title. Всё это ловится чеклистом приёмки, не «ну посмотрим в бою».

Права редактора: кто может публиковать en, не имея доступа ломать ru. Разделите роли, если команда большая. Бэкап перед массовым импортом переводов обязателен: один кривой CSV затирает живые тексты.

После добавления языка прогоните краулер и поиск по сайту на каждом префиксе. Нулевые выдачи и 404 в новом языке — нормальная болезнь первого месяца; заведите таблицу и закрывайте пакетом.

Контент-приоритеты по языкам

Не переводите всё подряд в первую неделю. Порядок: юридическое и регистрация, главная, топ услуг или экран кабинета, письма, остальной блог. Блог на втором языке без аудитории можно не открывать в переключателе. Честный объём лучше декоративного «у нас 12 языков» с рыбой.

Локальные телефоны и адреса на страновых версиях — отдельное решение. Иногда достаточно одного международного контакта. Если офисы разные — не забудьте футер и схему организации, чтобы не путать клиента.

Проверьте поиск по сайту: индексирует ли он все языки, не смешивает ли выдачу. Фильтр языка в поиске полезен на больших корпоративах. На лендинге с двумя языками можно обойтись без поиска вообще.

Для white label мультиязычность кабинета тестируйте под ролью клиента, не админа. Админ часто видит все строки ключей перевода; клиент видит дыры.

Приёмка перевода на реальных устройствах

Длинные строки в кнопках, переносы в шапке, разные длины меню — смотрите на телефоне. RTL-языки — отдельная история; не обещайте арабский, если вёрстка не готовилась. Для ru/en/de обычно хватает аккуратных проверок и гибких кнопок.

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

Документируйте для редакторов, как создать связанный перевод новости, а не дубль без связи. Иначе hreflang и переключатель никогда не сойдутся.

Отчётность по языкам

В аналитике разделяйте трафик по префиксу языка или по измерению. Иначе успех en-версии маскируется доминирующим ru. Отдельно смотрите конверсию форм по языкам: иногда перевод хороший, а оффер для рынка нет — и это продуктовый вывод, не «плохой PHP».

Правило. Язык = свой URL + перевод сущностей + hreflang. Виджет-переводчик без ЧПУ — не мультиязычность для SEO.

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

Многоязычный сайт php скрипт?

Мультиязычность нужна white-label и площадкам с аудиторией из нескольких стран.

Сколько времени занимает «Многоязычный сайт PHP-скрипт»?

Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.

Нужен ли отдельный сервер?

Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.

Сколько стоит сайт под ключ?

Разбор рядом в мануале по этому запросу. сколько стоит сайт под ключ

Лендинг под ключ с cms?

Разбор рядом в мануале по этому запросу. лендинг под ключ с cms

Раздел
Сайт под ключ

Витрины и корпоративные сайты без WordPress.