首页
/ Apache Airflow UI 泰语翻译指南:术语保留策略、数式模式与本地化实现要点

Apache Airflow UI 泰语翻译指南:术语保留策略、数式模式与本地化实现要点

2026-09-05 16:47:41作者:明树来

本文为 Apache Airflow 国际化(i18n)体系中泰语(th)语言专属翻译指南的完整解读。它对应仓库中 th.md 这份 locale 级规范,读者读完后可掌握:哪些 Airflow 术语在泰语界面中必须保留英文、核心术语的标准泰语译法、泰语特有的数词与无性数变化规则,以及这些指南在 breeze 翻译校验工具 和 UI 语言配置中的落地方式。

文档定位:泰语翻译规范在 i18n 体系中的角色

Apache Airflow UI 的翻译工作由技能文档 SKILL.md 统一编排。该文档规定:翻译任务分为“新增语言”与“更新已有语言”两类,所有翻译 JSON 文件位于 airflow-core/src/airflow/ui/public/i18n/locales/<locale>/,英文 locale(en)是默认语言,也是所有翻译的主要来源。

在开始翻译某个语言前,必须先阅读该语言的 locale 专属指南;指南中规定了术语表(glossary)、语气规则与格式约定。SKILL.md 的“Locale-Specific Guidelines”表格列出了 19 种语言的指南文件,泰语对应 locales/th.md。其明确声明:

This document inherits all global rules from the parent SKILL.md.

也就是说,th.md 继承父文档的全部全局规则(如 {{variable}} 占位符不可翻译、hotkey 键值不翻译等),只在泰语特有的术语处理、数式模式、书写系统等方面给出补充规定。若 locale 指南与全局规则冲突,以 locale 指南为准。

从源码结构看,泰语目前已在 Airflow UI 中完整注册:config.tssupportedLanguages 数组中包含 { code: "th", name: "ไทย" },且 locales/th/ 目录下已有 admin.jsonassets.jsonbrowse.jsoncommon.jsoncomponents.jsondag.jsondags.jsondashboard.jsonhitl.jsontasks.json 共 10 个命名空间文件,与英文 locale 的命名空间一一对应。

必须保留英文的核心术语

th.md 的第一部分规定了泰语翻译中必须保留英文的术语,分为三组。

核心技术术语(คำศัพท์ทางเทคนิค)

术语 处理方式
Dag 保留为 "Dag"(Airflow 惯例;绝不写成 "DAG")
Dag Run 保留为 "Dag Run"
Task Instance 保留为 "Task Instance"
XCom 保留为 "XCom"
Asset 保留为 "Asset"
Backfill 保留为 "Backfill"
Dataset 保留为 "Dataset"
Pool 保留为 "Pool"
Sensor 保留为 "Sensor"
Hook 保留为 "Hook"
Operator 译为 "โอเปอเรเตอร์" 或保留英文
DagBag 保留为 "DagBag"

其中 "Dag 绝不用 DAG 全大写" 与父文档 SKILL.md 全局规则表中 "Dag / Dags:Airflow convention; always Dag, never DAG" 的要求完全一致。

UI 组件术语(ส่วนประกอบของอินเทอร์เฟซ)

术语 处理方式
Tree View 保留为 "Tree View" 或译为 "มุมมองต้นไม้"
Graph View 保留为 "Graph View" 或译为 "มุมมองกราฟ"
Grid View 保留为 "Grid View" 或译为 "มุมมองกริด"
Calendar View 保留为 "Calendar View" 或译为 "มุมมองปฏิทิน"
Gantt Chart 保留为 "Gantt Chart" 或译为 "แผนภูมิแกนต์"

代码与技术引用

以下内容在泰语翻译中一律不翻译:

  • 所有 Python 类名、函数名、变量名;
  • 配置键(如 dag_idtask_id);
  • 命令行参数与 flag;
  • 文件路径与 URL。

这一规则在实际翻译文件中可以得到印证。查看 th/common.json 可以看到:"dagId": "Dag ID""asset_one": "Asset""backfill_one": "Backfill" 等条目完整保留了英文术语,仅对说明性文字做了泰语翻译,例如 "dagRunTimeout": "ระยะหมดเวลาของ Dag Run"(Dag Run 超时时间)、"maxActiveTasks": "จำนวนงานที่ทำงานพร้อมกันสูงสุด"(同时运行任务数上限)。

常见 Airflow 术语的泰语译法

th.md 的“Common Airflow Terms in Thai”给出了三组标准译法表,是泰语翻译的权威术语对照。

核心概念(แนวคิดหลัก)

English Thai Notes
Task งาน 标准译法
Workflow เวิร์กโฟลว์ 音译
Pipeline ไปป์ไลน์ 音译
Connection การเชื่อมต่อ 标准译法
Variable ตัวแปร 标准译法
Provider ผู้ให้บริการ 标准译法
Trigger ทริกเกอร์ 音译
Scheduler ตัวกำหนดการ 标准译法
Executor ผู้ดำเนินการ 标准译法
Worker ผู้ปฏิบัติงาน 标准译法
Webserver เว็บเซิร์ฟเวอร์ 音译
Database ฐานข้อมูล 标准译法

动作(การกระทำ)

English Thai Notes
Run รัน / ทำงาน 用音译 "รัน" 或 "ทำงาน"
Execute ดำเนินการ 标准译法
Clear ล้าง 标准译法
Retry ลองใหม่ 标准译法
Fail ล้มเหลว 标准译法
Mark as Failed ทำเครื่องหมายว่าล้มเหลว 短语
Success สำเร็จ 标准译法
Mark as Success ทำเครื่องหมายว่าสำเร็จ 短语
Pause หยุดชั่วคราว 标准译法
Unpause ยกเลิกการหยุดชั่วคราว 短语

状态(สถานะ)

English Thai Notes
success สำเร็จ 标准译法
running กำลังดำเนินการ 标准译法
failed ล้มเหลว 标准译法
upstream_failed ต้นน้ำล้มเหลว 直译
skipped ถูกข้าม 标准译法
queued อยู่ในคิว 标准译法
scheduled มีกำหนดการ 标准译法
deferred เลื่อนเวลา 标准译法

这组状态译法覆盖了 Airflow 任务实例状态机的主要状态,译者维护 UI 状态徽章、日志提示时可以直接引用。

泰语的数式模式(Pluralization)

泰语与英语不同,名词没有语法上的复数形态——无论数量多少,名词形式不变,数量信息由数字和限定词表达。

数字与名词搭配

在 Airflow UI 和消息中,数字通常按以下格式表达:

  • 1 Task1 งาน
  • 2 Tasks2 งาน(名词形式不变)
  • Multiple Tasksงานหลายงาน(用限定词 "หลาย" 表示复数)
  • All Tasksงานทั้งหมด

数量指示词

泰语 含义
ไม่มี 无(0 项)
หนึ่ง 一(1 项)
สอง 二(2 项)
หลาย 多个(3 项及以上)
ทั้งหมด 全部
บางส่วน 部分

在 gettext(.po 文件)中的多式

文档给出的 gettext 多式写法为:

# Plural expression: 0
# Forms: _one, _other

msgid "%d task"
msgid_plural "%d tasks"
msgstr[0] "%d งาน"
msgstr[1] "%d งาน"

泰语的单数与复数形式使用相同翻译,数字后缀不随数量变化;需要表达复数语境时可用 "ทั้งหมด"(全部)等词。

需要注意仓库工具链中的实际配置:ui_commands.pyPLURAL_SUFFIXES 字典为泰语注册的是 "th": ["_other"](与日语、韩语、中文一致,只需 _other 一种 i18next 后缀),而阿拉伯语则有 _zero/_one/_two/_few/_many/_other 六种形态。从源码结构看,breeze 的 check-translation-completeness 校验会以该字典判定某语言“必需”的多式键——也就是说泰语 locale 只需保证 _other 键存在即可通过完整性检查。而实际的 th/common.json 中同时存在 dag_one/dag_otherasset_one/asset_other 等键,与英文 locale 的键结构保持对齐,这体现了指南中“与既有翻译保持一致”的要求。

书写系统与排版规则

th.md 对泰文书写系统给出 5 条规则:

  1. 书写方向:泰语自左向右书写(LTR),与英语相同;
  2. 文字系统:泰语翻译使用泰文字母(ตัวอักษรไทย);
  3. 混合内容:泰语与英文术语混排时,需保持合适的空格;
  4. 标点:泰语在使用标准标点的同时有其特定标点符号;
  5. 数字:技术语境中通用阿拉伯数字(0-9)。

文档给出的混合排版示例:

งาน Dag รันสำเร็จ (Dag run successful)

翻译风格指南(六条)

1. 技术术语何时保留英文

满足以下任一条件时,Dag、XCom、Operator 等术语保留英文:

  • 出现在代码或配置示例中;
  • 不存在清晰的泰语对应词;
  • 该术语在技术社区中普遍以英语使用;
  • 音译会使术语变得不清晰。

2. 音译 vs 意译

优先音译:专有名词与品牌名(Python、Apache、GitHub)、无直接译法的技术词(Workflow、Pipeline、Plugin)。

优先意译:常见概念(Task = งาน、Variable = ตัวแปร、Connection = การเชื่อมต่อ)、UI 元素(按钮 = ปุ่ม、菜单 = เมนู、视图 = มุมมอง)。

3. UI 标签

  • 保持简洁且前后一致;
  • 有标准泰语技术译法时使用标准译法;
  • 例如 "Tree View" → "มุมมองต้นไม้" 或保留 "Tree View";
  • 技术术语倾向于保留英文以保证清晰。

4. 动词与动作

UI 元素使用正式语体(รูปคำเป็นทางการ):

  • "Run" → "รัน"(祈使)或 "ดำเนินการ"(正式);
  • "Clear" → "ล้าง"(祈使);
  • "Trigger" → "เรียก"(祈使)或 "ทริกเกอร์"(音译)。

5. 文档

  • 使用正式泰语(ภาษาไทยรูปแบบทางการ);
  • 全文术语保持一致;
  • 首次引入新技术术语时给出英文原词作括注;
  • 在合适处使用敬语。

6. 错误消息

  • 错误消息必须清晰、可操作;
  • 必要时在消息中保留英文技术细节,例如:"การรันงานล้มเหลว: Task instance not found"
  • 用礼貌但直接的语言表述错误。

常见翻译模式(Context Patterns)

针对高频出现的多义术语,指南给出了分语境的标准译法:

"Run" 语境

英文 泰语
Run Dag "รัน Dag" 或 "ดำเนินการ Dag"
Dag run(名词) "การรัน Dag" 或 "Dag Run"
Run ID "รันไอดี" 或 "Run ID"

"Task" 语境

英文 泰语
Task failed "งานล้มเหลว"
Task instance "Task Instance" 或 "อินสแตนซ์งาน"
Task ID "Task ID" 或 "ไอดีงาน"

"Dag" 语境

英文 泰语
Dag run "การรัน Dag" 或 "Dag Run"
Dag ID "Dag ID" 或 "ไอดี Dag"
Sub Dag "Dag ย่อย" 或 "Sub Dag"

配置(Configuration)

英文 泰语
Airflow Config "การกำหนดค่า Airflow" 或 "Airflow Config"
Connection ID "Connection ID" 或 "ไอดีการเชื่อมต่อ"
Pool name "Pool name" 或 "ชื่อพูล"

泰语语言特征对翻译的影响

1. 语序

泰语采用 SVO(主-谓-宾)语序,与英语相似:

  • 英语:"Task runs successfully"
  • 泰语:"งานรันสำเร็จ"(Task run successful)

2. 无冠词

泰语不使用冠词(a、an、the):

  • "the task" → "งาน"
  • "a connection" → "การเชื่อมต่อ"

3. 无动词时态变化

泰语动词不因时态而变形,时态由时间词和语境表达:

  • "ran" → "รันแล้ว"(已运行)或 "รันไปแล้ว"(过去运行)
  • "will run" → "จะรัน"(将要运行)

4. 敬语词尾

正式文档和 UI 中可使用语气词:

  • ครับ(khrap)——男性使用者;
  • ค่ะ(kha)——女性使用者。

但在技术文档中为保持简洁通常省略;UI 文本中为保持性别中立也一般不使用敬语词尾。

翻译者资源与实操要点

th.md 为泰语翻译者列出 6 类资源:

  1. 泰语技术术语:使用既定的泰语计算机术语;
  2. 风格指南:遵循正式泰语规范;
  3. 术语表:与既往翻译的 Airflow 内容保持一致;
  4. 测试:测试翻译,确保渲染与可读性正确;
  5. 社区:参考泰语技术文档社区保证一致性;
  6. 既有泰语 locale 文件:以现有泰语 locale 文件为权威术语来源,保证与既有翻译一致。

指南末尾的 Notes 进一步强调:该文档基于对现有 Airflow locale 文件和泰语翻译模式分析;随着翻译演进应更新指南以反映社区共识;拿不准时,优先保留英文术语并配泰语解释;一致性是关键——同一术语在 UI 全程使用同一译法;泰语用户对英文技术术语接受度较高,保留英文通常可被接受。

仓库中的实现佐证

将 th.md 的规则与仓库实际实现对照,可以确认三条落地证据:

  1. 语言注册config.ts{ code: "th", name: "ไทย" } 加入 supportedLanguages,UI 语言切换器因此能展示泰语选项(父文档 SKILL.md 规定新增语言必须更新该文件)。
  2. 多式校验ui_commands.pyPLURAL_SUFFIXES 字典为 "th": ["_other"],breeze 的 check-translation-completeness 命令据此判定泰语必需的多式键。执行流程为:
    • breeze ui check-translation-completeness --language th 检查完整性;
    • --add-missing 为缺失键生成 TODO: translate: 桩;
    • --remove-unused 清理该语言不需要的多余键(如多余的多式后缀)。
  3. PR 标签boring-cyborg.yml 中配置了 translation:th 标签规则,指向 airflow-core/src/airflow/ui/public/i18n/locales/th/*,使泰语翻译的 PR 自动获得独立标签,便于评审分流。

实际翻译样例上,th/common.json 体现了指南的全部要点:"Pools": "พูล"(音译保留)、"Connections": "การเชื่อมต่อ"(标准意译)、"dagId": "Dag ID"(术语保留英文)、"darkMode": "โหมดมืด"(UI 元素意译)。这与 th.md 中"音译/意译分场景选择、技术术语保留英文"的规则逐条对应。

小结

泰语 locale 指南 th.md 的核心可归纳为四点:

  • 术语二分法:Dag、XCom、Asset、Backfill、Pool、Sensor、Hook、DagBag 等核心词保留英文(且 Dag 绝不全大写),Task、Variable、Connection 等通用概念用标准泰语译法,Workflow、Trigger 等用音译;
  • 无复数形态:名词不随数量变化,数量由数字与限定词(หลาย、ทั้งหมด 等)表达,i18next 层面仓库只为泰语注册 _other 一种多式后缀;
  • 排版约定:LTR 书写、中英混排留空格、技术语境用阿拉伯数字、UI 不强制敬语词尾;
  • 一致性优先:与 locales/th/ 下既有翻译保持一致,拿不准时保留英文并附泰语解释。

遵循这套规则,配合 breeze 完整性校验与 pre-commit 钩子,即可产出与 Airflow UI 既有翻译风格一致的泰语本地化内容。

登录后查看全文
热门项目推荐
相关项目推荐