
Airflow Translations
- 4 installs
- 51 repo stars
- Updated August 5, 2026
- astronomer/airflow
airflow-translations is a skill that adds or updates i18n translations for the Apache Airflow UI, covering locale setup, scaffolding, translating, and validation.
About
This skill guides adding or updating translations for the Apache Airflow web UI. It covers setting up a new locale, scaffolding namespace files with translation stubs, translating per locale-specific glossary rules, and validating completeness. Developers use it for i18n tasks under the Airflow UI locales directory.
- Adds or updates i18n translations for the Apache Airflow UI
- Scaffolds locale files with breeze and TODO: translate stubs
- Enforces glossary, terms-kept-in-English, and i18next variable rules
Airflow Translations by the numbers
- 4 all-time installs (skills.sh)
- Ranked #1,817 of 2,245 Frontend Development skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
airflow-translations capabilities & compatibility
- Capabilities
- translation · frontend
- Use cases
- translation · frontend · documentation
- Runs
- Runs locally
- Pricing
- Free
What airflow-translations says it does
Add or update translations for the Apache Airflow UI.
Translation strings use `{{variable}}` interpolation (i18next format). Never translate or remove variable names inside `{{…}}`.
npx skills add https://github.com/astronomer/airflow --skill airflow-translationsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 4 |
|---|---|
| repo stars | ★ 51 |
| Last updated | August 5, 2026 |
| Repository | astronomer/airflow ↗ |
What it does
Add a new locale or fill translation gaps in the Apache Airflow UI, scaffolding and validating i18next locale files.
Who is it for?
Contributors localizing the Airflow UI into a new or existing language
Skip if: Non-Airflow projects or backend/API translation
When should I use this skill?
Working on i18n tasks in the Airflow UI locales directory
What you get
A complete, validated locale with 0 missing, 0 extra, and 0 TODO keys following glossary and formatting rules.
- translated locale JSON files
- updated i18n config entries
- validated completeness
By the numbers
- 10-term keep-in-English table
- 2 translation task categories: adding vs updating
Files
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
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 to Updating an Existing Translation. If not, start with Adding a Translation below.
---
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 supportedLanguages array:
{ code: "<locale>", name: "<native name>" },`dev/breeze/src/airflow_breeze/commands/ui_commands.py`: add the plural suffixes for the language to the PLURAL_SUFFIXES dict. 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`: under labelPRBasedOnFilePath, 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 a TODO: translate: stub:
breeze ui check-translation-completeness --language <locale> --add-missingThe 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 under Locale-Specific Guidelines below). 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 every TODO: translate: <English terminology> entry, including the prefix, with the translated string.
After all entries are translated, continue to Validation below.
---
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 Guidelines below). 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 are missing keys, scaffold them with TODO: translate: stubs:
breeze ui check-translation-completeness --language <locale> --add-missingIf there are extra keys (present in the locale but not in English), remove them:
breeze ui check-translation-completeness --language <locale> --remove-extraNow translate the TODO: translate: entries following the locale-specific guideline, then continue to Validation below.
---
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 run --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:
| Term | Reason |
|---|---|
Airflow | Product name |
Dag / Dags | Airflow convention; always Dag, never DAG |
XCom / XComs | Airflow cross-communication mechanism name |
Provider / Providers | Airflow extension package name |
REST API | Standard technical term |
JSON | Standard technical format name |
ID | Universal abbreviation |
PID | Unix process identifier |
UTC | Time standard |
Schema | Database 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 _one and _other.
Hotkeys
Hotkey values (e.g., "hotkey": "e") are literal key bindings and should not be 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 the default locale and the primary source for all translations. The current namespace files are:
<!-- START namespace-files, please keep comment here to allow auto update --> admin.json, assets.json, browse.json, common.json, components.json, dag.json, dags.json, dashboard.json, hitl.json, tasks.json <!-- END namespace-files, please keep comment here to allow auto update -->
---
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 Code | Language | Guideline File |
|---|---|---|
ar | Arabic | locales/ar.md |
ca | Catalan | locales/ca.md |
de | German | locales/de.md |
el | Greek | locales/el.md |
es | Spanish | locales/es.md |
fr | French | locales/fr.md |
he | Hebrew | locales/he.md |
hi | Hindi | locales/hi.md |
hu | Hungarian | locales/hu.md |
it | Italian | locales/it.md |
ja | Japanese | locales/ja.md |
ko | Korean | locales/ko.md |
nl | Dutch | locales/nl.md |
pl | Polish | locales/pl.md |
pt | Portuguese | locales/pt.md |
th | Thai | locales/th.md |
tr | Turkish | locales/tr.md |
zh-CN | Simplified Chinese | locales/zh-CN.md |
zh-TW | Traditional Chinese | locales/zh-TW.md |
If the target locale file does not yet exist, follow only the global rules in this document.
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Arabic (ar) Translation Agent Skill
Locale code: ar Preferred variant: Modern Standard Arabic (MSA), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/ar/
This file contains locale-specific guidelines so AI translation agents produce new Arabic strings that stay consistent with the existing Airflow Arabic locale. When a term already exists in ar/*.json, reuse that wording instead of introducing a new synonym.
1. Core Airflow Terminology
Global Airflow terms (never translate)
These terms are defined as untranslatable across Airflow locales. Do not translate them regardless of context:
Airflow— product nameDag/Dags— Airflow concept; never writeDAGXCom/XComs— Airflow cross-communication mechanismREST APIJSONUTC- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
Translated by convention (Arabic-specific)
The Arabic locale translates most other UI terms into Arabic. These established translations should be reused:
Operator→المشغّل(plural in current UI:المُشغِّلات)Task Instance→مثيل المهمةPool→مجموعة المواردProvider→حُزمةwhen a singular form is needed; the current UI mostly uses the pluralحُزمScheduler→المُجَدْوِلTriggerer→المُطلِقExecutor→منفذ
Do not add glossary entries for terms that are not yet used in the Arabic locale files. If a new term appears, inspect nearby existing translations first and keep the guide limited to terms with real usage.
2. Standard Translations
| English Term | Arabic Translation | Notes |
|---|---|---|
| Task | مهمة | |
| Task Instance | مثيل المهمة | |
| Task Group | مجموعة المهام | |
| Dag Run | تشغيل Dag | Keep Dag in English |
| Pool | مجموعة الموارد | |
| Provider | حُزمة | Plural in current UI: حُزم |
| Operator | المشغّل | Plural in current UI: المُشغِّلات |
| Scheduler | المُجَدْوِل | Component label |
| Triggerer | المُطلِق | Use this specifically for triggerer, not generic trigger |
| Executor | منفذ | Component label |
3. Arabic-Specific Guidelines
Tone and Register
- Use neutral, professional MSA suitable for a technical UI.
- Keep labels concise.
- Prefer the wording already present in
ar/*.jsonover more literary or more
textbook alternatives.
Action Labels
- Prefer the concise action labels already used in the locale over newly
invented imperative forms.
- Existing UI examples include
تشغيل,حذف,حفظ, andتنزيل. - Do not introduce imperative-only forms such as
شغّلorامسحunless the
existing locale already uses them for that exact context.
Mixed Arabic and English Terms
- Keep embedded English Airflow terms in their original casing:
Dag,Dags,
XCom.
- Preserve placeholders exactly as written:
{{count}},{{dagDisplayName}},
{{hotkey}}, and so on.
- Existing patterns include
معرف Dag,تشغيل Dag, and{{count}} Dags.
Plural Forms
Arabic in Airflow uses the full six-category i18next plural set, and the UI tooling already expects all of these suffixes for ar:
_zero_one_two_few_many_other
Plural guidance should follow the Unicode CLDR Arabic cardinal rules:
_zerofor0_onefor1_twofor2_fewfor3..10(mod 100)_manyfor11..99(mod 100)_otherfor the remaining cases
Keep all required keys even when some forms are textually identical.
For Airflow terms that stay in English, keep the English term rather than forcing Arabic dual or plural endings. Example: use 2 Dags, not Dagان or Dagين.
Reuse the existing repo patterns:
"dag_zero": "لا يوجد أي Dag",
"dag_one": "Dag",
"dag_two": "2 Dags",
"dag_few": "Dags",
"dag_many": "Dags",
"dag_other": "Dags""pool_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}} تحذير"Numerals
- Use only Western Arabic numerals:
0 1 2 3 4 5 6 7 8 9 - Do not use Eastern Arabic numerals:
٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩
4. Examples from Existing Translations
Established terminology in the current locale:
allOperators -> "جميع المُشغِّلات"
taskInstance_one -> "مثيل المهمة"
scheduler -> "المُجَدْوِل"
triggerer -> "المُطلِق"
executor -> "منفذ"
Providers -> "حُزم"Current Dag patterns:
dagId -> "معرف Dag"
triggerDag.title -> "تشغيل Dag"
favoriteDags_zero -> "لا توجد أي Dags مفضلة"Current action-label style:
delete -> "حذف"
download.download -> "تنزيل"
modal.save -> "حفظ"5. Agent Instructions (DO / DON'T)
DO:
- Match the wording already used in
ar/*.json - Keep
DagandXComin English - Use concise MSA suitable for a software UI
- Provide all six Arabic plural suffixes when a key is pluralized
- Use Western Arabic numerals only
- Take examples from the existing locale files instead of inventing them
DON'T:
- Write
DAG - Invent a large glossary for terms that are not used in the current locale
- Attach Arabic dual or plural suffixes to English Airflow terms like
Dag - Replace established UI wording with a textbook alternative without evidence in
the repo
- Use Eastern Arabic numerals
- Add grammatical-gender notes for every Arabic noun; they add noise and are
usually unnecessary here
- Invent action or state examples instead of copying real ones from the locale
---
Version: 1.0 — derived from the existing Arabic locale files and Unicode CLDR Arabic plural rules (May 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Catalan (ca) Translation Agent Skill
Locale code: ca Preferred variant: Standard Catalan (ca), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/ca/
This file contains locale-specific guidelines so AI translation agents produce new Catalan strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
The following terms must remain in English unchanged (case-sensitive):
Dag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismAsset/Assets— Data dependency tracked by AirflowPlugin/Plugins— Airflow extensibility mechanism (translated as "Extensió" in nav/labels — keep English in code references)Pool/Pools— Resource constraint mechanismProvider/Providers— Airflow extension package nameMap Index— Task mapping indexPID— Unix process identifierID— Universal abbreviationUTC— Time standardJSON— Standard technical format nameREST API— Standard technical term- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
2. Standard Translations
The following Airflow-specific terms have established Catalan translations that must be used consistently:
| English Term | Catalan Translation | Notes |
|---|---|---|
| Task | Tasca / tasca | Lowercase in compound contexts |
| Task Instance | Instància de tasca | Plural: "Instàncies de tasca" |
| Task Group | Grup de tasques | |
| Dag Run | Execució de Dag | Plural: "Execucions de Dag" |
| Backfill | Reompliment | Plural: "Reompliments" |
| Trigger (noun) | Disparador | |
| Trigger Rule | Regla d'execució | |
| Triggerer | Triggerer | Component name; keep English in technical refs |
| Scheduler | Programador | |
| Schedule (noun) | Programació | |
| Executor | Executor | |
| Connection | Connexió | Plural: "Connexions" |
| Variable | Variable | Plural: "Variables" |
| Audit Log | Registre d'auditoria | |
| Log | Registre | |
| State | Estat | |
| Queue (noun) | Cua | e.g., "En cua" for "queued" |
| Config / Configuration | Configuració | |
| Operator | Operador | Plural: "Operadors" |
| Asset Event | Esdeveniment d'Asset | Keep "Asset" in English |
| Dag Processor | Dag Processor | Component name; keep English |
| Heartbeat | Batec | |
| Plugin | Extensió | In UI nav/labels only |
3. Task/Run States
| English State | Catalan Translation |
|---|---|
| running | Executant-se |
| failed | Fallit |
| success | Exitós |
| queued | En cua |
| scheduled | Programat |
| skipped | Saltat |
| deferred | Diferit |
| removed | Eliminat |
| restarting | Reiniciant |
| up_for_retry | A reintentar |
| up_for_reschedule | A reprogramar |
| upstream_failed | Fallit aigües amunt |
| no_status / none | Sense estat |
| planned | Planificat |
| open | Obert |
4. Catalan-Specific Guidelines
Tone and Register
- Use a formal, professional register suitable for technical software UIs.
- Avoid colloquialisms; prefer neutral and precise language.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Gender Agreement
- Catalan nouns have grammatical gender; match adjectives and articles accordingly:
- "Dag" is treated as masculine: "el Dag", "un Dag"
- "Tasca" is feminine: "la tasca", "una tasca"
- "Execució" is feminine: "una execució", "l'execució"
- "Connexió" is feminine: "la connexió"
- "Variable" is feminine: "la variable"
- "Instància" is feminine: "la instància"
Plural Forms
- Catalan uses i18next plural suffixes
_oneand_other.
Add -s or -es according to standard Catalan rules, or use the established glossary form:
"task_one": "Tasca",
"task_other": "Tasques" "dagRun_one": "Execució de Dag",
"dagRun_other": "Execucions de Dag"Capitalization
- Use sentence case for descriptions and longer strings.
- Use title-like capitalization for headers, labels, and button text
(match the style of existing translations).
- Capitalize proper terms: "Dag", "Asset", "XCom", "Pool", etc.
- Do not capitalize common nouns mid-sentence.
Elision and Contractions
- Apply standard Catalan elision and contraction rules:
de+ vowel →d'(e.g., "Registre d'auditoria", "ID d'execució")el/la+ vowel →l'(e.g., "l'execució", "l'operador")- Prepositions
a+el→al;de+el→del
Diacritics
- Always preserve Catalan diacritics:
à,è,é,ï,ò,ó,ú,ü,ç,·(interpunct inl·l). - Never drop or substitute accents.
Word Order
- Standard SVO word order — similar to English.
- Adjectives typically follow nouns (e.g., "interval de dates", "execució activa").
5. Examples from Existing Translations
Always keep in English:
- "Dag" → "Dag"
- "Asset" → "Asset"
- "XCom" → "XCom"
- "Pool" → "Pool"
- "Provider" → "Provider"
Common translation patterns:
task_one → "Tasca"
task_other → "Tasques"
dagRun_one → "Execució de Dag"
dagRun_other → "Execucions de Dag"
backfill_one → "Reompliment"
backfill_other → "Reompliments"
taskInstance_one → "Instància de tasca"
taskInstance_other → "Instàncies de tasca"
assetEvent_one → "Esdeveniment d'Asset"
assetEvent_other → "Esdeveniments d'Asset"
running → "Executant-se"
failed → "Fallit"
success → "Exitós"
queued → "En cua"
scheduled → "Programat"Action verbs (buttons):
Add → "Afegir"
Delete → "Eliminar"
Edit → "Editar"
Save → "Desar"
Reset → "Restablir"
Cancel → "Cancel·lar"
Confirm → "Confirmar"
Import → "Importar"
Export → "Exportar"
Search → "Cercar"
Filter → "Filtrar"6. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, gender agreement, and casing from existing
ca/*.jsonfiles - Use formal Catalan register throughout
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{type}}, etc. - Apply correct Catalan elision (
d',l', contractionsal,del) - Preserve all diacritics (à, è, é, ï, ò, ó, ú, ü, ç, ·)
- Provide all needed plural suffixes (
_one,_other) for each key
DON'T:
- Translate Airflow-specific terms listed in section 1
- Drop or substitute diacritics (e.g., never write "Execucio" for "Execució")
- Change hotkey values (e.g.,
"hotkey": "e"must stay"e") - Invent new vocabulary when an equivalent already exists in the current translations
- Use "DAG" — always write "Dag"
- Capitalize common nouns mid-sentence
---
Version: 1.0 — derived from existing ca/*.json locale files (March 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
German (de) Translation Agent Skill
Locale code: de Preferred variant: Standard German (de), using formal "Sie" register, consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/de/
This file contains locale-specific guidelines so AI translation agents produce new German strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
Global Airflow terms (never translate)
These terms are defined as untranslatable across all Airflow locales. Do not translate them regardless of language:
Airflow— Product nameDag/Dags— Airflow concept; never write "DAG". Use neuter form (not male, female).PID— Unix process identifierID— Universal abbreviationUTC— Time standardJSON— Standard technical format nameREST API— Standard technical term- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
Translated by convention (German-specific)
The existing German translations translate many Airflow terms into native German. These established translations must be used consistently:
Asset/Assets→Datenset (Asset)/Datensets (Assets)— includes English term in parenthesesXCom/XComs→Task Kommunikation (XComs)— descriptive with English in parenthesesBackfill→Auffüllung/AuffüllungenCatchup→NachgeholtPlugin/Plugins→Plug-in/Plug-ins— hyphenated German spellingPool/Pools→Pool/Pools— kept in EnglishProvider/Providers→Provider/Providers— kept in EnglishExecutor→AusführungsumgebungTrigger/Triggerer→Abrufumgebung/Abrufumgebungs-Information(component); translated in context
2. Standard Translations
The following Airflow-specific terms have established German translations that must be used consistently:
| English Term | German Translation | Notes |
|---|---|---|
| Task | Task | Kept in English; plural: "Tasks" |
| Task Instance | Task Instanz | Plural: "Task Instanzen" |
| Task Group | Task Gruppe | |
| Dag Run | Dag Lauf | Plural: "Dag Läufe" |
| Trigger (verb) | Auslösen | "Ausgelöst durch" for "Triggered by" |
| Trigger Rule | Auslöse-Regel | |
| Scheduler | Zeitplaner | |
| Schedule (noun) | Zeitplan | |
| Operator | Operator | Plural: "Operatoren" |
| Connection | Verbindung | Plural: "Verbindungen" |
| Variable | Variable | Plural: "Variablen" |
| Configuration | Konfiguration | |
| Audit Log | Prüf-Log | |
| State | Status | |
| Queue (noun) | Warteschlange | "Wartend" for "queued" |
| Duration | Laufzeit | |
| Owner | Eigentümer | |
| Tags | Markierungen | |
| Description | Beschreibung | |
| Documentation | Dokumentation | Short form in nav: "Doku" |
| Timezone | Zeitzone | |
| Dark Mode | Dunkelmodus | |
| Light Mode | Hellmodus | |
| Asset Event | Ereignis zu Datenset (Asset) | Plural: "Ereignisse zu Datensets (Asset)" |
| Dag Processor | Dag Prozessor | |
| Heartbeat | Lebenszeichen | e.g., "Letztes Lebenszeichen" |
| Upstream / Downstream | Vorgelagert / Nachgelagert | |
| Deadline | Frist |
3. Task/Run States
| English State | German Translation |
|---|---|
| running | Laufend |
| failed | Fehlgeschlagen |
| success | Erfolgreich |
| queued | Wartend |
| scheduled | Geplant |
| skipped | Übersprungen |
| deferred | Delegiert |
| removed | Entfernt |
| restarting | Im Neustart |
| up_for_retry | Wartet auf neuen Versuch |
| up_for_reschedule | Wartet auf Neuplanung |
| upstream_failed | Vorgelagerte fehlgeschlagen |
| no_status / none | Kein Status |
| planned | Geplant |
4. German-Specific Guidelines
Tone and Register
- Use formal German ("Sie" form). Do not use "du".
- Use a professional, precise tone suitable for technical software UIs.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Gender and Articles
- German nouns have grammatical gender; match articles and adjectives accordingly:
- "Dag" is treated as neuter: "das Dag", "ein Dag"
- "Task" is treated as masculine: "der Task"
- "Lauf" (Run) is masculine: "der Lauf", plural: "die Läufe"
- "Verbindung" is feminine: "die Verbindung"
- "Variable" is feminine: "die Variable"
- "Datenset" is neuter: "das Datenset"
Compound Nouns
- German forms compound nouns. The existing translations use spaces between Airflow terms
for readability: "Dag Lauf" (not "Daglauf"), "Task Instanz" (not "Taskinstanz").
- Follow this established pattern for consistency.
Plural Forms
- German uses i18next plural suffixes
_oneand_otheronly:
"task_one": "Task",
"task_other": "Tasks" "dagRun_one": "Dag Lauf",
"dagRun_other": "Dag Läufe"Capitalization
- All German nouns are capitalized (standard German orthography).
- Use title case for UI headers and navigation items.
- Use sentence case for descriptions and longer messages.
Parenthetical English Terms
- The German locale uses a unique pattern of including the English term in parentheses
after the German translation for clarity:
- "Datenset (Asset)" — helps users recognize the Airflow concept
- "Task Kommunikation (XComs)"
- "Durch Datenset (Asset) ausgelöst" for "Asset triggered"
- Follow this pattern for any new terms that have well-known English equivalents in Airflow.
5. Examples from Existing Translations
Terms with parenthetical English:
Asset → "Datenset (Asset)"
Assets → "Datensets (Assets)"
XCom → "Task Kommunikation (XComs)"
Asset Event → "Ereignis zu Datenset (Asset)"Common translation patterns:
task_one → "Task"
task_other → "Tasks"
dagRun_one → "Dag Lauf"
dagRun_other → "Dag Läufe"
backfill_one → "Auffüllung"
backfill_other → "Auffüllungen"
taskInstance_one → "Task Instanz"
taskInstance_other → "Task Instanzen"
allRuns → "Alle Läufe"
running → "Laufend"
failed → "Fehlgeschlagen"
success → "Erfolgreich"
queued → "Wartend"
scheduled → "Geplant"Triggerer compound nouns — translated to German:
triggerer.class → "Abruf-Klasse"
triggerer.id → "Abrufungs ID"
triggerer.createdAt → "Zeitpunkt der Erstellung"
triggerer.assigned → "Zugewiesene Abrufumgebung"
triggerer.latestHeartbeat → "Letztes Lebenszeichen"
triggerer.title → "Abrufumgebungs-Information"Action verbs (buttons):
Add → "Hinzufügen"
Delete → "Löschen"
Edit → "Bearbeiten"
Save → "Speichern"
Reset → "Zurücksetzen"
Cancel → "Abbrechen"
Confirm → "Bestätigen"
Import → "Importieren"
Search → "Suche"
Filter → "Filter"
Download → "Herunterladen"
Expand → "Ausblenden"
Collapse → "Einblenden"Health/status labels:
Healthy → "Gesund"
Unhealthy → "Fehlerhaft"6. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, gender agreement, and casing from existing
de/*.jsonfiles - Use formal German ("Sie" form) throughout
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{hotkey}}, etc. - Capitalize all nouns (standard German orthography)
- Include English terms in parentheses for Airflow-specific concepts where the existing translations do so
- Provide all needed plural suffixes (
_one,_other) for each plural key - Check existing translations before adding new ones to maintain consistency
DON'T:
- Write "DAG" — always write "Dag"
- Use informal "du" — always use "Sie" register
- Use colloquial or regional German expressions
- Invent new vocabulary when an equivalent already exists in the current translations
- Change hotkey values (e.g.,
"hotkey": "e"must stay"e") - Translate variable names or placeholders inside
{{...}} - Omit parenthetical English terms where the pattern has been established
7. Rationale for Translation Choices
Formal register ("Sie")
German distinguishes formal from informal address. Because the user group is unknown, the formal "Sie" register was chosen throughout.
Why certain terms are not translated
- Dag / Dags — Following the devlist discussion
"Airflow should deprecate the term 'DAG' for end users" and the global rename to Dag, this brand-like term is retained. Translating it as "Workflow" would be misleading for experienced Airflow users. Dag is treated as neuter in German ("der Dag").
- Log levels (CRITICAL, ERROR, WARNING, INFO, DEBUG) — These strings also
appear verbatim in log output, so they must not be translated.
- Pool / Pools — Directly understood in German; "Schwimmbad" (swimming pool)
would be absurd, and "Ressourcen-Pool" is too verbose.
- Provider / Providers — Translating this does not improve comprehension;
the English term is well understood in German.
- Operator / Operatoren — Mathematical/technical term that also appears in
code; alternatives like "Betreiber-Implementierung" are too cumbersome.
Why specific translations were chosen
- `Asset` → `Datenset (Asset)` — New term in Airflow 3, so a meaningful
German translation is appropriate. The English original is kept in parentheses so new users can recognise the Airflow concept. Exception: in the navigation bar the shorter form "Datensets" is used without the parenthetical to save space.
- `Asset Event` → `Ereignis zu Datenset (Asset)` — Logical consequence of
the Asset translation; avoids the clumsy "Datensatz-Ereignis".
- `Backfill` → `Auffüllen` / `Auffüllung` — The technical meaning (filling
gaps in historical runs) maps well to the German concept of "auffüllen".
- `Bundle` → `Bündel` — Direct translation that matches the intended meaning.
- `Catchup` → `Nachholen` — Direct translation.
- `Connection` → `Verbindung` — Although a technical Airflow construct, the
direct translation is immediately accessible to new users.
- `Dag ID`: No translation.
IDshould be favored to be upper case following German Duden. - `Task ID`: No translation.
IDshould be favored to be upper case following German Duden. - `Dag Run` → `Dag Lauf` — While "Run" appears in code and logs, a German
equivalent improves the overall UI experience. "Dag" is kept untranslated.
- `Deferred` → `Delegiert` — The closest German equivalent: a task is
handed off ("delegiert") to the Triggerer component.
- `Docs` → `Doku` — "Dokumentation" is correct but too wide for the
navigation bar without a line break; "Doku" is a common German abbreviation.
- `Map Index` → `Planungs-Index` — No direct equivalent exists; referring
to the planning/scheduling aspect is the most accurate option.
- `Plugins` → `Plug-ins` — Hyphenated form recommended by Duden.
- `Scheduled` → `Geplant` — Used for cyclically scheduled Dag runs.
- `Tag` → `Markierung` — Describes the purpose (marking/tagging Dags for
organisation) without the English loanword.
- `Task Instance` → `Task Instanz` — "Task" is kept because it appears in
code and logs; "Aufgabe" would be the purist choice but less recognisable in context.
- `Trigger` (verb) → `Auslösen` — Most natural German equivalent. "Triggern"
exists colloquially but "Auslösen" is more formal and consistent with "Auslöse-Regel" (Trigger Rule).
- `Trigger Rule` → `Auslöse-Regel` — Consistent with the verb choice above;
describes the condition that starts a task within a Dag Run.
- `Try Number` → `Versuch Nummer`: direct translation is matching.
- `XCom` → `Task Kommunikation (XCom)` — Translating the concept improves
navigation for new users; the original XCom is kept in parentheses because it appears frequently in code and logs.
---
Version: 1.1 — rationale consolidated from airflow-core/src/airflow/ui/public/i18n/locales/de/README.md (April 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Greek (el) Translation Agent Skill
Locale code: el Preferred variant: Standard Modern Greek (el), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/el/
This file contains locale-specific guidelines so AI translation agents produce new Greek strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
The following terms must remain in English unchanged (case-sensitive):
Dag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismBackfill/Backfills— Historical data fill-in; kept as a recognizable technical termPool/Pools— Resource constraint mechanismSlot/Slots— Pool slot countMap Index— Task mapping indexPID— Unix process identifierID— Universal abbreviationUTC— Time standardJSON— Standard technical format nameREST API— Standard technical termURI— Uniform Resource IdentifierGantt— Chart type nameCatchup— Dag scheduling catchup setting- Log levels:
INFO,DEBUG(Note:CRITICAL,ERROR,WARNINGare translated — see § 3)
2. Standard Translations
The following Airflow-specific terms have established Greek translations that must be used consistently:
| English Term | Greek Translation | Notes |
|---|---|---|
| Task | Εργασία | Plural: "Εργασίες" |
| Task Instance | Εκτέλεση Εργασίας | Plural: "Εκτελέσεις Εργασίας" |
| Task Group | Ομάδα Εργασιών | |
| Dag Run | Εκτέλεση Dag | Plural: "Εκτελέσεις Dag" |
| Run | Εκτέλεση | Plural: "Εκτελέσεις"; used standalone |
| Trigger (noun) | Ενεργοποίηση | |
| Trigger Rule | Κανόνας Ενεργοποίησης | |
| Triggerer | Ενεργοποιητής | Component name |
| Scheduler | Προγραμματιστής | |
| Schedule (noun) | Πρόγραμμα | |
| Executor | Εκτελεστής | |
| Connection | Σύνδεση | Plural: "Συνδέσεις" |
| Variable | Μεταβλητή | Plural: "Μεταβλητές" |
| Audit Log | Καταγραφή Ελέγχου | |
| Log | Καταγραφή | |
| State | Κατάσταση | |
| Queue (noun) | Ουρά | e.g., "Σε Ουρά" for "queued" |
| Config / Configuration | Ρυθμίσεις | |
| Operator | Τελεστής | Plural: "Τελεστές" |
| Asset | Οντότητα | Plural: "Οντότητες" — translated (Greek-specific) |
| Asset Event | Συμβάν Οντότητας | Plural: "Συμβάντα Οντοτήτων" |
| Plugin | Πρόσθετο | Plural: "Πρόσθετα" |
| Provider | Πάροχος | Plural: "Πάροχοι" |
| Dag Processor | Επεξεργαστής Dag | Component name |
| Heartbeat | Παλμός | |
| Map Index | Δείκτης Χάρτη | |
| Upstream (dependency) | Ανάντη | Used in states: "Αποτυχία Ανάντη" |
| Upstream (action) | Άνοδος | Used in clear-task action options |
| Downstream (action) | Κάθοδος | Used in clear-task action options |
Note on `Asset`: Unlike French, Catalan, and other locales where "Asset" is kept in
English, Greek translates it as Οντότητα ("entity"). Use "Οντότητα" consistently
across all Greek translations.
3. Task/Run States and Log Levels
States
| English State | Greek Translation |
|---|---|
| running | Εκτελείται |
| failed | Αποτυχία |
| success | Επιτυχία |
| queued | Σε Ουρά |
| scheduled | Προγραμματισμένο |
| skipped | Παραλείφθηκε |
| deferred | Αναβληθέν |
| removed | Αφαιρέθηκε |
| restarting | Επανεκκίνηση |
| up_for_retry | Προς Επανάληψη |
| up_for_reschedule | Προς Επαναπρογραμματισμό |
| upstream_failed | Αποτυχία Ανάντη |
| no_status / none | Χωρίς Κατάσταση |
| planned | Προγραμματισμένο |
Log Levels
| English Level | Greek Translation |
|---|---|
| CRITICAL | ΚΡΙΣΙΜΟ |
| ERROR | ΣΦΑΛΜΑ |
| WARNING | ΠΡΟΕΙΔΟΠΟΙΗΣΗ |
| INFO | INFO |
| DEBUG | DEBUG |
4. Greek-Specific Guidelines
Tone and Register
- Use formal Greek ("εσείς/σας" form). Do not use the informal "εσύ/σου".
- Use a neutral, professional tone suitable for technical software UIs.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Grammatical Gender
Greek nouns have three genders: masculine (αρσενικό), feminine (θηλυκό), and neuter (ουδέτερο). Match adjectives and articles accordingly:
- "Dag" is treated as neuter: "το Dag", "ένα Dag"
- "Εργασία" (Task) is feminine: "η εργασία", "μια εργασία"
- "Εκτέλεση" (Run/Execution) is feminine: "η εκτέλεση", "μια εκτέλεση"
- "Σύνδεση" (Connection) is feminine: "η σύνδεση"
- "Μεταβλητή" (Variable) is feminine: "η μεταβλητή"
- "Οντότητα" (Asset) is feminine: "η οντότητα"
- "Καταγραφή" (Log) is feminine: "η καταγραφή"
- "Κατάσταση" (State) is feminine: "η κατάσταση"
Plural Forms
Greek uses i18next plural suffixes _one and _other. Use the established plural forms from the glossary:
"task_one": "Εργασία",
"task_other": "Εργασίες""dagRun_one": "Εκτέλεση Dag",
"dagRun_other": "Εκτελέσεις Dag""asset_one": "Οντότητα",
"asset_other": "Οντότητες"Genitive Case
Greek uses the genitive case to express "of X" relationships. This commonly appears in compound terms where English uses a noun modifier:
"dagRunId": "ID Εκτέλεσης Dag" // "ID of Run of Dag"
"taskGroup": "Ομάδα Εργασιών" // "Group of Tasks"
"auditLog": "Καταγραφή Ελέγχου" // "Log of Audit"
"assetEvent_one":"Συμβάν Οντότητας" // "Event of Asset"
"triggerRule": "Κανόνας Ενεργοποίησης" // "Rule of Triggering"Capitalization
- Use sentence case for descriptions and longer strings.
- Use title-like capitalization for headers, labels, and button text
(match the style of existing Greek translations).
- Capitalize proper terms: "Dag", "XCom", "Backfill", "Pool", etc.
Diacritics
Greek uses the tonos accent mark (΄). Always preserve accented characters — missing diacritics change the meaning or make text unreadable. Never write "Εκτελεση", "Συνδεση", "Εργασια", "Οντοτητα", "Καταγραφη", "Κατασταση" etc. Always use the correctly accented forms from §2.
Question Mark
The Greek question mark is the erotimatiko (;), which looks like a semicolon. When translating English ?, use ; in Greek sentences:
"confirmation": "Είστε σίγουροι ότι θέλετε να διαγράψετε το {{resourceName}}; Αυτή η ενέργεια δεν μπορεί να αναιρεθεί."Placeholders and Variables
Preserve all {{variable}} placeholders exactly — never translate placeholder names. Reorder phrases for natural Greek word order when needed.
5. Terminology Reference
The established Greek translations are defined in the existing locale files. Before translating, read the existing el JSON files to learn the established terminology:
airflow-core/src/airflow/ui/public/i18n/locales/el/Use the translations found in these files as the authoritative glossary. When translating a term, check how it has been translated elsewhere in the locale to maintain consistency. If a term has not been translated yet, refer to the English source in en/ and apply the rules in this document.
Action Verbs (Buttons)
Add → "Προσθήκη"
Delete → "Διαγραφή"
Edit → "Επεξεργασία"
Save → "Αποθήκευση"
Reset → "Επαναφορά"
Cancel → "Ακύρωση"
Confirm → "Επιβεβαίωση"
Clear → "Εκκαθάριση"
Search → "Αναζήτηση"
Copy → "Αντιγραφή"6. Agent Instructions (DO / DON'T)
DO:
- Use formal Greek ("εσείς/σας" form) throughout
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{type}}, etc. - Apply correct Greek genitive case for "of X" constructions
- Provide
_oneand_othersuffixes for every plural key - Translate "Asset" as "Οντότητα" (Greek-specific — not kept in English)
- Translate log levels: "ΚΡΙΣΙΜΟ", "ΣΦΑΛΜΑ", "ΠΡΟΕΙΔΟΠΟΙΗΣΗ" for CRITICAL, ERROR, WARNING
- Preserve Greek diacritics (tonos accent) on all Greek words
- Use
;(erotimatiko) for question marks in Greek sentences
DON'T:
- Write "DAG" — always use "Dag"
- Translate
XCom,Backfill,Pool,Slot,ID,JSON,REST API,UTC,PID - Translate
{{variable}}placeholder names - Drop Greek diacritics (e.g., never write "Εκτελεση" for "Εκτέλεση")
- Use the informal "εσύ" form
- Translate "INFO" or "DEBUG" log level labels
- Use English
?for question marks in Greek sentences
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Spanish (es) Translation Agent Skill
Locale code: es Preferred variant: Neutral international Spanish (es) — inclusive across Latin America, Spain and Equatorial Guinea, consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/es/
This file contains locale-specific guidelines so AI translation agents produce new Spanish strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
Global Airflow terms (never translate)
These terms are defined as untranslatable across all Airflow locales. Do not translate them regardless of language:
Airflow— Product nameDag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismAsset/Assets— Data dependency tracked by AirflowProvider/Providers— Airflow extension package nameMap Index— Task mapping indexPID— Unix process identifierID— Universal abbreviationUTC— Time standardJSON— Standard technical format nameREST API— Standard technical termSchema— Database term- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
Kept in English by convention (Spanish-specific)
The existing Spanish locale files leave these terms untranslated. Keep them in English to stay consistent with established translations:
Backfill/Backfills— Airflow-specific retroactive execution conceptCatchup— Airflow scheduling conceptBundle— Airflow bundle conceptExecutor— Airflow component namePlugin/Plugins— Airflow extensibility mechanismPool/Pools— Resource constraint mechanismTrigger/Triggerer— As component names and nouns keep in English (e.g., "Clase del Trigger", "Triggerer Asignado"); as a verb translate as "Activar" (see section 2)Upstream/Downstream— Used as-is even within Spanish sentences (e.g., "Fallido en Upstream")Heartbeat— Used as-is in component health labels (e.g., "Último Heartbeat")
2. Standard Translations
The following Airflow-specific terms have established Spanish translations that must be used consistently:
| English Term | Spanish Translation | Notes |
|---|---|---|
| Task | Tarea | Plural: "Tareas" |
| Task Instance | Instancia de Tarea | Plural: "Instancias de Tarea" |
| Task Group | Grupo de Tareas | |
| Dag Run | Ejecución del Dag | Plural: "Ejecuciones del Dag" |
| Trigger (verb) | Activar | "Activado por" for "Triggered by"; as noun/component keep in English (see section 1) |
| Trigger Rule | Regla de Activación | |
| Schedule (noun) | Programación | |
| Scheduler | Programador | |
| Operator | Operador | Plural: "Operadores" |
| Connection | Conexión | Plural: "Conexiones" |
| Variable | Variable | |
| Configuration | Configuración | |
| Audit Log | Auditoría de Log | dag.json uses this form; common.json has "Auditar Log" — prefer "Auditoría de Log" |
| Try Number | Intento Número | |
| Timezone | Zona Horaria | |
| Dark Mode | Modo Oscuro | |
| Light Mode | Modo Claro | |
| Tags | Etiquetas | |
| Owner | Propietario | |
| Description | Descripción | |
| Duration | Duración | |
| Delete | Eliminar | |
| Cancel | Cancelar | |
| Confirm | Confirmar | |
| Filter (noun/label) | Filtro | |
| Filter (verb) | Filtrar | e.g., "Filtrar Dags por etiqueta" |
| Reset | Restablecer | |
| Download | Descargar | |
| Expand / Collapse | Expandir / Colapsar | |
| Logout | Cerrar Sesión | |
| Browse | Navegar | |
| Admin | Administración | |
| Security | Seguridad | |
| Users | Usuarios | |
| Roles | Roles | |
| Permissions | Permisos | |
| Actions | Acciones | |
| Resources | Recursos | |
| Documentation | Documentación | |
| Home | Inicio |
3. Task/Run States
| English State | Spanish Translation |
|---|---|
| running | En Ejecución |
| failed | Fallido |
| success | Exitoso |
| queued | En Cola |
| scheduled | Programado |
| skipped | Omitido |
| deferred | Diferido |
| removed | Removido |
| restarting | Reiniciando |
| up_for_retry | Por Reintentar |
| up_for_reschedule | Por Reprogramar |
| upstream_failed | Fallido en Upstream |
| no_status / none | Sin Estado |
| planned | Planificado |
4. Spanish-Specific Guidelines
Tone and Register
- Use neutral, international Spanish — avoid region-specific idioms so strings work across all Spanish-speaking regions.
- Prefer impersonal constructions over explicit "tú" or "usted" where the existing translations already do so (e.g., "Presiona {{hotkey}} para...").
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Gender Agreement
Dagis treated as masculine: "el Dag", "Ejecución del Dag"Tareais feminine: "la tarea", "una tarea"Ejecuciónis feminine: "la ejecución", "Última Ejecución"Conexiónis feminine: "la conexión"Variableis feminine: "la variable"
Plural Forms
- Spanish uses i18next suffixes
_oneand_otheronly.
_many and _other must always use the same translation:
"task_one": "Tarea",
"task_other": "Tareas"Capitalization
- Use title case for UI headers, buttons, and navigation items (e.g., "Todas las Ejecuciones", "Cerrar Sesión").
- Use sentence case for descriptions and messages (e.g., "No se encontraron resultados.").
Technical Loanwords
The following English loanwords are accepted in the existing translations — use them as-is:
- "parsear" (from "parse") — used in "Duración del parseo", "Último Parseado"
- "Wrap" → "Envolver", "Unwrap" → "Desenvolver"
5. Examples from Existing Translations
Always keep in English:
- "Dag" → "Dag"
- "Asset" → "Asset"
- "XCom" → "XCom"
- "Pool" → "Pool"
- "Backfill" → "Backfill"
- "Catchup" → "Catchup"
Common translation patterns:
task_one → "Tarea"
task_other → "Tareas"
dagRun_one → "Ejecución del Dag"
dagRun_other → "Ejecuciones del Dag"
backfill_one → "Backfill"
backfill_other → "Backfills"
taskInstance_one → "Instancia de Tarea"
taskInstance_other → "Instancias de Tarea"
allRuns → "Todas las Ejecuciones"
running → "En Ejecución"
failed → "Fallido"
success → "Exitoso"
queued → "En Cola"
scheduled → "Programado"Trigger compound nouns — keep "Trigger"/"Triggerer" in English:
triggerDag.button → "Trigger" (UI button label, not translated)
triggerer.class → "Clase del Trigger"
triggerer.id → "ID del Trigger"
triggerer.createdAt → "Tiempo de Creación del Trigger"
triggerer.assigned → "Triggerer Asignado"
triggerer.latestHeartbeat → "Último Heartbeat del Triggerer"
triggerer.title → "Información del Triggerer"Action verbs (buttons):
Add → "Agregar"
Delete → "Eliminar"
Edit → "Editar"
Save → "Guardar"
Reset → "Restablecer"
Cancel → "Cancelar"
Confirm → "Confirmar"
Import → "Importar"
Search → "Buscar"
Filter → "Filtrar""Cannot X" dialog titles — title-case the key nouns:
Cannot Clear Task Instance → "No Se Puede Limpiar la Instancia de Tarea"Note: these titles require a full phrase in Spanish — do not shorten at the expense of meaning.
6. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, gender agreement, and casing from existing
es/*.jsonfiles - Use neutral, international Spanish readable across all Spanish-speaking regions
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{hotkey}}, etc. - Provide all needed plural suffixes (
_one,_other) for each plural key - Check existing translations before adding new ones to maintain consistency
DON'T:
- Translate Airflow-specific terms listed in section 1
- Use "DAG" — always write "Dag"
- Use informal language, slang, or region-specific expressions
- Invent new vocabulary when an equivalent already exists in the current translations
- Change hotkey values (e.g.,
"hotkey": "e"must stay"e") - Translate variable names or placeholders inside
{{...}}
---
Version: 1.0 — derived from existing es/*.json locale files (February 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
French (fr) Translation Agent Skill
Locale code: fr Preferred variant: Standard French (fr), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/fr/
This file contains locale-specific guidelines so AI translation agents produce new French strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
The following terms must remain in English unchanged (case-sensitive):
Dag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismAsset/Assets— Data dependency tracked by AirflowPlugin/Plugins— Airflow extensibility mechanismPool/Pools— Resource constraint mechanismProvider/Providers— Airflow extension package nameRun/Runs— When used standalone (e.g., "Tous les Runs")Map Index— Task mapping indexPID— Unix process identifierID— Universal abbreviationUTC— Time standardJSON— Standard technical format nameREST API— Standard technical term- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
2. Standard Translations
The following Airflow-specific terms have established French translations that must be used consistently:
| English Term | French Translation | Notes |
|---|---|---|
| Task | Tâche / tâche | Lowercase in compound contexts |
| Task Instance | Instance de tâche | Plural: "Instances de tâche" |
| Task Group | Groupe de tâches | |
| Dag Run | Exécution de Dag | Plural: "Exécutions de Dag" |
| Backfill | Rattrapage | Plural: "Rattrapages" |
| Trigger (noun) | Déclencheur | |
| Trigger Rule | Règle de déclenchement | |
| Triggerer | Déclencheur | Component name |
| Scheduler | Planificateur | |
| Schedule (noun) | Planification | |
| Executor | Exécuteur | |
| Connection | Connexion | Plural: "Connexions" |
| Variable | Variable | |
| Audit Log | Journal d'audit | |
| Log | Journal | Plural: "Journaux" |
| State | État | |
| Queue (noun) | File | e.g., "En file" for "queued" |
| Config / Configuration | Configuration | |
| Operator | Opérateur | Plural: "Opérateurs" |
| Asset Event | Événement d'Asset | Keep "Asset" in English |
| Dag Processor | Analyseur de Dag | |
| Heartbeat | Battement |
3. Task/Run States
| English State | French Translation |
|---|---|
| running | En cours |
| failed | Échoué |
| success | Succès |
| queued | En file |
| scheduled | Planifié |
| skipped | Ignoré |
| deferred | Différé |
| removed | Supprimé |
| restarting | Redémarrage |
| up_for_retry | À réessayer |
| up_for_reschedule | À replanifier |
| upstream_failed | Échec en amont |
| no_status / none | Aucun statut |
| planned | Planifié |
4. French-Specific Guidelines
Tone and Register
- Use formal French ("vous" form). Do not use "tu".
- Use a neutral, professional tone suitable for technical software UIs.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Gender Agreement
- French nouns have grammatical gender; match adjectives and articles accordingly:
- "Dag" is treated as masculine: "le Dag", "un Dag"
- "Tâche" is feminine: "la tâche", "une tâche"
- "Exécution" is feminine: "une exécution", "l'exécution"
- "Connexion" is feminine: "la connexion"
- "Variable" is feminine: "la variable"
Plural Forms
- French uses i18next plural suffixes
_oneand_many/_other.
Use the same translation form when singular/plural are grammatically identical. Otherwise, add an "s" or use a distinct plural form:
"task_one": "Tâche",
"task_many": "Tâches",
"task_other": "Tâches"_manyand_othermust always use the same translation.
Capitalization
- Use sentence case for descriptions and longer strings.
- Use title-like capitalization for headers, labels, and button text
(match the style of existing translations).
- Capitalize proper terms: "Dag", "Asset", "XCom", "Pool", "Plugin", etc.
Elision and Contractions
- Apply standard French elision rules:
- "de" + vowel → "d'" (e.g., "Journal d'audit", "ID d'exécution")
- "le" + vowel → "l'" (e.g., "l'exécution", "l'opérateur")
5. Examples from Existing Translations
Always keep in English:
- "Dag" → "Dag"
- "Asset" → "Asset"
- "XCom" → "XCom"
- "Plugin" → "Plugin"
- "Pool" → "Pool"
- "Provider" → "Provider"
Common translation patterns:
task_one → "Tâche"
task_many → "Tâches"
dagRun_one → "Exécution de Dag"
dagRun_many → "Exécutions de Dag"
backfill_one → "Rattrapage"
backfill_many → "Rattrapages"
taskInstance_one → "Instance de tâche"
taskInstance_many → "Instances de tâche"
allRuns → "Tous les Runs"
running → "En cours"
failed → "Échoué"
success → "Succès"
queued → "En file"
scheduled → "Planifié"Action verbs (buttons):
Add → "Ajouter"
Delete → "Supprimer"
Edit → "Modifier"
Save → "Enregistrer"
Reset → "Réinitialiser"
Cancel → "Annuler"
Confirm→ "Confirmer"
Import → "Importer"
Export → "Exporter"
Search → "Rechercher"
Filter → "Filtrer"6. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, gender agreement, and casing from existing
fr/*.jsonfiles - Use formal French ("vous" form) throughout
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{type}}, etc. - Apply correct French elision (d', l', j', etc.)
- Provide all needed plural suffixes (
_one,_many,_other) for each key
DON'T:
- Translate Airflow-specific terms listed in section 1
- Use "tu" (informal) — always use "vous" register
- Change hotkey values (e.g.,
"hotkey": "e"must stay"e") - Invent new vocabulary when an equivalent already exists in the current translations
- Use "DAG" — always write "Dag"
---
Version: 1.0 — derived from existing fr/*.json locale files (February 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Hebrew (he) Translation Agent Skill
Locale code: he Preferred variant: Modern Hebrew (he), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/he/
This file contains locale-specific guidelines so AI translation agents produce new Hebrew strings that stay fully consistent with the existing translations.
1. Core Airflow Terminology
Global Airflow terms (never translate)
These terms are defined as untranslatable across all Airflow locales. Do not translate them regardless of language:
Airflow— Product nameDag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismUTC— Time standardJSON— Standard technical format nameREST API— Standard technical termUnix— Operating system name- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
Translated by convention (Hebrew-specific)
The existing Hebrew translations translate most Airflow terms into native Hebrew. These established translations must be used consistently:
Asset/Assets→נכס/נכסיםBackfill→השלמה למפרע/השלמות למפרעPlugin/Plugins→תוסף/תוספיםPool/Pools→מאגר משאביםProvider/Providers→חבילות עזרTrigger/Triggerer→מפעיל(component noun)Executor→ExecutorHeartbeat→אות חיים(e.g., "אות חיים אחרון" for "Latest Heartbeat")
2. Standard Translations
| English Term | Hebrew Translation | Notes |
|---|---|---|
| Task | משימה | |
| Task Instance | מופע משימה | |
| Task Group | קבוצת משימות | |
| Dag Run | הרצת Dag | |
| Trigger (verb) | הפעלה | "מופעל על-ידי" for "Triggered by" |
| Trigger Rule | כלל הפעלה | |
| Scheduler | מתזמן | |
| Schedule (noun) | תזמון | |
| Operator | אופרטור | |
| Connection | חיבור | |
| Variable | משתנה | |
| Configuration | הגדרות | |
| Audit Log | יומן ביקורת | |
| State | מצב | |
| Queue (noun) | בתור | "תור" for "queued" |
| Duration | משך זמן | |
| Owner | בעלים | |
| Tags | תגיות | |
| Description | תיאור | |
| Documentation | תיעוד | |
| Timezone | אזור זמן | |
| Dark Mode | מצב כהה | |
| Light Mode | מצב בהיר | |
| Asset Event | אירוע נכס | |
| Dag Processor | מעבד Dag | |
| Try Number | מספר נסיון |
3. Task/Run States
| English State | Hebrew Translation |
|---|---|
| running | בריצה |
| failed | נכשלו |
| success | הצליחו |
| queued | בתור |
| scheduled | בתזמון |
| skipped | דולגו |
| deferred | בהשהייה |
| removed | הוסרו |
| restarting | בהפעלה מחדש |
| up_for_retry | בהמתנה לניסיון חוזר |
| up_for_reschedule | בהמתנה לתזמון מחדש |
| upstream_failed | משימות קודמות נכשלו |
| no_status / none | ללא סטטוס |
| planned | בתכנון |
4. Hebrew-Specific Guidelines
Tone and Register
- Use a neutral, professional Hebrew tone suitable for technical software UIs.
- The existing translations use masculine forms for imperatives and general references. Follow this established convention for consistency.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Right-to-Left (RTL) Considerations
- Hebrew is an RTL language. UI layout should flip accordingly.
- When mixing Hebrew and English (e.g., "הרצת Dag"), the LTR English term will naturally appear in the correct reading order within an RTL context.
- Preserve all i18next placeholders exactly as-is:
{{count}},{{dagName}}, etc.
Plural Forms
- Hebrew uses i18next plural suffixes
_one,_two, and_other. For most Airflow UI strings_twowill be identical to_other, but check existing translations and keep the_twokey when it is present. - Note: colloquial Hebrew has a true dual form for things that come in pairs (e.g. one sock = גרב, two socks = גרביים, not "2 גרבים"). This rarely applies to Airflow UI terminology but is worth being aware of.
"task_one": "משימה",
"task_other": "משימות" "dagRun_one": "הרצת Dag",
"dagRun_other": "הרצת Dags"Capitalization of English terms
- For English terms embedded in Hebrew strings, preserve their original casing (e.g., "Dag", "XCom", "Dags").
5. Examples from Existing Translations
Terms translated to Hebrew:
Asset → "נכס"
Backfill → "השלמה למפרע"
Pool → "מאגר משאבים"
Plugin → "תוסף"
Provider → "חבילות עזר"
Executor → "Executor"
Trigger → "מפעיל"
Heartbeat → "אות חיים"Common translation patterns:
task_one → "משימה"
task_other → "משימות"
dagRun_one → "הרצת Dag"
dagRun_other → "הרצת Dags"
backfill_one → "השלמה למפרע"
backfill_other → "השלמות למפרע"
taskInstance_one → "מופע משימה"
taskInstance_other → "מופעי משימות"
running → "בריצה"
failed → "נכשלו"
success → "הצליחו"
queued → "בתור"
scheduled → "בתזמון"Action verbs (buttons):
Add → "הוסף"
Delete → "מחק"
Save → "שמור"
Reset → "אתחל"
Cancel → "בטל"
Confirm → "אשר"
Download → "הורד"
Expand → "הרחב"
Collapse → "צמצם"
Filter → "סנן"Triggerer compound nouns:
triggerer.class → "סוג מפעיל"
triggerer.id → "מזהה מפעיל"
triggerer.createdAt → "זמן יצירת מפעיל"
triggerer.assigned → "מפעיל מוקצה"
triggerer.latestHeartbeat → "אות חיים אחרון"
triggerer.title → "פרטי מפעיל"6. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, and terminology from existing
he/*.jsonfiles - Use professional, neutral Hebrew
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{hotkey}}, etc. - Use construct state (סמיכות) for compound nouns as established
- Provide all needed plural suffixes (
_one,_other) for each plural key - Check existing translations before adding new ones to maintain consistency
DON'T:
- Write "DAG" — always write "Dag"
- Use colloquial or slang Hebrew
- Invent new vocabulary when an equivalent already exists in the current translations
- Change hotkey values (e.g.,
"hotkey": "e"must stay"e") - Translate variable names or placeholders inside
{{...}} - Add Hebrew prefixed prepositions to English terms (e.g., don't write "ב-Dag", use "ב-Dag" only if established)
---
Version: 1.0 — derived from existing he/*.json locale files (April 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Hindi Translation Agent Skill
This file defines terminology, tone, and translation preferences for Hindi (hi) translations of Apache Airflow.
Tone and Style
- Use formal and respectful language.
- Address the user as "आप".
- Prefer clear and simple sentence structure.
Keep in English
The following terms must remain untranslated:
- XCom
- ID
- Log Levels (CRITICAL, ERROR, WARNING, INFO, DEBUG)
Preferred Translations
| English Term | Hindi |
|---|---|
| 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 | मुख्य पृष्ठ |
Translation Principles
1. Formal UI language
- Maintain politeness and clarity suitable for professional software.
2. Pure Hindi for common UI words
- Prefer words like विन्यास instead of transliteration where clarity is high.
3. Transliteration for technical concepts
- Use transliteration for Airflow-specific terms (e.g., डैग, टास्क).
4. Avoid ambiguity
- If a literal translation could confuse users, prefer transliteration.
5. Context awareness
- Ensure translations match technical meaning rather than dictionary meaning.
Notes
- Use "कुछ नहीं" for
states.none. - Use "कोई स्थिति नहीं" for
states.no_status.
These conventions are derived from the existing Hindi locale guidelines to ensure consistency across future translations.
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Hungarian (hu) Translation Agent Skill
Locale code: hu Preferred variant: Standard Hungarian (hu), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/hu/
This file contains locale-specific guidelines so AI translation agents produce new Hungarian strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
The following terms must remain in English unchanged (case-sensitive):
Dag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismPool/Pools— Resource constraint mechanismProvider/Providers— Airflow extension package nameMap IndexPIDID— Note: Sometimes used as "Azonosító" in labelsUTCJSONREST API- Log levels:
INFO,DEBUG(Note:CRITICAL,ERROR,WARNINGare translated)
2. Standard Translations
The following Airflow-specific terms have established Hungarian translations that must be used consistently:
| English Term | Hungarian Translation | Notes |
|---|---|---|
| Task | Feladat | |
| Task Instance | Feladatpéldány | Plural: "Feladatpéldányok" |
| Task Group | Feladatcsoport | |
| Dag Run | Dag futás | Plural: "Dag futások" |
| Run | Futás | Plural: "Futások"; used standalone |
| Backfill | Visszatöltés / Backfill | "Visszatöltés" is preferred |
| Trigger (noun) | Indító | |
| Trigger Rule | Indítási szabály | |
| Triggerer | Indító | Component name |
| Scheduler | Ütemező | |
| Schedule (noun) | Ütemezés | |
| Executor | Végrehajtó | |
| Connection | Kapcsolat | Plural: "Kapcsolatok" |
| Variable | Változó | Plural: "Változók" |
| Audit Log | Audit napló | |
| Log | Napló | Plural: "Naplók" |
| State | Állapot | |
| Queue (noun) | Sor | e.g., "Sorban áll" for "queued" |
| Config / Configuration | Beállítások / Konfiguráció | Use "Beállítások" in Admin menu |
| Operator | Operátor | |
| Asset | Adatkészlet (asset) | Usually kept as "(asset)" for clarity |
| Asset Event | Adatkészlet esemény | |
| Plugin / Plugins | Bővítmény / Bővítmények | |
| Pools | Poolok | |
| Providers | Szolgáltatók | |
| Upstream | Felfelé mutató (upstream) | |
| Downstream | Lefelé mutató (downstream) | |
| Active (Dag) | Aktív | |
| Paused (Dag) | Szüneteltetett |
3. Task/Run States and Log Levels
States
| English State | Hungarian Translation |
|---|---|
| running | Fut |
| failed | Sikertelen |
| success | Sikeres |
| queued | Sorban áll |
| scheduled | Ütemezett |
| skipped | Kihagyva |
| deferred | Várakozó |
| removed | Eltávolítva |
| restarting | Újraindítás |
| up_for_retry | Újrapróbálkozásra vár |
| up_for_reschedule | Újraütemezésre vár |
| upstream_failed | Előfeltétel sikertelen |
| no_status / none | Nincs állapot |
| planned | Tervezett |
Log Levels
| English Level | Hungarian Translation |
|---|---|
| CRITICAL | KRITIKUS |
| ERROR | HIBA |
| WARNING | FIGYELMEZTETÉS |
| INFO | INFO |
| DEBUG | DEBUG |
4. Hungarian-Specific Guidelines
Tone and Register
- Use formal Hungarian ("Ön" form / Önözés). Do not use informal "te".
- Use a neutral, professional tone suitable for technical software UIs.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Inflection and Word Order
- Hungarian is an agglutinative language, but inflecting i18next placeholders (
{{count}}) is difficult. Try to phrase sentences so the variable doesn't need suffixes (e.g., "Összesen: {{count}}" instead of "{{count}}-ból"). - Use a hyphen for inflecting "Dag" if necessary: "Dag-ek" (Plural), "Dag-et" (Accusative).
Plural Forms
- In Hungarian, nouns stay in singular form after numbers and quantity words (e.g., "5 feladat" not "5 feladatok", and "Összes feladat" not "Összes feladatok").
- i18next uses
_oneand_other. For Hungarian, ensure the noun following a number stays singular in the_othertranslation if it's following a count.
"task_one": "Feladat",
"task_other": "Feladat"(Note: If the word is used alone as a plural (e.g., "Tasks"), use the plural "Feladatok". However, if it follows a quantity word (e.g., "All Tasks"), use the singular "Összes feladat".)
Capitalization
- Use sentence case for descriptions and longer strings.
- Use the capitalization style of existing translations for headers and buttons.
- Preserve proper terms: "Dag", "XCom", "Pool".
5. Examples from Existing Translations
Always keep in English:
- "Dag"
- "XCom"
- "Pool"
Common translation patterns:
task_one → "Feladat"
task_other → "Feladatok" (without number)
dagRun_one → "Dag futás"
dagRun_other → "Dag futások"
run_one → "Futás"
run_other → "Futások" (without number)
backfill_one → "Visszatöltés"
backfill_other → "Visszatöltések"
taskInstance_one → "Feladatpéldány"
taskInstance_other→ "Feladatpéldányok"
plugin_one → "Bővítmény"
plugin_other → "Bővítmények"
running → "Fut"
failed → "Sikertelen"
success → "Sikeres"
queued → "Sorban áll"
scheduled → "Ütemezett"Action verbs (buttons):
Add → "Hozzáadás"
Delete → "Törlés"
Edit → "Szerkesztés"
Save → "Mentés"
Reset → "Alaphelyzetbe állítás"
Cancel → "Mégse"
Confirm→ "Megerősítés"
Import → "Importálás"
Export → "Exportálás"
Search → "Keresés"
Filter → "Szűrő"6. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, and terminology from existing
hu/*.jsonfiles. - Use formal Hungarian ("Ön" / "Önözés") throughout.
- Preserve all i18next placeholders:
{{count}},{{dagName}},{{type}}, etc. - Follow Hungarian grammar for singulars after numbers.
- Translate log levels:
KRITIKUS,HIBA,FIGYELMEZTETÉS.
DON'T:
- Translate Airflow-specific terms listed in section 1 (except for log levels).
- Use informal language ("te").
- Change hotkey values (e.g.,
"hotkey": "e"must stay"e"). - Invent new vocabulary when an equivalent already exists in current translations.
- Use "DAG" — always write "Dag".
---
Version: 1.0 — derived from existing hu/*.json locale files (February 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Italian (it) translation guidelines
No locale-specific guidance has been authored yet for Italian. Until this file is filled in, follow the global rules in the parent airflow-translations SKILL.md. Contributions to this guide are welcome.
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Japanese (ja) Translation Agent Skill
Locale code: ja Preferred variant: Standard Japanese (ja), polite "Desu/Masu" style.
This file contains locale-specific guidelines so AI translation agents produce new Japanese strings that stay 100% consistent with the existing Airflow translations.
1. Core Airflow Terminology
The following terms must remain in English unchanged (case-sensitive):
Dag/Dags— Airflow concept; never write "DAG" or "ダグ"XCom/XComs— Cross-communication mechanismAsset/Assets— Data dependency (formerly Dataset)Plugin/PluginsPool/PoolsProvider/ProvidersRun/Runs— When used standalone (e.g., "All Runs")UTC,JSON,PID,ID,REST API- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
2. Standard Translations
| English Term | Japanese Translation | Notes |
|---|---|---|
| Task | タスク | Standard Katakana |
| Task Instance | タスクインスタンス | |
| Task Group | タスクグループ | |
| Dag Run | Dag 実行 | |
| Backfill | 過去分の再実行 | |
| Trigger | トリガー | |
| Scheduler | スケジューラ | |
| Executor | エグゼキュータ | |
| Connection | 接続 | |
| Variable | 変数 | |
| Audit Log | 監査ログ | |
| State | 状態 |
3. Task/Run States
| English State | Japanese Translation |
|---|---|
| running | 実行中 |
| failed | 失敗した |
| success | 成功 |
| queued | 待機中 |
| scheduled | スケジュール済 |
| skipped | スキップ済 |
| deferred | 延期済 |
| removed | 削除済 |
| upstream_failed | 上流が失敗しました |
4. Japanese-Specific Guidelines
Tone and Register
- Use formal Japanese ("Desu/Masu" form).
- Technical software UI tone: neutral and professional.
- Keep strings concise for buttons and tooltips.
Spacing (The 1/4 Rule)
- Use a half-width space between Japanese characters and English/Numerical characters.
- Correct:
10 個の Dag - Incorrect:
10個のDag
Capitalization
- Capitalize proper technical terms: "Dag", "Asset", "XCom".
- Match the casing of existing translations in
ja.json.
5. Action Verbs (UI Elements)
| English | Japanese |
|---|---|
| Add | 追加 |
| Delete | 削除 |
| Edit | 編集 |
| Save | 保存 |
| Reset | リセット |
| Cancel | キャンセル |
| Confirm | 確認 |
| Search | 検索 |
6. Agent Instructions (DO / DON'T)
DO:
- Use polite register for all user-facing labels.
- Preserve all i18next placeholders:
{{count}},{{dagId}}. - Follow the spacing rules strictly.
DON'T:
- Translate Section 1 terms.
- Use slang or informal forms.
- Use "DAG" in all caps.
--- Version: 1.0 (March 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Korean (ko)
This document provides locale-specific instructions for translating English Airflow UI strings into Korean. It inherits all global rules from the parent SKILL.md.
Translation Style
Use wording already established in existing ko locale files first. If a term has no established translation yet, prefer natural Korean UI phrasing over literal transliteration.
English source:
"lastDagRun_one": "Last Dag Run",
"deleteConnection_other": "Delete {{count}} connections"Correct — natural Korean UI wording:
"lastDagRun_one": "마지막 Dag 실행",
"deleteConnection_other": "커넥션 {{count}}개 삭제"Incorrect — overly literal or awkward:
"lastDagRun_one": "마지막 Dag 런",
"deleteConnection_other": "{{count}} 연결들을 삭제"Plural Forms
Korean often uses the same wording for singular and plural. Follow established usage in existing ko locale files first. If an existing key pair already distinguishes _one and _other, keep that distinction. If no established wording exists, use the same translation for both.
English source:
"taskCount_one": "{{count}} Task",
"taskCount_other": "{{count}} Tasks"Correct — identical for both when no established distinction exists:
"taskCount_one": "{{count}}개 작업",
"taskCount_other": "{{count}}개 작업"Counters and Spacing
Use counters consistent with existing ko locale usage and keep spacing readable:
- Insert a single space between Korean and adjacent English technical terms where needed (
Dag 실행,커넥션 ID). - Do not insert a space between numbers/placeholders and counters such as
개(for example,{{count}}개).
"deleteConnection_other": "커넥션 {{count}}개 삭제",
"taskCount_one": "{{count}}개 작업",
"taskCount_other": "{{count}}개 작업",
"lastDagRun_one": "마지막 Dag 실행",
"connectionId": "커넥션 ID"Particles and Placeholders
Preserve all {{variable}} placeholders exactly. Attach Korean particles outside placeholders and reorder phrases only when needed for natural Korean word order.
English source:
"confirmation": "Are you sure you want to delete {{resourceName}}? This action cannot be undone.",
"description": "{{count}} {{resourceName}} have been successfully deleted. Keys: {{keys}}"Correct — placeholders preserved and particles outside:
"confirmation": "{{resourceName}}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
"description": "{{count}}개 {{resourceName}}이(가) 성공적으로 삭제되었습니다. 키: {{keys}}"Incorrect — variable names translated:
"confirmation": "{{리소스이름}}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.",
"description": "{{개수}}개 {{리소스이름}}이(가) 성공적으로 삭제되었습니다. 키: {{키들}}"Tone and UI Voice
- Use neutral, slightly formal tone.
- Keep labels and messages concise for UI.
- Use polite confirmations in destructive actions:
"{{resourceName}}을(를) 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다."
- Avoid colloquial phrasing.
Terminology and Casing
- Keep
Dagcasing exactly asDag(neverDAG). - Reuse established Korean role terms from existing
kolocale files (for example,스케줄러,오퍼레이터). - Prefer established
koglossary by key context (for example,Dag 실행,커넥션,변수), and keep stable technical tokens in English:XCom,REST API,JSON,URL,ID,UTC.
Terminology Reference
The established Korean translations are defined in existing locale files. Before translating, read the existing ko JSON files to learn the established terminology:
airflow-core/src/airflow/ui/public/i18n/locales/ko/Use the translations found in these files as the authoritative glossary. When translating a term, check how it has been translated elsewhere in the locale to maintain consistency. If a term has not been translated yet, refer to the English source in en/ and apply the rules in this document.
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Dutch (nl) Translation Agent Skill
Locale code: nl Preferred variant: Standard Dutch (Netherlands), consistent with existing translations in airflow-core/src/airflow/ui/public/i18n/locales/nl/
This file contains locale-specific guidelines so AI translation agents produce new Dutch strings that stay 100% consistent with the existing translations.
1. Core Airflow Terminology
The following terms must remain in English unchanged (case-sensitive):
Dag/Dags— Airflow concept; never write "DAG"XCom/XComs— Airflow cross-communication mechanismAsset/Assets— Data dependency tracked by AirflowPlugin/Plugins— Airflow extensibility mechanismPool/Pools— Resource constraint mechanismProvider/Providers— Airflow extension package nameRun/Runs— When used standalone (e.g., "Laatste Run")Map Index— Task mapping indexPID— Unix process identifierID— Universal abbreviationUTC— Time standardJSON— Standard technical format nameREST API— Standard technical term- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
2. Standard Translations
The following Airflow-specific terms have established Dutch translations that must be used consistently:
| English Term | Dutch Translation | Notes |
|---|---|---|
| Task | Taak | Always translate Task to "taak" / "Taak" |
| Task Instance | Taak Instance | Plural: "Taak Instances" |
| Task Group | Taak Groep | Plural: "Taak Groepen" |
| Dag Run | Dag Run | Plural: "Dag Runs" |
| Backfill | Backfill | |
| Trigger (noun) | Trigger | e.g. "Asset Triggered" |
| Trigger Rule | Trigger regel | |
| Triggerer | Triggerer | Component name |
| Scheduler | Scheduler | |
| Schedule (noun) | Planning | |
| Executor | Executor | |
| Connection | Connectie | Plural: "Connecties" |
| Variable | Variabele | Plural: "Variabelen" |
| Audit Log | Audit Log | |
| Log | Log | Plural: "Logs" |
| State | Status | e.g. "Totaal {{state}}" -> "Totaal Status" |
| Queue (noun) | Wachtrij | |
| Config / Configuration | Configuratie | |
| Operator | Operator | Plural: "Operators" |
| Asset Event | Asset Event | Keep as in English |
| Catchup | Catchup | Keep as in English |
3. Task/Run States
| English State | Dutch Translation |
|---|---|
| running | Lopend |
| failed | Mislukt |
| success | Succesvol |
| queued | Wachtend |
| scheduled | Gepland |
| skipped | Overgeslagen |
| deferred | Uitgesteld |
| removed | Verwijderd |
| restarting | Herstartend |
| up_for_retry | Wachtend op een nieuwe poging |
| up_for_reschedule | Wachtend op herplanning |
| upstream_failed | Upstream mislukt |
| no_status / none | Geen status |
| planned | Gepland |
4. Dutch-Specific Guidelines
Tone and Register
- Use informal Dutch ("je/jouw" form). Avoid the formal "u" unless specifically requested.
- Use a professional yet accessible tone.
- Keep UI strings concise — they appear in buttons, labels, and tooltips.
Gender and Number
- Dutch nouns have grammatical gender, but for technical terms, focus on common usage:
- "Taak" is generally de-word: "de taak"
- "Run" is de-word: "de run"
- "Process" is het-word: "het proces"
Plural Forms
- Dutch uses i18next plural suffixes
_oneand_other.
Most technical terms add "s" or "en":
- "Connectie" -> "Connecties"
- "Variabele" -> "Variabelen"
- "Taak" -> "Taken"
Capitalization
- Use Sentence case (Zinvallende hoofdletters) for descriptions.
- Use Title Case or Initial Capital for labels and buttons if the English source does so.
- Always capitalize "Dag", "Taak" (when referring to the object), "Asset", "XCom", etc.
5. Examples from Existing Translations
Common UI Patterns:
Add → "Toevoegen"
Delete → "Verwijderen" (or "Verwijder" on buttons)
Edit → "Wijzigen" / "Bewerken"
Save → "Opslaan"
Cancel → "Annuleer"
Search → "Zoeken"
Filter → "Filter"Interpolation:
"delete_confirmation": "Weet je zeker dat je {{resourceName}} wilt verwijderen?"6. Agent Instructions (DO / DON'T)
DO:
- Maintain the "je" (informal) address style.
- Preserve all i18next placeholders:
{{count}},{{dagId}}, etc. - Use "Wachtrij" for technical queues.
- Use "Planning" for schedules.
- Provide both
_oneand_otherplural forms.
DON'T:
- Use "u" (formal).
- Translate "Dag" as "DAG".
- Translate terms listed in Section 1.
- Use inconsistent terms for "State" (always use "Status").
---
Version: 1.0 — derived from existing nl/*.json locale files (March 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Polish (pl)
This document provides locale-specific instructions for translating English Airflow UI strings into Polish. It inherits all global rules from the parent SKILL.md.
Plural Forms
Polish has four plural forms based on the count. Use the correct form for each suffix:
_one: 1 item (nominative singular)_few: 2-4 items, 22-24, 32-34, etc. (nominative plural)_many: 5+ items, 11-21, 25-31, etc. (genitive plural)_other: fractions and general plural
English source:
"connection_one": "Connection",
"connection_few": "Connections",
"connection_many": "Connections",
"connection_other": "Connections"Correct:
"connection_one": "Połączenie",
"connection_few": "Połączenia",
"connection_many": "Połączeń",
"connection_other": "Połączenia"Incorrect:
"connection_few": "Połączeń", // wrong case for 2-4
"connection_many": "Połączenia" // wrong case for 5+Case Declension
Polish nouns change form by grammatical case. Use the appropriate case for context:
Nominative (subject):
"title": "Wszystkie połączenia" // All connectionsGenitive (possession, "of"):
"title": "Lista połączeń" // List of connectionsAccusative (direct object):
"button": "Dodaj połączenie" // Add connectionGender Agreement
Match noun gender (masculine/feminine/neuter) with verbs and adjectives:
Correct:
"message": "Połączenie zostało usunięte" // neuter noun + neuter verbIncorrect:
"message": "Połączenie został usunięty" // neuter noun + masculine verbUnchanged Terms
Keep these in English:
XCom— Airflow cross-communication termID— Technical identifier (always uppercase)Dag/Dags→ useDag/Dagi(Polish plural adaptation)- Log levels:
CRITICAL,ERROR,WARNING,INFO,DEBUG
Verb Forms and User Address
- Use infinitive for commands:
"Dodaj połączenie"(Add connection) - Use indicative for status:
"Połączenie zostało usunięte"(Connection was deleted) - Use informal "ty" (lowercase) for questions:
"Czy chcesz kontynuować?"(Do you want to continue?)
Correct:
"confirm": "Czy na pewno chcesz kontynuować?"Incorrect:
"confirm": "Czy na pewno Pan chce kontynuować?" // overly formalDiacritics
Polish uses diacritics that must be preserved:
| Letter | Correct | Incorrect |
|---|---|---|
| ą | będą | bedą |
| ć | połączenie | polaczenie |
| ę | usunięte | usuniete |
| ł | został | zostal |
| ń | koń | kon |
| ó | główna | glowna |
| ś | więcej | wiecej |
| ź | źródło | zrodlo |
| ż | żaden | zaden |
Variable and Placeholder Examples
Preserve all {{variable}} placeholders. Adjust word order for natural Polish:
English source:
"title": "Delete {{count}} connections"Correct:
"deleteConnection_one": "Usuń 1 połączenie",
"deleteConnection_few": "Usuń {{count}} połączenia",
"deleteConnection_many": "Usuń {{count}} połączeń"Incorrect:
"title": "Usuń {{liczba}} połączeń" // variable name translatedTerminology Glossary
Preferred wording for specific UI terms. Apply these to new translations and prefer them when reviewing existing ones.
| English / context | Preferred Polish | Avoid |
|---|---|---|
| Consuming Asset (asset consumed by a Dag run) | Zabierający zasób | ~~Konsumujący zasób~~ |
| Bulk clear / delete / update (toaster and button labels) | grupowy / grupowego / grupowej / grupowe … | ~~masowy / masowego / masowej / masowe~~ |
| Deactivated (Dag header status) | Deaktywowany / Deaktywowana / Deaktywowane | ~~Dezaktywowany~~ |
Notes:
- For "bulk <verb>" always use "grupowy" with the grammatical form that
matches the noun — e.g. "żądanie grupowego wyczyszczenia", "żądanie grupowej aktualizacji". Never use "masowy".
- "Deactivated" / "Deaktywowany" must agree in gender with the noun it
describes (e.g. neuter "zadanie" → "Deaktywowane").
Terminology Reference
The established Polish translations are defined in the existing locale files. Before translating, read the existing pl JSON files to learn the established terminology:
airflow-core/src/airflow/ui/public/i18n/locales/pl/Use the translations found in these files as the authoritative glossary. When translating a term, check how it has been translated elsewhere in the locale to maintain consistency. If a term has not been translated yet, refer to the English source in en/ and apply the rules in this document.
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Portuguese (pt) Translation Agent Skill
Locale code: pt Preferred variant: Mix of pt-BR / pt-PT as visible in existing files (Brazilian spelling often preferred, but some European forms like "Secção" appear)
This file contains locale-specific guidelines so AI translation agents produce new Portuguese strings that stay 100% consistent with the existing translations in:
airflow-core/src/airflow/ui/public/i18n/locales/pt/*.json
1. Core Airflow Terminology
- Keep these terms in English unchanged (case-sensitive):
- Dag / Dags
- Asset / Assets / Asset Events
- Backfill / Backfills
- XCom / XComs
- TaskInstance, DagRun, Triggerer, Executor, Pool, Provider, etc.
- Never use "DAG" – always "Dag"
- Product names: "Airflow" stays "Airflow"
2. Portuguese-Specific Guidelines
- Use natural, fluent Portuguese.
- Respect gender and number agreement (feminine/masculine, singular/plural).
- Follow existing i18next plural keys:
_one,_many,_other,_zero - Capitalization: Sentence case for descriptions, title-like for headers/buttons (match existing files).
- Spelling/vocab: Follow patterns in current JSON (e.g. "Excluir", "Adicionar", "Executando", "Enfileirado", "Secção", "detetadas", "Sobreescreve").
3. Examples from Existing Translations
Always keep in English:
- "Dag" → "Dag"
- "Asset" → "Asset"
- "Backfill" → "Backfill"
- "XCom" → "XCom"
Common translated patterns:
- "task_one" → "Tarefa"
- "task_many" → "Tarefas"
- "dagRun_one" → "Execução do Dag"
- "dagRun_many" → "Execuções do Dag"
- "allRuns" → "Todas as Execuções"
- "running" → "Executando"
- "failed" → "Falha"
- "success" → "Sucesso"
- "queued" → "Enfileirado"
- "Add" → "Adicionar"
- "Delete" → "Excluir"
- "Edit" → "Editar"
- "Save" → "Salvar"
- "Test" → "Testar"
- "Import" → "Importar"
- "Config" → "Configuração do Airflow"
4. Agent Instructions (DO / DON'T)
DO:
- Match tone, style, gender, casing from existing
pt/*.jsonfiles - Use natural Portuguese readable by Brazilian & Portuguese users
- Preserve all placeholders:
{{count}},{{dagName}}, etc. - For plurals: provide all needed suffixes if source has them
DON'T:
- Translate core terms listed in section 1
- Use inconsistent gender (e.g. "Execução de Dag" instead of "Execução do Dag")
- Invent new vocabulary when equivalent already exists
- Translate hotkeys, code references, or file paths
---
Version: 1.0 – based directly on current pt/ JSON files (Feb 2026)
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Thai (th)
This document provides Thai-specific guidelines for translating Apache Airflow terminology and documentation.
This document inherits all global rules from the parent SKILL.md.
Terms to Keep in English
The following technical terms should remain in English in Thai translations:
Core Technical Terms (คำศัพท์ทางเทคนิค)
- Dag - Keep as "Dag" (Airflow convention; never write "DAG")
- Dag Run - Keep as "Dag Run"
- Task Instance - Keep as "Task Instance"
- XCom - Keep as "XCom"
- Asset - Keep as "Asset"
- Backfill - Keep as "Backfill"
- Dataset - Keep as "Dataset"
- Pool - Keep as "Pool"
- Sensor - Keep as "Sensor"
- Hook - Keep as "Hook"
- Operator - Keep as "Operator" (โอเปอเรเตอร์) or in English
- DagBag - Keep as "DagBag"
UI Components (ส่วนประกอบของอินเทอร์เฟซ)
- Tree View - Keep as "Tree View" or translate as "มุมมองต้นไม้"
- Graph View - Keep as "Graph View" or translate as "มุมมองกราฟ"
- Grid View - Keep as "Grid View" or translate as "มุมมองกริด"
- Calendar View - Keep as "Calendar View" or translate as "มุมมองปฏิทิน"
- Gantt Chart - Keep as "Gantt Chart" or translate as "แผนภูมิแกนต์"
Code and Technical References
- All Python class names, function names, and variables
- Configuration keys (e.g.,
dag_id,task_id) - Command-line arguments and flags
- File paths and URLs
Common Airflow Terms in Thai
Core Concepts (แนวคิดหลัก)
| English | Thai | Notes |
|---|---|---|
| Task | งาน | Standard translation |
| Workflow | เวิร์กโฟลว์ | Transliterated |
| Pipeline | ไปป์ไลน์ | Transliterated |
| Connection | การเชื่อมต่อ | Standard translation |
| Variable | ตัวแปร | Standard translation |
| Provider | ผู้ให้บริการ | Standard translation |
| Trigger | ทริกเกอร์ | Transliterated |
| Scheduler | ตัวกำหนดการ | Standard translation |
| Executor | ผู้ดำเนินการ | Standard translation |
| Worker | ผู้ปฏิบัติงาน | Standard translation |
| Webserver | เว็บเซิร์ฟเวอร์ | Transliterated |
| Database | ฐานข้อมูล | Standard translation |
Actions (การกระทำ)
| English | Thai | Notes |
|---|---|---|
| Run | รัน / ทำงาน | Use "รัน" (transliterated) or "ทำงาน" |
| Execute | ดำเนินการ | Standard translation |
| Clear | ล้าง | Standard translation |
| Retry | ลองใหม่ | Standard translation |
| Fail | ล้มเหลว | Standard translation |
| Mark as Failed | ทำเครื่องหมายว่าล้มเหลว | Phrase |
| Success | สำเร็จ | Standard translation |
| Mark as Success | ทำเครื่องหมายว่าสำเร็จ | Phrase |
| Pause | หยุดชั่วคราว | Standard translation |
| Unpause | ยกเลิกการหยุดชั่วคราว | Phrase |
States (สถานะ)
| English | Thai | Notes |
|---|---|---|
| success | สำเร็จ | Standard translation |
| running | กำลังดำเนินการ | Standard translation |
| failed | ล้มเหลว | Standard translation |
| upstream_failed | ต้นน้ำล้มเหลว | Literal translation |
| skipped | ถูกข้าม | Standard translation |
| queued | อยู่ในคิว | Standard translation |
| scheduled | มีกำหนดการ | Standard translation |
| deferred | เลื่อนเวลา | Standard translation |
Pluralization Patterns in Thai
Thai language does not have grammatical plural forms like English. Nouns remain the same regardless of quantity. Numbers and quantifiers are used to indicate plurality.
Using Numerals with Thai
In Airflow UI and messages, numerals are typically formatted as:
- 1 Task: 1 งาน (1 task)
- 2 Tasks: 2 งาน (2 tasks) - noun form remains the same
- Multiple Tasks: งานหลายงาน (multiple tasks) - using classifier "หลาย"
- All Tasks: งานทั้งหมด (all tasks)
Quantity Indicators
- ไม่มี (none) - 0 items
- หนึ่ง (one) - 1 item
- สอง (two) - 2 items
- หลาย (multiple/several) - 3+ items
- ทั้งหมด (all) - all items
- บางส่วน (some) - some items
Script and Writing System
Thai Script
1. Direction: Thai text is written from left to right (LTR) like English 2. Script: Use Thai script (ตัวอักษรไทย) for Thai translations 3. Mixed Content: When mixing Thai with English terms, maintain proper spacing 4. Punctuation: Thai uses specific punctuation marks alongside standard punctuation 5. Numbers: Arabic numerals (0-9) are commonly used in technical contexts
Example:
งาน Dag รันสำเร็จ (Dag run successful)Translation Style Guidelines
1. Technical Terminology
Keep technical terms like Dag, XCom, Operator in English when:
- They appear in code or configuration examples
- No clear Thai equivalent exists
- The term is widely used in English in the technical community
- Transliteration would make the term less clear
2. Transliteration vs Translation
Prefer transliteration for:
- Proper nouns and brand names (Python, Apache, GitHub)
- Technical terms with no direct translation (Workflow, Pipeline, Plugin)
Prefer translation for:
- Common concepts (Task = งาน, Variable = ตัวแปร, Connection = การเชื่อมต่อ)
- UI elements (Button = ปุ่ม, Menu = เมนู, View = มุมมอง)
3. UI Labels
- Keep UI labels concise and consistent
- Use standard Thai technical translations where available
- Example: "Tree View" → "มุมมองต้นไม้" or keep "Tree View"
- For technical terms, English is often preferred for clarity
4. Verbs and Actions
- Use polite form (รูปคำเป็นทางการ) for UI elements:
- "Run" → "รัน" (imperative) or "ดำเนินการ" (formal)
- "Clear" → "ล้าง" (imperative)
- "Trigger" → "เรียก" (imperative) or "ทริกเกอร์" (transliterated)
5. Documentation
- Use formal Thai language (ภาษาไทยรูปแบบทางการ)
- Maintain consistency with terminology throughout
- Provide English terms in parentheses when introducing new technical terms
- Use appropriate honorifics and polite particles when applicable
6. Error Messages
- Keep error messages clear and actionable
- Include technical details in English when necessary
- Example: "การรันงานล้มเหลว: Task instance not found"
- Use polite but direct language for errors
Common Translation Patterns
1. "Run" Context
- "Run Dag" → "รัน Dag" or "ดำเนินการ Dag"
- "Dag run" (noun) → "การรัน Dag" or "Dag Run"
- "Run ID" → "รันไอดี" or "Run ID"
2. "Task" Context
- "Task failed" → "งานล้มเหลว"
- "Task instance" → "Task Instance" or "อินสแตนซ์งาน"
- "Task ID" → "Task ID" or "ไอดีงาน"
3. "Dag" Context
- "Dag run" → "การรัน Dag" or "Dag Run"
- "Dag ID" → "Dag ID" or "ไอดี Dag"
- "Sub Dag" → "Dag ย่อย" or "Sub Dag"
4. Configuration
- "Airflow Config" → "การกำหนดค่า Airflow" or "Airflow Config"
- "Connection ID" → "Connection ID" or "ไอดีการเชื่อมต่อ"
- "Pool name" → "Pool name" or "ชื่อพูล"
Thai Linguistic Considerations
1. Word Order
Thai follows SVO (Subject-Verb-Object) word order, similar to English:
- English: "Task runs successfully"
- Thai: "งานรันสำเร็จ" (Task run successful)
2. No Articles
Thai language does not use articles (a, an, the):
- "the task" → "งาน" (task)
- "a connection" → "การเชื่อมต่อ" (connection)
3. No Tense Inflection
Thai does not conjugate verbs for tense. Time words and context indicate when actions occur:
- "ran" → "รันแล้ว" (ran already) or "รันไปแล้ว" (ran in the past)
- "will run" → "จะรัน" (will run)
4. Politeness Markers
In formal documentation and UI, polite particles may be used:
- ครับ (khrap) - for male speakers
- ค่ะ (kha) - for female speakers
However, these are typically omitted in technical documentation to maintain conciseness. In UI text, polite particles are generally not used to maintain a gender-neutral tone.
Resources for Thai Translators
1. Thai Technical Terms: Use established Thai computing terminology 2. Style Guide: Follow formal Thai language conventions 3. Glossary: Maintain consistency with previously translated Airflow content 4. Testing: Test translations to ensure proper rendering and readability 5. Community: Refer to Thai technical documentation communities for consistency 6. Existing Thai Locale Files: Reference the existing Thai locale files as the authoritative terminology source for consistency with established translations
Examples
UI Label Examples
"Tree View" → "มุมมองต้นไม้" or "Tree View"
"Graph View" → "มุมมองกราฟ" or "Graph View"
"Task Instances" → "Task Instances" or "อินสแตนซ์งาน"
"Dag Runs" → "Dag Runs" or "การรัน Dag"Message Examples
"Task failed" → "งานล้มเหลว"
"Dag run successful" → "การรัน Dag สำเร็จ"
"XCom pushed" → "ดัน XCom แล้ว" or "XCom pushed"
"Connection test failed" → "การทดสอบการเชื่อมต่อล้มเหลว"Code Examples (Keep in English)
# Don't translate code comments unless necessary
dag = DAG("my_dag", schedule_interval="@daily")Pluralization in gettext (for .po files)
Thai uses simple pluralization pattern with only two forms:
# Plural expression: 0
# Forms: _one, _other
msgid "%d task"
msgid_plural "%d tasks"
msgstr[0] "%d งาน"
msgstr[1] "%d งาน"Both singular and plural forms use the same translation in Thai. The number suffix remains the same regardless of quantity. For plurality context, words like "ทั้งหมด" (all) can be used to express plurality when appropriate.
Notes
- This document is based on analysis of existing Airflow locale files and Thai translation patterns
- As translations evolve, update these guidelines to reflect community consensus
- When in doubt, prefer keeping technical terms in English with Thai explanations
- Consistency is key: use the same translation for the same term throughout the UI
- Thai users are generally comfortable with English technical terms, so keeping terms in English is often acceptable
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Turkish (tr) translation guidelines
No locale-specific guidance has been authored yet for Turkish. Until this file is filled in, follow the global rules in the parent airflow-translations SKILL.md. Contributions to this guide are welcome.
<!-- SPDX-License-Identifier: Apache-2.0 https://www.apache.org/licenses/LICENSE-2.0 -->
Simplified Chinese (zh-CN)
This document provides locale-specific instructions for translating English Airflow UI strings into Simplified Chinese. It inherits all global rules from the parent SKILL.md.
Plural Forms
Simplified Chinese does not distinguish between singular and plural forms. Use the same translation for both _one and _other suffixes:
English source:
"dagRun_one": "Dag Run",
"dagRun_other": "Dag Runs"Correct — identical for both:
"dagRun_one": "Dag 执行",
"dagRun_other": "Dag 执行"Spacing Rules
Insert a half-width space between Chinese characters and adjacent English words, numbers, or symbols:
Correct:
"Dag 执行" // space between English and Chinese
"最近 12 小时" // space around numbers
"连接 ID" // space before abbreviation
"{{count}} 个连接" // space after placeholderIncorrect:
"Dag执行" // missing space
"最近12小时" // missing space around numbersPunctuation
- Use full-width punctuation for Chinese sentences:
,。:?! - Use half-width punctuation for content within English terms, JSON, or
code: , . : ?
- Use full-width parentheses for Chinese context:
() - Use half-width parentheses when wrapping English or variables:
()
Correct — full-width for Chinese sentences:
"confirmation": "确定要删除 {{resourceName}} 吗?此操作无法还原。"Correct — half-width for English/variable context:
"tooltip": "按下 {{hotkey}} 切换展开"Measure Words (量词)
Chinese requires measure words (量词) between numbers and nouns. Use the appropriate measure word for each context:
| Measure Word | Usage | Example |
|---|---|---|
个 | General objects (connections, variables, errors) | 删除 {{count}} 个连接 |
次 | Occurrences (runs, executions, attempts) | 最近 {{count}} 次 Dag 执行 |
项 | List items | + 其他 {{count}} 项 |
Tone and Formality
- Use neutral, slightly formal register.
- Use
您(formal "you") in confirmations and destructive actions:
"您即将删除以下连接:".
- Avoid colloquial or overly casual expressions.
- Keep translations concise — these are UI labels and button text.
Variable and Placeholder Examples
Preserve all {{variable}} placeholders. Reorder as needed for natural Chinese word order:
English source:
"title": "Mark {{type}} as {{state}}"Correct — placeholders preserved:
"title": "标记 {{type}} 为 {{state}}"Incorrect — variable names translated:
"title": "标记 {{类型}} 为 {{状态}}"Terminology Reference
The established zh-CN translations are defined in the existing locale files. Before translating, read the existing zh-CN JSON files to learn the established terminology:
airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/Use the translations found in these files as the authoritative glossary. When translating a term, check how it has been translated elsewhere in the locale to maintain consistency. If a term has not been translated yet, refer to the English source in en/ and apply the rules in this document.
Related skills
FAQ
How do I scaffold a new locale?
Run breeze ui check-translation-completeness --language <locale> --add-missing to copy English namespaces with TODO: translate stubs.
Which terms stay in English?
Product and Airflow-convention terms like Airflow, Dag, XCom, Provider, REST API, JSON, and UTC stay in English by default.