> 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/uk/konfiguraciya/overleaf-toolkit/localization.md).

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

### Конфігурація i18n Overleaf

{% hint style="info" %}
Цей документ описує, як налаштувати інтернаціоналізацію (i18n) для самостійно розгорнутого **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 conf
<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/uk/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.
