> ## 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.

# Lokalisointi

### Overleafin i18n-määritys

<Info>
  Tässä dokumentissa kuvataan, miten kansainvälistäminen (i18n) määritetään itse ylläpidetylle **Overleaf**-instanssille.
</Info>

Overleaf on käännetty useille kielille. Sopivilla määrityksillä voit:

* ajaa Overleaf-instanssiasi **yhdellä kiinteällä kielellä**, tai
* ottaa käyttöön **useita kieliä**, jolloin käyttäjät voivat vaihtaa kieltä lennossa, samaan tapaan kuin `www.overleaf.com`-sivustolla.

***

#### Yhden kielen määritys

Sivuston kieli määritetään ympäristömuuttujalla `OVERLEAF_SITE_LANGUAGE` (tai `SHARELATEX_SITE_LANGUAGE` Overleafin versioissa **4.x ja sitä vanhemmissa**).

Tuettuja kielikoodeja ovat:

* `en` - englanti (oletus)
* `es` - espanja
* `pt` - portugali
* `de` - saksa
* `fr` - ranska
* `cs` - tšekki
* `nl` - hollanti
* `sv` - ruotsi
* `it` - italia
* `tr` - turkki
* `zh-CN` - kiina (yksinkertaistettu)
* `no` - norja
* `da` - tanska
* `ru` - venäjä
* `ko` - korea
* `ja` - japani
* `pl` - puola
* `fi` - suomi

Englanti on oletuskieli. Vaihtaaksesi käyttöliittymän kielen (esimerkiksi yksinkertaistetuksi kiinaksi) lisää seuraava rivi tiedostoon `config/variables.env`:

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

Ota määritys sitten käyttöön:

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

Kun palvelut ovat käynnistyneet uudelleen, verkkokäyttöliittymän valikoiden kielen pitäisi vastata uutta asetusta.

#### Usean kielen määritys

Jotta käyttäjät voivat **vaihtaa kieltä kirjautumatta ulos**, Overleaf-instanssisi on määritettävä tarjoamaan eri kieliä verkkotunnusten perusteella.

Tässä osiossa oletetaan, että:

* ensisijainen verkkotunnuksesi on `overleaftest.com`
* sinulla on **wildcard-TLS-varmenne** (esim. `*.overleaftest.com`)
* et **käytä `localhost`-osoitetta** (koska se ei tue aliverkkotunnuksiin perustuvaa kielireititystä)

Paikallista testausta varten voit käyttää esimerkiksi verkkotunnusta `dev-overleaf.com`.

<Steps>
  <Step title="TLS-välityspalvelimen määritys (Nginx)">
    TLS-käänteisvälityspalvelimesi on välitettävä alkuperäinen `Host`-otsake, jotta Overleaf voi päätellä, minkä kielen verkkotunnuksen kautta käyttäjä saapui.

    Varmista, että seuraava direktiivi on mukana:

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

    Tässä on esimerkki Nginx-määrityksestä:

    ```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="Määritä evästeiden verkkotunnus">
    Jotta käyttäjät eivät kirjautuisi ulos kieltä vaihtaessaan, evästeiden on oltava jaettuja kaikkien kielten aliverkkotunnusten kesken.

    Lisää seuraava rivi tiedostoon `config/variables.env`:

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

    Tämä varmistaa, että todennusevästeet ovat voimassa kaikissa `overleaftest.com`-verkkotunnuksen aliverkkotunnuksissa.
  </Step>

  <Step title="Kielten ja verkkotunnusten vastaavuus">
    Määritä seuraavaksi, miten kielikoodit vastaavat aliverkkotunnuksia, muuttujalla\
    `OVERLEAF_LANG_DOMAIN_MAPPING`.

    #### Esimerkkimääritys

    ```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"}}'
    ```

    Tällä määrityksellä:

    * `https://www.overleaftest.com` → englanninkielinen käyttöliittymä
    * `https://cn.overleaftest.com` → yksinkertaistetun kiinan käyttöliittymä

    Voit laajentaa tätä vastaavuutta tarpeen mukaan lisäkielillä ja -aliverkkotunnuksilla.
  </Step>

  <Step title="Ohjaa pääverkkotunnus uudelleen">
    Ohjaa lopuksi pääverkkotunnus (`overleaftest.com`) oletuskielen verkkotunnukseen (`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.