jason810496 commented on code in PR #62059:
URL: https://github.com/apache/airflow/pull/62059#discussion_r2816324243
##########
.github/skills/airflow-translations/SKILL.md:
##########
@@ -0,0 +1,160 @@
+---
+name: airflow-translations
+description: >
+ Translate, review, and maintain Apache Airflow i18n locale strings in JSON
+ translation files. Use when working with internationalization, localization,
+ or translation tasks in airflow-core/src/airflow/ui/public/i18n/locales/.
+ Covers Airflow terminology conventions and translation guidelines.
+license: Apache-2.0
+---
+
+# Airflow Translations
+
+All translation work **must** follow the
+[Internationalization (i18n)
Policy](../../../airflow-core/src/airflow/ui/public/i18n/README.md)
+as the authoritative source of truth.
+
+## Locale-Specific Guidelines
+
+Before translating, you **must** read the locale-specific guideline file for
+the target language. Locale files are located at `locales/<locale-name>.md`
+relative to this skill directory.
+
+Match the translation task to the correct locale file using the table below:
+
+| Locale Code | Language | Guideline File |
+| ----------- | ----------------------- | ------------------------------- |
+| `ar` | Arabic | [locales/ar.md](locales/ar.md) |
+| `ca` | Catalan | [locales/ca.md](locales/ca.md) |
+| `de` | German | [locales/de.md](locales/de.md) |
+| `el` | Greek | [locales/el.md](locales/el.md) |
+| `es` | Spanish | [locales/es.md](locales/es.md) |
+| `fr` | French | [locales/fr.md](locales/fr.md) |
+| `he` | Hebrew | [locales/he.md](locales/he.md) |
+| `hi` | Hindi | [locales/hi.md](locales/hi.md) |
+| `hu` | Hungarian | [locales/hu.md](locales/hu.md) |
+| `it` | Italian | [locales/it.md](locales/it.md) |
+| `ja` | Japanese | [locales/ja.md](locales/ja.md) |
+| `ko` | Korean | [locales/ko.md](locales/ko.md) |
+| `nl` | Dutch | [locales/nl.md](locales/nl.md) |
+| `pl` | Polish | [locales/pl.md](locales/pl.md) |
+| `pt` | Portuguese | [locales/pt.md](locales/pt.md) |
+| `th` | Thai | [locales/th.md](locales/th.md) |
+| `tr` | Turkish | [locales/tr.md](locales/tr.md) |
+| `zh-CN` | Simplified Chinese | [locales/zh-CN.md](locales/zh-CN.md)
|
+| `zh-TW` | Traditional Chinese | [locales/zh-TW.md](locales/zh-TW.md)
|
+
+If the target locale file does not yet exist, follow only the global rules in
+this document together with the i18n Policy.
+
+## 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 files (e.g., `admin.json`,
`assets.json`,
+`browse.json`, `common.json`, `components.json`, `dag.json`, `dags.json`,
+`dashboard.json`, `hitl.json`, `tasks.json`). The English locale (`en`) is the
+**default locale** and the primary source for all translations.
+
+## Translation Principles
+
+1. **Concise and clear** — Translations are used in UI elements (buttons,
+ labels, tooltips). Keep them short and suitable for constrained UI space.
+2. **Consistent** — Always use the same translated term for the same English
+ term. Refer to the glossary in your locale file.
+3. **Accurate** — Maintain the original meaning and intent.
+4. **Neutral tone** — Language should be polite and neutral.
+5. **Local conventions** — Respect date formats, number formatting, and
+ formal/informal tone as appropriate for the locale.
+
+## Do-Not-Translate Terms
+
+The following terms **must** remain in English across all locales:
+
+| Term | Reason |
+| ---------------- | --------------------------------------------------- |
+| `Airflow` | Product name |
+| `Dag` / `Dags` | Airflow convention; always use `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 (keep unless locale has established
convention) |
+
+## Variable and Placeholder Handling
+
+Translation strings use the `{{variable}}` interpolation syntax (i18next
+format):
+
+- **Never translate** variable names inside `{{...}}`.
+- **Never remove** any `{{variable}}` placeholders.
+- **Reorder** placeholders as needed to match natural word order.
+- **Preserve** exact variable casing (e.g., `{{dagDisplayName}}`).
+
+## Plural Forms
+
+Airflow uses i18next plural suffixes (`_one`, `_other`, and optionally `_zero`,
+`_two`, `_few`, `_many`). Provide translations for **all** plural suffixes
+present in the English source.
+
+## Hotkeys
+
+Hotkey values (e.g., `"hotkey": "e"`) **must not** be translated. They are
+literal key bindings.
+
+## Translation Workflow
+
+1. **Read** the locale-specific guideline (`locales/<locale-name>.md`).
+2. **Identify** missing translations — use `--add-missing` to generate stubs
+ prefixed with `TODO: translate`:
+ ```bash
+ breeze ui check-translation-completeness --language <locale-name>
--add-missing
+ ```
+3. **Translate** the `TODO: translate` entries using this guide and the locale
+ glossary.
+4. **Remove** extra keys not present in the English source:
+ ```bash
+ breeze ui check-translation-completeness --language <locale-name>
--remove-extra
+ ```
+5. **Validate** completeness:
+ ```bash
+ breeze ui check-translation-completeness --language <locale-name>
+ ```
+
+For the full command reference, see the
+[i18n
Policy](../../../airflow-core/src/airflow/ui/public/i18n/README.md#81-checking-completeness-of-i18n-files).
Review Comment:
Same here, I will prefer not to mention i18n policy to make the skill only
focusing on the action to follow or rules.
##########
.github/skills/airflow-translations/SKILL.md:
##########
@@ -0,0 +1,160 @@
+---
+name: airflow-translations
+description: >
+ Translate, review, and maintain Apache Airflow i18n locale strings in JSON
+ translation files. Use when working with internationalization, localization,
+ or translation tasks in airflow-core/src/airflow/ui/public/i18n/locales/.
+ Covers Airflow terminology conventions and translation guidelines.
+license: Apache-2.0
+---
+
+# Airflow Translations
+
+All translation work **must** follow the
+[Internationalization (i18n)
Policy](../../../airflow-core/src/airflow/ui/public/i18n/README.md)
+as the authoritative source of truth.
+
Review Comment:
How about not mentioning the i18n policy here?
As far as know (please correct me if I'm wrong) about the Agent skill, the
Agent _will_ attach the above i18n policy after choosing "airflow-translation"
skill, since we prompt "must follow the path to i18 policy documentation".
I will prefer to defer the policy guideline to maintainer to avoid adding
too much "noise" to Agent context because it still maintainers' responsible to
make sure the result follow the policy.
Additionally, the content of policy is more about release management, freeze
lifecycle, and the responsibilities of translation maintainer instead of how to
translate for specified locale.
##########
.github/skills/airflow-translations/SKILL.md:
##########
@@ -0,0 +1,160 @@
+---
+name: airflow-translations
+description: >
+ Translate, review, and maintain Apache Airflow i18n locale strings in JSON
+ translation files. Use when working with internationalization, localization,
+ or translation tasks in airflow-core/src/airflow/ui/public/i18n/locales/.
+ Covers Airflow terminology conventions and translation guidelines.
+license: Apache-2.0
Review Comment:
Regarding the license, IMO, mentioning in the metadata header _should_ be
enough right? I need someone who is more expert than me to confirm, thanks!
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]