Статья

Как перевести статические страницы (например, «О нас») на разные языки: инструкция для граждан мира

Представьте: вы заходите на крутой сайт, всё красиво, функционал зашкаливает. Но текст на непонятном языке. Или, что ещё хуже, — смесь языков в одном абзаце. Вы чувствуете себя туристом, который случайно забрёл не в ту дверь. И уходите.

Если ваша соцсеть планирует охватывать аудиторию из разных стран (или хотя бы из разных регионов России, где одни говорят по-русски, а другие предпочли бы татарский или якутский), перевод статических страниц — это не роскошь, а базовая вежливость.

В Sngine есть элегантный (пусть и немного «ручной») способ сделать так, чтобы страницы вроде «О нас», «Правила», «Контакты» автоматически показывались на языке, который выбрал пользователь.

Разработчики предлагают простое решение: условные операторы прямо в HTML-коде страницы. И это до сих пор работает. Давайте разберём, как превратить этот метод из «просто работает» в «работает красиво и не вызывает головной боли».


1. Простейший способ: условные операторы в редакторе

Главная идея (спойлер): вы не создаёте 10 разных страниц для 10 языков. Вы создаёте одну страницу, внутри которой пишете все варианты текста, обёрнутые в специальные теги. А Sngine уже сам показывает нужный вариант в зависимости от того, какой язык выбрал пользователь.

sourse.png

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

sourse-2.png

{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. Откуда их взять? Самый верный способ:

  1. Зайдите в Admin Panel → Languages (Админка → Языки)
  2. Там будет список всех установленных языков
  3. Для каждого языка указан его код (например, ru_ru, en_us, de_de)

Используйте именно эти коды. Не гадайте, не придумывайте свои.

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


4. Продвинутый уровень: как не плодить простыни кода

Если у вас 10 языков, а на странице 5 абзацев текста, то ваша конструкция превратится в многоэтажный монстр-код, в котором сложно ориентироваться.

Способ 1: Выносим текст в языковые файлы

Sngine имеет систему языковых переменных. Вы можете добавить свои переменные в файлы переводов, а на странице просто выводить их:

  1. В папке /content/languages/locale/ru_ru/ найдите файл вашего языка messages.po

  2. Добавьте туда свою переменную:

msgid "About site"
msgstr "Мы — самая дружелюбная соцсеть..."
  1. На странице пишите просто: {__("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. Если вы переводите страницу «Правила сообщества» — будьте особенно внимательны. Юридически значимые тексты должны быть абсолютно точны на каждом языке. Один неверный перевод может превратить «запрещён мат» в «запрещены коты». А котов мы любим.

Закрыт