> 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/fi/maaritys/overleaf-toolkit/localization.md).

# Lokalisointi

### Overleafin i18-määritys

{% hint style="info" %}
Tämä asiakirja kuvaa, miten itse ylläpidettävän **Overleaf** instanssin.
{% endhint %}

Overleaf on käännetty useille kielille. Asianmukaisella määrityksellä voit:

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

***

#### Yhden kielen määritys

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

Tuetut kielikoodit 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 kohtaan `config/variables.env`:

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

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

{% endcode %}

Sitten ota määritys käyttöön:

```bash
bin/up
```

Palveluiden käynnistyttyä 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:

* Pääverkkotunnuksesi on `overleaftest.com`
* Sinulla on **jokerimerkkiä käyttävä TLS-varmenne** (esim. `*.overleaftest.com`)
* Käytät **et käytä `localhost`** (koska se ei tue aliverkkotunnuksiin perustuvaa kieliohjausta)

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

{% stepper %}
{% step %}

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

TLS-käänteisvälityspalvelimesi on välitettävä alkuperäinen `Host` otsake, jotta Overleaf voi määrittää, mille kieliverkkotunnukselle käyttäjä siirtyi.

Varmista, että seuraava direktiivi on olemassa:&#x20;

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

Tässä on esimerkki Nginx-määrityksestä:&#x20;

<pre class="language-nginx"><code class="lang-nginx">server {
    listen 443 ssl;
    server_name    _; # Kaikki kiinni, 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 salausjoukkoja 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 estä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; # muuta tähän sen mukaan, millä isännällä/portissa Docker-säiliö 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ääritykseesi
<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 jaettuina kielialiverkkotunnusten kesken.

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

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

```env
# Huomaa etupiste
COOKIE_DOMAIN=.overleaftest.com
```

{% endcode %}

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

{% step %}

### Kielen–verkkotunnuksen yhdistäminen

Määritä seuraavaksi, miten kielikoodit yhdistetään 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` → yksinkertaistettu kiinalainen käyttöliittymä

Voit laajentaa tätä yhdistämistä lisäkielillä ja aliverkkotunnuksilla tarpeen mukaan.
{% endstep %}

{% step %}

### Uudelleenohjaa juuriverkkotunnus

Lopuksi ohjaa juuriverkkotunnus (`overleaftest.com`) oletuskielen verkkotunnukseen (`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/fi/maaritys/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.
