> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/on-premises/ru/konfiguraciya/overleaf-toolkit/localization.md).

# Локализация

### Конфигурация Overleaf i18

{% hint style="info" %}
В этом документе описывается, как настроить интернационализацию (i18n) для self-hosted **Overleaf** экземпляра.
{% endhint %}

Overleaf переведён на множество языков. При соответствующей конфигурации вы можете:

* Запустить ваш экземпляр Overleaf на **одном фиксированном языке**, или
* Включить **несколько языков**, позволяя пользователям динамически переключать языки, как на `www.overleaf.com`.

***

#### Конфигурация одного языка

Язык сайта настраивается с помощью переменной окружения `OVERLEAF_SITE_LANGUAGE`(или `SHARELATEX_SITE_LANGUAGE` для версий Overleaf **4.x и более ранних**).

Поддерживаемые коды языков включают:

* `en` - английский (по умолчанию)
* `es` - испанский
* `pt` - португальский
* `de` - немецкий
* `fr` - французский
* `cs` - чешский
* `nl` - нидерландский
* `sv` - шведский
* `it` - итальянский
* `tr` - турецкий
* `zh-CN` - китайский (упрощённый)
* `no` - норвежский
* `da` - датский
* `ru` - русский
* `ko` - корейский
* `ja` - японский
* `pl` - польский
* `fi` - финский

Английский является языком по умолчанию. Чтобы изменить язык интерфейса (например, на упрощённый китайский), добавьте следующую строку в `config/variables.env`:

{% code title="config/variables.env" %}

```bash
OVERLEAF_SITE_LANGUAGE=zh-CN
```

{% endcode %}

Затем примените конфигурацию:

```bash
bin/up
```

После перезапуска сервисов язык интерфейса в меню веб-интерфейса должен соответствовать новой настройке.

#### Конфигурация нескольких языков

Чтобы позволить пользователям **переключать языки без выхода из системы**, ваш экземпляр Overleaf должен быть настроен на выдачу разных языков в зависимости от доменных имен.

В этом разделе предполагается:

* Ваш основной домен — `overleaftest.com`
* У вас есть **wildcard TLS-сертификат** (например, `*.overleaftest.com`)
* Вы **не используете `localhost`** (так как он не поддерживает маршрутизацию языков на основе поддоменов)

Для локального тестирования вы можете использовать домен, например `dev-overleaf.com`.

{% stepper %}
{% step %}

### Конфигурация TLS-прокси (Nginx)

Ваш TLS-обратный прокси должен передавать исходный `Host` заголовок, чтобы Overleaf мог определить, к какому языковому домену обратился пользователь.

Убедитесь, что присутствует следующая директива:&#x20;

```nginx
proxy_set_header Host $host;
```

Ниже приведён пример конфигурации Nginx:&#x20;

<pre class="language-nginx"><code class="lang-nginx">server {
    listen 443 ssl;
    server_name    _; # Универсальный вариант, см. http://nginx.org/en/docs/http/server_names.html
    server_name *.overleaftest.com;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    ssl_protocols               TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers   on;
    # используются шифры Cloudflare https://github.com/cloudflare/sslconfig/blob/master/conf
    ssl_ciphers EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    # конфигурация для включения HSTS (HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
    # чтобы избежать ssl stripping https://en.wikipedia.org/wiki/SSL_stripping#SSL_stripping	
    add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;";
    server_tokens off;
    add_header X-Frame-Options SAMEORIGIN;
    add_header X-Content-Type-Options nosniff;
    client_max_body_size 50M;

    location / {
        proxy_pass http://localhost:5000; # измените на тот хост/порт, на котором прослушивает контейнер Docker.
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 3m;
        proxy_send_timeout 3m;
        
        # добавьте это в вашу конфигурацию nginx
<strong>        proxy_set_header Host $host;
</strong>    }
}
</code></pre>

{% endstep %}

{% step %}

### Настройка домена для cookie

Чтобы пользователи не выходили из системы при переключении языков, cookie должны быть общими для поддоменов языков.

Добавьте следующую строку в `config/variables.env`:

{% code title="config/variables.env" %}

```env
# Обратите внимание на ведущую точку
COOKIE_DOMAIN=.overleaftest.com
```

{% endcode %}

Это гарантирует, что аутентификационные cookie действительны для всех поддоменов в `overleaftest.com`.
{% endstep %}

{% step %}

### Сопоставление языка и домена

Далее определите, как коды языков сопоставляются с поддоменами, используя\
`OVERLEAF_LANG_DOMAIN_MAPPING`.

#### Пример конфигурации

{% code title="config/variables.env" overflow="wrap" %}

```dotenv
OVERLEAF_LANG_DOMAIN_MAPPING='{"www": {"lngCode": "en","url": "https://www.overleaftest.com"},"cn": {"lngCode": "zh-CN","url": "https://cn.overleaftest.com"}}'
```

{% endcode %}

При такой конфигурации:

* `https://www.overleaftest.com` → интерфейс на английском
* `https://cn.overleaftest.com` → интерфейс на упрощённом китайском

При необходимости вы можете расширить это сопоставление дополнительными языками и поддоменами.
{% endstep %}

{% step %}

### Перенаправление корневого домена

Наконец, перенаправьте корневой домен (`overleaftest.com`) на домен языка по умолчанию (`www.overleaftest.com`).

<pre class="language-nginx"><code class="lang-nginx">server{
    listen 80;
    server_name overleaftest.com;
<strong>    return 301 https://www.overleaftest.com$request_uri;
</strong>}

server {
    listen 443 ssl http2;
    server_name overleaftest.com;
    ssl_certificate     /<a data-footnote-ref href="#user-content-fn-1">p</a>ath/to/fullchain.cer;
    ssl_certificate_key /path/to/overleaftest.com.key;
<strong>    return 301 https://www.overleaftest.com$request_uri;
</strong>}
</code></pre>

{% endstep %}
{% endstepper %}

[^1]:


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/on-premises/ru/konfiguraciya/overleaf-toolkit/localization.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
