Как перевести статические страницы (например, «О нас») на разные языки: инструкция для граждан мира
- 1. Простейший способ: условные операторы в редакторе
- 2. Пошаговая инструкция: делаем это правильно
- Шаг 1: Заходим в админку
- Шаг 2: Открываем редактор кода
- Шаг 3: Вставляем конструкцию
- Шаг 4: Сохраняем
- Шаг 5: Проверяем
- 3. Где брать коды языков (чтобы не гадать)
- 4. Продвинутый уровень: как не плодить простыни кода
- Способ 1: Выносим текст в языковые файлы
- Способ 2: Используем блоки внутри if
- Способ 3: Создаём отдельные страницы для каждого языка
- 5. Частые ошибки и как их избежать
- Ошибка 1: Забыли закрыть тег {/if}
- Ошибка 2: Используете неправильные коды языков
- Ошибка 3: Визуальный редактор портит код
- Ошибка 4: Слишком много вложенных условий
- 6. Полезные советы для многоязычных сообществ
- Заключение: многоязычность как признак уважения
Представьте: вы заходите на крутой сайт, всё красиво, функционал зашкаливает. Но текст на непонятном языке. Или, что ещё хуже, — смесь языков в одном абзаце. Вы чувствуете себя туристом, который случайно забрёл не в ту дверь. И уходите.
Если ваша соцсеть планирует охватывать аудиторию из разных стран (или хотя бы из разных регионов России, где одни говорят по-русски, а другие предпочли бы татарский или якутский), перевод статических страниц — это не роскошь, а базовая вежливость.
В Sngine есть элегантный (пусть и немного «ручной») способ сделать так, чтобы страницы вроде «О нас», «Правила», «Контакты» автоматически показывались на языке, который выбрал пользователь.
Разработчики предлагают простое решение: условные операторы прямо в HTML-коде страницы. И это до сих пор работает. Давайте разберём, как превратить этот метод из «просто работает» в «работает красиво и не вызывает головной боли».
1. Простейший способ: условные операторы в редакторе
Главная идея (спойлер): вы не создаёте 10 разных страниц для 10 языков. Вы создаёте одну страницу, внутри которой пишете все варианты текста, обёрнутые в специальные теги. А Sngine уже сам показывает нужный вариант в зависимости от того, какой язык выбрал пользователь.

Вот как это выглядит в чистом виде (пример из оригинала):

{if $system['language']['code'] == 'ar_sa'}
تجربة بالعربية
{elseif $system['language']['code'] == 'fr_fr'}
Expérience arabe
{else}
English Test
{/if}
2. Пошаговая инструкция: делаем это правильно
Шаг 1: Заходим в админку
Переходим в Admin Panel → Pages (или «Страницы»). Находим страницу, которую хотим перевести (например, «About Us» / «О нас»). Либо создаём новую.
Шаг 2: Открываем редактор кода
В редакторе страницы ищем кнопку «View → Source Code» (или «Просмотр → Исходный код»). Обычно это значок <> в панели инструментов визуального редактора.
Важно: Не пытайтесь вставлять эти конструкции в визуальном режиме (WYSIWYG). Редактор может их «съесть» или перекодировать. Только режим исходного кода!
Шаг 3: Вставляем конструкцию
Там, где должен быть текст, пишем:
{if $system['language']['code'] == 'ru_ru'}
<h1>О нас</h1>
<p>Мы — самая дружелюбная соцсеть для любителей вышивки крестиком...</p>
{elseif $system['language']['code'] == 'en_us'}
<h1>About Us</h1>
<p>We are the friendliest social network for cross-stitch lovers...</p>
{elseif $system['language']['code'] == 'de_de'}
<h1>Über uns</h1>
<p>Wir sind das freundlichste soziale Netzwerk für Kreuzstich-Liebhaber...</p>
{else}
<h1>About Us</h1>
<p>We are the friendliest social network for cross-stitch lovers...</p>
{/if}
Шаг 4: Сохраняем
Нажимаем «Сохранить» или «Опубликовать».
Шаг 5: Проверяем
Меняем язык в интерфейсе (обычно переключатель языков в шапке или в настройках профиля) и смотрим — текст на странице должен меняться магическим образом.
3. Где брать коды языков (чтобы не гадать)
В конструкции $system['language']['code'] мы используем коды языков в формате ru_ru, en_us, ar_sa, fr_fr. Откуда их взять?
Самый верный способ:
- Зайдите в Admin Panel → Languages (Админка → Языки)
- Там будет список всех установленных языков
-
Для каждого языка указан его код (например,
ru_ru,en_us,de_de)
Используйте именно эти коды. Не гадайте, не придумывайте свои.
Совет: Если вы планируете поддерживать много языков, создайте себе шпаргалку: язык → код. И держите её под рукой, когда редактируете страницы.
4. Продвинутый уровень: как не плодить простыни кода
Если у вас 10 языков, а на странице 5 абзацев текста, то ваша конструкция превратится в многоэтажный монстр-код, в котором сложно ориентироваться.
Способ 1: Выносим текст в языковые файлы
Sngine имеет систему языковых переменных. Вы можете добавить свои переменные в файлы переводов, а на странице просто выводить их:
-
В папке
/content/languages/locale/ru_ru/найдите файл вашего языкаmessages.po -
Добавьте туда свою переменную:
msgid "About site"
msgstr "Мы — самая дружелюбная соцсеть..."
-
На странице пишите просто:
{__("About site")}
Но этот способ требует правки файлов ядра (что мы, как помним из предыдущей статьи, не любим). Поэтому если вы идёте по пути «чистого ядра», лучше использовать следующий вариант.
Способ 2: Используем блоки внутри if
Вместо того чтобы каждую фразу оборачивать в if, оборачивайте большие блоки текста:
{if $system['language']['code'] == 'ru_ru'}
<h1>О нас</h1>
<p>Параграф 1...</p>
<p>Параграф 2...</p>
<img src="about_ru.jpg" alt="О нас">
{elseif $system['language']['code'] == 'en_us'}
<h1>About Us</h1>
<p>Paragraph 1...</p>
<p>Paragraph 2...</p>
<img src="about_en.jpg" alt="About Us">
{/if}
Так код становится чище: все языковые версии отделены друг от друга, а не перемешаны.
Способ 3: Создаём отдельные страницы для каждого языка
Если вы не любите возиться с кодом, можно поступить проще:
- Создать страницу about-us-ru
- Создать страницу about-us-en
- В меню или в коде главной страницы сделать переключатель, который ведёт на нужную версию
Минус: нужно отдельно следить за SEO (чтобы поисковики не ругались на дублированный контент), плюс немного сложнее в администрировании.
5. Частые ошибки и как их избежать
Ошибка 1: Забыли закрыть тег {/if}
Если не закрыть условный оператор — страница может отображаться некорректно или вообще выдать ошибку.
Решение: Внимательно считайте пары {if} и {/if}. Лучше использовать редактор с подсветкой синтаксиса.
Ошибка 2: Используете неправильные коды языков
Написали ru_RU с большой буквы или ru без региона, а в системе язык называется ru_ru — условие не сработает.
Решение: Всегда копируйте код из Admin Panel → Languages.
Ошибка 3: Визуальный редактор портит код
Вы вставили конструкцию в режиме Source Code, переключились в визуальный режим, а потом обратно — и код превратился в кашу.
Решение: Редактируйте такие страницы только в режиме исходного кода. Не переключайтесь на визуальный, если внутри есть условные операторы.
Ошибка 4: Слишком много вложенных условий
Если внутри одного if у вас ещё 5 if“ов — читать такой код будет невозможно.
Решение: Для сложной логики используйте подход с отдельными файлами или плагинами.
6. Полезные советы для многоязычных сообществ
Адаптируйте не только текст, но и медиа
Если на странице «О нас» есть фото команды — для разных культур можно использовать разные фото. Арабская версия может демонстрировать более консервативный стиль одежды, европейская — более стильный и брендовый.
Учитывайте направление текста
Для арабского и иврита текст пишется справа налево. В вашем CSS должен быть класс для RTL-языков, и страница должна его подхватывать. Sngine обычно это поддерживает из коробки, но если вы кастомизировали дизайн — проверьте.
Не забывайте про SEO
Каждая языковая версия страницы должна иметь свой URL или хотя бы правильные hreflang-теги. Если вы используете один URL с условными операторами, убедитесь, что поисковики правильно индексируют разные языковые версии (это отдельная большая тема, но начать можно с добавления мета-тегов в шапку).
Заключение: многоязычность как признак уважения
Перевод статических страниц — это не просто техническая задача. Это проявление уважения к вашим пользователям. Когда человек заходит на сайт и видит текст на родном языке, он чувствует: «Здесь меня ждут. Здесь я свой».
Метод с условными операторами, предложенный в оригинальной статье, — это простой и надёжный способ добиться этого без сложных технических решений. Он не требует глубоких знаний программирования, работает «из коробки» в Sngine и даёт полный контроль над тем, как выглядит каждая языковая версия.
Да, у него есть ограничения (сложно поддерживать 20 языков на 50 страницах). Но для старта или для среднего по размеру сообщества — это идеальный баланс между простотой и функциональностью. А когда ваше сообщество вырастет до размеров международной корпорации — вы всегда сможете перейти на более продвинутые системы перевода. Но к тому моменту у вас уже будет команда разработчиков, которая с радостью это сделает 😉 Пусть ваши пользователи всегда говорят на языке, который им понятен! 🌍🗣️
P.S. Если вы переводите страницу «Правила сообщества» — будьте особенно внимательны. Юридически значимые тексты должны быть абсолютно точны на каждом языке. Один неверный перевод может превратить «запрещён мат» в «запрещены коты». А котов мы любим.