> ## 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/zh-CN/on-premises/configuration/overleaf-toolkit/localization.md)。

| | |
| - | - |
| 服务 | web，位于每个 Ayakaleaf Pro pod 中；在 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 名称，并使用覆盖所有这些名称的证书（例如 `*.example.com`）将它们全部路由到 Ayakaleaf Pro。你的 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 放在单引号中。`OVERLEAF_LANG_DOMAIN_MAPPING` 中的 JSON 无效会导致 pod 的所有服务在启动时停止，因此请在重启后检查 `kubectl -n overleaf get pod`。

### 多个副本

语言取决于每个请求的主机名，因此与副本无关。负载均衡器的粘性 cookie 是按主机名设置的（除非你为其指定域名），因此切换语言可能会将用户转移到另一个副本；其会话保存在 Redis 中，仍然有效。

### 在 Kubernetes 上的测试

在 Kubernetes 1.37 上部署于 HAProxy 之后，`OVERLEAF_LANG_DOMAIN_MAPPING` 将站点主机映射为英语、`de.` 主机映射为德语、带有 NodePort `:30081` 的 `fr.` 主机映射为法语：站点主机显示英语，`de.` 主机显示德语，而带端口的 `fr.` 主机回退为英语，与上文所述一致。


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