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",