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

potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 31c39334bbf Complete Portuguese (pt) UI translation to 90%+ coverage 
(#62885)
31c39334bbf is described below

commit 31c39334bbf476dec0eda86b97504550b4ceb685
Author: André Ahlert <[email protected]>
AuthorDate: Thu Apr 2 12:55:36 2026 -0300

    Complete Portuguese (pt) UI translation to 90%+ coverage (#62885)
    
    * i18n(pt): add missing browse.jobs key for Portuguese locale
    
    First step to complete pt translation coverage (currently 85.8%, target 
90%).
    Ref: missing keys added to en after pt was merged (2025-09-11).
    
    * i18n(pt): complete Portuguese UI translation to 100% coverage
    
    - Add all 112 missing keys across admin, assets, browse, common,
      components, dag, dags, dashboard, hitl
    - Remove extra keys: pools block from common.json, createdAtFrom/To
      from hitl (align with en)
    - Terminology: PT-PT (e.g. utilizador, equipa, Guardar)
    - Verified with: breeze ui check-translation-completeness --language pt
    
    * Fix JSON key ordering to satisfy alphabetical sort static check
---
 .../airflow/ui/public/i18n/locales/pt/admin.json   | 24 +++++++++++++
 .../airflow/ui/public/i18n/locales/pt/assets.json  | 11 +++++-
 .../airflow/ui/public/i18n/locales/pt/browse.json  | 26 +++++++++++++-
 .../airflow/ui/public/i18n/locales/pt/common.json  | 41 +++++++++++++++-------
 .../ui/public/i18n/locales/pt/components.json      | 27 ++++++++++++++
 .../src/airflow/ui/public/i18n/locales/pt/dag.json | 35 ++++++++++++++++++
 .../airflow/ui/public/i18n/locales/pt/dags.json    |  5 +++
 .../ui/public/i18n/locales/pt/dashboard.json       |  3 +-
 .../airflow/ui/public/i18n/locales/pt/hitl.json    |  3 +-
 9 files changed, 158 insertions(+), 17 deletions(-)

diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/admin.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/admin.json
index de932249a8f..a9ddaa16f5c 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/admin.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/admin.json
@@ -3,6 +3,7 @@
     "description": "Descrição",
     "key": "Chave",
     "name": "Nome",
+    "team": "Equipa",
     "value": "Valor"
   },
   "config": {
@@ -55,6 +56,12 @@
     "searchPlaceholder": "Pesquisar Conexões",
     "test": "Testar Conexão",
     "testDisabled": "A funcionalidade de teste de conexão está desativada. Por 
favor, contate um administrador para ativá-la.",
+    "testError": {
+      "title": "Teste de Conexão Falhou"
+    },
+    "testSuccess": {
+      "title": "Teste de Conexão Bem-Sucedido"
+    },
     "typeMeta": {
       "error": "Falha ao recuperar Meta do Tipo de Conexão",
       "standardFields": {
@@ -80,6 +87,23 @@
   "formActions": {
     "save": "Salvar"
   },
+  "jobs": {
+    "columns": {
+      "executorClass": "Classe do Executor",
+      "hostname": "Hostname",
+      "id": "ID",
+      "jobType": "Tipo de Tarefa",
+      "latestHeartbeat": "Último Heartbeat",
+      "unixname": "Nome Unix"
+    },
+    "filters": {
+      "allStates": "Todos os Estados",
+      "allTypes": "Todos os Tipos",
+      "dagProcessorJob": "DagProcessorJob",
+      "schedulerJob": "SchedulerJob",
+      "triggererJob": "TriggererJob"
+    }
+  },
   "plugins": {
     "columns": {
       "source": "Origem"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/assets.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/assets.json
index ca1a65fc735..fb396f13212 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/assets.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/assets.json
@@ -1,5 +1,11 @@
 {
+  "additional_data": "Dados Adicionais",
+  "asset_many": "Assets",
+  "asset_one": "Asset",
+  "asset_other": "Assets",
+  "asset_zero": "Nenhum asset",
   "consumingDags": "Consumindo Dags",
+  "consumingTasks": "Tarefas Consumidoras",
   "createEvent": {
     "button": "Criar Evento",
     "manual": {
@@ -21,10 +27,13 @@
     },
     "title": "Criar Evento de Asset para {{name}}"
   },
+  "extra": "Extra",
   "group": "Grupo",
   "lastAssetEvent": "Último Evento de Asset",
   "name": "Nome",
   "producingTasks": "Produzindo Tarefas",
   "scheduledDags": "Dags Programados",
-  "searchPlaceholder": "Pesquisar Assets"
+  "scheduling": "Agendamento",
+  "searchPlaceholder": "Pesquisar Assets",
+  "taskDependencies": "Dependências de Tarefas"
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/browse.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/browse.json
index 867d8494a6c..44a70dddad3 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/browse.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/browse.json
@@ -12,11 +12,35 @@
     "title": "Log de Auditoria"
   },
   "xcom": {
+    "add": {
+      "error": "Falha ao adicionar XCom",
+      "errorTitle": "Erro",
+      "success": "XCom adicionado com sucesso",
+      "successTitle": "XCom Adicionado",
+      "title": "Adicionar XCom"
+    },
     "columns": {
       "dag": "Dag",
       "key": "Chave",
       "value": "Valor"
     },
-    "title": "XCom"
+    "delete": {
+      "error": "Falha ao excluir XCom",
+      "errorTitle": "Erro",
+      "success": "XCom excluído com sucesso",
+      "successTitle": "XCom Excluído",
+      "title": "Excluir XCom",
+      "warning": "Tem certeza que deseja excluir este XCom? Esta ação não pode 
ser desfeita."
+    },
+    "edit": {
+      "error": "Falha ao atualizar XCom",
+      "errorTitle": "Erro",
+      "success": "XCom atualizado com sucesso",
+      "successTitle": "XCom Atualizado",
+      "title": "Editar XCom"
+    },
+    "key": "Chave",
+    "title": "XCom",
+    "value": "Valor"
   }
 }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/common.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/common.json
index f659d380955..3fc89ddeb2e 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/common.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/common.json
@@ -28,6 +28,7 @@
   "backfill_zero": "Nenhum backfill",
   "browse": {
     "auditLog": "Log de Auditoria",
+    "jobs": "Tarefas",
     "requiredActions": "Ações Necessárias",
     "xcoms": "XComs"
   },
@@ -70,6 +71,8 @@
     "dataIntervalEnd": "Fim do Intervalo de Dados",
     "dataIntervalStart": "Início do Intervalo de Dados",
     "lastSchedulingDecision": "Última Decisão de Agendamento",
+    "mappedPartitionKey": "Chave de partição mapeada",
+    "partitionKey": "Chave de partição",
     "queuedAt": "Enfileirado Em",
     "runAfter": "Executar Depois",
     "runType": "Tipo de Execução",
@@ -85,6 +88,11 @@
   "dagWarnings": "Avisos/Erros do Dag",
   "defaultToGraphView": "Padrão para visualização gráfica",
   "defaultToGridView": "Padrão para visualização em grade",
+  "delete": "Excluir",
+  "diff": "Diff",
+  "diffCompareWith": "Comparar com",
+  "diffExit": "Sair do Diff",
+  "diffSelectVersionToCompare": "Selecionar versão para comparar",
   "direction": "Direção",
   "docs": {
     "documentation": "Documentação",
@@ -97,11 +105,13 @@
     "tooltip": "Pressione {{hotkey}} para baixar os logs"
   },
   "duration": "Duração",
+  "edit": "Editar",
   "endDate": "Data Final",
   "error": {
     "back": "Voltar",
     "defaultMessage": "Ocorreu um erro inesperado",
     "home": "Início",
+    "invalidUrl": "Página não encontrada. Verifique o URL e tente novamente.",
     "notFound": "Página Não Encontrada",
     "title": "Erro"
   },
@@ -122,22 +132,27 @@
   "filters": {
     "durationFrom": "Duração De",
     "durationTo": "Duração Até",
+    "endTime": "Hora de Fim",
     "logicalDateFrom": "Data Lógica De",
     "logicalDateTo": "Data Lógica Para",
     "runAfterFrom": "Executar Depois De",
-    "runAfterTo": "Executar Depois Para"
+    "runAfterTo": "Executar Depois Para",
+    "selectDateRange": "Selecionar intervalo de datas",
+    "startTime": "Hora de Início"
   },
   "logicalDate": "Data Lógica",
   "logout": "Sair",
   "logoutConfirmation": "Você está prestes a sair do aplicativo.",
   "mapIndex": "Índice do Mapa",
   "modal": {
+    "add": "Adicionar",
     "cancel": "Cancelar",
     "confirm": "Confirmar",
     "delete": {
       "button": "Excluir",
       "confirmation": "Tem certeza que deseja excluir {{resourceName}}? Esta 
ação não pode ser desfeita."
-    }
+    },
+    "save": "Guardar"
   },
   "nav": {
     "admin": "Administração",
@@ -158,17 +173,17 @@
     "placeholder": "Adicionar uma nota...",
     "taskInstance": "Nota da Instância de Tarefa"
   },
-  "pools": {
-    "deferred": "Deferido",
-    "open": "Aberto",
-    "pools_many": "pools",
-    "pools_one": "pool",
-    "pools_other": "pools",
-    "pools_zero": "nenhum pool",
-    "queued": "Enfileirado",
-    "running": "Executando",
-    "scheduled": "Agendado"
+  "partitionedDagRun_many": "Execuções de Dag Particionadas",
+  "partitionedDagRun_one": "Execução de Dag Particionada",
+  "partitionedDagRun_other": "Execuções de Dag Particionadas",
+  "partitionedDagRun_zero": "Nenhuma execução de dag particionada",
+  "partitionedDagRunDetail": {
+    "receivedAssetEvents": "Eventos de Asset recebidos"
   },
+  "pendingDagRun_many": "{{count}} Execuções de Dag Pendentes",
+  "pendingDagRun_one": "{{count}} Execução de Dag Pendente",
+  "pendingDagRun_other": "{{count}} Execuções de Dag Pendentes",
+  "pendingDagRun_zero": "Nenhuma execução de dag pendente",
   "reset": "Resetar",
   "runId": "ID da Execução",
   "runTypes": {
@@ -193,6 +208,7 @@
   },
   "selectLanguage": "Selecionar Idioma",
   "showDetailsPanel": "Mostrar Painel de Detalhes",
+  "signedInAs": "Sessão iniciada como",
   "source": {
     "hide": "Ocultar",
     "hotkey": "Pressione {{hotkey}} para ocultar/mostrar",
@@ -209,6 +225,7 @@
     "failed": "Falha",
     "no_status": "Sem Status",
     "none": "Sem Status",
+    "open": "Aberto",
     "planned": "Planejado",
     "queued": "Enfileirado",
     "removed": "Removido",
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 47d8b52a290..8c40eb51349 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
@@ -12,6 +12,7 @@
     "maxRuns": "Máximo de Execuções Ativas",
     "missingAndErroredRuns": "Execuções Faltando e com Erro",
     "missingRuns": "Execuções Faltando",
+    "permissionDenied": "Execução de teste falhou: o utilizador não tem 
permissão para criar backfills.",
     "reprocessBehavior": "Comportamento de Reprocessamento",
     "run": "Executar Backfill",
     "selectDescription": "Executar este Dag para um intervalo de datas",
@@ -56,6 +57,13 @@
     "warning_other": "{{count}} Avisos",
     "warning_zero": "Nenhum aviso"
   },
+  "dateRangeFilter": {
+    "validation": {
+      "invalidDateFormat": "Formato de data inválido.",
+      "invalidTimeFormat": "Formato de hora inválido.",
+      "startBeforeEnd": "A data/hora de início deve ser anterior à data/hora 
de fim"
+    }
+  },
   "durationChart": {
     "duration": "Duração (segundos)",
     "lastDagRun_many": "Últimas {{count}} Execuções do Dag",
@@ -123,22 +131,40 @@
   "sortedDescending": "Ordenado em ordem decrescente",
   "sortedUnsorted": "Não ordenado",
   "taskTries": "Tentativas de Tarefa",
+  "taskTryPlaceholder": "Tentativa de Tarefa",
+  "team": {
+    "selector": {
+      "helperText": "Opcional. Restringir uso a uma equipa específica.",
+      "label": "Equipa",
+      "placeHolder": "Selecionar uma equipa"
+    }
+  },
   "toggleCardView": "Mostrar visualização de cartão",
   "toggleTableView": "Mostrar visualização de tabela",
   "triggerDag": {
     "button": "Acionar",
+    "dataInterval": "Intervalo de Dados",
+    "dataIntervalAuto": "Inferido da Data Lógica e do Timetable",
+    "dataIntervalManual": "Especificar Manualmente",
+    "intervalEnd": "Fim",
+    "intervalStart": "Início",
     "loading": "Carregando informações do Dag...",
     "loadingFailed": "Falha ao carregar informações do Dag. Por favor, tente 
novamente.",
+    "manualRunDenied": "Execuções manuais não são permitidas para este Dag",
     "runIdHelp": "Opcional - será gerado se não for fornecido",
     "selectDescription": "Acionar uma única execução deste Dag",
     "selectLabel": "Execução Única",
     "title": "Acionar Dag",
     "toaster": {
+      "error": {
+        "title": "Falha ao Acionar o Dag"
+      },
       "success": {
         "description": "A execução do Dag foi acionada com sucesso.",
         "title": "Execução do Dag acionada"
       }
     },
+    "triggerAgainWithConfig": "Acionar novamente com esta configuração",
     "unpause": "Despausar {{dagDisplayName}} ao acionar"
   },
   "trimText": {
@@ -154,6 +180,7 @@
     "versionId": "ID da Versão"
   },
   "versionSelect": {
+    "allVersions": "Todas as Versões",
     "dagVersion": "Versão do Dag",
     "versionCode": "v{{versionCode}}"
   }
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/dag.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/dag.json
index 200da31a588..bc95c8fb89b 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/dag.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/dag.json
@@ -73,6 +73,12 @@
     "navigation": "Navegação: Shift+{{arrow}}",
     "toggleGroup": "Alternar grupo: Espaço"
   },
+  "notFound": {
+    "back": "Voltar",
+    "backToDags": "Voltar aos Dags",
+    "message": "O Dag \"{{dagId}}\" não existe.",
+    "title": "Dag Não Encontrado"
+  },
   "overview": {
     "buttons": {
       "failedRun_many": "Execuções Falhadas",
@@ -122,6 +128,35 @@
     },
     "graphDirection": {
       "label": "Direção do Gráfico"
+    },
+    "showVersionIndicator": {
+      "label": "Mostrar Indicador de Versão",
+      "options": {
+        "hideAll": "Ocultar Tudo",
+        "showAll": "Mostrar Tudo",
+        "showBundleVersion": "Mostrar Versão do Bundle",
+        "showDagVersion": "Mostrar Versão do Dag"
+      }
+    },
+    "taskStreamFilter": {
+      "activeFilter": "Filtro ativo",
+      "clearFilter": "Limpar Filtro",
+      "clickTask": "Clique numa tarefa para a selecionar como raiz do filtro",
+      "depth": "Profundidade",
+      "direction": "Direção",
+      "label": "Filtro",
+      "mode": "Modo",
+      "modeTooltip": "O modo estático mantém a vista atual ao navegar entre 
tarefas; o modo percorrer atualiza automaticamente o filtro ativo para a tarefa 
clicada para facilitar a travessia do DAG.",
+      "modes": {
+        "static": "Estático",
+        "traverse": "Percorrer"
+      },
+      "options": {
+        "both": "Upstream e downstream",
+        "downstream": "Downstream",
+        "upstream": "Upstream"
+      },
+      "selectedTask": "Tarefa selecionada"
     }
   },
   "paramsFailed": "Falha ao carregar parâmetros",
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/dags.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/dags.json
index 138a7b92931..2738cdb1366 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/dags.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/dags.json
@@ -34,6 +34,10 @@
       "error": "Falha ao limpar {{type}}",
       "title": "Limpar {{type}}"
     },
+    "confirmationDialog": {
+      "description": "A tarefa está atualmente em estado {{state}} iniciado 
pelo utilizador {{user}} às {{time}}. O utilizador não pode limpar esta tarefa 
até que termine de executar ou até que um utilizador desmarque a opção 
\"Impedir nova execução se a tarefa estiver em execução\" no diálogo de 
limpeza.",
+      "title": "Não é Possível Limpar a Instância de Tarefa"
+    },
     "delete": {
       "button": "Excluir {{type}}",
       "dialog": {
@@ -61,6 +65,7 @@
       "future": "Futuro",
       "onlyFailed": "Limpar somente tarefas falhadas",
       "past": "Passado",
+      "preventRunningTasks": "Impedir nova execução se a tarefa estiver em 
execução",
       "queueNew": "Enfileirar novas tarefas",
       "runOnLatestVersion": "Executar com a versão mais recente do pacote",
       "upstream": "Upstream"
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/dashboard.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/dashboard.json
index d5245e4b623..d2140fcac25 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/dashboard.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/dashboard.json
@@ -33,7 +33,8 @@
   "poolSlots": "Slots de Pool",
   "sortBy": {
     "newestFirst": "Mais Recentes Primeiro",
-    "oldestFirst": "Mais Antigos Primeiro"
+    "oldestFirst": "Mais Antigos Primeiro",
+    "placeholder": "Ordenar por"
   },
   "source": "Fonte",
   "stats": {
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt/hitl.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/pt/hitl.json
index f8730b65f46..7e0dd27c9da 100644
--- a/airflow-core/src/airflow/ui/public/i18n/locales/pt/hitl.json
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt/hitl.json
@@ -1,8 +1,7 @@
 {
   "filters": {
     "body": "Corpo",
-    "createdAtFrom": "Criado De",
-    "createdAtTo": "Criado Até",
+    "createdAt": "Criado Em",
     "response": {
       "all": "Todas",
       "pending": "Pendente",

Reply via email to