This is an automated email from the ASF dual-hosted git repository.

kaxilnaik pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git

commit 8598de5ffee8ae0bd267a87f61c9007e58ba9d5d
Author: Steve Ahn <[email protected]>
AuthorDate: Thu Oct 16 06:29:24 2025 -0700

    Fix view for many DAG tags (#55604)
    
    * fix view for many tags
    
    * fixup! fix view for many tags
    
    * Update 
airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
    
    Co-authored-by: Jens Scheffler <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
    
    Co-authored-by: Shahar Epstein <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update 
airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
    
    Co-authored-by: LIU ZHE YOU <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
    
    Co-authored-by: Bugra Ozturk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
    
    Co-authored-by: Bugra Ozturk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
    
    Co-authored-by: Shahar Epstein <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * Update airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    
    * plurals & render fixes
    
    * fixup! plurals & render fixes
    
    * disable tooltip & enable modal, fix dutch translation
    
    * modal to popver, rmv subtitle, rmv tooltip comp
    
    * Update airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx
    
    Co-authored-by: Brent Bovenzi <[email protected]>
    
    * Apply suggestion from @Lee-W
    
    Co-authored-by: Wei Lee <[email protected]>
    
    * Update airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx
    
    * Update airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx
    
    ---------
    
    Co-authored-by: Jarek Potiuk <[email protected]>
    Co-authored-by: Jens Scheffler <[email protected]>
    Co-authored-by: Shahar Epstein <[email protected]>
    Co-authored-by: LIU ZHE YOU <[email protected]>
    Co-authored-by: Bugra Ozturk <[email protected]>
    Co-authored-by: Brent Bovenzi <[email protected]>
    Co-authored-by: Wei Lee <[email protected]>
    (cherry picked from commit 3b22cdeaf77d5aa5c22941653710964cae33d6b7)
---
 .../ui/public/i18n/locales/ar/components.json      |  5 ++
 .../ui/public/i18n/locales/ca/components.json      |  5 ++
 .../ui/public/i18n/locales/de/components.json      |  5 ++
 .../ui/public/i18n/locales/en/components.json      |  8 +++
 .../ui/public/i18n/locales/es/components.json      |  5 ++
 .../ui/public/i18n/locales/fr/components.json      |  5 ++
 .../ui/public/i18n/locales/he/components.json      |  5 ++
 .../ui/public/i18n/locales/hi/components.json      |  5 ++
 .../ui/public/i18n/locales/hu/components.json      |  5 ++
 .../ui/public/i18n/locales/it/components.json      |  5 ++
 .../ui/public/i18n/locales/ko/components.json      |  5 ++
 .../ui/public/i18n/locales/nl/components.json      |  9 ++-
 .../ui/public/i18n/locales/pl/components.json      | 13 ++++
 .../ui/public/i18n/locales/pt/components.json      |  5 ++
 .../ui/public/i18n/locales/tr/components.json      |  5 ++
 .../ui/public/i18n/locales/zh-CN/components.json   |  5 ++
 .../ui/public/i18n/locales/zh-TW/components.json   |  5 ++
 .../airflow/ui/src/components/LimitedItemsList.tsx | 70 ++++++++++++++++++----
 dev/i18n/check_translations_completeness.py        | 25 +++++---
 19 files changed, 173 insertions(+), 22 deletions(-)

diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
index b3dea080ed4..0b1c5d74aa9 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json
@@ -116,6 +116,11 @@
     "taskGroup": "مجموعة المهام"
   },
   "limitedList": "+{{count}} المزيد",
+  "limitedList.allItems": "جميع العناصر {{count}}:",
+  "limitedList.clickToInteract": "انقر على علامة لتصفية Dags",
+  "limitedList.clickToOpenFull": "انقر \"+{{count}} المزيد\" لعرض القائمة 
الكاملة",
+  "limitedList.copyPasteText": "يمكنك نسخ ولصق النص أعلاه",
+  "limitedList.showingItems": "عرض {{count}} عنصرًا",
   "logs": {
     "file": "ملف",
     "location": "سطر {{line}} في {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
index 9c7a9b71c91..d5e7b5c197c 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ca/components.json
@@ -88,6 +88,11 @@
     "taskGroup": "Grup de tasques"
   },
   "limitedList": "+{{count}} més",
+  "limitedList.allItems": "Tots els {{count}} elements:",
+  "limitedList.clickToInteract": "Fes clic en una etiqueta per filtrar els 
Dags",
+  "limitedList.clickToOpenFull": "Fes clic a \"+{{count}} més\" per veure la 
llista completa",
+  "limitedList.copyPasteText": "Pots copiar i enganxar el text de dalt",
+  "limitedList.showingItems": "Mostrant {{count}} elements",
   "logs": {
     "file": "Fitxer",
     "location": "línia {{line}} a {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
index fa0aceedf59..47398e4db6c 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/de/components.json
@@ -88,6 +88,11 @@
     "taskGroup": "Task Gruppe"
   },
   "limitedList": "+{{count}} mehr",
+  "limitedList.allItems": "Alle {{count}} Einträge:",
+  "limitedList.clickToInteract": "Klicken Sie auf eine Markierung, um Dags zu 
filtern",
+  "limitedList.clickToOpenFull": "Klicken Sie auf \"+{{count}} mehr\" für die 
vollständige Ansicht",
+  "limitedList.copyPasteText": "Sie können den obigen Text kopieren und 
einfügen",
+  "limitedList.showingItems": "{{count}} Einträge werden angezeigt",
   "logs": {
     "file": "Datei",
     "location": "Zeile {{line}} in {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
index e8335d6d7e2..eed0d7784c7 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/en/components.json
@@ -86,6 +86,14 @@
     "taskGroup": "Task Group"
   },
   "limitedList": "+{{count}} more",
+  "limitedList.allItems": "All {{count}} items:",
+  "limitedList.allTags_one": "All Tags (1)",
+  "limitedList.allTags_other": "All Tags ({{count}})",
+  "limitedList.clickToInteract": "Click a tag to filter Dags",
+  "limitedList.clickToOpenFull": "Click \"+{{count}} more\" to open full view",
+  "limitedList.copyPasteText": "You can copy and paste the text above",
+  "limitedList.showingItems_one": "Showing 1 item",
+  "limitedList.showingItems_other": "Showing {{count}} items",
   "logs": {
     "file": "File",
     "location": "line {{line}} in {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
index 2fd8bda7c4e..20f31033ee0 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/es/components.json
@@ -95,6 +95,11 @@
     "taskGroup": "Grupo de Tareas"
   },
   "limitedList": "+{{count}} más",
+  "limitedList.allItems": "Todos los {{count}} elementos:",
+  "limitedList.clickToInteract": "Haz clic en una etiqueta para filtrar Dags",
+  "limitedList.clickToOpenFull": "Haz clic en \"+{{count}} más\" para ver la 
lista completa",
+  "limitedList.copyPasteText": "Puedes copiar y pegar el texto de arriba",
+  "limitedList.showingItems": "Mostrando {{count}} elementos",
   "logs": {
     "file": "Archivo",
     "location": "línea {{line}} en {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
index fb8ef56e93d..d38f4bc9702 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/fr/components.json
@@ -95,6 +95,11 @@
     "taskGroup": "Groupe de tâches"
   },
   "limitedList": "+{{count}} supplémentaires",
+  "limitedList.allItems": "Tous les {{count}} éléments :",
+  "limitedList.clickToInteract": "Cliquez sur une étiquette pour filtrer les 
Dags",
+  "limitedList.clickToOpenFull": "Cliquez sur \"+{{count}} supplémentaires\" 
pour ouvrir la vue complète",
+  "limitedList.copyPasteText": "Vous pouvez copier et coller le texte 
ci-dessus",
+  "limitedList.showingItems": "Affichage de {{count}} éléments",
   "logs": {
     "file": "Fichier",
     "location": "ligne {{line}} dans {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
index 5922fcebe4f..424d5f675b1 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/he/components.json
@@ -95,6 +95,11 @@
     "taskGroup": "קבוצת משימות"
   },
   "limitedList": "+ {{count}} נוספים",
+  "limitedList.allItems": "כל {{count}} הפריטים:",
+  "limitedList.clickToInteract": "לחץ על תגית כדי לסנן Dags",
+  "limitedList.clickToOpenFull": "לחץ על \"+{{count}} נוספים\" כדי לפתוח את 
התצוגה המלאה",
+  "limitedList.copyPasteText": "ניתן להעתיק ולהדביק את הטקסט שמעל",
+  "limitedList.showingItems": "מציג {{count}} פריטים",
   "logs": {
     "file": "קובץ",
     "location": "שורה {{line}} ב{{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
index bfcf144af62..4efe768e9be 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/hi/components.json
@@ -88,6 +88,11 @@
     "taskGroup": "टास्क ग्रुप"
   },
   "limitedList": "+{{count}} और",
+  "limitedList.allItems": "सभी {{count}} आइटम:",
+  "limitedList.clickToInteract": "टैग पर क्लिक करके Dags फ़िल्टर करें",
+  "limitedList.clickToOpenFull": "\"+{{count}} और\" पर क्लिक करके पूरी सूची 
खोलें",
+  "limitedList.copyPasteText": "आप ऊपर दिए गए पाठ को कॉपी और पेस्ट कर सकते 
हैं",
+  "limitedList.showingItems": "{{count}} आइटम दिखाए जा रहे हैं",
   "logs": {
     "file": "फ़ाइल",
     "location": "{{name}} में लाइन {{line}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
index 91f52c3f0cc..ded34869e9d 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/hu/components.json
@@ -88,6 +88,11 @@
     "taskGroup": "Feladatcsoport"
   },
   "limitedList": "+{{count}} további",
+  "limitedList.allItems": "Összes {{count}} elem:",
+  "limitedList.clickToInteract": "Kattintson egy címkére a Dag-ok szűréséhez",
+  "limitedList.clickToOpenFull": "Kattintson a \"+{{count}} további\" gombra a 
teljes nézethez",
+  "limitedList.copyPasteText": "A fenti szöveg másolható és beilleszthető",
+  "limitedList.showingItems": "{{count}} elem megjelenítése",
   "logs": {
     "file": "Fájl",
     "location": "{{name}} fájl {{line}}. sora"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
index 564a2fcba5a..e8903d951a2 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/it/components.json
@@ -102,6 +102,11 @@
     "taskGroup": "Task Group"
   },
   "limitedList": "+{{count}} altro",
+  "limitedList.allItems": "Tutti i {{count}} elementi:",
+  "limitedList.clickToInteract": "Fai clic su un'etichetta per filtrare i Dag",
+  "limitedList.clickToOpenFull": "Fai clic su \"+{{count}} altro\" per 
visualizzare tutto",
+  "limitedList.copyPasteText": "Puoi copiare e incollare il testo sopra",
+  "limitedList.showingItems": "Visualizzazione di {{count}} elementi",
   "logs": {
     "file": "File",
     "location": "linea {{line}} in {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
index 364868b4afc..e4dfd34a9f5 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ko/components.json
@@ -86,6 +86,11 @@
     "taskGroup": "작업 그룹"
   },
   "limitedList": "+{{count}}개 더 보기",
+  "limitedList.allItems": "모든 {{count}}개 항목:",
+  "limitedList.clickToInteract": "태그를 클릭하여 Dag를 필터링하세요",
+  "limitedList.clickToOpenFull": "\"+{{count}}개 더 보기\"를 클릭하여 전체 보기 열기",
+  "limitedList.copyPasteText": "위의 텍스트를 복사하여 붙여넣을 수 있습니다",
+  "limitedList.showingItems": "{{count}}개 항목 표시 중",
   "logs": {
     "file": "파일",
     "location": "{{name}}의 {{line}}번째 줄"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
index afd5ecbfe08..83785a7112a 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/nl/components.json
@@ -1,7 +1,7 @@
 {
   "backfill": {
-    "affected_one": "1 run zal getriggered worden.",
-    "affected_other": "{{count}} Runs zullen getriggered worden.",
+    "affected_one": "1 run zal getriggerd worden.",
+    "affected_other": "{{count}} Runs zullen getriggerd worden.",
     "affectedNone": "Geen Runs komen overeen met de geselecteerde criteria.",
     "allRuns": "Alle Runs",
     "backwards": "Run achterstevoren",
@@ -88,6 +88,11 @@
     "taskGroup": "Task Group"
   },
   "limitedList": "+{{count}} meer",
+  "limitedList.allItems": "Alle {{count}} items:",
+  "limitedList.clickToInteract": "Klik op een label om Dags te filteren",
+  "limitedList.clickToOpenFull": "Klik op \"+{{count}} meer\" om de volledige 
lijst te openen",
+  "limitedList.copyPasteText": "Je kunt de bovenstaande tekst kopiëren en 
plakken",
+  "limitedList.showingItems": "{{count}} items weergegeven",
   "logs": {
     "file": "Bestand",
     "location": "regel {{line}} in {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
index 02d7df2529d..4dbb12e7a6c 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pl/components.json
@@ -1,4 +1,8 @@
 {
+  "allTags_few": "Wszystkie tagi ({{count}})",
+  "allTags_many": "Wszystkie tagi ({{count}})",
+  "allTags_one": "Wszystkie tagi ({{count}})",
+  "allTags_other": "Wszystkie tagi ({{count}})",
   "backfill": {
     "affected_few": "{{count}} wykonania zostaną uruchomione.",
     "affected_many": "{{count}} wykonań zostanie uruchomionych.",
@@ -102,11 +106,20 @@
     "taskGroup": "Grupa zadań"
   },
   "limitedList": "+{{count}} więcej",
+  "limitedList.allItems": "Wszystkie {{count}} elementy:",
+  "limitedList.clickToInteract": "Kliknij etykietę, aby przefiltrować Dagi",
+  "limitedList.clickToOpenFull": "Kliknij \"+{{count}} więcej\", aby zobaczyć 
pełną listę",
+  "limitedList.copyPasteText": "Możesz skopiować i wkleić powyższy tekst",
+  "limitedList.showingItems": "Wyświetlanie {{count}} elementów",
   "logs": {
     "file": "Plik",
     "location": "linia {{line}} w {{name}}"
   },
   "reparseDag": "Ponowne przetworznie Daga",
+  "showingItems_few": "Wyświetlanie {{count}} elementy",
+  "showingItems_many": "Wyświetlanie {{count}} elementów",
+  "showingItems_one": "Wyświetlanie {{count}} elementu",
+  "showingItems_other": "Wyświetlanie {{count}} elementów",
   "sortedAscending": "posortowane rosnąco",
   "sortedDescending": "posortowane malejąco",
   "sortedUnsorted": "nieposortowane",
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
index a2aac0c0d59..ae83855677a 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/components.json
@@ -102,6 +102,11 @@
     "taskGroup": "Grupo de Tarefas"
   },
   "limitedList": "+{{count}} mais",
+  "limitedList.allItems": "Todos os {{count}} itens:",
+  "limitedList.clickToInteract": "Clique em uma etiqueta para filtrar os Dags",
+  "limitedList.clickToOpenFull": "Clique em \"+{{count}} mais\" para ver a 
lista completa",
+  "limitedList.copyPasteText": "Você pode copiar e colar o texto acima",
+  "limitedList.showingItems": "Exibindo {{count}} itens",
   "logs": {
     "file": "Arquivo",
     "location": "linha {{line}} em {{name}}"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
index c9d290d3ddc..69d80a7672b 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/tr/components.json
@@ -88,6 +88,11 @@
     "taskGroup": "Görev Grubu"
   },
   "limitedList": "+{{count}} daha",
+  "limitedList.allItems": "Tüm {{count}} öğeler:",
+  "limitedList.clickToInteract": "Bir etikete tıklayarak Dag'leri filtreleyin",
+  "limitedList.clickToOpenFull": "\"+{{count}} daha\" tıklayarak tam görünümü 
açın",
+  "limitedList.copyPasteText": "Yukarıdaki metni kopyalayıp 
yapıştırabilirsiniz",
+  "limitedList.showingItems": "{{count}} öğe gösteriliyor",
   "logs": {
     "file": "Dosya",
     "location": "{{name}} içinde satır {{line}}"
diff --git 
a/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json
index a112bf67440..e7255110e8f 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/zh-CN/components.json
@@ -86,6 +86,11 @@
     "taskGroup": "任务分组"
   },
   "limitedList": "+ 其他 {{count}} 项",
+  "limitedList.allItems": "所有 {{count}} 项:",
+  "limitedList.clickToInteract": "点击标签以筛选 DAGs",
+  "limitedList.clickToOpenFull": "点击 \"+{{count}} 更多\" 打开完整视图",
+  "limitedList.copyPasteText": "你可以复制并粘贴上方文本",
+  "limitedList.showingItems": "显示 {{count}} 项",
   "logs": {
     "file": "文件",
     "location": "第 {{line}} 行,位于 {{name}}"
diff --git 
a/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
index e24717385e7..c655e241acd 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/zh-TW/components.json
@@ -86,6 +86,11 @@
     "taskGroup": "任務群組"
   },
   "limitedList": "+ 其他 {{count}} 項",
+  "limitedList.allItems": "所有 {{count}} 個項目:",
+  "limitedList.clickToInteract": "點擊標籤以篩選 Dags",
+  "limitedList.clickToOpenFull": "點擊 \"+{{count}} 更多\" 以開啟完整檢視",
+  "limitedList.copyPasteText": "你可以複製並貼上上方文字",
+  "limitedList.showingItems": "顯示 {{count}} 個項目",
   "logs": {
     "file": "檔案",
     "location": "第 {{line}} 行,位於 {{name}}"
diff --git a/airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx 
b/airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx
index 60f1e7ab88f..5c37909d6c7 100644
--- a/airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx
+++ b/airflow-core/src/airflow/ui/src/components/LimitedItemsList.tsx
@@ -16,11 +16,11 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-import { Box, Text, HStack, StackSeparator } from "@chakra-ui/react";
+import { Box, Text, HStack, Stack } from "@chakra-ui/react";
 import React, { type ReactNode } from "react";
 import { useTranslation } from "react-i18next";
 
-import { Tooltip } from "./ui";
+import { Popover, Button } from "./ui";
 
 type ListProps = {
   readonly icon?: ReactNode;
@@ -41,11 +41,6 @@ export const LimitedItemsList = ({
   const shouldTruncate = maxItems !== undefined && items.length > maxItems;
   const displayItems = shouldTruncate ? items.slice(0, maxItems) : items;
   const remainingItems = shouldTruncate ? items.slice(maxItems) : [];
-  const remainingItemsList = interactive ? (
-    <HStack separator={<StackSeparator />}>{remainingItems}</HStack>
-  ) : (
-    `More items: ${remainingItems.map((item) => (typeof item === "string" ? 
item : "item")).join(", ")}`
-  );
 
   if (!items.length) {
     return undefined;
@@ -69,11 +64,62 @@ export const LimitedItemsList = ({
           remainingItems.length === 1 ? (
             <Text as="span">{remainingItems[0]}</Text>
           ) : (
-            <Tooltip content={remainingItemsList} interactive={interactive}>
-              <Text as="span" cursor="help">
-                {translate("limitedList", { count: remainingItems.length })}
-              </Text>
-            </Tooltip>
+            <Popover.Root lazyMount unmountOnExit>
+              <Popover.Trigger asChild>
+                <Button
+                  colorPalette="brand"
+                  cursor="pointer"
+                  fontSize="sm"
+                  minH="auto"
+                  px={1}
+                  py={0}
+                  size="xs"
+                  variant="ghost"
+                >
+                  {translate("limitedList", { count: remainingItems.length })}
+                </Button>
+              </Popover.Trigger>
+              <Popover.Content maxW="400px" width="fit-content">
+                <Popover.Arrow />
+                <Popover.Body>
+                  <Text fontSize="sm" fontWeight="medium" mb={3}>
+                    {translate("limitedList.allItems", { count: items.length 
})}
+                  </Text>
+
+                  <Box maxH="300px" overflowY="auto">
+                    {interactive ? (
+                      <HStack flexWrap="wrap" gap={2}>
+                        {items.map((item, index) => (
+                          <Box
+                            bg="bg.subtle"
+                            borderRadius="sm"
+                            key={typeof item === "string" ? item : index}
+                            px={2}
+                            py={1}
+                          >
+                            {item}
+                          </Box>
+                        ))}
+                      </HStack>
+                    ) : (
+                      <Stack gap={1}>
+                        {items.map((item, index) => (
+                          <Text fontSize="sm" key={typeof item === "string" ? 
item : index} userSelect="text">
+                            {item}
+                          </Text>
+                        ))}
+                      </Stack>
+                    )}
+                  </Box>
+
+                  <Text fontSize="xs" mt={3}>
+                    {interactive
+                      ? translate("limitedList.clickToInteract")
+                      : translate("limitedList.copyPasteText")}
+                  </Text>
+                </Popover.Body>
+              </Popover.Content>
+            </Popover.Root>
           )
         ) : undefined}
       </Box>
diff --git a/dev/i18n/check_translations_completeness.py 
b/dev/i18n/check_translations_completeness.py
index a9d56ef17ca..b2d7bd6e3c3 100755
--- a/dev/i18n/check_translations_completeness.py
+++ b/dev/i18n/check_translations_completeness.py
@@ -456,20 +456,31 @@ def print_translation_progress(console, locale_files, 
missing_counts, summary):
     "--add-missing",
     is_flag=True,
     default=False,
-    help="Add missing translations for the selected language, prefixed with 
'TODO: translate:'.",
+    help="Add missing translations for all languages except English, prefixed 
with 'TODO: translate:'.",
 )
 def cli(language: str | None = None, add_missing: bool = False):
-    if add_missing:
-        if not language:
-            raise ValueError("--language is required when passing 
--add_missing")
-        locale_path = LOCALES_DIR / language
-        locale_path.mkdir(exist_ok=True)
     locale_files = get_locale_files()
     console = Console(force_terminal=True, color_system="auto")
     print_locale_file_table(locale_files, console, language)
     found_difference = print_file_set_differences(locale_files, console, 
language)
     summary, missing_counts = compare_keys(locale_files, console)
     console.print("\n[bold underline]Summary of differences by language:[/bold 
underline]", style="cyan")
+    if add_missing and language != "en":
+        # Loop through all languages except 'en' and add missing translations
+        if language:
+            language_files = [lf for lf in locale_files if lf.locale == 
language]
+        else:
+            language_files = [lf for lf in locale_files if lf.locale != "en"]
+        for lf in language_files:
+            filtered_summary = {}
+            for filename, diff in summary.items():
+                filtered_summary[filename] = LocaleSummary(
+                    missing_keys={lf.locale: diff.missing_keys.get(lf.locale, 
[])},
+                    extra_keys={lf.locale: diff.extra_keys.get(lf.locale, [])},
+                )
+            add_missing_translations(lf.locale, filtered_summary, console)
+        # After adding, re-run the summary for all languages
+        summary, missing_counts = compare_keys(get_locale_files(), console)
     if language:
         locales = [lf.locale for lf in locale_files]
         if language not in locales:
@@ -489,8 +500,6 @@ def cli(language: str | None = None, add_missing: bool = 
False):
                 [lf for lf in locale_files if lf.locale == language], 
filtered_summary, console
             )
             found_difference = found_difference or lang_diff
-            if add_missing:
-                add_missing_translations(language, filtered_summary, console)
     else:
         lang_diff = print_language_summary(locale_files, summary, console)
         found_difference = found_difference or lang_diff

Reply via email to