Skip to content
cccskills
FreePublished on GitHub

airflow-translations

Helps add or update translations for the Apache Airflow interface. Covers language setup, translation file generation, consistent terminology, preserved variables and plural forms, and checks for missing, unfinished, or unused entries.

OriginalShow the original description

Add or update translations for the Apache Airflow UI. Guides through setting up locales, scaffolding translation files, translating with locale-specific guidelines, and validating results. Use when working with i18n tasks in airflow-core/src/airflow/ui/public/i18n/locales/.

See how to install

Good for

  • Adding a new interface language to Airflow
  • Filling gaps in an existing translation
  • Aligning terminology and preserving translation variables
  • Checking translation coverage and removing unused entries

Files included (20)

  • SKILL.md9.4 KB
  • locales/ar.md6.5 KB
  • locales/ca.md8.8 KB
  • locales/de.md14.7 KB
  • locales/el.md11.8 KB
  • locales/es.md11.6 KB
  • locales/fr.md7.8 KB
  • locales/he.md10.9 KB
  • locales/hi.md2.2 KB
  • locales/hu.md8.8 KB
  • locales/it.md354 B
  • locales/ja.md2.8 KB
  • locales/ko.md5.1 KB
  • locales/nl.md6.3 KB
  • locales/pl.md4.7 KB
  • locales/pt.md2.7 KB
  • locales/th.md11.4 KB
  • locales/tr.md10.6 KB
  • locales/zh-CN.md3.9 KB
  • locales/zh-TW.md3.9 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

<!-- 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-missing

The generated files will look like this:

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

Translating

With the scaffolded files in place, read the locale-specific guideline for the target language (see the table 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-missing

If there are unused keys — keys that are not required, meaning they are absent from the English locale or are plural suffixes this language does not need — remove them:

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

Now 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 table should show 0 missing, 0 TODOs, 0 unused, and 100% coverage:

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:

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

Variables and Placeholders

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

Counters use the i18next number formatter so they get the locale's digit grouping (e.g., {{count, number}}, {{total, number}}). Keep the , number suffix exactly as it appears in the English string.

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 CodeLanguageGuideline File
arArabiclocales/ar.md
caCatalanlocales/ca.md
deGermanlocales/de.md
elGreeklocales/el.md
esSpanishlocales/es.md
frFrenchlocales/fr.md
heHebrewlocales/he.md
hiHindilocales/hi.md
huHungarianlocales/hu.md
itItalianlocales/it.md
jaJapaneselocales/ja.md
koKoreanlocales/ko.md
nlDutchlocales/nl.md
plPolishlocales/pl.md
ptPortugueselocales/pt.md
thThailocales/th.md
trTurkishlocales/tr.md
zh-CNSimplified Chineselocales/zh-CN.md
zh-TWTraditional Chineselocales/zh-TW.md

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

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

aip-tracker

FreeSummary

Assess Airflow Improvement Proposals by comparing Confluence specifications with pull requests, commits, and codebase files. Produce evidence-backed progress reports showing delivered items, remaining work, and specification updates needed across one or more proposals.

  • Check implementation progress for an Airflow proposal
  • Compare specification deliverables with shipped code
  • Compile a progress report across multiple proposals
apache/airflow47.2KUpdated Oct 19, 2026

aip-user-stories

FreeSummary

Turn Airflow Improvement Proposals into practical guides checked against current code, or proposed user stories for design review before implementation. Organize use cases, distinguish verified examples from speculative code, and capture specific design questions.

  • Create implementation-backed guides for an Airflow proposal
  • Explore user stories before a feature is implemented
  • Separate implemented features from proposed functionality
apache/airflow47.2KUpdated Oct 19, 2026

airflow-java-sdk

FreeSummary

Helps contributors develop and fix Airflow’s Java SDK for JVM tasks. Explains public API boundaries, JAR packaging, Python coordination, communication schema updates, and the test commands used to validate changes.

  • Adding features or fixing bugs in the Java SDK
  • Reviewing public API and internal implementation boundaries
  • Investigating JAR discovery and JVM startup failures
apache/airflow47.2KUpdated Oct 19, 2026

airflow-new-sdk

FreeSummary

Guides contributors through adding a new programming language to Airflow, covering SDK structure, runtime coordination, communication rules, executable packaging, tests, and the documentation and configuration changes needed for a pull request.

  • Adding support for a new programming language
  • Choosing how Airflow launches a language runtime
  • Implementing communication and executable bundles
apache/airflow47.2KUpdated Oct 19, 2026

Draft commit messages, pull request titles and descriptions, and GitHub comments or reviews for Apache Airflow contributions. Follows project wording and AI attribution rules, and helps decide whether a change needs a release note.

  • Draft commit messages and pull request titles
  • Prepare pull request descriptions using the project template
  • Draft GitHub comments and review text
apache/airflow47.2KUpdated Oct 19, 2026

Guides preparation and authorized publication of Apache Airflow changes, including existing pull request checks, remote verification, reviews, tests, rebasing, and a prefilled submission page. Also explains how to track work deferred by temporary fixes.

  • Planning the steps for submitting Airflow changes
  • Checking existing pull requests and Git remote destinations
  • Reviewing and testing changes before pushing
apache/airflow47.2KUpdated Oct 19, 2026

See all skills by apache

Report a problem with this skill