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

{% hint style="warning" %}

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

Мультиязычные настройки действуют только для публичной части сайта (frontend) и работают только на основном домене — например, yourdomain.com. Поддомены, такие как app.yourdomain.com, в эту настройку не входят.<br>

По умолчанию система поддерживает два языка — **русский (ru) и английский (en)**.

Если вы хотите добавить другой язык (например, украинский uk или китайский zh), его необходимо внести вручную в конфигурацию. После этого обязательно обратитесь в службу поддержки, чтобы мы подключили переводы интерфейса и системные сообщения для нового языка.
{% endhint %}

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

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

* автоматическое определение языка пользователя;
* корректные редиректы (/ru, /en, /uk и т.д.);
* связь frontend-приложения с backend;
* быстрый и удобный показ нужной языковой версии сайта.

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

***

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

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

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

<figure><img src="/files/jPGJ2B4o4uGI9G41QEXk" alt=""><figcaption></figcaption></figure>

{% stepper %}
{% step %}

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

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

```nginx
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.
* Если ничего не определено — используется русский по умолчанию.
  {% endstep %}

{% step %}

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

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

```nginx
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.
* Затем происходит автоматический редирект на нужную языковую версию сайта.
  {% endstep %}

{% step %}

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

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

```nginx
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), которое обрабатывает нужную языковую версию сайта.
  {% endstep %}
  {% endstepper %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.iexexchanger.com/pomosh-i-spravka/obshie-voprosy/kak-nastroit-multiyazychnost-saita.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
