> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Lokalizacja

### Konfiguracja i18n w Overleaf

<Info>
  Ten dokument opisuje, jak skonfigurować internacjonalizację (i18n) dla samodzielnie hostowanej instancji **Overleaf**.
</Info>

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

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

***

#### Konfiguracja jednego języka

Język witryny konfiguruje się za pomocą zmiennej środowiskowej `OVERLEAF_SITE_LANGUAGE` (lub `SHARELATEX_SITE_LANGUAGE` w przypadku Overleaf w wersjach **4.x i wcześniejszych**).

Obsługiwane kody języków:

* `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

Domyślnym językiem jest angielski. Aby zmienić język interfejsu (na przykład na chiński uproszczony), dodaj następujący wiersz do `config/variables.env`:

```bash title="config/variables.env" theme={null}
OVERLEAF_SITE_LANGUAGE=zh-CN
```

Następnie zastosuj konfigurację:

```bash theme={null}
bin/up
```

Po ponownym uruchomieniu usług język menu w interfejsie webowym powinien odpowiadać nowemu ustawieniu.

#### Konfiguracja wielu języków

Aby umożliwić użytkownikom **przełączanie języka bez wylogowywania się**, instancja Overleaf musi być skonfigurowana tak, aby serwować różne języki w zależności od nazwy domeny.

W tej sekcji przyjęto następujące założenia:

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

Do testów lokalnych możesz użyć domeny takiej jak `dev-overleaf.com`.

<Steps>
  <Step title="Konfiguracja proxy TLS (Nginx)">
    Odwrotne proxy TLS musi przekazywać oryginalny nagłówek `Host`, aby Overleaf mógł ustalić, do której domeny językowej odwołał się użytkownik.

    Upewnij się, że obecna jest następująca dyrektywa:

    ```nginx theme={null}
    proxy_set_header Host $host;
    ```

    Oto przykładowa konfiguracja Nginx:

    ```nginx theme={null}
    server {
        listen 443 ssl;
        server_name    _; # Catch all, see 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;
        # used cloudflares ciphers 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;

        # config to enable HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
        # to avoid 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; # change to whatever host/port the docker container is listening on.
            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;
            
            # add this to your nginx conf
            proxy_set_header Host $host;
        }
    }
    ```
  </Step>

  <Step title="Skonfiguruj domenę ciasteczek">
    Aby użytkownicy nie byli wylogowywani podczas zmiany języka, ciasteczka (cookies) muszą być współdzielone między subdomenami językowymi.

    Dodaj następujący wiersz do `config/variables.env`:

    ```env title="config/variables.env" theme={null}
    # Note the leading dot
    COOKIE_DOMAIN=.overleaftest.com
    ```

    Dzięki temu ciasteczka uwierzytelniające są ważne dla wszystkich subdomen w obrębie `overleaftest.com`.
  </Step>

  <Step title="Mapowanie języków na domeny">
    Następnie zdefiniuj, jak kody języków mają być mapowane na subdomeny, używając\
    `OVERLEAF_LANG_DOMAIN_MAPPING`.

    #### Przykładowa konfiguracja

    ```dotenv title="config/variables.env" wrap theme={null}
    OVERLEAF_LANG_DOMAIN_MAPPING='{"www": {"lngCode": "en","url": "https:\/\/www.overleaftest.com"},"cn": {"lngCode": "zh-CN","url": "https:\/\/cn.overleaftest.com"}}'
    ```

    Przy tej konfiguracji:

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

    W razie potrzeby możesz rozszerzyć to mapowanie o kolejne języki i subdomeny.
  </Step>

  <Step title="Przekieruj domenę główną (apex)">
    Na koniec przekieruj domenę główną (`overleaftest.com`) na domenę języka domyślnego (`www.overleaftest.com`).

    ```nginx theme={null}
    server{
        listen 80;
        server_name overleaftest.com;
        return 301 https://www.overleaftest.com$request_uri;
    }

    server {
        listen 443 ssl http2;
        server_name overleaftest.com;
        ssl_certificate     /path/to/fullchain.cer;
        ssl_certificate_key /path/to/overleaftest.com.key;
        return 301 https://www.overleaftest.com$request_uri;
    }
    ```
  </Step>
</Steps>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.