ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Apache Airflow 阿拉伯语(ar)UI 本地化规范:六类复数、术语词表与 CLDR 规则的工程落地

2026/9/6 18:30:56 拓冰建站 浏览量
Apache Airflow 阿拉伯语(ar)UI 本地化规范:六类复数、术语词表与 CLDR 规则的工程落地 Apache Airflow 阿拉伯语arUI 本地化规范六类复数、术语词表与 CLDR 规则的工程落地【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow本篇指南基于 Apache Airflow 仓库中的阿拉伯语翻译 Agent 技能文档locales/ar.md展开系统讲解 Airflow UI 阿拉伯语arlocale 的术语体系、CLDR 六类复数规则、混合语写作约束与数字书写规范并结合 i18n 配置 与 breeze 翻译完整性检查工具 的源码实现说明这些规则如何在真实工程中生效。读完后你将掌握如何为 Airflow UI 新增或修订阿拉伯语字符串而不破坏既有译名一致性以及如何用仓库自带工具验证翻译覆盖度。1. 文档定位arlocale 的“权威术语源”阿拉伯语翻译指南是整个 airflow-translations 技能 中按语言拆分的 19 份 locale 指南之一与de.md、ja.md、zh-CN.md等并列见 SKILL.md 的 Locale-Specific Guidelines 表格。它的核心职责是锁定既有译名当Operator、Pool等术语在阿拉伯语 locale 文件中已有既定译法时新字符串必须复用原词而不是引入同义新词约束阿拉伯语特有的语言学规则包括 CLDR 六类复数、仅使用西方阿拉伯数字0-9、禁止对英文 Airflow 术语附加阿语双数/复数词尾等优先于全局规则SKILL.md 明确说明“若 locale 指南与全局规则冲突遵循 locale 指南”。推荐变体文档指定使用现代标准阿拉伯语MSA, Modern Standard Arabic与 ar locale 目录 下现有译文保持一致。1.1ar在 Airflow i18n 体系中的工程接入点从源码结构看ar的“合法身份”由以下仓库文件共同背书接入点文件作用前端语言清单config.tssupportedLanguages数组中注册{ code: ar, name: العربية }第 28 行UI 语言选择器与语言检测均基于此清单翻译文件目录locales/ar/存放 10 个命名空间 JSONadmin.json、assets.json、browse.json、common.json、components.json、dag.json、dags.json、dashboard.json、hitl.json、tasks.json与英语en/目录一一对应复数形式注册表ui_commands.pyPLURAL_SUFFIXES[ar]声明阿拉伯语所需的 6 个复数后缀第 76 行完整性检查文档10_ui_tasks.rstbreeze ui check-translation-completeness命令的官方用法说明值得注意的一个细节config.ts 中有一段关于convertDetectedLanguage的注释解释了 i18next 解析navigator.languages时“区域码回退到基础语言”的匹配顺序问题——这正是像ar这类单码 locale不像zh-CN/zh-TW带区域后缀在语言检测中的典型场景浏览器语言列表按序匹配时ar会直接命中清单中的精确码。2. 术语体系永不翻译词与标准译名表2.1 全局永不翻译词Arabic 与所有 locale 一致文档第 1 节列出以下术语在任何上下文中都不得翻译它们与 SKILL.md 的 Terms Kept in English 表 一致Airflow—— 产品名Dag/Dags—— Airflow 概念严禁写成DAG全大写是明确的 DONTXCom/XComs—— 跨任务通信机制名REST API、JSON、UTC日志级别CRITICAL、ERROR、WARNING、INFO、DEBUG。2.2 标准翻译对照表Standard Translations文档第 2 节的完整对照表如下这是新译名时的强制参照英文术语阿拉伯语翻译备注TaskمهمةTask Instanceمثيل المهمةTask Groupمجموعة المهامDag Runتشغيل Dag保留英文DagPoolمجموعة المواردProviderحُزمة现有 UI 多为复数حُزمOperatorالمشغّل现有 UI 复数المُشغِّلاتSchedulerالمُجَدْوِل组件标签Triggererالمُطلِق专指 triggerer不用于泛指 triggerExecutorمنفذ组件标签文档特别强调一条治理原则不要为尚未在阿拉伯语 locale 文件中出现过的术语补充词汇表条目。新术语出现时应先检查邻近既有序列的译文指南只收录有真实用法的词。2.3 词表在真实 locale 文件中的印证common.json 中的实际键值验证了上述词表并非纸面约定allOperators: جميع المُشغِّلات, // Operator 复数 taskInstance_one: مثيل المهمة, // Task Instance taskInstance.executor: منفذ, // Executor taskInstance.pool: مجموعة الموارد, // Pool nav.dags: Dags, // Dags 保留英文 dagId: معرف Dag, // Dag 保留英文 download.download: تنزيل, // 动作标签 modal.save: حفظ, // 动作标签 delete: حذف // 动作标签common.json 第 461-468 行 的triggerer对象class、id、job、title等键全部使用المُطلِق词形也印证了 Triggerer →المُطلِق的组件级约定而taskInstance.trigger第 460 行译为المُحفِّز触发器恰好体现文档中“المُطلِق专用于 triggerer 组件、不用于泛指 trigger”的区分。dags.json 则展示了 Dag 保留英文时的混排连写风格dagActions: { delete: { button: حذف الDag, warning: سيؤدي هذا إلى إزالة جميع البيانات الوصفية المرتبطة بالDag، بما في ذلك التشغيلات والمهام. } }3. 阿拉伯语专属写作规则3.1 语气与语域Tone and Register使用中性、专业的 MSA适合技术型 UI标签保持简洁优先复用ar/*.json中已有措辞而非选用更文学化或教科书式的替代说法。3.2 动作标签Action Labels文档明确给出既有 UI 中使用的简洁动作标签样例تشغيل运行、حذف删除、حفظ保存、تنزيل下载。不得为了新造标签而引入纯命令式形式如شغّل、امسح除非该确切上下文中现有 locale 已经在用。从 common.json 可以看到这些标签的实际形态delete: حذف、download.download: تنزيل、modal.save: حفظ且快捷键提示统一采用“اضغط {{hotkey}} …”句式如第 131 行tooltip: اضغط على {{hotkey}} لتنزيل السجلات。3.3 阿英混排与占位符Placeholders两条硬规则嵌入的英文 Airflow 术语保持原始大小写Dag、Dags、XCom不得变形占位符逐字保留{{count}}、{{dagDisplayName}}、{{hotkey}}等变量名不得翻译或删除只能为自然语序调整位置这与 SKILL.md 的 Variables and Placeholders 全局规则一致。现有 locale 中已确立的混排模式包括معرف DagDag ID、تشغيل DagDag Run、{{count}} Dags。dags.json 第 2 行 的assetSchedule: تم تحديث {{count}} من أصل {{total}}展示了两个占位符在同一句子中的自然排序——阿语“从…中更新…”的语序要求把{{total}}放到句尾。3.4 六类复数CLDR Arabic cardinal 规则这是阿拉伯语与其他 locale 差异最大的部分。Airflow 的 UI 工具链要求ar提供全部六个i18next 复数后缀键后缀适用数值基数规则_zero0_one1_two2_few3–10mod 100_many11–99mod 100_other其余情况即使某些形式文本相同也必须保留所有必需键。这条规则的工程实现就在 ui_commands.py 第 76 行PLURAL_SUFFIXES { ar: [_zero, _one, _two, _few, _many, _other], ja: [_other], pl: [_one, _few, _many, _other], ... }可以看到ar是表中唯一需要 6 种形式的语言注释第 73 行也写道“Arabic has 6 forms, Polish has 4 forms”。breeze ui check-translation-completeness正是用这份注册表来判定哪些复数键“缺失”、哪些“多余”expand_plural_keys 函数 会将复数基名如dag按目标语言的 suffix 集合展开若英文侧任一形式含{{count}}或存在多个复数形式则会强制要求该语言侧齐备。文档给出了三段可直接复用的仓库既有模式dag_zero: لا يوجد أي Dag, dag_one: Dag, dag_two: 2 Dags, dag_few: Dags, dag_many: Dags, dag_other: Dagspool_zero: لا يوجد أي مجموعة, pool_one: مجموعة, pool_two: مجموعتان, pool_few: مجموعات, pool_many: مجموعة, pool_other: مجموعةwarning_zero: لا يوجد أي تحذير, warning_one: 1 تحذير, warning_two: تحذيران, warning_few: {{count}} تحذيرات, warning_many: {{count}} تحذير, warning_other: {{count}} تحذير其中dag_*六键在 common.json 第 55-60 行 中一字不差地存在证明文档中的示例直接取自真实 locale而非杜撰。注意pool_*、task_*、taskGroup_*common.json 第 428-442 行等纯阿语词则使用了完整的形态变化如مهمتان/مجموعتا مهام而dag_*保留英文词形不变。关键规则对保留英文的 Airflow 术语直接使用英文词不得强加阿语双数或复数词尾。正确写法是2 Dags而不是Dagان或Dagين。3.5 数字书写仅西方阿拉伯数字只允许0 1 2 3 4 5 6 7 8 9禁止东方阿拉伯数字٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩。common.json 第 279-282 行 的timeRange是这一规则的实例last12Hours: آخر 12 ساعة、last24Hours: آخر 24 ساعة均使用西方数字。4. 既有译文示例从 locale 文件反查写法文档第 4 节整理自当前 locale 的真实条目可作为翻译时的“活词表”既定术语allOperators - جميع المُشغِّلات taskInstance_one - مثيل المهمة scheduler - المُجَدْوِل triggerer - المُطلِق executor - منفذ Providers - حُزمDag 相关模式dagId - معرف Dag triggerDag.title - تشغيل Dag favoriteDags_zero - لا توجد أي Dags مفضلة动作标签风格delete - حذف download.download - تنزيل modal.save - حفظ对照 common.json 可以确认这些条目如allOperators第 10 行、dagId第 84 行均真实存在admin.json、dashboard.json等其他命名空间文件则承载了scheduler、triggerer、executor等组件级标签。5. 实操工作流新增/更新ar翻译与验证SKILL.md 定义了标准流程阿拉伯语工作流与之完全一致locale取ar。由于airflow-core/src/airflow/ui/public/i18n/locales/ar/目录已存在日常场景走“更新既有翻译”分支先读本指南即本文对应的 ar.md建立词表与格式规则通读现有 JSON读 locales/ar/ 下的命名空间文件学习在用术语同词必须同译检查覆盖度breeze ui check-translation-completeness --language ar输出表应显示缺失/TODO/多余键数量与覆盖率补齐缺失键生成TODO: translate:桩breeze ui check-translation-completeness --language ar --add-missing清除废弃键英文 locale 已不需要的键或本语言不需要的复数后缀breeze ui check-translation-completeness --language ar --remove-unused翻译所有TODO: translate:条目替换整行含前缀为译文复数基名需一次写齐六个后缀验证再次运行 completeness 检查目标输出为 0 missing / 0 TODOs / 0 unused / 100% coverage然后运行 pre-commit 钩子修复格式与许可头breeze ui check-translation-completeness --language ar prek run --from-ref main --hook-stage pre-commit这些命令的完整参数语义见 dev/breeze/doc/10_ui_tasks.rst其中明确提到该命令“支持语言特定复数形式如波兰语 4 种、阿拉伯语 6 种并可自动增删键”。若是从零新增一个尚不存在的 locale则还需先建目录、在 config.ts 的 supportedLanguages 注册语言、在 ui_commands.py 的 PLURAL_SUFFIXES 注册复数后缀规则可对照 i18next 官方规则查询ar对应六后缀并用--add-missing生成桩文件后再翻译——ar已具备全部注册通常无需走这条路径。6. DO / DONT 速查清单DO应当与ar/*.json已有措辞保持一致保留Dag、XCom为英文原形使用适合软件 UI 的简洁 MSA复数键一次提供全部 6 个后缀仅使用西方阿拉伯数字示例一律取自现有 locale 文件而非自造。DONT禁止写出DAG全大写为当前 locale 未使用的术语凭空扩充大词表给Dag等英文 Airflow 术语附加阿语双数/复数词尾如Dagان在无仓库证据的情况下用教科书式译法替换既有 UI 措辞使用东方阿拉伯数字٠١٢٣…为每个阿语名词添加语法性别注释增加噪声且无必要不照抄 locale 真实条目而自造动作/状态示例。7. 相关路径索引资源路径阿拉伯语翻译指南本文主体locales/ar.md翻译技能总纲全局规则、工作流、验证SKILL.md阿拉伯语 locale 文件10 个命名空间 JSONlocales/ar/前端语言注册supportedLanguagesconfig.ts复数后缀注册表与完整性检查实现ui_commands.pybreeze UI 任务官方文档10_ui_tasks.rst适用前提本文规则基于当前仓库的arlocale 文件与 CLDR 阿拉伯语基数复数规则文档标注版本 1.02026 年 5 月。若 Airflow 后续调整 UI 工具链如复数后缀注册表或完整性检查命令应以仓库当前版本为准。【免费下载链接】airflowApache Airflow - A platform to programmatically author, schedule, and monitor workflows项目地址: https://gitcode.com/GitHub_Trending/ai/airflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考