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

# Локализация

> Запускайте развёртывание на Kubernetes на одном языке или на нескольких языках, каждый на своём поддомене.

Сервис **web** выбирает язык интерфейса по приведённым ниже настройкам — для каждого запроса по имени хоста, которое использовал браузер. Языки и настройки описаны на странице [Локализация](https://ayakaleaf-pro.mintlify.site/ru/on-premises/configuration/overleaf-toolkit/localization.md).

| | |
| - | - |
| Сервис | web, в каждом поде Ayakaleaf Pro; считывается при запуске web |
| Сеть | одно имя хоста на язык, все направляются на Ayakaleaf Pro |
| Периодические задачи | нет |

### Один язык

```yaml theme={null}
  OVERLEAF_SITE_LANGUAGE: zh-CN
```

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
```

### Несколько языков на поддоменах

**1. Направьте хост каждого языка на Ayakaleaf Pro**

Добавьте DNS-имя для каждого языка и направьте их все на Ayakaleaf Pro с сертификатом, который их покрывает, например `*.example.com`. Ваш ingress или балансировщик нагрузки должен передавать заголовок `Host` без изменений, что ingress-nginx и HAProxy делают по умолчанию.

Пользователи должны обращаться к языковым хостам через стандартные порты (`https://cn.example.com`, а не `https://cn.example.com:30443`): Ayakaleaf Pro сравнивает хост без порта.

**2. ConfigMap**

```yaml title="30-config.yaml (additions)" wrap theme={null}
  OVERLEAF_SITE_URL: https://www.example.com
  COOKIE_DOMAIN: .example.com
  OVERLEAF_LANG_DOMAIN_MAPPING: '{"www": {"lngCode": "en", "url": "https://www.example.com"}, "cn": {"lngCode": "zh-CN", "url": "https://cn.example.com"}}'
```

`COOKIE_DOMAIN` позволяет cookie входа работать на всех языковых хостах. Заключите JSON в одинарные кавычки. Недопустимый JSON в `OVERLEAF_LANG_DOMAIN_MAPPING` останавливает все сервисы пода при запуске, поэтому после перезапуска проверьте `kubectl -n overleaf get pod`.

### Несколько реплик

Язык определяется по имени хоста каждого запроса, поэтому он не зависит от реплики. Sticky-cookie балансировщика нагрузки устанавливается для каждого имени хоста отдельно, если не задать для него домен, поэтому переключение языка может перевести пользователя на другую реплику; его сеанс хранится в Redis и остаётся действительным.

### Проверено на Kubernetes

В Kubernetes 1.37 за HAProxy, с `OVERLEAF_LANG_DOMAIN_MAPPING`, сопоставляющим хост сайта с английским, хост `de.` с немецким и хост `fr.` с NodePort `:30081` с французским: хост сайта отображался на английском, хост `de.` — на немецком, а хост `fr.` с портом откатывался на английский, как описано выше.


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