news 2026/9/8 21:27:54

Apache Airflow 印地语(hi)UI 翻译规范:术语表、风格原则与源码实现对照

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Apache Airflow 印地语(hi)UI 翻译规范:术语表、风格原则与源码实现对照

Apache Airflow 印地语(hi)UI 翻译规范:术语表、风格原则与源码实现对照

【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow

本文以 Airflow 仓库中印地语(Hindi,hi)翻译 Agent Skill 规范文件 hi.md 为主体,完整解读其中的语调风格、保留英语术语清单、20 项推荐术语对照表和五条翻译原则,并结合 UI 国际化配置 config.ts、breeze 翻译校验工具 ui_commands.py 及已合并的印地语翻译文件(airflow-core/src/airflow/ui/public/i18n/locales/hi/)进行源码级佐证。读完后你将掌握:Airflow UI 国际化体系中文案术语规范如何制定、如何落地到 JSON 命名空间文件、以及如何用 breeze 命令验证翻译完整性。

一、定位:hi 语言规范在 Airflow 翻译体系中的角色

Airflow 的 UI 翻译工作由 SKILL.md 定义的翻译技能统一驱动。该文件规定了翻译任务的两种路径——新增语言(Adding a Translation)与更新已有语言(Updating an Existing Translation)——并给出全局翻译规则:哪些术语必须保留英文(如AirflowDagXComProviderREST APIJSONIDPIDUTCSchema)、i18next 的{{variable}}插值占位符不可翻译但可调整顺序、复数后缀(_one_other及语言需要的_zero/_two/_few/_many)、热键值不翻译等。

在 SKILL.md 的“Locale-Specific Guidelines(语言特定规范)”表格中,hi指向本文章解读的文件 locales/hi.md。这类语言特定规范包含三个部分:术语表(glossary)、语调规则(tone rules)与格式约定(formatting conventions)。SKILL.md 明确规定优先级规则:“若语言特定规范与本文档的全局规则冲突,遵循语言特定规范。”因此 hi.md 中的术语表和风格要求是印地语翻译的最高依据。

从源码结构看,hi已是正式受支持的语言:

  • 前端语言注册表 config.ts 的supportedLanguages数组中包含{ code: "hi", name: "हिन्दी" }
  • 该文件的convertDetectedLanguage函数(config.ts)会把浏览器区域码(如hi-IN)归一化到基础语言码hi,保证印度用户访问时 UI 正确加载印地语文案;
  • 翻译文件位于airflow-core/src/airflow/ui/public/i18n/locales/hi/,包含 10 个与英文 locale 对应的命名空间 JSON:admin.jsonassets.jsonbrowse.jsoncommon.jsoncomponents.jsondag.jsondags.jsondashboard.jsonhitl.jsontasks.json

二、语调与风格(Tone and Style)

hi.md 对印地语文案的风格规定了三条硬性要求:

  1. 使用正式、尊敬的语言(formal and respectful language);
  2. 以 “आप” 称呼用户——印地语有正式的“आप”与随意的“तुम/तू”之分,UI 面向所有专业用户,必须使用正式称谓;
  3. 句子结构清晰简洁,优先清晰易懂的短句。

这一风格在已合并的翻译文件中可以印证,例如 hi/tasks.json 中"selectOperator": "ऑपरेटर चुनें"(请选择 Operator)、"searchTasks": "टैस्क्स खोजें"(搜索任务)均为祈使式正式表达。同目录下的 hi/README.md 也用印地语复述了这一决策:“उपयोगकर्ता को 'आप' कहकर संबोधित किया गया है और विनम्र भाषा का प्रयोग किया गया है”(用户以“आप”称呼,并使用恭敬的语言)。

三、必须保留英语的术语(Keep in English)

hi.md 明确列出三类在印地语翻译中不得翻译的术语:

术语保留原因
XComAirflow 特有机制名(跨任务通信),翻译会造成歧义
ID通用技术缩写
Log Levels(CRITICAL、ERROR、WARNING、INFO、DEBUG)日志级别在日志输出中以英文原样出现,翻译会与实际日志脱节

这与 SKILL.md 的全局“保留英文术语”规则一致(全局表还包括AirflowDagProviderREST APIJSONPIDUTCSchema)。值得注意的是,Airflow 的书写惯例是Dag而非DAG——这一约定在 dag.json 等文件中以音译डैग体现。

四、推荐术语表(Preferred Translations)全解

hi.md 的核心资产是一张 20 行的“英文术语 → 印地语”对照表。它是未来所有印地语翻译必须复用的既定术语。完整继承如下:

英文术语印地语
Dagडैग
Dag Runडैग रन
Taskकार्य
Task Instanceटास्क इंस्टेंस
Assetएसेट
Asset Eventएसेट इवेंट
Configurationविन्यास
Connectionsकनेक्शन
Operatorऑपरेटर
Variableवेरिएबल
Pluginsप्लगइन
Poolsपूल
Providerप्रोवाइडर
Triggerट्रिगर
Backfillबैकफ़िल
Bundleबंडल
Scheduledनिर्धारित
Map Indexमैप इंडेक्स
Try Numberप्रयास संख्या
Keyकुंजी
Homeमुख्य पृष्ठ

这些术语并非随意选定,而是遵循“纯印地语 vs 音译”的权衡,hi/README.md 对每项给出了决策理由:

  • 音译(transliteration)DagडैगTaskटास्कAssetएसेट(避免与“数据资产/财产”歧义)、Triggerट्रिगरVariableवेरिएबल——这些都是 Airflow 特有概念或行业通用技术词,音译对印地语读者更直观;
  • 纯印地语词Configurationविन्यास(而非音译“कॉन्फ़िगरेशन”)、Homeमुख्य पृष्ठScheduledनिर्धारितTry Numberप्रयास संख्या——这些是常见 UI 词汇,用纯印地语词表达更专业;
  • 细节取舍Keyकुंजी而非की(后者是占有格介词,会造成混淆);Asset Eventएसेट इवेंट而非“घटना”(“事件”),因为技术语境下 event 指系统事件;BackfillBundleMap Index保持音译。

一个值得注意的一致性事实:hi.md 术语表中Task的推荐译法为कार्य,而已合并的翻译文件实际采用的是音译टास्क(见 hi/README.md 中 “Taskटास्क” 的说明,以及 hi/common.json 中的maxActiveTasks: "अधिकतम सक्रिय टास्क्स")。SKILL.md 明确规定“若某术语已有既定译法,必须原样复用”,因此实际 JSON 文件是运行时一致性的最终来源;维护翻译时应以 locale 目录下既有 JSON 为准。

五、五条翻译原则(Translation Principles)

hi.md 给出的五条原则构成了印地语翻译的决策框架:

  1. 正式的 UI 语言(Formal UI language):保持专业软件所需的礼貌与清晰;
  2. 常见 UI 词优先纯印地语(Pure Hindi for common UI words):在清晰度足够时用如विन्यास(配置)这类纯印地语词,而非音译;
  3. 技术概念用音译(Transliteration for technical concepts):Airflow 特有术语一律音译,如डैगटास्क
  4. 避免歧义(Avoid ambiguity):若直译可能让用户困惑,优先选择音译。例如Asset直译为“资产/财产”会与财务含义混淆,故取एसेट
  5. 语境感知(Context awareness):翻译要匹配技术含义而非词典字面义。

原则 2 与 4 看似矛盾(一个要求纯印地语、一个要求音译),实际分工清晰:判断标准是词汇的“领域属性”——通用界面词(配置、首页、调度)走原则 2,Airflow 领域词(Dag、Asset、Backfill、Trigger)走原则 3/4。hi/common.json 开头几行即体现该分工:"Config": "विन्यास"(纯印地语)与"Connections": "कनेक्शन""Providers": "प्रोवाइडर"(音译)并存于同一 admin 命名空间。

六、状态词的特殊约定:states.nonestates.no_status

hi.md 的 Notes 一节规定了两组极易混淆的 UI 状态文案:

  • states.none“कुछ नहीं”(意为“什么都没有”)
  • states.no_status“कोई स्थिति नहीं”(意为“没有状态”)

这一区分在已合并的翻译文件中被精确落实:hi/common.json 中:

"no_status": "कोई स्थिति नहीं", "none": "कुछ नहीं"

两者的语义差异在于:none表示“空值/无内容”,而no_status表示“实体存在但未设置状态”。若两者都译成“没有”,用户将无法区分任务实例的这两种情形。该约定同样被 hi/README.md 记录为“特殊注释”。

七、复数规则与源码实现:hi 只需_one/_other

Airflow UI 使用 i18next 处理复数,SKILL.md 要求为每种语言提供其所需的复数后缀集合。印地语的复数规则在后端校验工具 ui_commands.py 的PLURAL_SUFFIXES字典中定义:

MOST_COMMON_PLURAL_SUFFIXES = ["_one", "_other"] PLURAL_SUFFIXES = { "ar": ["_zero", "_one", "_two", "_few", "_many", "_other"], # 阿拉伯语 6 种 "pl": ["_one", "_few", "_many", "_other"], # 波兰语 4 种 ... "hi": MOST_COMMON_PLURAL_SUFFIXES, # 印地语:只需 _one 与 _other ... }

从源码结构看,PLURAL_SUFFIXES决定 breeze 校验工具如何计算每个 locale 的“必需键集”——缺少任何一个后缀的键都会被判为 missing。印地语只需两种复数形式,这直接反映在 hi/common.json 的实际键名中:

"asset_one": "एसेट", "asset_other": "एसेट्स", "backfill_one": "बैकफ़िल", "backfill_other": "बैकफ़िल्स", "dag_one": "डैग", "dag_other": "डैग्स", "assetEvent_one": "एसेट इवेंट", "assetEvent_other": "एसेट इवेंट्स"

可以看到单数/复数通过词尾-s音译变化区分(如एसेट/एसेट्स),符合 i18next 的{{count}}插值机制。

八、翻译文件的结构、加载链路与完整性校验

文件结构。所有翻译文件都是 JSON,位于airflow-core/src/airflow/ui/public/i18n/locales/<locale>/,每个 locale 目录包含与英文默认 locale(en/)镜像的命名空间文件。前端初始化时(config.ts)通过 i18next-http-backend 按${basePath}/static/i18n/locales/{{lng}}/{{ns}}.json?v=<version>的路径拉取对应语言的 JSON,并以 Airflow 版本号做缓存破坏(cache buster),保证新键随版本发布即时生效。

校验流程。按照 SKILL.md 的工作流,完成或修改印地语翻译后应执行:

# 1. 检查完整性(期望输出:0 missing、0 TODO、0 unused、100% coverage) breeze ui check-translation-completeness --language hi # 2. 如有缺失键,生成带 "TODO: translate:" 桩的脚手架 breeze ui check-translation-completeness --language hi --add-missing # 3. 如有冗余键(英文 locale 已删除的键、或多余的复数后缀),移除 breeze ui check-translation-completeness --language hi --remove-unused # 4. 运行 pre-commit 钩子修复格式、许可证与 lint 问题 prek run --from-ref main --hook-stage pre-commit

其中--add-missing生成的桩形如"allRuns": "TODO: translate: All Runs",翻译时需连同前缀一并替换为目标文案;--remove-unused移除的是“英文 locale 中不存在”或“该语言不需要的复数后缀”键——对hi而言,若出现_few之类的键即属冗余。

当前完成度。hi/README.md 记录该 locale 的翻译状态为:100% 完整(638/638 条翻译)、9 个 JSON 文件、所有 linter 检查通过、无缺失键——hi.md 规范正是“从既有印地语 locale 指南中提炼而来”,用于保障未来翻译迭代的一致性。

九、小结:维护印地语翻译的三条实操依据

  1. 术语以既有 JSON 为准:翻译新键时先读airflow-core/src/airflow/ui/public/i18n/locales/hi/下已用术语并原样复用,其次参照 hi.md 术语表,二者冲突时以 locale 实际文件为准;
  2. 风格三不变:正式语气、以 “आप” 称呼用户、句子简短清晰;XComID、日志级别永不翻译;
  3. 交付前跑校验breeze ui check-translation-completeness --language hi必须达到 0 missing / 0 TODO / 0 unused / 100% coverage,并用prek run --from-ref main --hook-stage pre-commit收尾。

掌握以上内容,即可在 Airflow 仓库中独立完成印地语 UI 翻译的新增键、修订与一致性维护工作。

【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/8 21:23:30

免Root清理Android预装应用:Universal Android Debloater完整指南

免Root清理Android预装应用&#xff1a;Universal Android Debloater完整指南 【免费下载链接】universal-android-debloater Cross-platform GUI written in Rust using ADB to debloat non-rooted android devices. Improve your privacy, the security and battery life of …

作者头像 李华
网站建设 2026/9/8 21:23:24

Jarbas靶机渗透实战:从信息收集到SUID提权的完整链路

靶机渗透是个老生常谈的话题&#xff0c;但每次打一台新靶机&#xff0c;都能把很多零散的知识串起来。Jarbas是我最近在VulnHub上重新刷的一台Linux靶机&#xff0c;体量不大&#xff0c;难度中等偏易&#xff0c;但覆盖的知识点非常典型&#xff1a;Web目录发现、弱口令爆破、…

作者头像 李华
网站建设 2026/9/8 21:23:21

GuardAlign:多模态大模型测试时安全对齐机制解析

1. GuardAlign 出现之前&#xff0c;多模态安全对齐到底缺什么看到 GuardAlign 这篇论文标题时&#xff0c;我第一反应不是“又多了一个安全测评”&#xff0c;而是它把 Test-time Safety Alignment 这个关键词顶到了标题中间&#xff0c;并且明确限定在 Multimodal Large Lang…

作者头像 李华
网站建设 2026/9/8 21:23:14

AI Agent科研技能评测:从聊天到163项可验证技能

如果你平时拿大模型去处理文献、写实验方案、整理数据&#xff0c;很快就会有一个感受&#xff1a;它能聊&#xff0c;但在真实的科研问题上经常"假装工作"。让它设计一个对照实验&#xff0c;它交出一份看起来完整、但连样本量和重复次数都没交代的方案&#xff1b;…

作者头像 李华
网站建设 2026/9/8 21:22:26

从构建到满帧:RPCS3 PS3 模拟器五步实操配置指南

从构建到满帧&#xff1a;RPCS3 PS3 模拟器五步实操配置指南 【免费下载链接】rpcs3 PlayStation 3 emulator and debugger 项目地址: https://gitcode.com/GitHub_Trending/rp/rpcs3 面向想在自己电脑上跑 PS3 游戏的玩家&#xff0c;本文按 构建模拟器、装固件、加载游…

作者头像 李华