# 国际化支持（工作语言 vs 界面语言）

英文版：[English](./i18n.md)

Dominds 有两个独立的语言设置：

## 1) 工作语言（服务器范围）

- **影响范围：** 智能体系统提示、内部指导消息、对话间（队友/支线对话）叙事格式化。
- **设置方式：** 标准语言环境变量（`LANG`）。
- **默认值：** 操作系统的默认语言（尽最大努力）；回退到 `en`。
- **支持的语言（v1）：**
  - `en`
  - `zh`

### 智能体思维加载（文件偏好）

加载智能体思维文档（例如 `persona`、`knowhow`、`pitfalls`）时，优先使用工作语言特定的文件名，然后按各类型自己的回退顺序查找：

1. `persona.<workLanguageCode>.md`（例如当工作语言是 `en` 时为 `persona.en.md`）
2. `persona.md`
3. `knowhow.<workLanguageCode>.md` → `knowhow.md`
4. `pitfalls.<workLanguageCode>.md` → `pitfalls.md`

示例：

```bash
# 开发服务器（外部 rtws）
LANG=zh_CN.UTF-8 ./dev-server.sh

# 生产环境 WebUI 服务器（dominds CLI）
LANG=en_US.UTF-8 dominds webui
```

## 2) UI 语言（每个 WebUI 客户端）

- **影响范围：** WebUI 界面文案 + 智能体在回复当前用户时被要求的语言。
- **不影响范围：** 智能体的内部工作语言、系统提示或队友/支线对话格式化语言。
- **设置方式：** WebUI 右上角的下拉菜单（存储在 `localStorage` 中，键为 `dominds-ui-language`）。
- **支持的语言（v1）：** `en`, `zh`。

### 每次提示的语言偏好（多客户端安全）

从 WebUI 发送到后端的每个用户提示都携带 `userLanguageCode`（源自发送时发送者的 UI 语言）。

后端将其存储在 `Dialog` 的 `lastUserLanguageCode` 上，用于当前对话，这样不同的客户端可以在同一个对话中交替使用语言，智能体在生成下一个回复时应遵循最新提示的语言偏好。
