Skip to content

Add missing UI translations for Greek(el) - #74460

Merged
ashb merged 1 commit into
apache:mainfrom
xBis7:add-missing-el-translations
Oct 10, 2026
Merged

ashb merged 1 commit into
apache:mainfrom
xBis7:add-missing-el-translations

Conversation

@xBis7

@xBis7 xBis7 commented Oct 8, 2026

Copy link
Copy Markdown
Contributor

This PR adds all the missing translations for the Greek (el) language.

> breeze ui check-translation-completeness --language el

Locales and their files:
┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Locale ┃ Files                                                                                                           ┃
┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ el     │ dags.json, hitl.json, common.json, dashboard.json, components.json, admin.json, assets.json, browse.json,       │
│        │ tasks.json, dag.json                                                                                            │
│ en     │ dags.json, hitl.json, common.json, dashboard.json, components.json, admin.json, assets.json, browse.json,       │
│        │ tasks.json, dag.json                                                                                            │
└────────┴─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

Summary of differences by language:
                                                  Translation Progress: el                                                  
┏━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━┳━━━━━━━━┓
┃                 ┃ Required (base  ┃ Required         ┃                ┃            ┃         ┃          ┃       ┃        ┃
┃ File            ┃ EN)             ┃ (plural)         ┃ Total required ┃ Translated ┃ Missing ┃ Coverage ┃ TODOs ┃ Unused ┃
┡━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━╇━━━━━━━━┩
│ admin.json      │ 125             │ 0                │ 125            │ 125        │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ assets.json     │ 50              │ 0                │ 50             │ 50         │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ browse.json     │ 59              │ 0                │ 59             │ 59         │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ common.json     │ 434             │ 0                │ 434            │ 434        │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ components.json │ 150             │ 1                │ 151            │ 151        │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ dag.json        │ 218             │ 0                │ 218            │ 218        │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ dags.json       │ 96              │ 0                │ 96             │ 96         │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ dashboard.json  │ 57              │ 0                │ 57             │ 57         │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ hitl.json       │ 36              │ 0                │ 36             │ 36         │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ tasks.json      │ 8               │ 0                │ 8              │ 8          │ 0       │ 100.0%   │ 0     │ 0      │
├─────────────────┼─────────────────┼──────────────────┼────────────────┼────────────┼─────────┼──────────┼───────┼────────┤
│ All files       │ 1233            │ 1                │ 1234           │ 1234       │ 0       │ 100.0%   │ 0     │ 0      │
└─────────────────┴─────────────────┴──────────────────┴────────────────┴────────────┴─────────┴──────────┴───────┴────────┘

All translations are complete!

Was generative AI tooling used to co-author this PR?
  • Yes (please specify the tool below)

Claude code Fable 5.1


  • Read the Pull Request Guidelines for more information. Note: commit author/co-author name and email in commits become permanently public when merged.
  • For fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
  • When adding dependency, check compliance with the ASF 3rd Party License Policy.
  • For significant user-facing changes create newsfragment: {pr_number}.significant.rst, in airflow-core/newsfragments. You can add this file in a follow-up commit after the PR is created so you know the PR number.

@xBis7
xBis7 requested a review from ashb as a code owner October 8, 2026 11:54
@boring-cyborg boring-cyborg Bot added area:translations area:UI Related to UI/UX. For Frontend Developers. translation:el labels Oct 8, 2026
@ashb

ashb commented Oct 8, 2026

Copy link
Copy Markdown
Member

Thanks for picking this up.

Since I'm not a native Greek speaker and don't know any other, I asked Claude on this one. It's feedback:

Likely wrong

  1. common.filters.completedAt is "Ολοκληρώθηκε Στ(η/ις)". The (η/ις) is a literal "either form" placeholder that would show in the UI. The sibling queuedAt uses "Σε Ουρά Στις", so "Ολοκληρώθηκε Στις" fits.
  2. dag.versions.truncated.description says "…το πλήθος είναι μια κατώτερη δέσμευση" for "the count is a lower bound". "Δέσμευση" means commitment or binding, so this is a mistranslation. "κάτω όριο" or "κατώτατο όριο" is what I'd expect.

Unsure, please look at these

  1. "Drain" translated as Εξάντληση (components.pausedDag.drain, dags.schedulingActions.*, schedulingState.draining, the banner and tooltips). Εξάντληση means exhaustion or depletion. In infrastructure terms "drain" is usually Αποστράγγιση, or a descriptive phrase like "Ολοκλήρωση και παύση". I can't tell if it reads naturally to a Greek ops reader. [Ed: I suspect "depletion" is the most correct form".]
  2. common.breadcrumb is "Δυναμική Διαδρομή Πλοήγησης". "Δυναμική" means "dynamic", and English only says "Breadcrumb". Plain "Διαδρομή πλοήγησης" seems safer, unless this was deliberate.
  3. "Callback" left in English (dag.versions.categories.callback, dag.calendar.backfill is "Backfill", which is fine). el.md doesn't list Callback as a kept-English term, and no existing Greek string uses it. Επανάκληση is the Greek word, but keeping it in English is plausible.
  4. "serialized schema" translated as σειριοποιημένο σχήμα (dag.versions.summary_*). The global rules keep Schema in English, and the el guideline doesn't override that. σειριοποιημένο is also my guess at a rare term. The existing admin.url_schema uses Σχήμα, which is probably a mistranslation of
    "URL scheme" but isn't part of this PR.
  5. "Operation" translated as Λειτουργία (dag.versions.columns.operation). Existing el/dag.json uses Λειτουργία for "Mode", so the same word now means two things. The versions.operations.* states are added, changed and removed.
  6. Εμφανίσεις for "Occurrences" (versions.columns.occurrences). It's valid Greek, but it can also read as "views" or "impressions".
  7. στιγμιότυπο for "instance" (dashboard.health.instances.title_*). This is the standard CS term, but the locale has no other use of it. The locale already uses "Εκτέλεση Εργασίας" for task instance, so this is only a terminology-collision check.
  8. "Ομάδα" for Team (dashboard.degradedHint.triggerer, common.teams.*). It matches the existing team key, but "ομάδες" in the triggerer hint could be misread as task groups (Ομάδα Εργασιών).
  9. Word order and wording
    • browse.xcom.entry_* is "XCom Εγγραφή". Greek would normally say "Εγγραφή XCom".
    • backfill.partitionsAffected_* uses lowercase backfill inside the sentence, while the glossary capitalizes Backfill.
    • pausedDag.drainDescription and unpauseDescription start a sentence with "Backfills σε παύση…" without the article. "Τα Backfills σε παύση…" reads better.

Any truth to these?

@xBis7

xBis7 commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor Author
  1. Στη is when singular form follows and Στις is when plural form follows. When you are referring to 1 o'clock in the morning you need to use singular Στη while when it's 1 o'clock in the afternoon, it's plural because in 24-hour format it's equal to 13:00. Depending on the time, you need to use one or the other. For example, it's like having 1 instance(s) or ending up with 1 instances. I don't know which is worse to look at.

  2. I struggled with this one. The english version is "Changes at paths not shown were dropped to stay within the limit, so the count is a lower bound.". Doesn't it mean that the count ends up being a lower number?

  3. Εξάντληση is correct. It also means to take bit by bit out of something until there is none left. Αποστράγγιση is used only for liquids but it makes sense here because it's the exact translation of the word drain. I'll use that.

  4. Plain "Διαδρομή πλοήγησης" seems safer

    Indeed and I'm not 100% sure that all navigations are dynamic. So I'll remove it.

  5. Other languages such as French and German have also kept is as Callback, so let's leave it as it is.

  6. If it's in the rules, then let's keep Schema as it is in English.

  7. Same word, multiple meanings but let me change one of them.

  8. Nothing to do here

  9. Nothing to do here

  10. Nothing to do here

  11. backfill.partitionsAffected_* uses lowercase backfill inside the sentence, while the glossary capitalizes Backfill.

    It's lowercase in english but I'll change it.

@xBis7
xBis7 force-pushed the add-missing-el-translations branch from 660805f to 9594e97 Compare October 8, 2026 14:35
@xBis7

xBis7 commented Oct 8, 2026

Copy link
Copy Markdown
Contributor Author

@ashb Thanks for the review! I've addressed all points except number 1 which I left as it is.

For number 2, I couldn't translate the exact words because it wouldn't make sense, so the translation now is based on the meaning and it's along the lines of "so the count is a lower limit number".

@ashb ashb left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My name is Meat Proxy and I approve this PR

@ashb
ashb merged commit 7675d8d into apache:main Oct 10, 2026
89 checks passed
@xBis7
xBis7 deleted the add-missing-el-translations branch October 10, 2026 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:translations area:UI Related to UI/UX. For Frontend Developers. translation:el

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants