Настройка мультиязычности сайта

Важное замечание

Эта инструкция поможет вам включить поддержку нескольких языков на сайте, чтобы пользователи автоматически видели контент на русском, английском, украинском (или другом) языке в зависимости от их браузера или выбранных настроек.

Вы настроите:

  • автоматическое определение языка пользователя;

  • корректные редиректы (/ru, /en, /uk и т.д.);

  • связь frontend-приложения с backend;

  • быстрый и удобный показ нужной языковой версии сайта.

Настройка выполняется через FastPanel и займет всего несколько минут.


Как включить мультиязычность на сайте

Мультиязычность настраивается только для основного сайта (например, вашдомен.com), а не для поддоменов вроде app.вашдомен.com.

Откройте FastPanel → «Сайты» → выберите ваш домен → «Ручная настройка» → раздел Frontend. Именно здесь находится конфигурация Nginx, через которую включается поддержка языков. Все изменения вносятся только в этой секции — backend и поддомены не затрагиваются.

1

Шаг 1. Определение языка пользователя

В самом начале конфигурации (до блока server {}) вставьте следующий код:

map $http_accept_language $accept_language {
    "~*ru" ru;
    "~*en" en;
    "~*uk" uk;
    "~*ua" uk;
    "~*zh" zh;
    default ru;
}

map $cookie_lang $selected_lang {
    "~^(ru|en|uk|zh)$" $cookie_lang;
    default $accept_language;
}
  • Определяет язык пользователя по его браузеру.

  • Если ранее пользователь выбрал язык вручную, сохраняется значение из cookie.

  • Если ничего не определено — используется русский по умолчанию.

2

Шаг 2. Установка языка и редирект

Найдите в конфигурации блок server {} и внутри него добавьте следующий фрагмент:

location ~ ^/(ru|en|uk|zh)$ {
    add_header Set-Cookie "lang=$1; Path=/; Max-Age=31536000; SameSite=Lax";
    return 302 /$1/$is_args$args;
}
  • Если пользователь переходит по адресу /ru, /en, /uk и т.д. — язык сохраняется в cookie.

  • Затем происходит автоматический редирект на нужную языковую версию сайта.

3

Шаг 3. Подключение frontend (например, Angular SSR)

Также в блоке server {} добавьте:

location ~ ^/(ru|en|uk|zh)/ {
    proxy_pass http://localhost:4000;
    proxy_redirect http://localhost:4000/ /;
    include /etc/nginx/proxy_params;

    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;

    proxy_buffering on;
    proxy_buffers 16 64k;
    proxy_buffer_size 128k;
    proxy_read_timeout 60s;
    proxy_connect_timeout 10s;
    proxy_send_timeout 10s;
}
  • Этот блок направляет пользователей на frontend-приложение (например, SSR Angular), которое обрабатывает нужную языковую версию сайта.

Last updated

Was this helpful?