> 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/es/configuracion/overleaf-toolkit/localization.md).

# Localización

### Configuración i18 de Overleaf

{% hint style="info" %}
Este documento describe cómo configurar la internacionalización (i18n) para una instancia autohospedada **Overleaf** instancia.
{% endhint %}

Overleaf ha sido traducido a varios idiomas. Con la configuración adecuada, puede:

* Ejecute su instancia de Overleaf en **un único idioma fijo**, o
* Habilitar **varios idiomas**, permitiendo a los usuarios cambiar de idioma dinámicamente, similar a `www.overleaf.com`.

***

#### Configuración de un solo idioma

El idioma del sitio se configura usando la variable de entorno `OVERLEAF_SITE_LANGUAGE`(o `SHARELATEX_SITE_LANGUAGE` para versiones de Overleaf **4.x y anteriores**).

Los códigos de idioma admitidos incluyen:

* `en` - Inglés (predeterminado)
* `es` - Español
* `pt` - Portugués
* `de` - Alemán
* `fr` - Francés
* `cs` - Checo
* `nl` - Neerlandés
* `sv` - Sueco
* `it` - Italiano
* `tr` - Turco
* `zh-CN` - Chino (simplificado)
* `no` - Noruego
* `da` - Danés
* `ru` - Ruso
* `ko` - Coreano
* `ja` - Japonés
* `pl` - Polaco
* `fi` - Finlandés

El inglés es el idioma predeterminado. Para cambiar el idioma de la interfaz (por ejemplo, a chino simplificado), añada la siguiente línea a `config/variables.env`:

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

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

{% endcode %}

Luego aplique la configuración:

```bash
bin/up
```

Después de que se reinicien los servicios, el idioma de la interfaz en los menús de la interfaz web debería reflejar la nueva configuración.

#### Configuración de varios idiomas

Para permitir que los usuarios **cambien de idioma sin cerrar sesión**, su instancia de Overleaf debe configurarse para servir diferentes idiomas según los nombres de dominio.

Esta sección asume:

* Su dominio principal es `overleaftest.com`
* Tiene un **certificado TLS comodín** (p. ej. `*.overleaftest.com`)
* Está **no usando `localhost`** (ya que no puede admitir el enrutamiento de idioma basado en subdominios)

Para pruebas locales, puede usar un dominio como `dev-overleaf.com`.

{% stepper %}
{% step %}

### Configuración del proxy TLS (Nginx)

Su proxy inverso TLS debe reenviar el original `Host` para que Overleaf pueda determinar a qué dominio de idioma accedió el usuario.

Asegúrese de que la siguiente directiva esté presente:&#x20;

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

Aquí hay un ejemplo de configuración de Nginx:&#x20;

<pre class="language-nginx"><code class="lang-nginx">server {
    listen 443 ssl;
    server_name    _; # Captura todo, consulte 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;
    # usa los cifrados de 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;

    # configuración para habilitar HSTS(HTTP Strict Transport Security) https://developer.mozilla.org/en-US/docs/Security/HTTP_Strict_Transport_Security
    # para evitar el 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; # cambie esto por el host/puerto en el que escucha el contenedor Docker.
        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;
        
        # añada esto a su configuración de nginx
<strong>        proxy_set_header Host $host;
</strong>    }
}
</code></pre>

{% endstep %}

{% step %}

### Configurar el dominio de la cookie

Para evitar que los usuarios cierren sesión al cambiar de idioma, las cookies deben compartirse entre los subdominios de idioma.

Añada la siguiente línea a `config/variables.env`:

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

```env
# Observe el punto inicial
COOKIE_DOMAIN=.overleaftest.com
```

{% endcode %}

Esto garantiza que las cookies de autenticación sean válidas para todos los subdominios bajo `overleaftest.com`.
{% endstep %}

{% step %}

### Asignación idioma–dominio

A continuación, defina cómo se asignan los códigos de idioma a los subdominios usando\
`OVERLEAF_LANG_DOMAIN_MAPPING`.

#### Ejemplo de configuración

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

Con esta configuración:

* `https://www.overleaftest.com` → interfaz en inglés
* `https://cn.overleaftest.com` → interfaz en chino simplificado

Puede ampliar esta asignación con idiomas y subdominios adicionales según sea necesario.
{% endstep %}

{% step %}

### Redirigir el dominio raíz

Por último, redirija el dominio raíz (`overleaftest.com`) al dominio de idioma predeterminado (`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/es/configuracion/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.
