From e1354c66177d0cb57c6463255da2f9be7327e670 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 5 Mar 2026 18:32:27 -0300 Subject: [PATCH 01/19] Feat(ui): Add Portuguese (Brazil) pt-BR translation + CODEOWNER MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add pt-BR to PLURAL_SUFFIXES (same as pt) - Add pt-BR locale files (from pt as base for Brazilian Portuguese) - Add pt-BR to supportedLanguages in config.ts - Add CODEOWNERS entry for pt-BR (code owner: @potiuk, translation owner: @andreahlert) Signed-off-by: André Ahlert --- .github/CODEOWNERS | 1 + .../ui/public/i18n/locales/pt-BR/admin.json | 180 +++++++++ .../ui/public/i18n/locales/pt-BR/assets.json | 30 ++ .../ui/public/i18n/locales/pt-BR/browse.json | 22 ++ .../ui/public/i18n/locales/pt-BR/common.json | 347 ++++++++++++++++++ .../public/i18n/locales/pt-BR/components.json | 160 ++++++++ .../ui/public/i18n/locales/pt-BR/dag.json | 164 +++++++++ .../ui/public/i18n/locales/pt-BR/dags.json | 96 +++++ .../public/i18n/locales/pt-BR/dashboard.json | 49 +++ .../ui/public/i18n/locales/pt-BR/hitl.json | 43 +++ .../ui/public/i18n/locales/pt-BR/tasks.json | 10 + .../src/airflow/ui/src/i18n/config.ts | 1 + .../airflow_breeze/commands/ui_commands.py | 1 + 13 files changed, 1104 insertions(+) create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json create mode 100644 airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/tasks.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 0be08435cc863..be86c15a0508b 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -53,6 +53,7 @@ airflow-core/src/airflow/ui/public/i18n/locales/ko/ @choo121600 # + @onestn @noe airflow-core/src/airflow/ui/public/i18n/locales/nl/ @BasPH # + @DjVinnii airflow-core/src/airflow/ui/public/i18n/locales/pl/ @potiuk @mobuchowski # + @kacpermuda airflow-core/src/airflow/ui/public/i18n/locales/pt/ @potiuk # + @aoelvp94 @victoru2 +airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/ @potiuk # + @andreahlert airflow-core/src/airflow/ui/public/i18n/locales/ru/ @jscheffl # + @puzzle-rpa-team @renat-sagut airflow-core/src/airflow/ui/public/i18n/locales/th/ @potiuk # + @zkan @blackbass64 @lifnaja @Aphinan-Th @chonla @Srabasti airflow-core/src/airflow/ui/public/i18n/locales/tr/ @bugraoz93 # +@hasancatalgol diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json new file mode 100644 index 0000000000000..de932249a8f0f --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -0,0 +1,180 @@ +{ + "columns": { + "description": "Descrição", + "key": "Chave", + "name": "Nome", + "value": "Valor" + }, + "config": { + "columns": { + "section": "Secção" + }, + "title": "Configuração do Airflow" + }, + "connections": { + "add": "Adicionar Conexão", + "columns": { + "connectionId": "ID da Conexão", + "connectionType": "Tipo de Conexão", + "host": "Host", + "port": "Porta" + }, + "connection_many": "Conexões", + "connection_one": "Conexão", + "connection_other": "Conexões", + "connection_zero": "Nenhuma conexão", + "delete": { + "deleteConnection_many": "Excluir {{count}} conexões", + "deleteConnection_one": "Excluir 1 conexão", + "deleteConnection_other": "Excluir {{count}} conexões", + "deleteConnection_zero": "Nenhuma conexão para excluir", + "firstConfirmMessage_many": "Você está prestes a excluir as seguintes conexões:", + "firstConfirmMessage_one": "Você está prestes a excluir a seguinte conexão:", + "firstConfirmMessage_other": "Você está prestes a excluir as seguintes conexões:", + "firstConfirmMessage_zero": "Nenhuma conexão para excluir", + "title": "Excluir Conexão" + }, + "edit": "Editar Conexão", + "form": { + "connectionIdRequired": "ID da Conexão é obrigatório", + "connectionIdRequirement": "ID da Conexão não pode conter somente espaços", + "connectionTypeRequired": "Tipo de Conexão é obrigatório", + "extraFields": "Campos Extra", + "extraFieldsJson": "Campos Extra JSON", + "helperText": "Tipo de conexão faltando? Certifique-se de ter instalado o pacote do provider correspondente ao Airflow.", + "helperTextForRedactedFields": "Os campos redigidos ('***') permanecerão inalterados se não forem modificados.", + "selectConnectionType": "Selecionar Tipo de Conexão", + "standardFields": "Campos Padrão" + }, + "nothingFound": { + "description": "Conexões definidas via variáveis de ambiente ou gerenciadores de segredos não estão listadas aqui.", + "documentationLink": "Saiba mais na documentação do Airflow.", + "learnMore": "Estas são resolvidas em tempo de execução e não são visíveis na interface do usuário.", + "title": "Nenhuma conexão encontrada!" + }, + "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.", + "typeMeta": { + "error": "Falha ao recuperar Meta do Tipo de Conexão", + "standardFields": { + "description": "Descrição", + "host": "Host", + "login": "Login", + "password": "Senha", + "port": "Porta", + "url_schema": "Esquema" + } + } + }, + "deleteActions": { + "button": "Excluir", + "modal": { + "confirmButton": "Sim, Excluir", + "secondConfirmMessage": "Esta ação é permanente e não pode ser desfeita.", + "thirdConfirmMessage": "Tem certeza que deseja prosseguir?" + }, + "selected": "Selecionado", + "tooltip": "Excluir conexões selecionadas" + }, + "formActions": { + "save": "Salvar" + }, + "plugins": { + "columns": { + "source": "Origem" + }, + "importError_many": "Erros de Importação de Plugins", + "importError_one": "Erro de Importação de Plugin", + "importError_other": "Erros de Importação de Plugins", + "importError_zero": "Nenhum erro de importação de plugin", + "searchPlaceholder": "Pesquisar por arquivo" + }, + "pools": { + "add": "Adicionar Pool", + "deferredSlotsIncluded": "Slots Deferidos Incluídos", + "delete": { + "title": "Excluir Pool", + "warning": "Isso removerá todas as metadados relacionados ao pool e pode afetar as tarefas usando este pool." + }, + "edit": "Editar Pool", + "form": { + "checkbox": "Marcar para incluir tarefas deferidas ao calcular slots abertos do pool", + "description": "Descrição", + "includeDeferred": "Incluir Deferidos", + "nameMaxLength": "Nome pode conter um máximo de 256 caracteres", + "nameRequired": "Nome é obrigatório", + "slots": "Slots" + }, + "noPoolsFound": "Nenhum pool encontrado", + "pool_many": "Pools", + "pool_one": "Pool", + "pool_other": "Pools", + "pool_zero": "Nenhum pool", + "searchPlaceholder": "Pesquisar Pools", + "sort": { + "asc": "Nome (A-Z)", + "desc": "Nome (Z-A)", + "placeholder": "Ordenar por" + } + }, + "providers": { + "columns": { + "packageName": "Nome do Pacote", + "version": "Versão" + } + }, + "variables": { + "add": "Adicionar Variável", + "columns": { + "isEncrypted": "Está Encriptado" + }, + "delete": { + "deleteVariable_many": "Excluir {{count}} Variáveis", + "deleteVariable_one": "Excluir 1 Variável", + "deleteVariable_other": "Excluir {{count}} Variáveis", + "deleteVariable_zero": "Nenhuma variável para excluir", + "firstConfirmMessage_many": "Você está prestes a excluir as seguintes variáveis:", + "firstConfirmMessage_one": "Você está prestes a excluir a seguinte variável:", + "firstConfirmMessage_other": "Você está prestes a excluir as seguintes variáveis:", + "firstConfirmMessage_zero": "Nenhuma variável para excluir", + "title": "Excluir Variável", + "tooltip": "Excluir variáveis selecionadas" + }, + "edit": "Editar Variável", + "form": { + "invalidJson": "JSON Inválido", + "keyMaxLength": "Chave pode conter um máximo de 250 caracteres", + "keyRequired": "Chave é obrigatória", + "valueRequired": "Valor é obrigatório" + }, + "import": { + "button": "Importar", + "conflictResolution": "Selecionar Resolução de Conflito de Variável", + "errorParsingJsonFile": "Erro ao Analisar Arquivo JSON: Upload um arquivo JSON contendo variáveis (exemplo: {\"key\": \"value\", ...}).", + "options": { + "fail": { + "description": "Falha na importação se forem detetadas variáveis que já existem.", + "title": "Falha" + }, + "overwrite": { + "description": "Sobreescreve a variável em caso de conflito.", + "title": "Sobreescrever" + }, + "skip": { + "description": "Ignora a importação de variáveis que já existem.", + "title": "Ignorar" + } + }, + "title": "Importar Variáveis", + "upload": "Upload um Arquivo JSON", + "uploadPlaceholder": "Upload um arquivo JSON contendo variáveis (exemplo: {\"key\": \"value\", ...})" + }, + "noRowsMessage": "Nenhuma variável encontrada", + "searchPlaceholder": "Pesquisar Chaves", + "variable_many": "Variáveis", + "variable_one": "Variável", + "variable_other": "Variáveis", + "variable_zero": "Nenhuma variável" + } +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json new file mode 100644 index 0000000000000..ca1a65fc735de --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json @@ -0,0 +1,30 @@ +{ + "consumingDags": "Consumindo Dags", + "createEvent": { + "button": "Criar Evento", + "manual": { + "description": "Manualmente criar um Evento de Asset", + "extra": "Evento de Asset Extra", + "label": "Manual" + }, + "materialize": { + "description": "Ativar o Dag acima deste Asset", + "descriptionWithDag": "Ativar o Dag acima deste Asset: {{dagName}}", + "label": "Materializar", + "unpauseDag": "Despausar {{dagName}} ao ativar" + }, + "success": { + "manualDescription": "Criação de evento de Asset manual foi bem-sucedida.", + "manualTitle": "Evento de Asset Criado", + "materializeDescription": "Dag acima {{dagId}} foi ativado com sucesso.", + "materializeTitle": "Materializando Asset" + }, + "title": "Criar Evento de Asset para {{name}}" + }, + "group": "Grupo", + "lastAssetEvent": "Último Evento de Asset", + "name": "Nome", + "producingTasks": "Produzindo Tarefas", + "scheduledDags": "Dags Programados", + "searchPlaceholder": "Pesquisar Assets" +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json new file mode 100644 index 0000000000000..867d8494a6c32 --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json @@ -0,0 +1,22 @@ +{ + "auditLog": { + "columns": { + "event": "Evento", + "extra": "Extra", + "user": "Usuário", + "when": "Quando" + }, + "filters": { + "eventType": "Tipo de Evento" + }, + "title": "Log de Auditoria" + }, + "xcom": { + "columns": { + "dag": "Dag", + "key": "Chave", + "value": "Valor" + }, + "title": "XCom" + } +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json new file mode 100644 index 0000000000000..f659d3809552f --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -0,0 +1,347 @@ +{ + "admin": { + "Config": "Configuração", + "Connections": "Conexões", + "Plugins": "Plugins", + "Pools": "Pools", + "Providers": "Providers", + "Variables": "Variáveis" + }, + "allOperators": "Todos os Operadores", + "appearance": { + "appearance": "Aparência", + "darkMode": "Modo Escuro", + "lightMode": "Modo Claro", + "systemMode": "Seguir Configuração do Sistema" + }, + "asset_many": "Assets", + "asset_one": "Asset", + "asset_other": "Assets", + "asset_zero": "Nenhum asset", + "assetEvent_many": "Eventos de Asset", + "assetEvent_one": "Evento de Asset", + "assetEvent_other": "Eventos de Asset", + "assetEvent_zero": "Nenhum evento de asset", + "backfill_many": "Backfills", + "backfill_one": "Backfill", + "backfill_other": "Backfills", + "backfill_zero": "Nenhum backfill", + "browse": { + "auditLog": "Log de Auditoria", + "requiredActions": "Ações Necessárias", + "xcoms": "XComs" + }, + "collapseAllExtra": "Recolher todos os extra json", + "collapseDetailsPanel": "Recolher Painel de Detalhes", + "createdAssetEvent_many": "Eventos de Asset Criados", + "createdAssetEvent_one": "Evento de Asset Criado", + "createdAssetEvent_other": "Eventos de Asset Criados", + "createdAssetEvent_zero": "Nenhum evento de asset criado", + "dag_many": "Dags", + "dag_one": "Dag", + "dag_other": "Dags", + "dag_zero": "Nenhum Dag", + "dagDetails": { + "catchup": "Catchup", + "dagRunTimeout": "Tempo Limite da Execução do Dag", + "defaultArgs": "Argumentos Padrão", + "description": "Descrição", + "documentation": "Documentação do Dag", + "fileLocation": "Local do Arquivo", + "hasTaskConcurrencyLimits": "Tem Limite de Concorrência de Tarefas", + "lastExpired": "Último Expirado", + "lastParseDuration": "Duração do Último Parse", + "lastParsed": "Último Parseado", + "latestDagVersion": "Última Versão do Dag", + "latestRun": "Última Execução", + "maxActiveRuns": "Máximo de Execuções Ativas", + "maxActiveTasks": "Máximo de Tarefas Ativas", + "maxConsecutiveFailedDagRuns": "Máximo de Execuções Consecutivas Falhadas", + "nextRun": "Próxima Execução", + "owner": "Proprietário", + "params": "Parâmetros", + "schedule": "Agendamento", + "tags": "Etiquetas" + }, + "dagId": "ID do Dag", + "dagRun": { + "conf": "Conf", + "dagVersions": "Versão(s) do Dag", + "dataIntervalEnd": "Fim do Intervalo de Dados", + "dataIntervalStart": "Início do Intervalo de Dados", + "lastSchedulingDecision": "Última Decisão de Agendamento", + "queuedAt": "Enfileirado Em", + "runAfter": "Executar Depois", + "runType": "Tipo de Execução", + "sourceAssetEvent": "Evento de Asset de Origem", + "triggeredBy": "Acionado por", + "triggeringUser": "Nome do Usuário que Disparou" + }, + "dagRun_many": "Execuções do Dag", + "dagRun_one": "Execução do Dag", + "dagRun_other": "Execuções do Dag", + "dagRun_zero": "Nenhuma execução do Dag", + "dagRunId": "ID da Execução do Dag", + "dagWarnings": "Avisos/Erros do Dag", + "defaultToGraphView": "Padrão para visualização gráfica", + "defaultToGridView": "Padrão para visualização em grade", + "direction": "Direção", + "docs": { + "documentation": "Documentação", + "githubRepo": "Repositório GitHub", + "restApiReference": "Referência da API REST" + }, + "download": { + "download": "Baixar", + "hotkey": "d", + "tooltip": "Pressione {{hotkey}} para baixar os logs" + }, + "duration": "Duração", + "endDate": "Data Final", + "error": { + "back": "Voltar", + "defaultMessage": "Ocorreu um erro inesperado", + "home": "Início", + "notFound": "Página Não Encontrada", + "title": "Erro" + }, + "expand": { + "collapse": "Recolher", + "expand": "Expandir", + "hotkey": "Pressione {{hotkey}} para expandir ou recolher", + "tooltip": "Pressione {{hotkey}} para expandir ou recolher a secção" + }, + "expandAllExtra": "Expandir todos os extra json", + "expression": { + "all": "Todos", + "and": "E", + "any": "Qualquer", + "or": "OU" + }, + "filter": "Filtro", + "filters": { + "durationFrom": "Duração De", + "durationTo": "Duração Até", + "logicalDateFrom": "Data Lógica De", + "logicalDateTo": "Data Lógica Para", + "runAfterFrom": "Executar Depois De", + "runAfterTo": "Executar Depois Para" + }, + "logicalDate": "Data Lógica", + "logout": "Sair", + "logoutConfirmation": "Você está prestes a sair do aplicativo.", + "mapIndex": "Índice do Mapa", + "modal": { + "cancel": "Cancelar", + "confirm": "Confirmar", + "delete": { + "button": "Excluir", + "confirmation": "Tem certeza que deseja excluir {{resourceName}}? Esta ação não pode ser desfeita." + } + }, + "nav": { + "admin": "Administração", + "assets": "Assets", + "browse": "Navegar", + "dags": "Dags", + "docs": "Documentação", + "home": "Início", + "legacyFabViews": "Visualizações Legacy FAB", + "plugins": "Plugins", + "security": "Segurança" + }, + "noItemsFound": "Nenhum {{modelName}} encontrado", + "note": { + "add": "Adicionar uma nota", + "dagRun": "Nota da Execução do Dag", + "label": "Nota", + "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" + }, + "reset": "Resetar", + "runId": "ID da Execução", + "runTypes": { + "asset_triggered": "Asset Acionado", + "backfill": "Backfill", + "manual": "Manual", + "scheduled": "Agendado" + }, + "scroll": { + "direction": { + "bottom": "Inferior", + "top": "Superior" + }, + "tooltip": "Pressione {{hotkey}} para rolar para {{direction}}" + }, + "security": { + "actions": "Ações", + "permissions": "Permissões", + "resources": "Recursos", + "roles": "Funções", + "users": "Usuários" + }, + "selectLanguage": "Selecionar Idioma", + "showDetailsPanel": "Mostrar Painel de Detalhes", + "source": { + "hide": "Ocultar", + "hotkey": "Pressione {{hotkey}} para ocultar/mostrar", + "show": "Mostrar" + }, + "sourceAssetEvent_many": "Eventos de Asset de Origem", + "sourceAssetEvent_one": "Evento de Asset de Origem", + "sourceAssetEvent_other": "Eventos de Asset de Origem", + "sourceAssetEvent_zero": "Nenhum evento de asset de origem", + "startDate": "Data Inicial", + "state": "Estado", + "states": { + "deferred": "Deferido", + "failed": "Falha", + "no_status": "Sem Status", + "none": "Sem Status", + "planned": "Planejado", + "queued": "Enfileirado", + "removed": "Removido", + "restarting": "Reiniciando", + "running": "Executando", + "scheduled": "Agendado", + "skipped": "Pulado", + "success": "Sucesso", + "up_for_reschedule": "Pronto para reagendar", + "up_for_retry": "Pronto para tentar novamente", + "upstream_failed": "Falha no upstream" + }, + "table": { + "completedAt": "Concluído em", + "createdAt": "Criado em", + "filterByTag": "Filtrar Dags por tag", + "filterColumns": "Filtrar colunas da tabela", + "filterReset_many": "Resetar filtros", + "filterReset_one": "Resetar filtro", + "filterReset_other": "Resetar filtros", + "filterReset_zero": "Nenhum filtro para resetar", + "from": "De", + "maxActiveRuns": "Máximo de Execuções Ativas", + "noTagsFound": "Nenhuma tag encontrada", + "tagMode": { + "all": "Todos", + "any": "Qualquer" + }, + "tagPlaceholder": "Filtrar por tag", + "to": "Para" + }, + "task": { + "documentation": "Documentação da Tarefa", + "lastInstance": "Última Instância", + "operator": "Operador", + "triggerRule": "Regra de Trigger" + }, + "task_many": "Tarefas", + "task_one": "Tarefa", + "task_other": "Tarefas", + "task_zero": "Nenhuma tarefa", + "taskGroup": "Grupo de Tarefas", + "taskId": "ID da Tarefa", + "taskInstance": { + "dagVersion": "Versão do Dag", + "executor": "Executor", + "executorConfig": "Configuração do Executor", + "hostname": "Hostname", + "maxTries": "Máximo de Tentativas", + "pid": "PID", + "pool": "Pool", + "poolSlots": "Slots do Pool", + "priorityWeight": "Prioridade", + "queue": "Fila", + "queuedWhen": "Enfileirado em", + "scheduledWhen": "Agendado em", + "triggerer": { + "assigned": "Triggerer atribuído", + "class": "Classe do Trigger", + "createdAt": "Tempo de criação do Trigger", + "id": "ID do Trigger", + "latestHeartbeat": "Último heartbeat do Trigger", + "title": "Informações do Trigger" + }, + "unixname": "Nome do Unix" + }, + "taskInstance_many": "Instâncias de Tarefa", + "taskInstance_one": "Instância de Tarefa", + "taskInstance_other": "Instâncias de Tarefa", + "taskInstance_zero": "Nenhuma instância de tarefa", + "timeRange": { + "last12Hours": "Últimas 12 Horas", + "last24Hours": "Últimas 24 Horas", + "lastHour": "Última Hora", + "pastWeek": "Semana Passada" + }, + "timestamp": { + "hide": "Ocultar", + "hotkey": "Pressione {{hotkey}} para ocultar/mostrar", + "show": "Mostrar" + }, + "timezone": "Fuso Horário", + "timezoneModal": { + "current-timezone": "Hora atual em", + "placeholder": "Selecionar um fuso horário", + "title": "Selecionar Fuso Horário", + "utc": "UTC (Tempo Universal Coordenado)" + }, + "toaster": { + "bulkDelete": { + "error": "Exclusão em Massa de {{resourceName}} Falhou", + "success": { + "description": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}", + "title": "Exclusão em Massa de {{resourceName}} Submetida" + } + }, + "create": { + "error": "Criação de {{resourceName}} Falhou", + "success": { + "description": "{{resourceName}} foi criado com sucesso.", + "title": "Criação de {{resourceName}} Submetida" + } + }, + "delete": { + "error": "Exclusão de {{resourceName}} Falhou", + "success": { + "description": "{{resourceName}} foi excluído com sucesso.", + "title": "Exclusão de {{resourceName}} Submetida" + } + }, + "import": { + "error": "Importação de {{resourceName}} Falhou", + "success": { + "description": "{{count}} {{resourceName}} foram importados com sucesso.", + "title": "Importação de {{resourceName}} Submetida" + } + }, + "update": { + "error": "Atualização de {{resourceName}} Falhou", + "success": { + "description": "{{resourceName}} foi atualizado com sucesso.", + "title": "Atualização de {{resourceName}} Submetida" + } + } + }, + "total": "Total {{state}}", + "triggered": "Acionado", + "tryNumber": "Número de Tentativas", + "user": "Usuário", + "wrap": { + "hotkey": "Pressione {{hotkey}} para expandir ou recolher", + "tooltip": "Pressione {{hotkey}} para expandir ou recolher a secção", + "unwrap": "Expandir", + "wrap": "Recolher" + } +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json new file mode 100644 index 0000000000000..47d8b52a290dd --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json @@ -0,0 +1,160 @@ +{ + "backfill": { + "affected_many": "{{count}} execuções serão acionadas.", + "affected_one": "1 execução será acionada.", + "affected_other": "{{count}} execuções serão acionadas.", + "affected_zero": "Nenhuma execução será acionada.", + "affectedNone": "Nenhuma execução correspondente aos critérios selecionados.", + "allRuns": "Todas as Execuções", + "backwards": "Executar para trás", + "dateRange": "Intervalo de Data", + "errorStartDateBeforeEndDate": "A Data Inicial deve ser antes da Data Final", + "maxRuns": "Máximo de Execuções Ativas", + "missingAndErroredRuns": "Execuções Faltando e com Erro", + "missingRuns": "Execuções Faltando", + "reprocessBehavior": "Comportamento de Reprocessamento", + "run": "Executar Backfill", + "selectDescription": "Executar este Dag para um intervalo de datas", + "selectLabel": "Backfill", + "title": "Executar Backfill", + "toaster": { + "success": { + "description": "Backfill jobs foram acionados com sucesso.", + "title": "Backfill gerado" + } + }, + "tooltip": "Backfill requer um agendamento", + "unpause": "Despausar {{dag_display_name}} ao acionar", + "validation": { + "datesRequired": "Ambas as datas de início e fim do intervalo devem ser fornecidas.", + "startBeforeEnd": "A Data Inicial do Intervalo deve ser menor ou igual à Data Final do Intervalo." + } + }, + "banner": { + "backfillInProgress": "Backfill em progresso", + "cancel": "Cancelar backfill", + "pause": "Pausar backfill", + "unpause": "Despausar backfill" + }, + "clipboard": { + "copy": "Copiar" + }, + "close": "Fechar", + "configForm": { + "advancedOptions": "Opções Avançadas", + "configJson": "Configuração JSON", + "invalidJson": "Formato JSON inválido: {{errorMessage}}" + }, + "dagWarnings": { + "error_many": "{{count}} Erros", + "error_one": "1 Erro", + "error_other": "{{count}} Erros", + "error_zero": "Nenhum erro", + "errorAndWarning": "1 Erro e {{warningText}}", + "warning_many": "{{count}} Avisos", + "warning_one": "1 Aviso", + "warning_other": "{{count}} Avisos", + "warning_zero": "Nenhum aviso" + }, + "durationChart": { + "duration": "Duração (segundos)", + "lastDagRun_many": "Últimas {{count}} Execuções do Dag", + "lastDagRun_one": "Última Execução do Dag", + "lastDagRun_other": "Últimas {{count}} Execuções do Dag", + "lastDagRun_zero": "Nenhuma execução do Dag", + "lastTaskInstance_many": "Últimas {{count}} Instâncias de Tarefa", + "lastTaskInstance_one": "Última Instância de Tarefa", + "lastTaskInstance_other": "Últimas {{count}} Instâncias de Tarefa", + "lastTaskInstance_zero": "Nenhuma instância de tarefa", + "queuedDuration": "Duração da Fila", + "runAfter": "Executar Depois", + "runDuration": "Duração da Execução" + }, + "fileUpload": { + "files_many": "{{count}} arquivos", + "files_one": "1 arquivo", + "files_other": "{{count}} arquivos", + "files_zero": "Nenhum arquivo" + }, + "flexibleForm": { + "placeholder": "Selecionar Valor", + "placeholderArray": "Digite cada string em uma nova linha", + "placeholderExamples": "Comece a digitar para ver opções", + "placeholderMulti": "Selecione um ou vários valores", + "validationErrorArrayNotArray": "O valor deve ser um array.", + "validationErrorArrayNotNumbers": "Todos os elementos do array devem ser números.", + "validationErrorArrayNotObject": "Todos os elementos do array devem ser objetos.", + "validationErrorRequired": "Este campo é obrigatório" + }, + "graph": { + "directionDown": "Superior para Inferior", + "directionLeft": "Direita para Esquerda", + "directionRight": "Esquerda para Direita", + "directionUp": "Inferior para Superior", + "downloadImage": "Baixar imagem do gráfico", + "downloadImageError": "Falha ao baixar a imagem do gráfico.", + "downloadImageErrorTitle": "Download Falhou", + "otherDagRuns": "+Outras Execuções do Dag", + "taskCount_many": "{{count}} Tarefas", + "taskCount_one": "{{count}} Tarefa", + "taskCount_other": "{{count}} Tarefas", + "taskCount_zero": "Nenhuma tarefa", + "taskGroup": "Grupo de Tarefas" + }, + "limitedList": "+{{count}} mais", + "limitedList.allItems": "Todos os {{count}} itens:", + "limitedList.allTags_many": "Todas as etiquetas ({{count}})", + "limitedList.allTags_one": "Todas as etiquetas (1)", + "limitedList.allTags_other": "Todas as etiquetas ({{count}})", + "limitedList.allTags_zero": "Todas as etiquetas (0)", + "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_many": "Mostrando {{count}} itens", + "limitedList.showingItems_one": "Mostrando 1 item", + "limitedList.showingItems_other": "Mostrando {{count}} itens", + "limitedList.showingItems_zero": "Mostrando 0 itens", + "logs": { + "file": "Arquivo", + "location": "linha {{line}} em {{name}}" + }, + "reparseDag": "Reparse Dag", + "sortedAscending": "Ordenado em ordem crescente", + "sortedDescending": "Ordenado em ordem decrescente", + "sortedUnsorted": "Não ordenado", + "taskTries": "Tentativas de Tarefa", + "toggleCardView": "Mostrar visualização de cartão", + "toggleTableView": "Mostrar visualização de tabela", + "triggerDag": { + "button": "Acionar", + "loading": "Carregando informações do Dag...", + "loadingFailed": "Falha ao carregar informações do Dag. Por favor, tente novamente.", + "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": { + "success": { + "description": "A execução do Dag foi acionada com sucesso.", + "title": "Execução do Dag acionada" + } + }, + "unpause": "Despausar {{dagDisplayName}} ao acionar" + }, + "trimText": { + "details": "Detalhes", + "empty": "Vazio", + "noContent": "Nenhum conteúdo disponível." + }, + "versionDetails": { + "bundleLink": "Link do Bundle", + "bundleName": "Nome do Bundle", + "bundleVersion": "Versão do Bundle", + "createdAt": "Criado em", + "versionId": "ID da Versão" + }, + "versionSelect": { + "dagVersion": "Versão do Dag", + "versionCode": "v{{versionCode}}" + } +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json new file mode 100644 index 0000000000000..200da31a5884a --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json @@ -0,0 +1,164 @@ +{ + "allRuns": "Todas as Execuções", + "blockingDeps": { + "dependency": "Dependência", + "reason": "Motivo", + "title": "Dependências Bloqueando Tarefa de Ser Agendada" + }, + "calendar": { + "daily": "Diário", + "hourly": "Por Hora", + "legend": { + "less": "Menos", + "mixed": "Misturado", + "more": "Mais" + }, + "navigation": { + "nextMonth": "Próximo mês", + "nextYear": "Próximo ano", + "previousMonth": "Mês anterior", + "previousYear": "Ano anterior" + }, + "noData": "Nenhum dado disponível", + "noFailedRuns": "Nenhuma execução com falha", + "noRuns": "Nenhuma execução", + "totalRuns": "Total de Execuções", + "week": "Semana {{weekNumber}}", + "weekdays": { + "friday": "Sex", + "monday": "Seg", + "saturday": "Sáb", + "sunday": "Dom", + "thursday": "Qui", + "tuesday": "Ter", + "wednesday": "Qua" + } + }, + "code": { + "bundleUrl": "URL do Bundle", + "noCode": "Nenhum Código Encontrado", + "parseDuration": "Duração do Processamento:", + "parsedAt": "Processado em:" + }, + "extraLinks": "Links Extra", + "grid": { + "buttons": { + "resetToLatest": "Redefinir para a Última", + "toggleGroup": "Alternar Grupo" + } + }, + "header": { + "buttons": { + "advanced": "Avançado", + "dagDocs": "Documentação do Dag" + } + }, + "logs": { + "allLevels": "Todos os Níveis de Log", + "allSources": "Todas as Fontes", + "critical": "CRÍTICO", + "debug": "DEBUG", + "error": "ERRO", + "fullscreen": { + "button": "Tela cheia", + "tooltip": "Pressione {{hotkey}} para tela cheia" + }, + "info": "INFO", + "noTryNumber": "Nenhum número de tentativa", + "settings": "Configurações", + "viewInExternal": "Ver logs em {{name}} (tentativa {{attempt}})", + "warning": "AVISO" + }, + "navigation": { + "navigation": "Navegação: Shift+{{arrow}}", + "toggleGroup": "Alternar grupo: Espaço" + }, + "overview": { + "buttons": { + "failedRun_many": "Execuções Falhadas", + "failedRun_one": "Execução Falhada", + "failedRun_other": "Execuções Falhadas", + "failedRun_zero": "Nenhuma execução falhada", + "failedTask_many": "Tarefas Falhadas", + "failedTask_one": "Tarefa Falhada", + "failedTask_other": "Tarefas Falhadas", + "failedTask_zero": "Nenhuma tarefa falhada", + "failedTaskInstance_many": "Instâncias de Tarefa Falhadas", + "failedTaskInstance_one": "Instância de Tarefa Falhada", + "failedTaskInstance_other": "Instâncias de Tarefa Falhadas", + "failedTaskInstance_zero": "Nenhuma instância de tarefa falhada" + }, + "charts": { + "assetEvent_many": "Eventos de Asset Criados", + "assetEvent_one": "Evento de Asset Criado", + "assetEvent_other": "Eventos de Asset Criados", + "assetEvent_zero": "Nenhum evento de asset criado" + }, + "failedLogs": { + "hideLogs": "Ocultar Logs", + "showLogs": "Mostrar Logs", + "title": "Logs Recentes de Tarefas Falhadas", + "viewFullLogs": "Ver logs completos" + } + }, + "panel": { + "buttons": { + "options": "Opções", + "showGantt": "Mostrar Gantt", + "showGraphShortcut": "Mostrar Gráfico (Pressione g)", + "showGridShortcut": "Mostrar Grade (Pressione g)" + }, + "dagRuns": { + "label": "Número de Execuções do Dag" + }, + "dependencies": { + "label": "Dependências", + "options": { + "allDagDependencies": "Todas as Dependências do Dag", + "externalConditions": "Condições Externas", + "onlyTasks": "Somente Tarefas" + }, + "placeholder": "Dependências" + }, + "graphDirection": { + "label": "Direção do Gráfico" + } + }, + "paramsFailed": "Falha ao carregar parâmetros", + "parse": { + "toaster": { + "error": { + "description": "Falha ao processar o Dag. Pode haver solicitações de processamento pendentes ainda não processadas.", + "title": "Falha ao Reprocessar o Dag" + }, + "success": { + "description": "O Dag deve ser reprocessado em breve.", + "title": "Solicitação de Reprocessamento Enviada com Sucesso" + } + } + }, + "tabs": { + "assetEvents": "Asset Events", + "auditLog": "Log de Auditoria", + "backfills": "Backfills", + "calendar": "Calendário", + "code": "Código", + "details": "Detalhes", + "logs": "Logs", + "mappedTaskInstances_many": "Instâncias de Tarefa [{{count}}]", + "mappedTaskInstances_one": "Instância de Tarefa [{{count}}]", + "mappedTaskInstances_other": "Instâncias de Tarefa [{{count}}]", + "mappedTaskInstances_zero": "Nenhuma instância de tarefa mapeada", + "overview": "Visão Geral", + "renderedTemplates": "Modelos Renderizados", + "requiredActions": "Ações Necessárias", + "runs": "Execuções", + "taskInstances": "Instâncias de Tarefa", + "tasks": "Tarefas", + "xcom": "XCom" + }, + "taskGroups": { + "collapseAll": "Recolher todos os grupos de tarefas", + "expandAll": "Expandir todos os grupos de tarefas" + } +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json new file mode 100644 index 0000000000000..138a7b9293139 --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json @@ -0,0 +1,96 @@ +{ + "assetSchedule": "{{count}} de {{total}} ativos atualizados", + "dagActions": { + "delete": { + "button": "Excluir Dag", + "warning": "Isso removerá todas as metadados relacionados ao Dag, incluindo Execuções e Tarefas." + } + }, + "favoriteDag": "Dag Favorito", + "filters": { + "allRunTypes": "Todos os Tipos de Execução", + "allStates": "Todos os Estados", + "favorite": { + "all": "Todos", + "favorite": "Favorito", + "unfavorite": "Remover dos Favoritos" + }, + "paused": { + "active": "Ativo", + "all": "Todos", + "paused": "Pausado" + }, + "runIdPatternFilter": "Pesquisar Execuções de Dag" + }, + "ownerLink": "Link do Proprietário para {{owner}}", + "runAndTaskActions": { + "affectedTasks": { + "noItemsFound": "Nenhuma tarefa encontrada.", + "title": "Tarefas Afetadas: {{count}}" + }, + "clear": { + "button": "Limpar {{type}}", + "buttonTooltip": "Pressione shift+c para limpar", + "error": "Falha ao limpar {{type}}", + "title": "Limpar {{type}}" + }, + "delete": { + "button": "Excluir {{type}}", + "dialog": { + "resourceName": "{{type}} {{id}}", + "title": "Excluir {{type}}", + "warning": "Isso removerá todas as metadados relacionados ao {{type}}." + }, + "error": "Erro ao excluir {{type}}", + "success": { + "description": "A solicitação de exclusão do {{type}} foi bem-sucedida.", + "title": "{{type}} Excluído com Sucesso" + } + }, + "markAs": { + "button": "Marcar {{type}} como...", + "buttonTooltip": { + "failed": "Pressione shift+f para marcar como falha", + "success": "Pressione shift+s para marcar como sucesso" + }, + "title": "Marcar {{type}} como {{state}}" + }, + "options": { + "downstream": "Downstream", + "existingTasks": "Limpar tarefas existentes", + "future": "Futuro", + "onlyFailed": "Limpar somente tarefas falhadas", + "past": "Passado", + "queueNew": "Enfileirar novas tarefas", + "runOnLatestVersion": "Executar com a versão mais recente do pacote", + "upstream": "Upstream" + } + }, + "search": { + "advanced": "Pesquisa Avançada", + "clear": "Limpar pesquisa", + "dags": "Pesquisar Dags", + "hotkey": "+K", + "tasks": "Pesquisar Tarefas" + }, + "sort": { + "displayName": { + "asc": "Ordenar por Nome (A-Z)", + "desc": "Ordenar por Nome (Z-A)" + }, + "lastRunStartDate": { + "asc": "Ordenar por Data de Início da Última Execução (Mais Antiga-Mais Recente)", + "desc": "Ordenar por Data de Início da Última Execução (Mais Recente-Mais Antiga)" + }, + "lastRunState": { + "asc": "Ordenar por Estado da Última Execução (A-Z)", + "desc": "Ordenar por Estado da Última Execução (Z-A)" + }, + "nextDagRun": { + "asc": "Ordenar por Próxima Execução do Dag (Mais Antiga-Mais Recente)", + "desc": "Ordenar por Próxima Execução do Dag (Mais Recente-Mais Antiga)" + }, + "placeholder": "Ordenar por" + }, + "unfavoriteDag": "Remover Dag dos Favoritos" +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json new file mode 100644 index 0000000000000..d5245e4b6236e --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json @@ -0,0 +1,49 @@ +{ + "favorite": { + "favoriteDags_many": "Primeiros {{count}} Dags favoritos", + "favoriteDags_one": "Primeiro {{count}} Dag favorito", + "favoriteDags_other": "Primeiros {{count}} Dags favoritos", + "favoriteDags_zero": "Nenhum Dag favorito", + "noDagRuns": "Ainda não há DagRun para este dag.", + "noFavoriteDags": "Nenhum favorito ainda. Clique no ícone de estrela ao lado de um Dag na lista para adicioná-lo aos seus favoritos." + }, + "group": "Grupo", + "health": { + "dagProcessor": "Processador de Dag", + "health": "Saúde", + "healthy": "Saúde", + "lastHeartbeat": "Último Heartbeat", + "metaDatabase": "Base de Dados de Metadados", + "scheduler": "Agendador", + "status": "Estado", + "triggerer": "Disparador", + "unhealthy": "Não saudável" + }, + "history": "Histórico", + "importErrors": { + "dagImportError_many": "Erros de Importação de Dag", + "dagImportError_one": "Erro de Importação de Dag", + "dagImportError_other": "Erros de Importação de Dag", + "dagImportError_zero": "Nenhum erro de importação de Dag", + "searchByFile": "Pesquisar por arquivo", + "timestamp": "Timestamp" + }, + "managePools": "Gerenciar Pools", + "noAssetEvents": "Nenhum Evento de Asset encontrado.", + "poolSlots": "Slots de Pool", + "sortBy": { + "newestFirst": "Mais Recentes Primeiro", + "oldestFirst": "Mais Antigos Primeiro" + }, + "source": "Fonte", + "stats": { + "activeDags": "Dags Ativos", + "failedDags": "Dags Falhados", + "queuedDags": "Dags em Fila", + "requiredActions": "Ações Necessárias", + "runningDags": "Dags em Execução", + "stats": "Estatísticas" + }, + "uri": "URI", + "welcome": "Bem-vindo" +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json new file mode 100644 index 0000000000000..f8730b65f4638 --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json @@ -0,0 +1,43 @@ +{ + "filters": { + "body": "Corpo", + "createdAtFrom": "Criado De", + "createdAtTo": "Criado Até", + "response": { + "all": "Todas", + "pending": "Pendente", + "received": "Revisadas" + } + }, + "requiredAction_many": "Ações Necessárias", + "requiredAction_one": "Ação Necessária", + "requiredAction_other": "Ações Necessárias", + "requiredAction_zero": "Nenhuma ação necessária", + "requiredActionCount_many": "Ações Necessárias ({{count}})", + "requiredActionCount_one": "Ação Necessária ({{count}})", + "requiredActionCount_other": "Ações Necessárias ({{count}})", + "requiredActionCount_zero": "Nenhuma ação necessária", + "requiredActionState": "Estado da Ação Necessária", + "response": { + "created": "Resposta criada em ", + "error": "Falha na resposta", + "optionsDescription": "Escolha suas opções para esta instância de tarefa", + "optionsLabel": "Opções", + "received": "Resposta recebida em ", + "respond": "Responder", + "responded_by_user_name": "Respondido por (Nome de usuário)", + "success": "Resposta de {{taskId}} bem-sucedida", + "title": "Instância de Tarefa Humana - {{taskId}}" + }, + "state": { + "approvalReceived": "Aprovação Recebida", + "approvalRequired": "Aprovação Necessária", + "choiceReceived": "Escolha Recebida", + "choiceRequired": "Escolha Necessária", + "noResponseReceived": "Nenhuma Resposta Recebida", + "rejectionReceived": "Rejeição Recebida", + "responseReceived": "Resposta Recebida", + "responseRequired": "Resposta Necessária" + }, + "subject": "Assunto" +} diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/tasks.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/tasks.json new file mode 100644 index 0000000000000..d15d2dd10ce28 --- /dev/null +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/tasks.json @@ -0,0 +1,10 @@ +{ + "mapped": "Mapeado", + "notMapped": "Não mapeado", + "retries": "Tentativas", + "searchTasks": "Pesquisar tarefas", + "selectMapped": "Selecionar mapeado", + "selectOperator": "Selecionar operadores", + "selectRetryValues": "Selecionar valores de tentativa", + "selectTriggerRules": "Selecionar regras de gatilho" +} diff --git a/airflow-core/src/airflow/ui/src/i18n/config.ts b/airflow-core/src/airflow/ui/src/i18n/config.ts index 0cca099fcb568..a939e2848eb10 100644 --- a/airflow-core/src/airflow/ui/src/i18n/config.ts +++ b/airflow-core/src/airflow/ui/src/i18n/config.ts @@ -40,6 +40,7 @@ export const supportedLanguages = [ { code: "nl", name: "Nederlands" }, { code: "pl", name: "Polski" }, { code: "pt", name: "Português" }, + { code: "pt-BR", name: "Português (Brasil)" }, { code: "ru", name: "Русский" }, { code: "th", name: "ไทย" }, { code: "tr", name: "Türkçe" }, diff --git a/dev/breeze/src/airflow_breeze/commands/ui_commands.py b/dev/breeze/src/airflow_breeze/commands/ui_commands.py index 5ca44c6863200..87b26d006ffa5 100644 --- a/dev/breeze/src/airflow_breeze/commands/ui_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/ui_commands.py @@ -89,6 +89,7 @@ def char_key(c: str) -> tuple: "nl": MOST_COMMON_PLURAL_SUFFIXES, "pl": ["_one", "_few", "_many", "_other"], "pt": ["_zero", "_one", "_many", "_other"], + "pt-BR": ["_zero", "_one", "_many", "_other"], "ru": ["_one", "_few", "_other"], "th": ["_other"], "tr": MOST_COMMON_PLURAL_SUFFIXES, From 53609a540d53357723927512ca802308f6306d3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 5 Mar 2026 18:53:42 -0300 Subject: [PATCH 02/19] Update CODEOWNERS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jens Scheffler <95105677+jscheffl@users.noreply.github.com> Signed-off-by: André Ahlert --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index be86c15a0508b..d0f2df54d7fca 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -53,7 +53,7 @@ airflow-core/src/airflow/ui/public/i18n/locales/ko/ @choo121600 # + @onestn @noe airflow-core/src/airflow/ui/public/i18n/locales/nl/ @BasPH # + @DjVinnii airflow-core/src/airflow/ui/public/i18n/locales/pl/ @potiuk @mobuchowski # + @kacpermuda airflow-core/src/airflow/ui/public/i18n/locales/pt/ @potiuk # + @aoelvp94 @victoru2 -airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/ @potiuk # + @andreahlert +airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/ @potiuk @jscheffl # + @andreahlert airflow-core/src/airflow/ui/public/i18n/locales/ru/ @jscheffl # + @puzzle-rpa-team @renat-sagut airflow-core/src/airflow/ui/public/i18n/locales/th/ @potiuk # + @zkan @blackbass64 @lifnaja @Aphinan-Th @chonla @Srabasti airflow-core/src/airflow/ui/public/i18n/locales/tr/ @bugraoz93 # +@hasancatalgol From 08bc9e4a14b07ee7cddbcafb75d18c02e4da7a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Fri, 6 Mar 2026 01:06:31 -0300 Subject: [PATCH 03/19] ci: add translation:pt-BR section to boring-cyborg.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Ahlert --- .github/boring-cyborg.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml index 21b44a9fb840f..546afdfd27258 100644 --- a/.github/boring-cyborg.yml +++ b/.github/boring-cyborg.yml @@ -444,6 +444,9 @@ labelPRBasedOnFilePath: translation:pt: - airflow-core/src/airflow/ui/public/i18n/locales/pt/* + translation:pt-BR: + - airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/* + translation:ru: - airflow-core/src/airflow/ui/public/i18n/locales/ru/* From 302c233487707bef7b72a3edc2c9b576f3390575 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Fri, 6 Mar 2026 08:14:07 -0300 Subject: [PATCH 04/19] i18n: complete pt-BR translations and use _one/_other plural only MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Translate all TODO placeholders in pt-BR locale to Brazilian Portuguese - Add @jscheffl as CODEOWNER for pt-BR - Set pt-BR plural suffixes to MOST_COMMON_PLURAL_SUFFIXES (_one, _other) in breeze translation checker Signed-off-by: André Ahlert --- .../ui/public/i18n/locales/pt-BR/admin.json | 24 +++++++++++++ .../ui/public/i18n/locales/pt-BR/assets.json | 11 +++++- .../ui/public/i18n/locales/pt-BR/browse.json | 26 +++++++++++++- .../ui/public/i18n/locales/pt-BR/common.json | 32 +++++++++++++++-- .../public/i18n/locales/pt-BR/components.json | 27 ++++++++++++++ .../ui/public/i18n/locales/pt-BR/dag.json | 35 +++++++++++++++++++ .../ui/public/i18n/locales/pt-BR/dags.json | 5 +++ .../public/i18n/locales/pt-BR/dashboard.json | 3 +- .../ui/public/i18n/locales/pt-BR/hitl.json | 1 + .../airflow_breeze/commands/ui_commands.py | 2 +- 10 files changed, 160 insertions(+), 6 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index de932249a8f0f..39f174754aa5e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -3,6 +3,7 @@ "description": "Descrição", "key": "Chave", "name": "Nome", + "team": "Equipe", "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": "Falha no teste da conexão" + }, + "testSuccess": { + "title": "Conexão testada com sucesso" + }, "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": "Nome do host", + "id": "ID", + "jobType": "Tipo de job", + "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-BR/assets.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json index ca1a65fc735de..cf039869f8ed7 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json @@ -1,5 +1,11 @@ { + "additional_data": "Dados adicionais", + "asset_many": "Asset", + "asset_one": "Asset", + "asset_other": "Asset", + "asset_zero": "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 tarefa" } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json index 867d8494a6c32..03ca7f0e74a1e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/browse.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/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 de 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-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json index f659d3809552f..131c2d4500128 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -28,6 +28,7 @@ "backfill_zero": "Nenhum backfill", "browse": { "auditLog": "Log de Auditoria", + "jobs": "Jobs", "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 a 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 término", "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": "Salvar" }, "nav": { "admin": "Administração", @@ -158,6 +173,17 @@ "placeholder": "Adicionar uma nota...", "taskInstance": "Nota da Instância de Tarefa" }, + "partitionedDagRun_many": "Execuções particionadas do DAG", + "partitionedDagRun_one": "Execução particionada do DAG", + "partitionedDagRun_other": "Execuções particionadas do DAG", + "partitionedDagRun_zero": "Nenhuma execução particionada do DAG", + "partitionedDagRunDetail": { + "receivedAssetEvents": "Eventos de asset recebidos" + }, + "pendingDagRun_many": "{{count}} execuções do DAG pendentes", + "pendingDagRun_one": "{{count}} execução do DAG pendente", + "pendingDagRun_other": "{{count}} execuções do DAG pendentes", + "pendingDagRun_zero": "Nenhuma execução do DAG pendente", "pools": { "deferred": "Deferido", "open": "Aberto", @@ -193,6 +219,7 @@ }, "selectLanguage": "Selecionar Idioma", "showDetailsPanel": "Mostrar Painel de Detalhes", + "signedInAs": "Conectado como", "source": { "hide": "Ocultar", "hotkey": "Pressione {{hotkey}} para ocultar/mostrar", @@ -209,6 +236,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-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json index 47d8b52a290dd..e0b6eef09bf3b 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/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": "Dry run falhou: o usuário 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 término" + } + }, "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 da tarefa", + "team": { + "selector": { + "helperText": "Opcional. Restrinja o uso a uma equipe específica.", + "label": "Equipe", + "placeHolder": "Selecionar uma equipe" + } + }, "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 cronograma", + "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-BR/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json index 200da31a5884a..d2175eec37234 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/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 em uma tarefa para selecioná-la como raiz do filtro", + "depth": "Profundidade", + "direction": "Direção", + "label": "Filtro", + "mode": "Modo", + "modes": { + "static": "Estático", + "traverse": "Percorrer" + }, + "modeTooltip": "O modo estático mantém a visualização atual ao navegar entre tarefas; o modo percorrer atualiza o filtro ativo para a tarefa clicada para facilitar a navegação no DAG.", + "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-BR/dags.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json index 138a7b9293139..b9bddc7b32918 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json @@ -34,6 +34,10 @@ "error": "Falha ao limpar {{type}}", "title": "Limpar {{type}}" }, + "confirmationDialog": { + "description": "A tarefa está atualmente em estado {{state}}, iniciada pelo usuário {{user}} em {{time}}. O usuário não pode limpar esta tarefa até que a execução termine ou até que alguém desmarque a opção \"Impedir nova execução se a tarefa estiver em execução\" no diálogo de limpar tarefa.", + "title": "Não é possível limpar a instância da 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-BR/dashboard.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json index d5245e4b6236e..d2140fcac25de 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/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-BR/hitl.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json index f8730b65f4638..8a3a76193460a 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json @@ -1,6 +1,7 @@ { "filters": { "body": "Corpo", + "createdAt": "Criado em", "createdAtFrom": "Criado De", "createdAtTo": "Criado Até", "response": { diff --git a/dev/breeze/src/airflow_breeze/commands/ui_commands.py b/dev/breeze/src/airflow_breeze/commands/ui_commands.py index 87b26d006ffa5..46e235c373db4 100644 --- a/dev/breeze/src/airflow_breeze/commands/ui_commands.py +++ b/dev/breeze/src/airflow_breeze/commands/ui_commands.py @@ -89,7 +89,7 @@ def char_key(c: str) -> tuple: "nl": MOST_COMMON_PLURAL_SUFFIXES, "pl": ["_one", "_few", "_many", "_other"], "pt": ["_zero", "_one", "_many", "_other"], - "pt-BR": ["_zero", "_one", "_many", "_other"], + "pt-BR": MOST_COMMON_PLURAL_SUFFIXES, "ru": ["_one", "_few", "_other"], "th": ["_other"], "tr": MOST_COMMON_PLURAL_SUFFIXES, From 61dbbdc31e9648bb783fa40d236bc9d014bd8b0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Mon, 9 Mar 2026 15:02:44 -0300 Subject: [PATCH 05/19] i18n: fix pt-BR dag.json key ordering for lint compliance MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Ahlert --- .../ui/public/i18n/locales/pt-BR/admin.json | 21 ++------- .../ui/public/i18n/locales/pt-BR/assets.json | 2 - .../ui/public/i18n/locales/pt-BR/common.json | 46 ++++++++----------- .../public/i18n/locales/pt-BR/components.json | 22 +-------- .../ui/public/i18n/locales/pt-BR/dag.json | 19 ++------ .../public/i18n/locales/pt-BR/dashboard.json | 4 -- .../ui/public/i18n/locales/pt-BR/hitl.json | 4 -- 7 files changed, 29 insertions(+), 89 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index 39f174754aa5e..88057e77d1239 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -20,19 +20,13 @@ "host": "Host", "port": "Porta" }, - "connection_many": "Conexões", "connection_one": "Conexão", "connection_other": "Conexões", - "connection_zero": "Nenhuma conexão", "delete": { - "deleteConnection_many": "Excluir {{count}} conexões", "deleteConnection_one": "Excluir 1 conexão", "deleteConnection_other": "Excluir {{count}} conexões", - "deleteConnection_zero": "Nenhuma conexão para excluir", - "firstConfirmMessage_many": "Você está prestes a excluir as seguintes conexões:", "firstConfirmMessage_one": "Você está prestes a excluir a seguinte conexão:", "firstConfirmMessage_other": "Você está prestes a excluir as seguintes conexões:", - "firstConfirmMessage_zero": "Nenhuma conexão para excluir", "title": "Excluir Conexão" }, "edit": "Editar Conexão", @@ -108,10 +102,8 @@ "columns": { "source": "Origem" }, - "importError_many": "Erros de Importação de Plugins", "importError_one": "Erro de Importação de Plugin", "importError_other": "Erros de Importação de Plugins", - "importError_zero": "Nenhum erro de importação de plugin", "searchPlaceholder": "Pesquisar por arquivo" }, "pools": { @@ -128,13 +120,12 @@ "includeDeferred": "Incluir Deferidos", "nameMaxLength": "Nome pode conter um máximo de 256 caracteres", "nameRequired": "Nome é obrigatório", - "slots": "Slots" + "slots": "Slots", + "slotsHelperText": "Use -1 para slots ilimitados." }, "noPoolsFound": "Nenhum pool encontrado", - "pool_many": "Pools", "pool_one": "Pool", "pool_other": "Pools", - "pool_zero": "Nenhum pool", "searchPlaceholder": "Pesquisar Pools", "sort": { "asc": "Nome (A-Z)", @@ -154,14 +145,10 @@ "isEncrypted": "Está Encriptado" }, "delete": { - "deleteVariable_many": "Excluir {{count}} Variáveis", "deleteVariable_one": "Excluir 1 Variável", "deleteVariable_other": "Excluir {{count}} Variáveis", - "deleteVariable_zero": "Nenhuma variável para excluir", - "firstConfirmMessage_many": "Você está prestes a excluir as seguintes variáveis:", "firstConfirmMessage_one": "Você está prestes a excluir a seguinte variável:", "firstConfirmMessage_other": "Você está prestes a excluir as seguintes variáveis:", - "firstConfirmMessage_zero": "Nenhuma variável para excluir", "title": "Excluir Variável", "tooltip": "Excluir variáveis selecionadas" }, @@ -196,9 +183,7 @@ }, "noRowsMessage": "Nenhuma variável encontrada", "searchPlaceholder": "Pesquisar Chaves", - "variable_many": "Variáveis", "variable_one": "Variável", - "variable_other": "Variáveis", - "variable_zero": "Nenhuma variável" + "variable_other": "Variáveis" } } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json index cf039869f8ed7..b21dc3fc11b8a 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json @@ -2,8 +2,6 @@ "additional_data": "Dados adicionais", "asset_many": "Asset", "asset_one": "Asset", - "asset_other": "Asset", - "asset_zero": "Asset", "consumingDags": "Consumindo Dags", "consumingTasks": "Tarefas consumidoras", "createEvent": { diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json index 131c2d4500128..235368cccb6b7 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -14,18 +14,12 @@ "lightMode": "Modo Claro", "systemMode": "Seguir Configuração do Sistema" }, - "asset_many": "Assets", "asset_one": "Asset", "asset_other": "Assets", - "asset_zero": "Nenhum asset", - "assetEvent_many": "Eventos de Asset", "assetEvent_one": "Evento de Asset", "assetEvent_other": "Eventos de Asset", - "assetEvent_zero": "Nenhum evento de asset", - "backfill_many": "Backfills", "backfill_one": "Backfill", "backfill_other": "Backfills", - "backfill_zero": "Nenhum backfill", "browse": { "auditLog": "Log de Auditoria", "jobs": "Jobs", @@ -34,14 +28,10 @@ }, "collapseAllExtra": "Recolher todos os extra json", "collapseDetailsPanel": "Recolher Painel de Detalhes", - "createdAssetEvent_many": "Eventos de Asset Criados", "createdAssetEvent_one": "Evento de Asset Criado", "createdAssetEvent_other": "Eventos de Asset Criados", - "createdAssetEvent_zero": "Nenhum evento de asset criado", - "dag_many": "Dags", "dag_one": "Dag", "dag_other": "Dags", - "dag_zero": "Nenhum Dag", "dagDetails": { "catchup": "Catchup", "dagRunTimeout": "Tempo Limite da Execução do Dag", @@ -80,10 +70,8 @@ "triggeredBy": "Acionado por", "triggeringUser": "Nome do Usuário que Disparou" }, - "dagRun_many": "Execuções do Dag", "dagRun_one": "Execução do Dag", "dagRun_other": "Execuções do Dag", - "dagRun_zero": "Nenhuma execução do Dag", "dagRunId": "ID da Execução do Dag", "dagWarnings": "Avisos/Erros do Dag", "defaultToGraphView": "Padrão para visualização gráfica", @@ -173,24 +161,18 @@ "placeholder": "Adicionar uma nota...", "taskInstance": "Nota da Instância de Tarefa" }, - "partitionedDagRun_many": "Execuções particionadas do DAG", "partitionedDagRun_one": "Execução particionada do DAG", "partitionedDagRun_other": "Execuções particionadas do DAG", - "partitionedDagRun_zero": "Nenhuma execução particionada do DAG", "partitionedDagRunDetail": { "receivedAssetEvents": "Eventos de asset recebidos" }, - "pendingDagRun_many": "{{count}} execuções do DAG pendentes", "pendingDagRun_one": "{{count}} execução do DAG pendente", "pendingDagRun_other": "{{count}} execuções do DAG pendentes", - "pendingDagRun_zero": "Nenhuma execução do DAG pendente", "pools": { "deferred": "Deferido", "open": "Aberto", - "pools_many": "pools", "pools_one": "pool", "pools_other": "pools", - "pools_zero": "nenhum pool", "queued": "Enfileirado", "running": "Executando", "scheduled": "Agendado" @@ -201,7 +183,8 @@ "asset_triggered": "Asset Acionado", "backfill": "Backfill", "manual": "Manual", - "scheduled": "Agendado" + "scheduled": "Agendado", + "asset_materialization": "Materialização de Asset" }, "scroll": { "direction": { @@ -225,10 +208,8 @@ "hotkey": "Pressione {{hotkey}} para ocultar/mostrar", "show": "Mostrar" }, - "sourceAssetEvent_many": "Eventos de Asset de Origem", "sourceAssetEvent_one": "Evento de Asset de Origem", "sourceAssetEvent_other": "Eventos de Asset de Origem", - "sourceAssetEvent_zero": "Nenhum evento de asset de origem", "startDate": "Data Inicial", "state": "Estado", "states": { @@ -254,10 +235,8 @@ "createdAt": "Criado em", "filterByTag": "Filtrar Dags por tag", "filterColumns": "Filtrar colunas da tabela", - "filterReset_many": "Resetar filtros", "filterReset_one": "Resetar filtro", "filterReset_other": "Resetar filtros", - "filterReset_zero": "Nenhum filtro para resetar", "from": "De", "maxActiveRuns": "Máximo de Execuções Ativas", "noTagsFound": "Nenhuma tag encontrada", @@ -274,10 +253,8 @@ "operator": "Operador", "triggerRule": "Regra de Trigger" }, - "task_many": "Tarefas", "task_one": "Tarefa", "task_other": "Tarefas", - "task_zero": "Nenhuma tarefa", "taskGroup": "Grupo de Tarefas", "taskId": "ID da Tarefa", "taskInstance": { @@ -303,10 +280,8 @@ }, "unixname": "Nome do Unix" }, - "taskInstance_many": "Instâncias de Tarefa", "taskInstance_one": "Instância de Tarefa", "taskInstance_other": "Instâncias de Tarefa", - "taskInstance_zero": "Nenhuma instância de tarefa", "timeRange": { "last12Hours": "Últimas 12 Horas", "last24Hours": "Últimas 24 Horas", @@ -360,6 +335,10 @@ "description": "{{resourceName}} foi atualizado com sucesso.", "title": "Atualização de {{resourceName}} Submetida" } + }, + "forbidden": { + "title": "Acesso Negado", + "description": "Você não tem permissão para realizar esta ação." } }, "total": "Total {{state}}", @@ -371,5 +350,18 @@ "tooltip": "Pressione {{hotkey}} para expandir ou recolher a secção", "unwrap": "Expandir", "wrap": "Recolher" + }, + "generateToken": "Gerar Token", + "tokenGeneration": { + "title": "Gerar Token", + "apiToken": "Token de API", + "cliToken": "Token CLI", + "generate": "Gerar", + "selectType": "Selecione o tipo de token a ser gerado.", + "tokenGenerated": "Seu token foi gerado.", + "tokenShownOnce": "Este token será exibido apenas uma vez. Copie-o agora.", + "tokenExpiresIn": "Este token expira em {{duration}}.", + "errorTitle": "Falha na Geração do Token", + "errorDescription": "Ocorreu um erro ao gerar o token. Por favor, tente novamente." } } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json index e0b6eef09bf3b..3f85daa3202fa 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json @@ -1,9 +1,7 @@ { "backfill": { - "affected_many": "{{count}} execuções serão acionadas.", "affected_one": "1 execução será acionada.", "affected_other": "{{count}} execuções serão acionadas.", - "affected_zero": "Nenhuma execução será acionada.", "affectedNone": "Nenhuma execução correspondente aos critérios selecionados.", "allRuns": "Todas as Execuções", "backwards": "Executar para trás", @@ -47,15 +45,11 @@ "invalidJson": "Formato JSON inválido: {{errorMessage}}" }, "dagWarnings": { - "error_many": "{{count}} Erros", "error_one": "1 Erro", "error_other": "{{count}} Erros", - "error_zero": "Nenhum erro", "errorAndWarning": "1 Erro e {{warningText}}", - "warning_many": "{{count}} Avisos", "warning_one": "1 Aviso", - "warning_other": "{{count}} Avisos", - "warning_zero": "Nenhum aviso" + "warning_other": "{{count}} Avisos" }, "dateRangeFilter": { "validation": { @@ -66,23 +60,17 @@ }, "durationChart": { "duration": "Duração (segundos)", - "lastDagRun_many": "Últimas {{count}} Execuções do Dag", "lastDagRun_one": "Última Execução do Dag", "lastDagRun_other": "Últimas {{count}} Execuções do Dag", - "lastDagRun_zero": "Nenhuma execução do Dag", - "lastTaskInstance_many": "Últimas {{count}} Instâncias de Tarefa", "lastTaskInstance_one": "Última Instância de Tarefa", "lastTaskInstance_other": "Últimas {{count}} Instâncias de Tarefa", - "lastTaskInstance_zero": "Nenhuma instância de tarefa", "queuedDuration": "Duração da Fila", "runAfter": "Executar Depois", "runDuration": "Duração da Execução" }, "fileUpload": { - "files_many": "{{count}} arquivos", "files_one": "1 arquivo", - "files_other": "{{count}} arquivos", - "files_zero": "Nenhum arquivo" + "files_other": "{{count}} arquivos" }, "flexibleForm": { "placeholder": "Selecionar Valor", @@ -103,25 +91,19 @@ "downloadImageError": "Falha ao baixar a imagem do gráfico.", "downloadImageErrorTitle": "Download Falhou", "otherDagRuns": "+Outras Execuções do Dag", - "taskCount_many": "{{count}} Tarefas", "taskCount_one": "{{count}} Tarefa", "taskCount_other": "{{count}} Tarefas", - "taskCount_zero": "Nenhuma tarefa", "taskGroup": "Grupo de Tarefas" }, "limitedList": "+{{count}} mais", "limitedList.allItems": "Todos os {{count}} itens:", - "limitedList.allTags_many": "Todas as etiquetas ({{count}})", "limitedList.allTags_one": "Todas as etiquetas (1)", "limitedList.allTags_other": "Todas as etiquetas ({{count}})", - "limitedList.allTags_zero": "Todas as etiquetas (0)", "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_many": "Mostrando {{count}} itens", "limitedList.showingItems_one": "Mostrando 1 item", "limitedList.showingItems_other": "Mostrando {{count}} itens", - "limitedList.showingItems_zero": "Mostrando 0 itens", "logs": { "file": "Arquivo", "location": "linha {{line}} em {{name}}" diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json index d2175eec37234..860b667b79606 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json @@ -45,7 +45,8 @@ "buttons": { "resetToLatest": "Redefinir para a Última", "toggleGroup": "Alternar Grupo" - } + }, + "runTypeLegend": "Legenda dos Tipos de Execução" }, "header": { "buttons": { @@ -81,24 +82,16 @@ }, "overview": { "buttons": { - "failedRun_many": "Execuções Falhadas", "failedRun_one": "Execução Falhada", "failedRun_other": "Execuções Falhadas", - "failedRun_zero": "Nenhuma execução falhada", - "failedTask_many": "Tarefas Falhadas", "failedTask_one": "Tarefa Falhada", "failedTask_other": "Tarefas Falhadas", - "failedTask_zero": "Nenhuma tarefa falhada", - "failedTaskInstance_many": "Instâncias de Tarefa Falhadas", "failedTaskInstance_one": "Instância de Tarefa Falhada", - "failedTaskInstance_other": "Instâncias de Tarefa Falhadas", - "failedTaskInstance_zero": "Nenhuma instância de tarefa falhada" + "failedTaskInstance_other": "Instâncias de Tarefa Falhadas" }, "charts": { - "assetEvent_many": "Eventos de Asset Criados", "assetEvent_one": "Evento de Asset Criado", - "assetEvent_other": "Eventos de Asset Criados", - "assetEvent_zero": "Nenhum evento de asset criado" + "assetEvent_other": "Eventos de Asset Criados" }, "failedLogs": { "hideLogs": "Ocultar Logs", @@ -146,11 +139,11 @@ "direction": "Direção", "label": "Filtro", "mode": "Modo", + "modeTooltip": "O modo estático mantém a visualização atual ao navegar entre tarefas; o modo percorrer atualiza o filtro ativo para a tarefa clicada para facilitar a navegação no DAG.", "modes": { "static": "Estático", "traverse": "Percorrer" }, - "modeTooltip": "O modo estático mantém a visualização atual ao navegar entre tarefas; o modo percorrer atualiza o filtro ativo para a tarefa clicada para facilitar a navegação no DAG.", "options": { "both": "Upstream e downstream", "downstream": "Downstream", @@ -180,10 +173,8 @@ "code": "Código", "details": "Detalhes", "logs": "Logs", - "mappedTaskInstances_many": "Instâncias de Tarefa [{{count}}]", "mappedTaskInstances_one": "Instância de Tarefa [{{count}}]", "mappedTaskInstances_other": "Instâncias de Tarefa [{{count}}]", - "mappedTaskInstances_zero": "Nenhuma instância de tarefa mapeada", "overview": "Visão Geral", "renderedTemplates": "Modelos Renderizados", "requiredActions": "Ações Necessárias", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json index d2140fcac25de..a2fd8b1fa9308 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dashboard.json @@ -1,9 +1,7 @@ { "favorite": { - "favoriteDags_many": "Primeiros {{count}} Dags favoritos", "favoriteDags_one": "Primeiro {{count}} Dag favorito", "favoriteDags_other": "Primeiros {{count}} Dags favoritos", - "favoriteDags_zero": "Nenhum Dag favorito", "noDagRuns": "Ainda não há DagRun para este dag.", "noFavoriteDags": "Nenhum favorito ainda. Clique no ícone de estrela ao lado de um Dag na lista para adicioná-lo aos seus favoritos." }, @@ -21,10 +19,8 @@ }, "history": "Histórico", "importErrors": { - "dagImportError_many": "Erros de Importação de Dag", "dagImportError_one": "Erro de Importação de Dag", "dagImportError_other": "Erros de Importação de Dag", - "dagImportError_zero": "Nenhum erro de importação de Dag", "searchByFile": "Pesquisar por arquivo", "timestamp": "Timestamp" }, diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json index 8a3a76193460a..dd16a512ae9ba 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json @@ -10,14 +10,10 @@ "received": "Revisadas" } }, - "requiredAction_many": "Ações Necessárias", "requiredAction_one": "Ação Necessária", "requiredAction_other": "Ações Necessárias", - "requiredAction_zero": "Nenhuma ação necessária", - "requiredActionCount_many": "Ações Necessárias ({{count}})", "requiredActionCount_one": "Ação Necessária ({{count}})", "requiredActionCount_other": "Ações Necessárias ({{count}})", - "requiredActionCount_zero": "Nenhuma ação necessária", "requiredActionState": "Estado da Ação Necessária", "response": { "created": "Resposta criada em ", From 04b39c0ab5801bfa9112229d908df7ff59b9eaed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Fri, 10 Apr 2026 17:30:35 -0300 Subject: [PATCH 06/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: André Ahlert --- airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json index dd16a512ae9ba..f7e7da5629365 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/hitl.json @@ -2,8 +2,6 @@ "filters": { "body": "Corpo", "createdAt": "Criado em", - "createdAtFrom": "Criado De", - "createdAtTo": "Criado Até", "response": { "all": "Todas", "pending": "Pendente", From 1697fc150afafe7419bdd6809677192a539cd711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Fri, 10 Apr 2026 17:30:54 -0300 Subject: [PATCH 07/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: André Ahlert --- .../src/airflow/ui/public/i18n/locales/pt-BR/assets.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json index b21dc3fc11b8a..91d77d7d02f7b 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/assets.json @@ -1,7 +1,7 @@ { "additional_data": "Dados adicionais", - "asset_many": "Asset", - "asset_one": "Asset", + "asset_many": "Ativos", + "asset_one": "Ativo", "consumingDags": "Consumindo Dags", "consumingTasks": "Tarefas consumidoras", "createEvent": { From 9ba409495254c96402365243a323c98d18d6f29f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 23 Apr 2026 13:25:35 -0300 Subject: [PATCH 08/19] fix(i18n): remove orphaned pools key from pt-BR common.json MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pools key was removed from the English source (en/common.json) in upstream but remained in pt-BR, causing divergence from the canonical key set. Remove it to keep the locale in sync. Signed-off-by: André Ahlert --- .../src/airflow/ui/public/i18n/locales/pt-BR/common.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json index 235368cccb6b7..f22cb0dac472e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -168,15 +168,6 @@ }, "pendingDagRun_one": "{{count}} execução do DAG pendente", "pendingDagRun_other": "{{count}} execuções do DAG pendentes", - "pools": { - "deferred": "Deferido", - "open": "Aberto", - "pools_one": "pool", - "pools_other": "pools", - "queued": "Enfileirado", - "running": "Executando", - "scheduled": "Agendado" - }, "reset": "Resetar", "runId": "ID da Execução", "runTypes": { From 75cdf4a073f051f88db2c922d6f54a3a2b0d3338 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 23 Apr 2026 13:27:33 -0300 Subject: [PATCH 09/19] fix(i18n): sync pt-BR components.json and dag.json with upstream en keys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove orphaned keys no longer present in English source: - components.json: backfill.tooltip, dagWarnings.error_other, fileUpload.files_one - dag.json: (no orphaned keys found) Add missing keys from English source: - components.json: backfill.overrideExistingParams, backfill.scheduleNotBackfillable, graph.zoomToTask - dag.json: grid.buttons.newerRuns, grid.buttons.olderRuns, header.status.deactivated, logs.search.* Signed-off-by: André Ahlert --- .../ui/public/i18n/locales/pt-BR/components.json | 10 +++++----- .../airflow/ui/public/i18n/locales/pt-BR/dag.json | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json index 3f85daa3202fa..cbb10230c2c04 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json @@ -22,12 +22,13 @@ "title": "Backfill gerado" } }, - "tooltip": "Backfill requer um agendamento", "unpause": "Despausar {{dag_display_name}} ao acionar", "validation": { "datesRequired": "Ambas as datas de início e fim do intervalo devem ser fornecidas.", "startBeforeEnd": "A Data Inicial do Intervalo deve ser menor ou igual à Data Final do Intervalo." - } + }, + "overrideExistingParams": "Sobrescrever parâmetros em execuções existentes", + "scheduleNotBackfillable": "O agendamento deste Dag não suporta backfills" }, "banner": { "backfillInProgress": "Backfill em progresso", @@ -46,7 +47,6 @@ }, "dagWarnings": { "error_one": "1 Erro", - "error_other": "{{count}} Erros", "errorAndWarning": "1 Erro e {{warningText}}", "warning_one": "1 Aviso", "warning_other": "{{count}} Avisos" @@ -69,7 +69,6 @@ "runDuration": "Duração da Execução" }, "fileUpload": { - "files_one": "1 arquivo", "files_other": "{{count}} arquivos" }, "flexibleForm": { @@ -93,7 +92,8 @@ "otherDagRuns": "+Outras Execuções do Dag", "taskCount_one": "{{count}} Tarefa", "taskCount_other": "{{count}} Tarefas", - "taskGroup": "Grupo de Tarefas" + "taskGroup": "Grupo de Tarefas", + "zoomToTask": "Ampliar tarefa selecionada" }, "limitedList": "+{{count}} mais", "limitedList.allItems": "Todos os {{count}} itens:", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json index 860b667b79606..2ce8debc4d7a7 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json @@ -44,7 +44,9 @@ "grid": { "buttons": { "resetToLatest": "Redefinir para a Última", - "toggleGroup": "Alternar Grupo" + "toggleGroup": "Alternar Grupo", + "newerRuns": "Execuções mais recentes", + "olderRuns": "Execuções mais antigas" }, "runTypeLegend": "Legenda dos Tipos de Execução" }, @@ -52,6 +54,9 @@ "buttons": { "advanced": "Avançado", "dagDocs": "Documentação do Dag" + }, + "status": { + "deactivated": "Desativado" } }, "logs": { @@ -68,7 +73,12 @@ "noTryNumber": "Nenhum número de tentativa", "settings": "Configurações", "viewInExternal": "Ver logs em {{name}} (tentativa {{attempt}})", - "warning": "AVISO" + "warning": "AVISO", + "search": { + "matchCount": "{{current}} de {{total}}", + "noMatches": "Nenhuma correspondência", + "placeholder": "Pesquisar logs..." + } }, "navigation": { "navigation": "Navegação: Shift+{{arrow}}", From ad0643535604ed58a1103fc56dac2e326c359582 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 23 Apr 2026 13:34:36 -0300 Subject: [PATCH 10/19] fix(i18n): add missing plural forms to pt-BR locale files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The check-translation-completeness script expects _one/_other plural forms for any key containing {{count}}. Add missing plural keys: - common.json: toaster.bulkClear/bulkDelete/bulkUpdate/import descriptions - components.json: fileUpload.files, limitedList, limitedList.allItems, limitedList.clickToOpenFull - dags.json: assetSchedule, runAndTaskActions.affectedTasks.title Signed-off-by: André Ahlert --- .../ui/public/i18n/locales/pt-BR/common.json | 26 +++++++++++++++++-- .../public/i18n/locales/pt-BR/components.json | 11 ++++++-- .../ui/public/i18n/locales/pt-BR/dags.json | 8 ++++-- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json index f22cb0dac472e..ce8a417f51293 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -292,11 +292,31 @@ "utc": "UTC (Tempo Universal Coordenado)" }, "toaster": { + "bulkClear": { + "error": "Limpeza em Massa de {{resourceName}} Falhou", + "success": { + "description": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}", + "title": "Limpeza em Massa de {{resourceName}} Submetida", + "description_one": "{{count}} {{resourceName}} foi limpo com sucesso. Chave: {{keys}}", + "description_other": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}" + } + }, "bulkDelete": { "error": "Exclusão em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}", - "title": "Exclusão em Massa de {{resourceName}} Submetida" + "title": "Exclusão em Massa de {{resourceName}} Submetida", + "description_one": "{{count}} {{resourceName}} foi excluído com sucesso. Chave: {{keys}}", + "description_other": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}" + } + }, + "bulkUpdate": { + "error": "Atualização em Massa de {{resourceName}} Falhou", + "success": { + "description": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}", + "title": "Atualização em Massa de {{resourceName}} Submetida", + "description_one": "{{count}} {{resourceName}} foi atualizado com sucesso. Chave: {{keys}}", + "description_other": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}" } }, "create": { @@ -317,7 +337,9 @@ "error": "Importação de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram importados com sucesso.", - "title": "Importação de {{resourceName}} Submetida" + "title": "Importação de {{resourceName}} Submetida", + "description_one": "{{count}} {{resourceName}} foi importado com sucesso.", + "description_other": "{{count}} {{resourceName}} foram importados com sucesso." } }, "update": { diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json index cbb10230c2c04..bc74b8ffc9c46 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json @@ -69,7 +69,8 @@ "runDuration": "Duração da Execução" }, "fileUpload": { - "files_other": "{{count}} arquivos" + "files_other": "{{count}} arquivos", + "files_one": "1 arquivo" }, "flexibleForm": { "placeholder": "Selecionar Valor", @@ -165,5 +166,11 @@ "allVersions": "Todas as versões", "dagVersion": "Versão do Dag", "versionCode": "v{{versionCode}}" - } + }, + "limitedList_one": "+{{count}} mais", + "limitedList_other": "+{{count}} mais", + "limitedList.allItems_one": "Todos os {{count}} itens:", + "limitedList.allItems_other": "Todos os {{count}} itens:", + "limitedList.clickToOpenFull_one": "Clique em \"+{{count}} mais\" para ver a lista completa", + "limitedList.clickToOpenFull_other": "Clique em \"+{{count}} mais\" para ver a lista completa" } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json index b9bddc7b32918..9823f7ee5fe6e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json @@ -26,7 +26,9 @@ "runAndTaskActions": { "affectedTasks": { "noItemsFound": "Nenhuma tarefa encontrada.", - "title": "Tarefas Afetadas: {{count}}" + "title": "Tarefas Afetadas: {{count}}", + "title_one": "Tarefa Afetada: {{count}}", + "title_other": "Tarefas Afetadas: {{count}}" }, "clear": { "button": "Limpar {{type}}", @@ -97,5 +99,7 @@ }, "placeholder": "Ordenar por" }, - "unfavoriteDag": "Remover Dag dos Favoritos" + "unfavoriteDag": "Remover Dag dos Favoritos", + "assetSchedule_one": "{{count}} de {{total}} ativos atualizados", + "assetSchedule_other": "{{count}} de {{total}} ativos atualizados" } From 25f44e3a37a946b28013e08e002ed14d3c36d1f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Tue, 26 May 2026 14:14:07 -0300 Subject: [PATCH 11/19] chore(i18n): apply eslint/prettier formatting to pt-BR locale files MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Ahlert --- .../ui/public/i18n/locales/pt-BR/common.json | 54 +++++++++---------- .../public/i18n/locales/pt-BR/components.json | 24 ++++----- .../ui/public/i18n/locales/pt-BR/dag.json | 14 ++--- .../ui/public/i18n/locales/pt-BR/dags.json | 6 +-- 4 files changed, 49 insertions(+), 49 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json index ce8a417f51293..626aeaba4dabd 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -128,6 +128,7 @@ "selectDateRange": "Selecionar intervalo de datas", "startTime": "Hora de início" }, + "generateToken": "Gerar Token", "logicalDate": "Data Lógica", "logout": "Sair", "logoutConfirmation": "Você está prestes a sair do aplicativo.", @@ -171,11 +172,11 @@ "reset": "Resetar", "runId": "ID da Execução", "runTypes": { + "asset_materialization": "Materialização de Asset", "asset_triggered": "Asset Acionado", "backfill": "Backfill", "manual": "Manual", - "scheduled": "Agendado", - "asset_materialization": "Materialização de Asset" + "scheduled": "Agendado" }, "scroll": { "direction": { @@ -296,27 +297,27 @@ "error": "Limpeza em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}", - "title": "Limpeza em Massa de {{resourceName}} Submetida", "description_one": "{{count}} {{resourceName}} foi limpo com sucesso. Chave: {{keys}}", - "description_other": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}" + "description_other": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}", + "title": "Limpeza em Massa de {{resourceName}} Submetida" } }, "bulkDelete": { "error": "Exclusão em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}", - "title": "Exclusão em Massa de {{resourceName}} Submetida", "description_one": "{{count}} {{resourceName}} foi excluído com sucesso. Chave: {{keys}}", - "description_other": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}" + "description_other": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}", + "title": "Exclusão em Massa de {{resourceName}} Submetida" } }, "bulkUpdate": { "error": "Atualização em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}", - "title": "Atualização em Massa de {{resourceName}} Submetida", "description_one": "{{count}} {{resourceName}} foi atualizado com sucesso. Chave: {{keys}}", - "description_other": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}" + "description_other": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}", + "title": "Atualização em Massa de {{resourceName}} Submetida" } }, "create": { @@ -333,13 +334,17 @@ "title": "Exclusão de {{resourceName}} Submetida" } }, + "forbidden": { + "description": "Você não tem permissão para realizar esta ação.", + "title": "Acesso Negado" + }, "import": { "error": "Importação de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram importados com sucesso.", - "title": "Importação de {{resourceName}} Submetida", "description_one": "{{count}} {{resourceName}} foi importado com sucesso.", - "description_other": "{{count}} {{resourceName}} foram importados com sucesso." + "description_other": "{{count}} {{resourceName}} foram importados com sucesso.", + "title": "Importação de {{resourceName}} Submetida" } }, "update": { @@ -348,12 +353,20 @@ "description": "{{resourceName}} foi atualizado com sucesso.", "title": "Atualização de {{resourceName}} Submetida" } - }, - "forbidden": { - "title": "Acesso Negado", - "description": "Você não tem permissão para realizar esta ação." } }, + "tokenGeneration": { + "apiToken": "Token de API", + "cliToken": "Token CLI", + "errorDescription": "Ocorreu um erro ao gerar o token. Por favor, tente novamente.", + "errorTitle": "Falha na Geração do Token", + "generate": "Gerar", + "selectType": "Selecione o tipo de token a ser gerado.", + "title": "Gerar Token", + "tokenExpiresIn": "Este token expira em {{duration}}.", + "tokenGenerated": "Seu token foi gerado.", + "tokenShownOnce": "Este token será exibido apenas uma vez. Copie-o agora." + }, "total": "Total {{state}}", "triggered": "Acionado", "tryNumber": "Número de Tentativas", @@ -363,18 +376,5 @@ "tooltip": "Pressione {{hotkey}} para expandir ou recolher a secção", "unwrap": "Expandir", "wrap": "Recolher" - }, - "generateToken": "Gerar Token", - "tokenGeneration": { - "title": "Gerar Token", - "apiToken": "Token de API", - "cliToken": "Token CLI", - "generate": "Gerar", - "selectType": "Selecione o tipo de token a ser gerado.", - "tokenGenerated": "Seu token foi gerado.", - "tokenShownOnce": "Este token será exibido apenas uma vez. Copie-o agora.", - "tokenExpiresIn": "Este token expira em {{duration}}.", - "errorTitle": "Falha na Geração do Token", - "errorDescription": "Ocorreu um erro ao gerar o token. Por favor, tente novamente." } } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json index bc74b8ffc9c46..73049988cf37e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json @@ -10,9 +10,11 @@ "maxRuns": "Máximo de Execuções Ativas", "missingAndErroredRuns": "Execuções Faltando e com Erro", "missingRuns": "Execuções Faltando", + "overrideExistingParams": "Sobrescrever parâmetros em execuções existentes", "permissionDenied": "Dry run falhou: o usuário não tem permissão para criar backfills.", "reprocessBehavior": "Comportamento de Reprocessamento", "run": "Executar Backfill", + "scheduleNotBackfillable": "O agendamento deste Dag não suporta backfills", "selectDescription": "Executar este Dag para um intervalo de datas", "selectLabel": "Backfill", "title": "Executar Backfill", @@ -26,9 +28,7 @@ "validation": { "datesRequired": "Ambas as datas de início e fim do intervalo devem ser fornecidas.", "startBeforeEnd": "A Data Inicial do Intervalo deve ser menor ou igual à Data Final do Intervalo." - }, - "overrideExistingParams": "Sobrescrever parâmetros em execuções existentes", - "scheduleNotBackfillable": "O agendamento deste Dag não suporta backfills" + } }, "banner": { "backfillInProgress": "Backfill em progresso", @@ -69,8 +69,8 @@ "runDuration": "Duração da Execução" }, "fileUpload": { - "files_other": "{{count}} arquivos", - "files_one": "1 arquivo" + "files_one": "1 arquivo", + "files_other": "{{count}} arquivos" }, "flexibleForm": { "placeholder": "Selecionar Valor", @@ -98,13 +98,19 @@ }, "limitedList": "+{{count}} mais", "limitedList.allItems": "Todos os {{count}} itens:", + "limitedList.allItems_one": "Todos os {{count}} itens:", + "limitedList.allItems_other": "Todos os {{count}} itens:", "limitedList.allTags_one": "Todas as etiquetas (1)", "limitedList.allTags_other": "Todas as etiquetas ({{count}})", "limitedList.clickToInteract": "Clique em uma etiqueta para filtrar os Dags", "limitedList.clickToOpenFull": "Clique em \"+{{count}} mais\" para ver a lista completa", + "limitedList.clickToOpenFull_one": "Clique em \"+{{count}} mais\" para ver a lista completa", + "limitedList.clickToOpenFull_other": "Clique em \"+{{count}} mais\" para ver a lista completa", "limitedList.copyPasteText": "Você pode copiar e colar o texto acima", "limitedList.showingItems_one": "Mostrando 1 item", "limitedList.showingItems_other": "Mostrando {{count}} itens", + "limitedList_one": "+{{count}} mais", + "limitedList_other": "+{{count}} mais", "logs": { "file": "Arquivo", "location": "linha {{line}} em {{name}}" @@ -166,11 +172,5 @@ "allVersions": "Todas as versões", "dagVersion": "Versão do Dag", "versionCode": "v{{versionCode}}" - }, - "limitedList_one": "+{{count}} mais", - "limitedList_other": "+{{count}} mais", - "limitedList.allItems_one": "Todos os {{count}} itens:", - "limitedList.allItems_other": "Todos os {{count}} itens:", - "limitedList.clickToOpenFull_one": "Clique em \"+{{count}} mais\" para ver a lista completa", - "limitedList.clickToOpenFull_other": "Clique em \"+{{count}} mais\" para ver a lista completa" + } } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json index 2ce8debc4d7a7..7c19744e58821 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json @@ -43,10 +43,10 @@ "extraLinks": "Links Extra", "grid": { "buttons": { - "resetToLatest": "Redefinir para a Última", - "toggleGroup": "Alternar Grupo", "newerRuns": "Execuções mais recentes", - "olderRuns": "Execuções mais antigas" + "olderRuns": "Execuções mais antigas", + "resetToLatest": "Redefinir para a Última", + "toggleGroup": "Alternar Grupo" }, "runTypeLegend": "Legenda dos Tipos de Execução" }, @@ -71,14 +71,14 @@ }, "info": "INFO", "noTryNumber": "Nenhum número de tentativa", - "settings": "Configurações", - "viewInExternal": "Ver logs em {{name}} (tentativa {{attempt}})", - "warning": "AVISO", "search": { "matchCount": "{{current}} de {{total}}", "noMatches": "Nenhuma correspondência", "placeholder": "Pesquisar logs..." - } + }, + "settings": "Configurações", + "viewInExternal": "Ver logs em {{name}} (tentativa {{attempt}})", + "warning": "AVISO" }, "navigation": { "navigation": "Navegação: Shift+{{arrow}}", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json index 9823f7ee5fe6e..55ab9b922ffb1 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json @@ -1,5 +1,7 @@ { "assetSchedule": "{{count}} de {{total}} ativos atualizados", + "assetSchedule_one": "{{count}} de {{total}} ativos atualizados", + "assetSchedule_other": "{{count}} de {{total}} ativos atualizados", "dagActions": { "delete": { "button": "Excluir Dag", @@ -99,7 +101,5 @@ }, "placeholder": "Ordenar por" }, - "unfavoriteDag": "Remover Dag dos Favoritos", - "assetSchedule_one": "{{count}} de {{total}} ativos atualizados", - "assetSchedule_other": "{{count}} de {{total}} ativos atualizados" + "unfavoriteDag": "Remover Dag dos Favoritos" } From eb46d1f1bdb3babccce387ab26a0df54bf7946a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Tue, 26 May 2026 14:45:07 -0300 Subject: [PATCH 12/19] feat(i18n): sync pt-BR with upstream en (add 49 missing keys, remove 21 extras) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: André Ahlert --- .../ui/public/i18n/locales/pt-BR/common.json | 47 ++++++++++++------- .../public/i18n/locales/pt-BR/components.json | 9 +--- .../ui/public/i18n/locales/pt-BR/dag.json | 45 +++++++++++++++++- .../ui/public/i18n/locales/pt-BR/dags.json | 13 ++--- 4 files changed, 82 insertions(+), 32 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json index 626aeaba4dabd..c3b76d2f6b441 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/common.json @@ -68,7 +68,12 @@ "runType": "Tipo de Execução", "sourceAssetEvent": "Evento de Asset de Origem", "triggeredBy": "Acionado por", - "triggeringUser": "Nome do Usuário que Disparou" + "triggeringUser": "Nome do Usuário que Disparou", + "durationStats": { + "mean": "Média", + "mode": "Moda" + }, + "expectedDuration": "Duração Esperada" }, "dagRun_one": "Execução do Dag", "dagRun_other": "Execuções do Dag", @@ -126,7 +131,8 @@ "runAfterFrom": "Executar Depois De", "runAfterTo": "Executar Depois Para", "selectDateRange": "Selecionar intervalo de datas", - "startTime": "Hora de início" + "startTime": "Hora de início", + "searchAsset": "Buscar Asset" }, "generateToken": "Gerar Token", "logicalDate": "Data Lógica", @@ -270,7 +276,8 @@ "latestHeartbeat": "Último heartbeat do Trigger", "title": "Informações do Trigger" }, - "unixname": "Nome do Unix" + "unixname": "Nome do Unix", + "renderedMapIndex": "Índice de Mapa Renderizado" }, "taskInstance_one": "Instância de Tarefa", "taskInstance_other": "Instâncias de Tarefa", @@ -297,8 +304,6 @@ "error": "Limpeza em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}", - "description_one": "{{count}} {{resourceName}} foi limpo com sucesso. Chave: {{keys}}", - "description_other": "{{count}} {{resourceName}} foram limpos com sucesso. Chaves: {{keys}}", "title": "Limpeza em Massa de {{resourceName}} Submetida" } }, @@ -306,8 +311,6 @@ "error": "Exclusão em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}", - "description_one": "{{count}} {{resourceName}} foi excluído com sucesso. Chave: {{keys}}", - "description_other": "{{count}} {{resourceName}} foram excluídos com sucesso. Chaves: {{keys}}", "title": "Exclusão em Massa de {{resourceName}} Submetida" } }, @@ -315,8 +318,6 @@ "error": "Atualização em Massa de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}", - "description_one": "{{count}} {{resourceName}} foi atualizado com sucesso. Chave: {{keys}}", - "description_other": "{{count}} {{resourceName}} foram atualizados com sucesso. Chaves: {{keys}}", "title": "Atualização em Massa de {{resourceName}} Submetida" } }, @@ -334,16 +335,10 @@ "title": "Exclusão de {{resourceName}} Submetida" } }, - "forbidden": { - "description": "Você não tem permissão para realizar esta ação.", - "title": "Acesso Negado" - }, "import": { "error": "Importação de {{resourceName}} Falhou", "success": { "description": "{{count}} {{resourceName}} foram importados com sucesso.", - "description_one": "{{count}} {{resourceName}} foi importado com sucesso.", - "description_other": "{{count}} {{resourceName}} foram importados com sucesso.", "title": "Importação de {{resourceName}} Submetida" } }, @@ -376,5 +371,25 @@ "tooltip": "Pressione {{hotkey}} para expandir ou recolher a secção", "unwrap": "Expandir", "wrap": "Recolher" + }, + "consumingAsset": "Asset Consumidor", + "errors": { + "forbidden": { + "description": "Você não tem permissão para realizar esta ação.", + "title": "Acesso Negado" + } + }, + "search": { + "advanced": { + "description": "Corresponder em qualquer parte do valor (busca por substring). Mais lento em deployments grandes porque não consegue usar índice de banco de dados.", + "title": "Corresponder em qualquer parte" + } + }, + "selected": "Selecionado", + "taskGroup_one": "Grupo de Tarefas", + "taskGroup_other": "Grupos de Tarefas", + "validation": { + "mustBeAtLeast": "Deve ser no mínimo {{min}}.", + "mustBeValidNumber": "Deve ser um número válido." } -} +} \ No newline at end of file diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json index 73049988cf37e..a98b3967bd102 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/components.json @@ -69,7 +69,6 @@ "runDuration": "Duração da Execução" }, "fileUpload": { - "files_one": "1 arquivo", "files_other": "{{count}} arquivos" }, "flexibleForm": { @@ -98,19 +97,13 @@ }, "limitedList": "+{{count}} mais", "limitedList.allItems": "Todos os {{count}} itens:", - "limitedList.allItems_one": "Todos os {{count}} itens:", - "limitedList.allItems_other": "Todos os {{count}} itens:", "limitedList.allTags_one": "Todas as etiquetas (1)", "limitedList.allTags_other": "Todas as etiquetas ({{count}})", "limitedList.clickToInteract": "Clique em uma etiqueta para filtrar os Dags", "limitedList.clickToOpenFull": "Clique em \"+{{count}} mais\" para ver a lista completa", - "limitedList.clickToOpenFull_one": "Clique em \"+{{count}} mais\" para ver a lista completa", - "limitedList.clickToOpenFull_other": "Clique em \"+{{count}} mais\" para ver a lista completa", "limitedList.copyPasteText": "Você pode copiar e colar o texto acima", "limitedList.showingItems_one": "Mostrando 1 item", "limitedList.showingItems_other": "Mostrando {{count}} itens", - "limitedList_one": "+{{count}} mais", - "limitedList_other": "+{{count}} mais", "logs": { "file": "Arquivo", "location": "linha {{line}} em {{name}}" @@ -173,4 +166,4 @@ "dagVersion": "Versão do Dag", "versionCode": "v{{versionCode}}" } -} +} \ No newline at end of file diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json index 7c19744e58821..74f8a4cea3916 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dag.json @@ -82,7 +82,8 @@ }, "navigation": { "navigation": "Navegação: Shift+{{arrow}}", - "toggleGroup": "Alternar grupo: Espaço" + "toggleGroup": "Alternar grupo: Espaço", + "openGraphFilters": "Filtros de Tarefa: Ctrl+Shift+F" }, "notFound": { "back": "Voltar", @@ -108,6 +109,10 @@ "showLogs": "Mostrar Logs", "title": "Logs Recentes de Tarefas Falhadas", "viewFullLogs": "Ver logs completos" + }, + "deadlines": { + "showAll": "Mostrar Tudo", + "title": "Prazos" } }, "panel": { @@ -160,6 +165,16 @@ "upstream": "Upstream" }, "selectedTask": "Tarefa selecionada" + }, + "graphFilters": { + "clearFilters": "Limpar Filtros", + "durationGte": "Duração mínima (s)", + "durationGteHint": "Para tarefas mapeadas, mede o tempo total em todas as instâncias", + "mapIndex": "Índice de mapa mín.", + "mapIndexHint": "Mostra tarefas mapeadas expandidas até pelo menos este índice", + "selectStatus": "Selecionar status", + "selectTaskGroup": "Selecionar grupo de tarefas", + "title": "Filtros de Tarefa" } }, "paramsFailed": "Falha ao carregar parâmetros", @@ -196,5 +211,31 @@ "taskGroups": { "collapseAll": "Recolher todos os grupos de tarefas", "expandAll": "Expandir todos os grupos de tarefas" + }, + "deadlineAlerts": { + "completionRule": "Deve concluir em {{interval}} de {{reference}}", + "count_one": "{{count}} prazo", + "count_other": "{{count}} prazos", + "referenceType": { + "AverageRuntimeDeadline": "tempo médio de execução", + "DagRunLogicalDateDeadline": "data lógica", + "DagRunQueuedAtDeadline": "tempo em fila" + } + }, + "deadlineStatus": { + "actual": "Real", + "expected": "Esperado", + "finishedEarly": "Concluído {{duration}} antes do prazo", + "finishedLate": "Concluído {{duration}} após o prazo", + "label": "Prazo", + "met": "Atendido", + "missed": "Perdido", + "missedCount_one": "{{count}} Prazo Perdido", + "missedCount_other": "{{count}} Prazos Perdidos", + "mixedCount": "{{missedCount}} Perdidos, {{upcomingCount}} Próximos", + "stillRunning": "Ainda em execução", + "upcoming": "Próximo", + "upcomingCount_one": "{{count}} Prazo Próximo", + "upcomingCount_other": "{{count}} Prazos Próximos" } -} +} \ No newline at end of file diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json index 55ab9b922ffb1..cb4cbef03340c 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/dags.json @@ -1,7 +1,5 @@ { "assetSchedule": "{{count}} de {{total}} ativos atualizados", - "assetSchedule_one": "{{count}} de {{total}} ativos atualizados", - "assetSchedule_other": "{{count}} de {{total}} ativos atualizados", "dagActions": { "delete": { "button": "Excluir Dag", @@ -28,9 +26,7 @@ "runAndTaskActions": { "affectedTasks": { "noItemsFound": "Nenhuma tarefa encontrada.", - "title": "Tarefas Afetadas: {{count}}", - "title_one": "Tarefa Afetada: {{count}}", - "title_other": "Tarefas Afetadas: {{count}}" + "title": "Tarefas Afetadas: {{count}}" }, "clear": { "button": "Limpar {{type}}", @@ -73,6 +69,11 @@ "queueNew": "Enfileirar novas tarefas", "runOnLatestVersion": "Executar com a versão mais recente do pacote", "upstream": "Upstream" + }, + "clearAllMapped": { + "button": "Limpar Todas as Tarefas Mapeadas", + "buttonTooltip": "Pressione shift+c para limpar todas as instâncias de tarefa mapeadas", + "title": "Limpar Todas as Instâncias de Tarefa Mapeadas" } }, "search": { @@ -102,4 +103,4 @@ "placeholder": "Ordenar por" }, "unfavoriteDag": "Remover Dag dos Favoritos" -} +} \ No newline at end of file From c63cd3c3f863db6adbdec335012f3208f1224f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Tue, 26 May 2026 16:15:56 -0300 Subject: [PATCH 13/19] Update admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index 88057e77d1239..58015bb3b957e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -57,7 +57,7 @@ "title": "Conexão testada com sucesso" }, "typeMeta": { - "error": "Falha ao recuperar Meta do Tipo de Conexão", + "error": "Erro ao recuperar os metadados do tipo de conexão", "standardFields": { "description": "Descrição", "host": "Host", From b83ad8b0b6617e9072c87d6355418d620c82b7f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Tue, 26 May 2026 16:16:09 -0300 Subject: [PATCH 14/19] Update admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index 58015bb3b957e..f4857daec4e4e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -43,7 +43,7 @@ }, "nothingFound": { "description": "Conexões definidas via variáveis de ambiente ou gerenciadores de segredos não estão listadas aqui.", - "documentationLink": "Saiba mais na documentação do Airflow.", + "documentationLink": "Consulte a documentação do Airflow para saber mais.", "learnMore": "Estas são resolvidas em tempo de execução e não são visíveis na interface do usuário.", "title": "Nenhuma conexão encontrada!" }, From bcc155f6a49b4b376439c92bc32942fe1e3d79cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 28 May 2026 06:59:23 -0300 Subject: [PATCH 15/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index f4857daec4e4e..a067b942b9847 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -8,7 +8,7 @@ }, "config": { "columns": { - "section": "Secção" + "section": "Seção" }, "title": "Configuração do Airflow" }, From 378995cbf388565a17840992896df3f93727627d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 28 May 2026 06:59:36 -0300 Subject: [PATCH 16/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index a067b942b9847..3635fc9f15141 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -34,7 +34,7 @@ "connectionIdRequired": "ID da Conexão é obrigatório", "connectionIdRequirement": "ID da Conexão não pode conter somente espaços", "connectionTypeRequired": "Tipo de Conexão é obrigatório", - "extraFields": "Campos Extra", + "extraFields": "Campos Extras", "extraFieldsJson": "Campos Extra JSON", "helperText": "Tipo de conexão faltando? Certifique-se de ter instalado o pacote do provider correspondente ao Airflow.", "helperTextForRedactedFields": "Os campos redigidos ('***') permanecerão inalterados se não forem modificados.", From fc9b8302e7d5f5143a0a253cbff8fd0d9e14a0da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 28 May 2026 06:59:48 -0300 Subject: [PATCH 17/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index 3635fc9f15141..5a76a92faee40 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -35,7 +35,7 @@ "connectionIdRequirement": "ID da Conexão não pode conter somente espaços", "connectionTypeRequired": "Tipo de Conexão é obrigatório", "extraFields": "Campos Extras", - "extraFieldsJson": "Campos Extra JSON", + "extraFieldsJson": "Campos Extras JSON", "helperText": "Tipo de conexão faltando? Certifique-se de ter instalado o pacote do provider correspondente ao Airflow.", "helperTextForRedactedFields": "Os campos redigidos ('***') permanecerão inalterados se não forem modificados.", "selectConnectionType": "Selecionar Tipo de Conexão", From 3c3803ce6b96980b1508d6aa8d42435993faf7cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 28 May 2026 07:00:07 -0300 Subject: [PATCH 18/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index 5a76a92faee40..68371aef2ffa4 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -155,7 +155,7 @@ "edit": "Editar Variável", "form": { "invalidJson": "JSON Inválido", - "keyMaxLength": "Chave pode conter um máximo de 250 caracteres", + "keyMaxLength": "Chave pode conter no máximo 250 caracteres", "keyRequired": "Chave é obrigatória", "valueRequired": "Valor é obrigatório" }, From c2ba0bc8e90af404386203e91ec0cb9ad00415ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Ahlert?= Date: Thu, 28 May 2026 07:01:42 -0300 Subject: [PATCH 19/19] Update airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json Co-authored-by: Tatiana Al-Chueyr --- .../src/airflow/ui/public/i18n/locales/pt-BR/admin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json index 68371aef2ffa4..980f3d2b26a85 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/pt-BR/admin.json @@ -165,7 +165,7 @@ "errorParsingJsonFile": "Erro ao Analisar Arquivo JSON: Upload um arquivo JSON contendo variáveis (exemplo: {\"key\": \"value\", ...}).", "options": { "fail": { - "description": "Falha na importação se forem detetadas variáveis que já existem.", + "description": "Falha na importação se forem detectadas variáveis que já existem.", "title": "Falha" }, "overwrite": {