Airflow翻译管理_airflow-translations
2026/7/23 20:40:14 网站建设 项目流程

以下为本文档的中文说明

airflow-translations 是 Apache Airflow 项目的国际化翻译管理技能,用于为 Apache Airflow 的用户界面添加或更新翻译。该技能提供了一套完整的翻译工作流程:从设置新的语言环境、搭建翻译文件框架、按照语言特定规范进行翻译,到最终验证翻译结果的正确性。翻译工作分为两种情况:如果目标语言环境已存在,则直接进入更新现有翻译的流程;如果目标语言环境尚不存在,则需先完成添加翻译的初始化配置。添加新翻译时,需要先在指定目录下创建语言环境文件夹,然后更新多个配置文件,并在保持现有字母排序的前提下插入新语言条目。使用场景包括:将 Airflow UI 翻译成新的语言以服务更多地区的用户;对已有翻译进行校对和更新以修复错误或过时的内容;在 Airflow 版本升级后同步更新翻译文件以覆盖新增的 UI 文本;以及社区贡献者为自己的母语提交翻译改进。该技能的工作目录位于 airflow-core/src/airflow/ui/public/i18n/locales/ 下。核心特点包括:结构化的翻译添加流程、自动化的配置文件更新指引、语言特定的翻译规范指导、以及翻译结果的验证机制。对于 Apache Airflow 这样一个全球使用的开源项目来说,翻译工作的规范化管理对于提升全球用户体验和促进社区参与具有重要意义。


Airflow Translations

Determining the Task

Translation work falls into one of two categories depending on whether the
target locale already exists. Check if a directory for the locale exists under
airflow-core/src/airflow/ui/public/i18n/locales/<locale>/. If it does, skip
ahead toUpdating an Existing Translation. If not, start withAdding a Translationbelow.


Adding a Translation

When adding a translation, some configuration files need to be updated before translation work can begin.

Setting up the locale

First, create the locale directory:

mkdir -p airflow-core/src/airflow/ui/public/i18n/locales/<locale>/

Then update the following configuration files, keeping the existing alphabetical
ordering in each file:

airflow-core/src/airflow/ui/src/i18n/config.ts: add the locale to the
supportedLanguagesarray:

{code:"<locale>",name:"<native name>"},

dev/breeze/src/airflow_breeze/commands/ui_commands.py: add the plural
suffixes for the language to thePLURAL_SUFFIXESdict. Check the i18next
plural rules for the language at https://jsfiddle.net/6bpxsgd4 to determine
which suffixes are needed:

"<locale>": ["<suffixes>"],

.github/boring-cyborg.yml: underlabelPRBasedOnFilePath, add:

translation:<locale>:-airflow-core/src/airflow/ui/public/i18n/locales/<locale>/*

Scaffolding the translation files

Once the configuration is in place, run the breeze command to copy every
English namespace file into the new locale directory. This populates each key
with aTODO: translate:stub:

breeze ui check-translation-completeness--language<locale>--add-missing

The generated files will look like this:

{"allRuns":"TODO: translate: All Runs","blockingDeps":{"dependency":"TODO: translate: Dependency","reason":"TODO: translate: Reason"}}

Translating

With the scaffolded files in place, read the locale-specific guideline for the
target language (see the table underLocale-Specific Guidelinesbelow). If
one exists, it contains the glossary, tone rules, and formatting conventions
that must be followed. If no locale-specific guideline exists yet, follow the
translation rules described later in this document.

Replace everyTODO: translate: <English terminology>entry, including the prefix,
with the translated string.

After all entries are translated, continue toValidationbelow.


Updating an Existing Translation

When a locale already exists and you need to fill translation gaps, revise
existing translations, or remove stale keys, start by reading the
locale-specific guideline for the language (see the table under
Locale-Specific Guidelinesbelow). This establishes the glossary and
formatting rules to follow.

Next, read the locale’s existing JSON files under
airflow-core/src/airflow/ui/public/i18n/locales/<locale>/to learn the
terminology already in use. Consistency with established translations is
critical. If a term has been translated a certain way, reuse that exact
translation.

Then check the current state of completeness:

breeze ui check-translation-completeness--language<locale>

If there aremissingkeys, scaffold them withTODO: translate:stubs:

breeze ui check-translation-completeness--language<locale>--add-missing

If there areextrakeys (present in the locale but not in English), remove
them:

breeze ui check-translation-completeness--language<locale>--remove-extra

Now translate theTODO: translate:entries following the locale-specific
guideline, then continue toValidationbelow.


Validation

After completing translations, run these checks:

Check completeness. The output should show 0 missing, 0 extra, and 0 TODOs:

breeze ui check-translation-completeness--language<locale>

Run pre-commit hooks to fix formatting, licenses, and linting issues:

prek ru n --from-ref main --hook-stage pre-commit

General Translation Rules

The following rules apply globally. If the locale-specific guideline for a
language states differently, follow the locale-specific guideline.

Terms Kept in English

The terms below should remain in English by default. Locale-specific guidelines
may override individual entries where an established local convention exists:

TermReason
AirflowProduct name
Dag/DagsAirflow convention; alwaysDag, neverDAG
XCom/XComsAirflow cross-communication mechanism name
Provider/ProvidersAirflow extension package name
REST APIStandard technical term
JSONStandard technical format name
IDUniversal abbreviation
PIDUnix process identifier
UTCTime standard
SchemaDatabase term

Variables and Placeholders

Translation strings use{{variable}}interpolation (i18next format).
Never translate or remove variable names inside{{…}}. Placeholders may be
reordered as needed for natural word order, but the exact variable casing must
be preserved (e.g.,{{dagDisplayName}}).

Plural Forms

Airflow uses i18next plural suffixes (_one,_other, and optionally_zero,
_two,_few,_many). Provide translations for all plural suffixes that the
language requires — the locale-specific guideline specifies which ones. If no
locale guideline exists, check the i18next plural rules at
https://jsfiddle.net/6bpxsgd4 and provide at minimum_oneand_other.

Hotkeys

Hotkey values (e.g.,"hotkey": "e") are literal key bindings and should
notbe translated unless the locale-specific guideline says otherwise.


Translation File Structure

All translation files are JSON files located at:

airflow-core/src/airflow/ui/public/i18n/locales/<locale-name>/

Each locale directory contains namespace JSON files that mirror the English
locale (en/). The English locale is thedefault localeand the primary
source for all translations. The current namespace files are:

admin.json,assets.json,browse.json,common.json,components.json,dag.json,dags.json,dashboard.json,hitl.json,tasks.json


Locale-Specific Guidelines

Before translating, read the locale-specific guideline file for the target
language. These contain glossaries, tone rules, and formatting conventions
tailored to each language. If a locale-specific guideline states differently
from a global rule in this document, follow the locale-specific guideline.

Locale CodeLanguageGuideline File
arArabiclocales/ar.md
caCatalanlocales/ca.md
deGermanlocales/de.md
elGreeklocales/el.md
esSpanishlocales/es.md
frFrenchlocales/fr.md
heHebrewlocales/he.md
hiHindilocales/hi.md
huHungarianlocales/hu.md
itItalian[locales/it.md](l
ocales/it.md)
jaJapaneselocales/ja.md
koKoreanlocales/ko.md
nlDutchlocales/nl.md
plPolishlocales/pl.md
ptPortugueselocales/pt.md
thThailocales/th.md
trTurkishlocales/tr.md
zh-CNSimplified Chineselocales/zh-CN.md
zh-TWTraditional Chineselocales/zh-TW.md

If the target locale file does not yet exist, follow only the global rules in
this document.

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询