> For the complete documentation index, see [llms.txt](https://docs.chamilo.org/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chamilo.org/3.x/zh/jiao-shi-zhi-nan/teacher-guide/adding-content/multi-language-content.md).

# 多语言内容

Chamilo 允许您在**同一字段中撰写同一内容的多种语言版本**——课程简介章节、文档、测验题目、调查问卷——并让每位学员自动只看到以其自身语言撰写的版本。这就是 **translate\_html** 功能，名称来自控制该功能的平台设置。

它涉及三类不同的人，各自看到不同的一面：

* **您的管理员**必须先在全平台启用该功能，之后任何人才能使用。
* \*\*您（教师）\*\*使用富文本编辑器中的按钮撰写不同语言版本。
* **学员**在完全不知情的情况下受益——他们只是看到自己语言的内容，无需查找或切换任何设置。

## 启用该功能

这是管理员任务，而非教师任务。在 **管理 > 配置设置 > 编辑器** 下，必须启用 **支持多语言 HTML 内容** 设置（`translate_html`）。如果您在编辑器工具栏中看不到下文所述的 **Lang ISO** 按钮，几乎可以肯定就是这个原因——请联系您的管理员。完整设置说明见 [编辑器设置](/3.x/zh/guan-li-zhi-nan/admin-guide/platform-settings/editor-settings.md)。自 v3.0.0 起，该设置默认启用（此前版本并非如此），除非您是从先前已禁用该设置的版本升级而来。

再次关闭此设置不会删除或破坏已按此方式撰写的任何内容——见下文 [学员看到的内容](#what-learners-see)。

## 撰写多语言内容

只要您拥有完整的富文本编辑器，即可使用该功能：[课程简介](/3.x/zh/jiao-shi-zhi-nan/teacher-guide/creating-your-course/course-description.md) 章节、[文档](/3.x/zh/jiao-shi-zhi-nan/teacher-guide/adding-content/documents.md)、测验与调查问卷题目等。

1. 像往常一样，用您的默认语言撰写（或粘贴）内容。
2. 选中该文本，然后点击编辑器工具栏中的 **Lang ISO** 按钮。
3. 从菜单中选择您刚才撰写所用的语言——列表涵盖平台已启用的每一种语言。如果所需语言未列出，请使用底部的 **Custom Chamilo ISO code...** 并输入代码（例如 `en_US`、`fr_FR`、`es`）。
4. Chamilo 会用该语言标签包裹您的选区。现在在其后撰写（或粘贴）下一种语言的版本，选中它，再用另一种语言重复上述操作。

按您希望覆盖的语言数量继续操作。所有版本都位于同一字段中——编辑时，您会看到每种语言版本依次堆叠；只有当有人实际*查看*页面时，Chamilo 才会隐藏除适用于该用户的那一种语言之外的全部内容（见下文）。

### AI 辅助翻译

如果管理员已配置 AI 文本提供方，同一 **Lang ISO** 菜单顶部还会提供 **Add translation to...**。这会将您现有内容发送到已配置的 AI 模型，并按您选择的语言插入一个新的自动翻译块（若平台允许，也可一次性覆盖所有剩余语言）——您不必亲自撰写。已有语言块保持不变，已存在的语言会从列表中排除，因此反复使用不会产生重复。

与任何 AI 生成内容一样，请校对结果——这是快速获得您可能不会说的语言的可靠初稿的方式，不能替代审阅。

## 学员看到的内容

每位学员恰好看到一种语言版本：Chamilo 首先尝试其界面语言；若您的语言块均不匹配，则回退到课程自身语言，再回退到平台默认语言；若仍无一匹配，则显示您碰巧最先撰写的那种语言，而不是留空。这一切自动发生——学员无需配置任何内容，您也无需按学员单独配置。

以下是同一课程简介章节，由界面语言不同的三位学员所见——这三张截图之间课程本身没有任何变化，仅查看者自身语言不同：

### 底层原理

如果你打开多语言字段的 **源代码** 视图（编辑器工具栏中的 `<>` 按钮），会看到每种语言版本被包裹成如下形式：

每个版本都包裹在 `<div class="mce-translatehtml" lang="...">` 中（若是短的行内短语而非整块内容，则使用 `<span>`）——Chamilo 正是根据该 `lang` 属性与查看者的语言进行匹配，以决定显示哪一部分。若你需要检查页面源代码或排查显示异常的内容，值得记住这个特定的类名：**`mce-translatehtml`** 就是要查找的标记。

这也解释了为何在平台设置中禁用 `translate_html` 不会破坏已有内容：该设置仅控制编辑器中是否显示 **Lang ISO** *编写* 按钮。上文所述的 *显示端* 过滤始终会运行，因此即便管理员之后关闭了编写按钮，先前写好的多语言内容仍会为每位查看者正确过滤。

## 标题并不按这种方式工作

课程标题、文档标题、测验标题——这些都是纯文本字段，而非富文本，因此无法容纳上文所述带 `lang` 标记的标记。无论查看者是谁，它们都保持为单一、中性的值，与你在其下内容中编写了多少种语言版本无关。

唯一例外：若管理员已为你正在编辑的特定标题字段启用了 **将标题保存为 HTML**（`save_titles_as_html`，同样位于 **管理 > 配置设置 > 编辑器**），该字段也会变成真正的 HTML 字段，从而可以对其应用上文所述的同一套 **Lang ISO** 方法。这种情况并不常见，主要用于测验题目——平台上大多数标题仍为纯文本。

## 提示

* **将源语言放在最前** — 把平台最常用的语言放在字段最前面；若之后忘记为较少使用的语言打标签，这是最自然的回退。
* **不要嵌套语言块** — 将每个版本写成独立、顺序排列的块；不支持把一个包在另一个里面，插入新标记时编辑器会主动解开嵌套标记。
* **某一语言下某节看起来为空** 通常表示从未为该语言（或其扩展的课程/平台默认回退）打过标签——请在源代码视图中检查实际存在的语言。
