> ## 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-TW/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 名稱，並將它們全部導向 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 放在單引號中。`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.