> For the complete documentation index, see [llms.txt](https://ayakaleaf-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://ayakaleaf-pro.ayaka.space/on-premises/fi/konfiguraatio/overleaf-toolkit/localization.md).

# Lokalisointi

### Overleafin i18-määritys

{% hint style="info" %}
Tämä asiakirja kuvaa, miten kansainvälistäminen (i18n) määritetään itse isännöidylle **Overleaf** instanssille.
{% endhint %}

Overleaf on käännetty useille kielille. Oikeilla asetuksilla voit:

* Aja Overleaf-instanssiasi **yhdellä kiinteällä kielellä**, tai
* Ota käyttöön **useita kieliä**, jolloin käyttäjät voivat vaihtaa kieltä dynaamisesti, samoin kuin `www.overleaf.com`.

***

#### Yhden kielen määritys

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

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 yksinkertaistettuun kiinaan), lisää seuraava rivi tiedostoon `config/variables.env`:

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

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

{% endcode %}

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

```bash
bin/up
```

Palveluiden käynnistyttyä uudelleen verkkokäyttöliittymän valikoiden pitäisi heijastaa uutta asetusta.

#### Usean kielen määritys

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

Tässä osiossa oletetaan:

* Pääverkkotunnuksesi on `overleaftest.com`
* Sinulla on **wildcard-TLS-sertifikaatti** (esim. `*.overleaftest.com`)
* Käytät **et `localhost`** (koska se ei tue aliverkkotunnuksiin perustuvaa kielireititystä)

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

{% stepper %}
{% step %}

### TLS-välityspalvelimen määritys (Nginx)

TLS-käänteisen välityspalvelimesi on välitettävä alkuperäinen `Host` otsake, jotta Overleaf voi päätellä, mitä kieliverkkotunnusta käyttäjä käytti.

Varmista, että seuraava direktiivi on olemassa:

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

Tässä on esimerkkimääritys Nginxille:

<pre class="language-nginx"><code class="lang-nginx">server {
    listen 443 ssl;
    server_name    _; # Kaikki liikenne, katso 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;
    # käytetään Cloudflaren salauspaketteja 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;

    # määritys HSTS:n (HTTP Strict Transport Security) käyttöönottoon https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
    # ssl strippingin välttämiseksi 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; # vaihda tähän mikä tahansa isäntä/portti, jossa Docker-kontti kuuntelee.
        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;
        
        # lisää tämä nginx-määritystiedostoosi
<strong>        proxy_set_header Host $host;
</strong>    }
}
</code></pre>

{% endstep %}

{% step %}

### Määritä evästeiden verkkotunnus

Jotta käyttäjät eivät kirjaudu ulos kieltä vaihtaessaan, evästeiden on oltava yhteisiä kaikkien kielialiverkkotunnusten välillä.

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

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

```env
# Huomaa alussa oleva piste
COOKIE_DOMAIN=.overleaftest.com
```

{% endcode %}

Tämä varmistaa, että todennusevästeet ovat kelvollisia kaikille aliverkkotunnuksille, jotka kuuluvat `overleaftest.com`.
{% endstep %}

{% step %}

### Kielen–verkkotunnuksen kohdistus

Määritä seuraavaksi, miten kielikoodit kohdistetaan aliverkkotunnuksiin käyttäen\
`OVERLEAF_LANG_DOMAIN_MAPPING`.

#### Esimerkkimääritys

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

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ä kohdistusta lisäkielillä ja aliverkkotunnuksilla tarpeen mukaan.
{% endstep %}

{% step %}

### Ohjaa juuriverkkotunnus uudelleen

Lopuksi ohjaa juuriverkkotunnus (`overleaftest.com`) oletuskieliverkkotunnukseen (`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     /path/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 %}


---

# 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://ayakaleaf-pro.ayaka.space/on-premises/fi/konfiguraatio/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.
