> 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/pl/konfiguracja/overleaf-toolkit/localization.md).

# Lokalizacja

### Konfiguracja i18n Overleaf

{% hint style="info" %}
Ten dokument opisuje, jak skonfigurować internacjonalizację (i18n) dla samodzielnie hostowanej **Overleaf** instancji.
{% endhint %}

Overleaf został przetłumaczony na wiele języków. Przy odpowiedniej konfiguracji możesz:

* Uruchomić swoją instancję Overleaf w **jednym stałym języku**, lub
* Włączyć **wiele języków**, umożliwiając użytkownikom dynamiczne przełączanie języków, podobnie jak `www.overleaf.com`.

***

#### Konfiguracja jednego języka

Język witryny jest konfigurowany za pomocą zmiennej środowiskowej `OVERLEAF_SITE_LANGUAGE`(lub `SHARELATEX_SITE_LANGUAGE` dla wersji Overleaf **4.x i wcześniejszych**).

Obsługiwane kody języków obejmują:

* `en` - angielski (domyślny)
* `es` - hiszpański
* `pt` - portugalski
* `de` - niemiecki
* `fr` - francuski
* `cs` - czeski
* `nl` - niderlandzki
* `sv` - szwedzki
* `it` - włoski
* `tr` - turecki
* `zh-CN` - chiński (uproszczony)
* `no` - norweski
* `da` - duński
* `ru` - rosyjski
* `ko` - koreański
* `ja` - japoński
* `pl` - polski
* `fi` - fiński

Angielski jest językiem domyślnym. Aby zmienić język interfejsu (na przykład na chiński uproszczony), dodaj poniższą linię do `config/variables.env`:

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

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

{% endcode %}

Następnie zastosuj konfigurację:

```bash
bin/up
```

Po ponownym uruchomieniu usług język interfejsu w menu WWW powinien odzwierciedlać nowe ustawienie.

#### Konfiguracja wielu języków

Aby umożliwić użytkownikom **przełączanie języków bez wylogowywania się**twoja instancja Overleaf musi być skonfigurowana tak, aby obsługiwać różne języki na podstawie nazw domen.

Ta sekcja zakłada:

* Twoja główna domena to `overleaftest.com`
* Masz **certyfikat TLS typu wildcard** (np. `*.overleaftest.com`)
* Nie używasz **nie używasz `localhost`** (ponieważ nie obsługuje routingu języków opartego na subdomenach)

Do lokalnego testowania możesz użyć domeny takiej jak `dev-overleaf.com`.

{% stepper %}
{% step %}

### Konfiguracja proxy TLS (Nginx)

Twoje odwrotne proxy TLS musi przekazywać oryginalny `Host` nagłówek, aby Overleaf mógł określić, do której domeny językowej uzyskał dostęp użytkownik.

Upewnij się, że poniższa dyrektywa jest obecna:&#x20;

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

Oto przykładowa konfiguracja Nginx:&#x20;

<pre class="language-nginx"><code class="lang-nginx">server {
    listen 443 ssl;
    server_name    _; # wszystkie, zobacz 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;
    # użyto szyfrów 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;

    # konfiguracja włączająca HSTS (HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
    # aby uniknąć 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; # zmień na dowolny host/port, na którym nasłuchuje kontener dockera.
        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;
        
        # dodaj to do konfiguracji nginx
<strong>        proxy_set_header Host $host;
</strong>    }
}
</code></pre>

{% endstep %}

{% step %}

### Skonfiguruj domenę ciasteczek

Aby zapobiec wylogowywaniu użytkowników podczas przełączania języków, ciasteczka muszą być współdzielone między subdomenami językowymi.

Dodaj poniższą linię do `config/variables.env`:

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

```env
# Zwróć uwagę na wiodącą kropkę
COOKIE_DOMAIN=.overleaftest.com
```

{% endcode %}

Zapewnia to, że ciasteczka uwierzytelniające są ważne dla wszystkich subdomen w obrębie `overleaftest.com`.
{% endstep %}

{% step %}

### Mapowanie język–domena

Następnie określ, jak kody języków mapują się na subdomeny, używając\
`OVERLEAF_LANG_DOMAIN_MAPPING`.

#### Przykładowa konfiguracja

{% 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 %}

Przy tej konfiguracji:

* `https://www.overleaftest.com` → interfejs angielski
* `https://cn.overleaftest.com` → interfejs w języku chińskim uproszczonym

W razie potrzeby możesz rozszerzyć to mapowanie o dodatkowe języki i subdomeny.
{% endstep %}

{% step %}

### Przekieruj domenę główną

Na koniec przekieruj domenę główną (`overleaftest.com`) do domeny domyślnego języka (`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/pl/konfiguracja/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.
