Files
TREK/shared/src/i18n/br/admin.ts
T
Maurice 1f66ef1d32 fix(maps): let users and admins enter a CARTO API key (#2060)
CARTO stamps an "API KEY REQUIRED" watermark onto every basemap tile
fetched without a key since 26.08.2026, and both CartoDB presets plus the
built-in fallback are CARTO. The key is free and needs no account, so add
it as a setting rather than dropping the provider.

carto_api_key sits next to mapbox_access_token: per user in Settings/Map,
instance-wide under Admin/User Defaults, encrypted at rest, injected from
CARTO_API_KEY on managed instances. Unlike Mapbox it never switches the
map provider, since a raster key says nothing about the renderer.

The key is appended as ?key= at render time instead of being stored in the
template, so a saved URL stays portable and survives a rotation. That is
also what reaches the four maps that pinned CARTO and ignored the user's
tile setting: atlas, collections, the public trip share and the public
journey. The two share pages read it from their token-gated payload, the
same way baseCurrency already travels.

Also lifts the release notice above page chrome. Its overlay sat at
z-index 50, under the Vacay mode toolbar at 61, so the dialog was neither
on top nor modal. Adds a six-step layer scale to index.css and moves the
three notice shells onto it.

Closes #2054
Closes #2052
2026-08-27 12:06:55 +02:00

702 lines
48 KiB
TypeScript

import type { TranslationStrings } from '../types';
const admin: TranslationStrings = {
'admin.notifications.title': 'Notificações',
'admin.notifications.hint': 'Escolha um canal de notificação. Apenas um pode estar ativo por vez.',
'admin.notifications.none': 'Desativado',
'admin.notifications.email': 'E-mail (SMTP)',
'admin.notifications.webhook': 'Webhook',
'admin.notifications.save': 'Salvar configurações de notificação',
'admin.notifications.saved': 'Configurações de notificação salvas',
'admin.notifications.testWebhook': 'Enviar webhook de teste',
'admin.notifications.testWebhookSuccess': 'Webhook de teste enviado com sucesso',
'admin.notifications.testWebhookFailed': 'Falha ao enviar webhook de teste',
'admin.smtp.title': 'E-mail e notificações',
'admin.smtp.hint': 'Configuração SMTP para envio de notificações por e-mail.',
'admin.smtp.testButton': 'Enviar e-mail de teste',
'admin.webhook.hint': 'Enviar notificações para um webhook externo (Discord, Slack, etc.).',
'admin.smtp.testSuccess': 'E-mail de teste enviado com sucesso',
'admin.smtp.testFailed': 'Falha ao enviar e-mail de teste',
'admin.title': 'Administração',
'admin.subtitle': 'Gestão de usuários e configurações do sistema',
'admin.tabs.users': 'Usuários',
'admin.tabs.categories': 'Categorias',
'admin.tabs.backup': 'Backup',
'admin.stats.users': 'Usuários',
'admin.stats.trips': 'Viagens',
'admin.stats.places': 'Lugares',
'admin.stats.photos': 'Fotos',
'admin.stats.files': 'Arquivos',
'admin.table.user': 'Usuário',
'admin.table.email': 'E-mail',
'admin.table.role': 'Função',
'admin.table.created': 'Criado',
'admin.table.lastLogin': 'Último acesso',
'admin.table.actions': 'Ações',
'admin.you': '(Você)',
'admin.editUser': 'Editar usuário',
'admin.newPassword': 'Nova senha',
'admin.newPasswordHint': 'Deixe em branco para manter a senha atual',
'admin.deleteUser': 'Excluir o usuário "{name}"? Todas as viagens serão excluídas permanentemente.',
'admin.deleteUserTitle': 'Excluir usuário',
'admin.newPasswordPlaceholder': 'Digite a nova senha…',
'admin.toast.loadError': 'Falha ao carregar dados do admin',
'admin.toast.userUpdated': 'Usuário atualizado',
'admin.toast.updateError': 'Falha ao atualizar',
'admin.toast.userDeleted': 'Usuário excluído',
'admin.toast.deleteError': 'Falha ao excluir',
'admin.toast.cannotDeleteSelf': 'Não é possível excluir a própria conta',
'admin.toast.userCreated': 'Usuário criado',
'admin.toast.createError': 'Falha ao criar usuário',
'admin.toast.fieldsRequired': 'Nome de usuário, e-mail e senha são obrigatórios',
'admin.createUser': 'Criar usuário',
'admin.invite.title': 'Links de convite',
'admin.invite.subtitle': 'Crie links de cadastro de uso único',
'admin.invite.create': 'Criar link',
'admin.invite.createAndCopy': 'Criar e copiar',
'admin.invite.empty': 'Nenhum link de convite criado ainda',
'admin.invite.maxUses': 'Máx. usos',
'admin.invite.expiry': 'Expira após',
'admin.invite.uses': 'usado(s)',
'admin.invite.expiresAt': 'expira',
'admin.invite.createdBy': 'por',
'admin.invite.active': 'Ativo',
'admin.invite.expired': 'Expirado',
'admin.invite.usedUp': 'Esgotado',
'admin.invite.copied': 'Link de convite copiado para a área de transferência',
'admin.invite.copyLink': 'Copiar link',
'admin.invite.deleted': 'Link de convite excluído',
'admin.invite.createError': 'Falha ao criar link de convite',
'admin.invite.deleteError': 'Falha ao excluir link de convite',
'admin.tabs.settings': 'Configurações',
'admin.allowRegistration': 'Permitir cadastro',
'admin.allowRegistrationHint': 'Novos usuários podem se cadastrar sozinhos',
'admin.authMethods': 'Authentication Methods',
'admin.passwordLogin': 'Password Login',
'admin.passwordLoginHint': 'Allow users to sign in with email and password',
'admin.passwordRegistration': 'Password Registration',
'admin.passwordRegistrationHint': 'Allow new users to register with email and password',
'admin.oidcLogin': 'SSO Login',
'admin.oidcLoginHint': 'Allow users to sign in with SSO',
'admin.oidcRegistration': 'SSO Auto-Provisioning',
'admin.oidcRegistrationHint': 'Automatically create accounts for new SSO users',
'admin.envOverrideHint':
'Password login settings are controlled by the OIDC_ONLY environment variable and cannot be changed here.',
'admin.lockoutWarning': 'At least one login method must remain enabled',
'admin.requireMfa': 'Exigir autenticação em dois fatores (2FA)',
'admin.requireMfaHint': 'Usuários sem 2FA precisam concluir a configuração em Configurações antes de usar o app.',
'admin.apiKeys': 'Chaves de API',
'admin.apiKeysHint': 'Opcional. Habilita dados estendidos de lugares, como fotos e clima.',
'admin.mapsKey': 'Chave da API Google Maps',
'admin.mapsKeyHint': 'Necessária para busca de lugares. Obtenha em console.cloud.google.com',
'admin.mapsKeyHintLong':
'Sem chave de API, o OpenStreetMap é usado na busca. Com uma chave Google, também podem ser carregadas fotos, avaliações e horários. Obtenha em console.cloud.google.com.',
'admin.recommended': 'Recomendado',
'admin.weatherKey': 'Chave OpenWeatherMap',
'admin.weatherKeyHint': 'Para dados meteorológicos. Grátis em openweathermap.org',
'admin.unsplashKey': 'Chave de API do Unsplash',
'admin.unsplashKeyHint': 'Para busca de imagens. Grátis em unsplash.com/developers',
'admin.validateKey': 'Testar',
'admin.keyValid': 'Conectado',
'admin.keyInvalid': 'Inválida',
'admin.keySaved': 'Chaves de API salvas',
'admin.oidcTitle': 'Login Único (OIDC)',
'admin.oidcSubtitle': 'Permitir login via provedores externos como Google, Apple, Authentik ou Keycloak.',
'admin.oidcDisplayName': 'Nome exibido',
'admin.oidcIssuer': 'URL do emissor',
'admin.oidcIssuerHint': 'URL do emissor OpenID Connect do provedor, ex.: https://accounts.google.com',
'admin.oidcSaved': 'Configuração OIDC salva',
'admin.oidcOnlyMode': 'Desativar login por senha',
'admin.oidcOnlyModeHint': 'Quando ativado, só é permitido login SSO. Login e cadastro por senha ficam bloqueados.',
'admin.fileTypes': 'Tipos de arquivo permitidos',
'admin.fileTypesHint': 'Configure quais tipos de arquivo os usuários podem enviar.',
'admin.fileTypesFormat': 'Extensões separadas por vírgula (ex.: jpg,png,pdf,doc). Use * para permitir todos.',
'admin.fileTypesSaved': 'Configurações de tipos de arquivo salvas',
'admin.placesPhotos.title': 'Fotos de Locais',
'admin.placesPhotos.subtitle':
'Busca fotos da Google Places API. Desative para economizar cota da API. Fotos do Wikimedia não são afetadas.',
'admin.placesAutocomplete.title': 'Autocompletar de Locais',
'admin.placesAutocomplete.subtitle':
'Usa a Google Places API para sugestões de pesquisa. Desative para economizar cota da API.',
'admin.placesDetails.title': 'Detalhes do Local',
'admin.placesDetails.subtitle':
'Busca informações detalhadas do local (horários, avaliação, site) da Google Places API. Desative para economizar cota da API.',
'admin.placesEnrich.title': 'Enriquecimento de lugares',
'admin.placesEnrich.subtitle':
'Mostra imagens e uma descrição ao adicionar um lugar. Wikipédia e OpenStreetMap são sempre usados; o Google entra quando Fotos de lugares ou Detalhes de lugares estão ativos.',
'admin.bagTracking.title': 'Rastreamento de malas',
'admin.bagTracking.subtitle': 'Ativar peso e atribuição de mala para itens da lista',
'admin.collab.chat.title': 'Chat',
'admin.collab.chat.subtitle': 'Mensagens em tempo real para colaboração',
'admin.collab.notes.title': 'Notas',
'admin.collab.notes.subtitle': 'Notas e documentos compartilhados',
'admin.collab.polls.title': 'Enquetes',
'admin.collab.polls.subtitle': 'Enquetes e votações em grupo',
'admin.collab.whatsnext.title': 'Próximos passos',
'admin.collab.whatsnext.subtitle': 'Sugestões de atividades e próximos passos',
'admin.tabs.config': 'Personalização',
'admin.tabs.defaults': 'Padrões do usuário',
'admin.defaultSettings.title': 'Configurações padrão do usuário',
'admin.defaultSettings.description':
'Defina padrões para toda a instância. Usuários que não alteraram uma configuração verão esses valores. As próprias alterações deles sempre têm prioridade.',
'admin.defaultSettings.saved': 'Padrão salvo',
'admin.defaultSettings.reset': 'Redefinir para o padrão integrado',
'admin.defaultSettings.resetToBuiltIn': 'redefinir',
'admin.tabs.templates': 'Modelos de mala',
'admin.packingTemplates.title': 'Modelos de mala',
'admin.packingTemplates.subtitle': 'Crie listas de mala reutilizáveis para suas viagens',
'admin.packingTemplates.create': 'Novo modelo',
'admin.packingTemplates.namePlaceholder': 'Nome do modelo (ex.: Praia)',
'admin.packingTemplates.empty': 'Nenhum modelo criado ainda',
'admin.packingTemplates.items': 'itens',
'admin.packingTemplates.categories': 'categorias',
'admin.packingTemplates.itemName': 'Nome do item',
'admin.packingTemplates.itemCategory': 'Categoria',
'admin.packingTemplates.categoryName': 'Nome da categoria (ex.: Roupas)',
'admin.packingTemplates.addCategory': 'Adicionar categoria',
'admin.packingTemplates.created': 'Modelo criado',
'admin.packingTemplates.deleted': 'Modelo excluído',
'admin.packingTemplates.loadError': 'Falha ao carregar modelos',
'admin.packingTemplates.createError': 'Falha ao criar modelo',
'admin.packingTemplates.deleteError': 'Falha ao excluir modelo',
'admin.packingTemplates.deleteCategoryError': 'Falha ao excluir a categoria',
'admin.packingTemplates.deleteItemError': 'Falha ao excluir o item',
'admin.packingTemplates.saveError': 'Falha ao salvar',
'admin.tabs.addons': 'Complementos',
'admin.tabs.plugins': 'Plugins',
'admin.tabs.storage': 'Armazenamento',
'admin.plugins.rescan': 'Reescanear',
'admin.plugins.rescanned': 'Pasta de plugins reescaneada',
'admin.plugins.upload': 'Enviar plugin',
'admin.plugins.dropToUpload': 'Solte um .zip de plugin para instalar',
'admin.plugins.uploaded': 'Plugin “{name}” enviado — ative para executar',
'admin.plugins.sideloaded': 'Carregado manualmente',
'admin.plugins.devLinkBadge': 'Dev-Link',
'admin.plugins.devLinkHint':
'Carregado de um diretório de build local e recarregado a quente com dados reais — apenas para desenvolvimento',
'admin.plugins.devLinkTitle': 'Vincular um plugin local',
'admin.plugins.devLinkPathPlaceholder': '/absolute/path/to/your/plugin',
'admin.plugins.devLinkButton': 'Vincular',
'admin.plugins.devLinkLinked': '{id} vinculado — ative-o para executar',
'admin.plugins.sideloadedHint': 'Enviado manualmente — não é do registro, sem assinatura e sem revisão',
'admin.plugins.browse': 'Explorar plugins',
'admin.plugins.installed': 'Instalado',
'admin.plugins.install': 'Instalar',
'admin.plugins.registryEmpty': 'Nenhum plugin disponível no registro ainda.',
'admin.plugins.actionError': 'Falha na ação',
'admin.plugins.activate': 'Ativar',
'admin.plugins.activated': 'Plugin ativado',
'admin.plugins.deactivate': 'Desativar',
'admin.plugins.deactivated': 'Plugin desativado',
'admin.plugins.viewErrors': 'Ver registro de erros',
'admin.plugins.errorLog': 'Registro de erros',
'admin.plugins.allowedHosts': 'Hosts permitidos',
'admin.plugins.allowedHosts.hint':
'Este plugin fala com um serviço que só você pode nomear (um servidor auto-hospedado). Adicione os hosts que ele pode alcançar — nenhum outro.',
'admin.plugins.allowedHosts.none': 'Nenhum host adicionado ainda.',
'admin.plugins.allowedHosts.unsupported':
'Este plugin não usa hosts fornecidos pelo operador. Seus hosts permitidos são fixos no manifesto.',
'admin.plugins.allowedHosts.restartNote': 'Salvar reinicia o plugin para que ele use a nova lista.',
'admin.plugins.allowedHosts.add': 'Adicionar host permitido',
'admin.plugins.allowedHosts.count': '{n} host(s) permitido(s)',
'admin.plugins.operatorEgressPill': '+ hosts que você adicionar',
'admin.plugins.operatorEgressHint':
'Este plugin fala com um serviço que só você pode nomear (um servidor auto-hospedado). Após instalar, adicione os hosts que ele pode alcançar em ⋯ → Hosts permitidos. Nenhum outro.',
'admin.plugins.noErrors': 'Nenhum erro registrado.',
'admin.plugins.uninstalled': 'Plugin desinstalado',
'admin.plugins.uninstallTitle': 'Desinstalar plugin?',
'admin.plugins.uninstallBody':
'Isso interrompe o plugin, remove seu código e exclui todos os dados dele. Esta ação não pode ser desfeita.',
'admin.plugins.status.starting': 'Iniciando…',
'admin.plugins.type.widget': 'Widget',
'admin.plugins.type.page': 'Página',
'admin.plugins.type.integration': 'Integração',
'admin.plugins.type.trip-page': 'Página da viagem',
'admin.plugins.reviewed': 'Revisado',
'admin.plugins.unreviewed': 'Não revisado',
'admin.plugins.updated': 'Plugin atualizado',
'admin.plugins.updateTo': 'Atualizar → v{version}',
'admin.plugins.enabledToggle': 'Ativar plugin',
'plugins.notFound': 'Plugin não encontrado',
'plugins.frameLoadFailed': 'This plugin could not be loaded.',
'admin.plugins.title': 'Plugins',
'admin.plugins.subtitle': 'Instale e gerencie plugins de terceiros na sua instância.',
'admin.plugins.disabledTitle': 'Os plugins estão desativados',
'admin.plugins.disabledBody':
'O runtime de plugins está desligado (TREK_PLUGINS_ENABLED). Nenhum plugin pode ser executado até que um admin o ative na configuração do servidor.',
'admin.plugins.empty': 'Nenhum plugin instalado ainda.',
'admin.plugins.loadError': 'Não foi possível carregar os plugins.',
'admin.plugins.scaffoldNote':
'A instalação e ativação de plugins chegarão em uma atualização futura. Este painel atualmente lista apenas os plugins instalados.',
'admin.plugins.status.active': 'Ativo',
'admin.plugins.status.inactive': 'Inativo',
'admin.plugins.status.disabled': 'Desativado',
'admin.plugins.status.error': 'Erro',
'admin.plugins.status.incompatible': 'Incompatível',
'admin.plugins.details': 'Detalhes',
'admin.plugins.detailError': 'Não foi possível carregar os detalhes do plugin.',
'admin.plugins.permissionsTitle': 'Permissões',
'admin.plugins.noPermissions': 'Este plugin não solicita permissões especiais.',
'admin.plugins.egressNote': 'Pode se conectar a: {hosts}',
'admin.plugins.setupTitle': 'Configuração',
'admin.plugins.noSetup': 'Funciona imediatamente — nada a configurar.',
'admin.plugins.scope.instance': 'Em toda a instância',
'admin.plugins.scope.user': 'Por usuário',
'admin.plugins.fieldRequired': 'Obrigatório',
'admin.plugins.sourceRepo': 'Repositório de origem',
'admin.plugins.reportIssue': 'Relatar um problema',
'admin.plugins.homepage': 'Página inicial',
'admin.plugins.requiresTrek': 'Requer TREK {version}+',
'admin.plugins.reviewedOn': 'Revisado em {date}',
'admin.plugins.perm.db:own': 'Armazenar seus próprios dados em um banco de dados isolado',
'admin.plugins.perm.db:read:trips': 'Ler viagens às quais o usuário atual tem acesso',
'admin.plugins.perm.db:read:users': 'Ler informações básicas de perfil (nome, avatar — nunca credenciais)',
'admin.plugins.perm.db:read:costs': 'Ler despesas (itens de orçamento) às quais o usuário atual tem acesso',
'admin.plugins.perm.db:read:packing': 'Ler listas de bagagem de viagens às quais o usuário atual tem acesso',
'admin.plugins.perm.db:write:packing':
'Criar, editar e remover itens da lista de bagagem em viagens que o usuário atual pode editar',
'admin.plugins.perm.weather:read': 'Ler a previsão do tempo em cache do host (por coordenadas)',
'admin.plugins.perm.db:read:categories': 'Ler a lista global de categorias de locais',
'admin.plugins.perm.db:read:tags': 'Ler as etiquetas do usuário atual',
'admin.plugins.perm.db:write:tags': 'Criar, editar e remover as etiquetas do usuário atual',
'admin.plugins.perm.db:read:todos': 'Ler as tarefas de viagens às quais o usuário atual tem acesso',
'admin.plugins.perm.db:write:todos': 'Criar, editar e remover tarefas em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:write:atlas':
'Marcar países e regiões como visitados e gerenciar a lista de desejos do usuário atual (requer o complemento Atlas)',
'admin.plugins.perm.db:write:vacay':
'Alternar dias de férias e feriados da empresa no plano ativo do usuário atual (requer o complemento Vacay)',
'admin.plugins.perm.db:write:journal':
'Criar, editar e remover entradas de diário em diários que o usuário atual pode editar (requer o complemento Journey)',
'admin.plugins.perm.db:write:collections':
'Criar e editar coleções e salvar locais nelas, com o papel de coleção do usuário atual (requer o complemento Collections)',
'admin.plugins.perm.db:write:files':
'Anexar arquivos a viagens que o usuário atual pode editar (limite de 10 MB, extensões bloqueadas recusadas) e gerenciar seus vínculos',
'admin.plugins.perm.db:write:collab':
'Publicar notas, enquetes e mensagens de chat em viagens que o usuário atual pode editar (requer o complemento Collab)',
'admin.plugins.perm.db:write:members':
'Adicionar usuários a viagens — concede acesso à viagem; protegido pelo direito de gerenciar membros do usuário atual',
'admin.plugins.perm.notify:send':
'Enviar uma notificação (caixa do sino + e-mail/ntfy) ao usuário atual ou a uma viagem à qual ele pertence — nunca a um destinatário arbitrário',
'admin.plugins.perm.ai:invoke':
'Usar o provedor de IA configurado pelo administrador (conclusão de texto + extração de documentos) em nome do usuário atual — o complemento nunca guarda uma chave',
'admin.plugins.perm.oauth:client':
'Conectar-se a um serviço de terceiros em seu nome via OAuth intermediado pelo host (o host guarda os tokens, o plugin nunca os vê)',
'admin.plugins.perm.db:read:files': 'Ler arquivos de viagens às quais o usuário atual tem acesso',
'admin.plugins.perm.db:write:reservations':
'Criar, editar e remover reservas em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:write:accommodations':
'Criar, editar e remover acomodações em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:read:journal': 'Ler os diários de viagem do usuário atual (requer o complemento Journey)',
'admin.plugins.perm.db:read:atlas':
'Ler os países e regiões visitados pelo usuário atual (requer o complemento Atlas)',
'admin.plugins.perm.db:read:vacay': 'Ler o plano de férias do usuário atual (requer o complemento Vacay)',
'admin.plugins.perm.db:read:daynotes': 'Ler as notas do dia de viagens às quais o usuário atual tem acesso',
'admin.plugins.perm.db:read:collections':
'Ler as coleções de locais salvos do usuário atual (requer o complemento Collections)',
'admin.plugins.perm.db:write:daynotes':
'Criar, editar e remover notas do dia em viagens que o usuário atual pode editar',
'admin.plugins.perm.jobs:run':
'Executar seus jobs em segundo plano de forma agendada (sem contexto de usuário — não pode ler dados do usuário)',
'admin.plugins.perm.db:write:costs': 'Criar despesas (itens de orçamento) em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:write:places': 'Adicionar, editar e remover locais em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:write:days': 'Adicionar, editar e remover dias em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:write:itinerary':
'Atribuir e remover locais em dias de viagens que o usuário atual pode editar',
'admin.plugins.perm.db:write:trips':
'Editar detalhes da viagem (título, datas, moeda…) em viagens que o usuário atual pode editar',
'admin.plugins.perm.db:meta':
'Anexar seus próprios dados privados a viagens, locais e dias que o usuário atual pode acessar',
'admin.plugins.perm.ws:broadcast:trip': 'Enviar atualizações em tempo real aos membros da viagem',
'admin.plugins.perm.ws:broadcast:user': 'Enviar atualizações em tempo real a usuários individuais',
'admin.plugins.perm.hook:photo-provider': 'Fornecer fotos para as Memórias',
'admin.plugins.perm.hook:calendar-source': 'Fornecer eventos para o calendário',
'admin.plugins.perm.hook:place-detail-provider':
'Contribuir com detalhes extras (avaliações, notas, links) para um local',
'admin.plugins.perm.hook:trip-warning-provider': 'Emitir avisos de validação em uma viagem (exibidos no planejador)',
'admin.plugins.perm.hook:table-contributor':
'Adicionar colunas e ações às visualizações da viagem (reservas, locais, dias)',
'admin.plugins.perm.hook:map-marker-provider':
'Adicionar marcadores ao mapa da viagem (ex. mostrar reservas ou POIs)',
'admin.plugins.perm.hook:map-layer-provider': 'Desenhar rotas, corredores e zonas no mapa da viagem',
'admin.plugins.perm.hook:route-provider':
'Oferecer perfis de roteamento com os quais o planejador calcula os dias (ex. rotas para carro elétrico com paradas de recarga)',
'admin.plugins.perm.hook:day-schedule-provider':
'Anexar entradas de horário ao plano do dia (paradas de recarga, margens de segurança)',
'admin.plugins.perm.hook:day-tint-provider':
'Colorir os dias no plano do dia (por exemplo, a qual trecho da viagem um dia pertence)',
'admin.plugins.perm.geolocation:read':
'Consultar sua localização em tempo real enquanto uma das visualizações dele estiver aberta (o TREK a lê com a permissão de localização deste site, não com uma permissão própria do plugin)',
'admin.plugins.perm.hook:pdf-section-provider': 'Anexar seções de texto à exportação em PDF da viagem',
'admin.plugins.perm.hook:atlas-layer-provider':
'Destacar países no mapa-múndi do Atlas (ex. listas de desejos ou avisos de viagem)',
'admin.plugins.perm.hook:journal-entry-provider':
'Adicionar linhas extras (links, estatísticas) às entradas do diário',
'admin.plugins.perm.hook:user-data':
'Apagar ou exportar os dados que armazena sobre um usuário (LGPD/GDPR: exclusão de conta e solicitações de dados)',
'admin.plugins.perm.hook:trip-card-provider':
'Adicionar pequenos selos (status, contagens) aos cartões de viagem do painel',
'admin.plugins.perm.hook:notification-channel': 'Entregar suas notificações por um canal adicional',
'admin.plugins.perm.events:subscribe':
'Reagir a eventos de atividade do núcleo (apenas nome do evento + viagem, nunca o conteúdo)',
'admin.plugins.perm.http:outbound': 'Fazer requisições de saída para os hosts declarados',
'admin.plugins.perm.db:read:collab':
'Ler notas, enquetes e mensagens de chat de viagens às quais o usuário atual tem acesso (requer o complemento Collab)',
'admin.plugins.perm.db:read:files:content':
'Ler o conteúdo (bytes) dos arquivos de viagens às quais o usuário atual tem acesso',
'admin.plugins.perm.db:create:trips': 'Criar novas viagens pertencentes ao usuário atual',
'admin.plugins.perm.rates:read': 'Ler as taxas de câmbio em cache do host',
'admin.plugins.updateConsentTitle': 'Esta atualização precisa de novas permissões',
'admin.plugins.updateConsentBody':
'{name} v{version} está solicitando permissões que você ainda não concedeu. A nova versão está instalada, mas permanece desativada até que você a aprove.',
'admin.plugins.updateNewPermissions': 'Novas permissões solicitadas',
'admin.plugins.updateNewEgress': 'Novas conexões de saída',
'admin.plugins.updateApprove': 'Aprovar e ativar',
'admin.plugins.updateLater': 'Manter desativado por enquanto',
'admin.plugins.updateKeptOff': 'Atualização instalada — desativada até você aprovar as novas permissões',
'admin.plugins.reviewedMeaning':
'"Revisado" significa que um mantenedor do TREK verificou este plugin em busca de malware em cada versão — não quanto à qualidade ou se ele funciona. Não é garantia de que um plugin seja inofensivo.',
'admin.plugins.security.title': 'Como os plugins são isolados — e os limites',
'admin.plugins.security.isolationTitle': 'Todo plugin roda isolado',
'admin.plugins.security.isolationBody':
'Um plugin roda como seu próprio processo restrito, que só consegue ler os próprios arquivos. Ele não pode ler seu banco de dados, seu segredo de login ou sua chave de criptografia, não pode iniciar outros programas e não pode gravar arquivos em lugar nenhum. Sua interface roda em um frame de navegador isolado, que não consegue ler o cookie da sua sessão nem interferir na página do TREK ao redor.',
'admin.plugins.security.permsTitle': 'O que as permissões significam',
'admin.plugins.security.permsBody':
'As permissões exibidas antes da instalação são um limite rígido que o TREK impõe enquanto o plugin roda — ele literalmente não consegue fazer nada que não esteja na lista. Mas elas dizem o que um plugin pode fazer, não o que ele de fato faz. Um plugin autorizado a ler suas viagens e a acessar um servidor pode enviar suas viagens para esse servidor, então leia as permissões e os hosts de saída, não apenas a descrição.',
'admin.plugins.security.limitsTitle': 'O que não podemos garantir',
'admin.plugins.security.limitsBody':
'O isolamento é uma barreira de software forte, mas não absoluta. Um plugin age exatamente com as permissões que você aprova, então, dentro dessas permissões, ele pode se comportar de forma diferente do que a descrição sugere e pode enviar dados que legitimamente possui aos hosts que declarou. O TREK não lê nem julga o que o código de um plugin de fato faz.',
'admin.plugins.security.worstTitle': 'O pior cenário',
'admin.plugins.security.worstBody':
'Um plugin hostil que você ativa pode fazer mau uso dos dados e das conexões que você concedeu a ele — por exemplo, vazar as viagens que ele tem permissão para ler. Ele não pode roubar senhas, forjar um login de admin, executar comandos no seu servidor nem acessar dados que você não concedeu. O dano fica restrito ao que você aprovou, e desativar o plugin o interrompe.',
'admin.plugins.security.reviewedTitle': 'O que significa "Revisado"',
'admin.plugins.security.reviewedBody':
'Um plugin revisado foi verificado manualmente em busca de malware por um mantenedor do TREK em cada versão — checado quanto a código malicioso, não quanto a funcionar bem. Não é uma promessa de que o plugin seja inofensivo.',
'admin.plugins.security.signedTitle': 'O que significa "Assinado"',
'admin.plugins.security.signedBody':
'A soma de verificação que o TREK confere em toda instalação prova que os arquivos são exatamente aqueles pelos quais o registro responde. Uma assinatura prova algo diferente: que eles vieram do autor, assinados com uma chave que só ele possui. Um plugin assinado tem as duas coisas. Um plugin sem assinatura não é inseguro — ele apenas carrega uma garantia a menos, e hoje a maioria dos plugins do registro não é assinada.',
'admin.plugins.signed': 'Assinado',
'admin.plugins.signedHint': 'Verificado contra a chave de assinatura do autor no momento da instalação',
'admin.plugins.unsigned': 'Sem assinatura',
'admin.plugins.unsignedHint':
'Os arquivos correspondem àquilo pelo qual o registro responde, mas nada os liga ao autor. Uma garantia a menos — não é inseguro.',
'admin.plugins.updateBlocked': 'Atualização bloqueada — {reason}',
'admin.plugins.reviewBlock': 'Revisar',
'admin.plugins.retrusted': 'Nova chave de assinatura confiada — o plugin foi atualizado',
'admin.plugins.sig.title': 'Não foi possível verificar a assinatura de {name}',
'admin.plugins.sig.keyChangedBody':
'A chave de assinatura do autor não é aquela com a qual este plugin foi instalado. Autores realmente trocam de chave — mas um invasor que tivesse assumido o plugin se pareceria exatamente com isto.',
'admin.plugins.sig.invalidBody':
'Os arquivos não correspondem à assinatura do autor. Eles não são o que o autor assinou — ou foram corrompidos, ou foram adulterados. Isso não pode ser ignorado.',
'admin.plugins.sig.missingBody':
'Este plugin estava assinado quando você o instalou, mas a nova versão não traz assinatura alguma. O TREK não vai aceitar essa perda em silêncio. Isso não pode ser ignorado.',
'admin.plugins.sig.incompleteBody':
'A entrada no registro está assinada pela metade: ela declara uma chave do autor, mas a versão não traz assinatura (ou o contrário). Isso é um erro do lado do plugin. Isso não pode ser ignorado.',
'admin.plugins.sig.pinnedKey': 'Chave com que foi instalado',
'admin.plugins.sig.newKey': 'Chave que ele está oferecendo agora',
'admin.plugins.sig.confirmOutOfBand':
'O TREK não consegue distinguir uma troca legítima de chave de um sequestro do plugin — daqui, as duas coisas são idênticas. Confirme a nova chave com o autor por um canal em que você já confia antes de aceitá-la. Assim que aceitar, o plugin é atualizado e a nova chave passa a ser lembrada.',
'admin.plugins.sig.retrustConfirm': 'Confiar na nova chave e atualizar',
'admin.plugins.sig.cancel': 'Não confiar',
'admin.plugins.sig.consentUnsigned':
'Nada liga esta versão ao seu autor — os arquivos correspondem ao registro, mas não trazem assinatura do autor.',
'admin.plugins.security.trustTitle': 'Em resumo',
'admin.plugins.security.trustBody':
'Instalar um plugin é como instalar qualquer app de terceiros: adicione apenas código de autores em quem você confia e, em caso de dúvida, inspecione-o você mesmo antes. O TREK não assume nenhuma responsabilidade por plugins de terceiros.',
'admin.plugins.runtimeOn': 'Runtime ativo',
'admin.plugins.tabDiscover': 'Descobrir',
'admin.plugins.searchPlaceholder': 'Buscar plugins…',
'admin.plugins.filterType': 'Tipo',
'admin.plugins.filterStatus': 'Status',
'admin.plugins.sortBy': 'Ordenar',
'admin.plugins.allTypes': 'Todos os tipos',
'admin.plugins.allStatuses': 'Todos',
'admin.plugins.stateOff': 'Desligado',
'admin.plugins.filterUpdate': 'Atualização disponível',
'admin.plugins.sortName': 'Nome',
'admin.plugins.sortRecent': 'Atualizados recentemente',
'admin.plugins.sortUpdates': 'Atualizações primeiro',
'admin.plugins.sortDownloads': 'Mais baixados',
'admin.plugins.updatesAvailable': '{count} atualizações disponíveis para seus plugins.',
'admin.plugins.newerNeedsTrek': 'v{version} disponível — requer TREK {range}',
'admin.plugins.versionsTitle': 'Versões',
'admin.plugins.versionPickerTitle': 'Alterar versão — {name}',
'admin.plugins.versionSwitch': 'Mudar para {version}',
'admin.plugins.versionNeedsTrek': 'requer TREK {range}',
'admin.plugins.changeVersion': 'Alterar versão…',
'admin.plugins.noVersions': 'Nenhuma versão publicada encontrada no registro.',
'admin.plugins.downgradeTitle': 'Reverter este plugin?',
'admin.plugins.downgradeBody': 'Mudando de v{from} para v{to}: os dados gravados pela versão mais recente permanecem no lugar, e a versão mais antiga pode não entendê-los.',
'admin.plugins.downgradeConfirm': 'Reverter',
'admin.plugins.updatesHeld': 'Atualizações pausadas em v{version}',
'admin.plugins.resumeUpdates': 'Retomar atualizações',
'admin.plugins.updatesResumed': 'Atualizações retomadas',
'admin.plugins.updateAll': 'Atualizar todos',
'admin.plugins.noMatchInstalled': 'Nenhum plugin instalado corresponde à sua busca.',
'admin.plugins.noMatchRegistry': 'Nenhum plugin no registro corresponde à sua busca.',
'admin.plugins.restart': 'Reiniciar',
'admin.plugins.restarted': 'Plugin reiniciado',
'admin.plugins.cap.readsTrips': 'Lê suas viagens',
'admin.plugins.cap.readsUsers': 'Lê perfis básicos',
'admin.plugins.cap.readsCosts': 'Lê suas despesas',
'admin.plugins.cap.readsPacking': 'Lê listas de bagagem',
'admin.plugins.cap.readsFiles': 'Lê arquivos de viagem',
'admin.plugins.cap.writesCosts': 'Adiciona despesas',
'admin.plugins.cap.writesPlaces': 'Edita locais',
'admin.plugins.cap.writesDays': 'Edita dias',
'admin.plugins.cap.writesItinerary': 'Edita o itinerário',
'admin.plugins.cap.writesTrips': 'Edita viagens',
'admin.plugins.cap.metadata': 'Adiciona metadados',
'admin.plugins.cap.widget': 'Widget do painel',
'admin.plugins.cap.heroWidget': 'Widget de cartão de embarque',
'admin.plugins.cap.placeSlot': 'Detalhe do local',
'admin.plugins.cap.daySlot': 'Detalhe do dia',
'admin.plugins.cap.reservationSlot': 'Detalhe da reserva',
'admin.plugins.cap.replacesTabs': 'Substitui abas do planejador',
'admin.plugins.cap.realtime': 'Atualizações em tempo real',
'admin.plugins.cap.notificationChannel': 'Canal de notificação',
'admin.plugins.cap.photos': 'Fornece fotos',
'admin.plugins.cap.calendar': 'Fornece eventos de calendário',
'admin.plugins.cap.placeDetails': 'Enriquece locais',
'admin.plugins.cap.warnings': 'Sinaliza problemas',
'admin.plugins.cap.mapLayers': 'Desenha no mapa',
'admin.plugins.cap.routing': 'Oferece roteamento',
'admin.plugins.cap.daySchedule': 'Adiciona horários ao plano',
'admin.plugins.cap.dayTint': 'Colore os dias',
'admin.plugins.cap.geolocation': 'Lê sua localização',
'admin.plugins.cap.events': 'Reage a atividades',
'admin.plugins.cap.requiresAddon': 'Requer {addon}',
'admin.plugins.cap.dependsOn': 'Requer {id} {version}',
'admin.plugins.dep.addonDisabledToast': 'Ative primeiro os complementos necessários: {addons}',
'admin.plugins.dep.autoEnabled': 'Plugins necessários ativados primeiro: {plugins}',
'admin.plugins.dep.downloaded': '{id} baixado',
'admin.plugins.dep.resolveTitle': 'Dependências ausentes',
'admin.plugins.dep.resolveBody': '“{name}” precisa que estes plugins estejam instalados antes de ser ativado.',
'admin.plugins.dep.requires': 'Requer {version}',
'admin.plugins.dep.mismatch': 'Requer {wanted} — {installed} está instalado',
'admin.plugins.dep.download': 'Baixar',
'admin.plugins.dep.update': 'Atualizar',
'admin.plugins.dep.resolveHint': 'Baixa a versão compatível mais recente, incluindo suas próprias dependências.',
'admin.plugins.dep.trekIncompatible': 'Requer TREK {range} — este servidor executa {host}',
'admin.plugins.dep.trekUnknown': 'Não informa quais versões do TREK são compatíveis',
'admin.plugins.installCompatible': 'Instalar {version}',
'admin.plugins.incompatible': 'Incompatível',
'admin.plugins.accessTitle': 'O que ele pode acessar',
'admin.plugins.connectsTitle': 'Conecta-se a',
'admin.plugins.detailsTitle': 'Detalhes',
'admin.plugins.noAccess': 'Não precisa de acesso especial.',
'admin.plugins.metaVersion': 'Versão',
'admin.plugins.metaSize': 'Tamanho',
'admin.plugins.metaRequires': 'Requer',
'admin.plugins.metaReviewed': 'Revisado em',
'admin.plugins.downloads': 'Downloads',
'admin.addons.title': 'Complementos',
'admin.addons.subtitle': 'Ative ou desative recursos para personalizar sua experiência no TREK.',
'admin.addons.catalog.memories.name': 'Memórias',
'admin.addons.catalog.memories.description': 'Álbuns de fotos compartilhados em cada viagem',
'admin.addons.catalog.packing.name': 'Listas',
'admin.addons.catalog.packing.description': 'Listas de bagagem e tarefas a fazer para suas viagens',
'admin.addons.catalog.budget.name': 'Custos',
'admin.addons.catalog.budget.description': 'Acompanhe despesas e planeje o orçamento da viagem',
'admin.addons.catalog.documents.name': 'Documentos',
'admin.addons.catalog.documents.description': 'Armazene e gerencie documentos de viagem',
'admin.addons.catalog.vacay.name': 'Férias',
'admin.addons.catalog.vacay.description': 'Planejador de férias pessoal com visão em calendário',
'admin.addons.catalog.atlas.name': 'Atlas',
'admin.addons.catalog.atlas.description': 'Mapa mundial com países visitados e estatísticas',
'admin.addons.catalog.collab.name': 'Colab',
'admin.addons.catalog.collab.description': 'Notas, enquetes e chat em tempo real para planejar a viagem',
'admin.addons.catalog.mcp.name': 'MCP',
'admin.addons.catalog.mcp.description': 'Model Context Protocol para integração com assistentes de IA',
'admin.addons.subtitleBefore': 'Ative ou desative recursos para personalizar sua ',
'admin.addons.subtitleAfter': ' experiência.',
'admin.addons.enabled': 'Ativado',
'admin.addons.disabled': 'Desativado',
'admin.addons.type.trip': 'Viagem',
'admin.addons.type.global': 'Global',
'admin.addons.type.integration': 'Integração',
'admin.addons.tripHint': 'Disponível como aba em cada viagem',
'admin.addons.globalHint': 'Disponível como seção própria na navegação principal',
'admin.addons.toast.updated': 'Complemento atualizado',
'admin.addons.toast.error': 'Falha ao atualizar complemento',
'admin.addons.noAddons': 'Nenhum complemento disponível',
'admin.addons.integrationHint': 'Serviços de backend e integrações de API sem página dedicada',
'admin.weather.title': 'Dados meteorológicos',
'admin.weather.badge': 'Desde 24 de março de 2026',
'admin.weather.description':
'O TREK usa Open-Meteo como fonte de clima. Open-Meteo é um serviço gratuito e de código aberto — sem chave de API.',
'admin.weather.forecast': 'Previsão de 16 dias',
'admin.weather.forecastDesc': 'Antes eram 5 dias (OpenWeatherMap)',
'admin.weather.climate': 'Dados climáticos históricos',
'admin.weather.climateDesc': 'Médias dos últimos 85 anos para dias além da previsão de 16 dias',
'admin.weather.requests': '10.000 requisições / dia',
'admin.weather.requestsDesc': 'Grátis, sem chave de API',
'admin.weather.locationHint':
'O clima usa o primeiro lugar com coordenadas de cada dia. Se nenhum lugar estiver atribuído ao dia, qualquer lugar da lista serve como referência.',
'admin.tabs.audit': 'Auditoria',
'admin.audit.subtitle': 'Eventos sensíveis de segurança e administração (backups, usuários, 2FA, configurações).',
'admin.audit.empty': 'Nenhum registro de auditoria.',
'admin.audit.refresh': 'Atualizar',
'admin.audit.loadMore': 'Carregar mais',
'admin.audit.showing': '{count} carregados · {total} no total',
'admin.audit.col.time': 'Hora',
'admin.audit.col.user': 'Usuário',
'admin.audit.col.action': 'Ação',
'admin.audit.col.resource': 'Recurso',
'admin.audit.col.ip': 'IP',
'admin.audit.col.details': 'Detalhes',
'admin.tabs.github': 'GitHub',
'admin.github.title': 'Histórico de versões',
'admin.github.subtitle': 'Últimas atualizações de {repo}',
'admin.github.latest': 'Mais recente',
'admin.github.prerelease': 'Pré-lançamento',
'admin.github.showDetails': 'Mostrar detalhes',
'admin.github.hideDetails': 'Ocultar detalhes',
'admin.github.loadMore': 'Carregar mais',
'admin.github.loading': 'Carregando...',
'admin.github.error': 'Falha ao carregar versões',
'admin.github.by': 'por',
'admin.github.support': 'Ajuda a continuar desenvolvendo o TREK',
'admin.update.available': 'Atualização disponível',
'admin.update.text': 'O TREK {version} está disponível. Você está na {current}.',
'admin.update.button': 'Ver no GitHub',
'admin.update.install': 'Instalar atualização',
'admin.update.confirmTitle': 'Instalar atualização?',
'admin.update.confirmText':
'O TREK será atualizado de {current} para {version}. O servidor reiniciará automaticamente em seguida.',
'admin.update.dataInfo':
'Todos os seus dados (viagens, usuários, chaves de API, envios, Vacay, Atlas, orçamentos) serão preservados.',
'admin.update.warning': 'O app ficará brevemente indisponível durante o reinício.',
'admin.update.confirm': 'Atualizar agora',
'admin.update.installing': 'Atualizando…',
'admin.update.success': 'Atualização instalada! O servidor está reiniciando…',
'admin.update.failed': 'Falha na atualização',
'admin.update.backupHint': 'Recomendamos criar um backup antes de atualizar.',
'admin.update.backupLink': 'Ir para Backup',
'admin.update.howTo': 'Como atualizar',
'admin.update.dockerText': 'Sua instância TREK roda no Docker. Para atualizar para {version}, execute no servidor:',
'admin.update.nonDockerText':
'Esta instância do TREK não está rodando no Docker. Para atualizar para {version}, execute novamente o método de instalação ou atualização que você usou — por exemplo, no Proxmox Community Scripts, execute a atualização a partir do console do LXC:',
'admin.update.wikiLink': 'Abrir o guia de atualização',
'admin.update.reloadHint': 'Recarregue a página em alguns segundos.',
'admin.tabs.permissions': 'Permissões',
'admin.tabs.mcpTokens': 'Acesso MCP',
'admin.mcpTokens.title': 'Acesso MCP',
'admin.mcpTokens.subtitle': 'Gerenciar sessões OAuth e tokens de API de todos os usuários',
'admin.mcpTokens.sectionTitle': 'Tokens de API',
'admin.mcpTokens.owner': 'Proprietário',
'admin.mcpTokens.tokenName': 'Nome do Token',
'admin.mcpTokens.created': 'Criado',
'admin.mcpTokens.lastUsed': 'Último uso',
'admin.mcpTokens.never': 'Nunca',
'admin.mcpTokens.empty': 'Nenhum token MCP foi criado ainda',
'admin.mcpTokens.deleteTitle': 'Excluir Token',
'admin.mcpTokens.deleteMessage':
'Isso revogará o token imediatamente. O usuário perderá o acesso MCP por este token.',
'admin.mcpTokens.deleteSuccess': 'Token excluído',
'admin.mcpTokens.deleteError': 'Falha ao excluir token',
'admin.mcpTokens.loadError': 'Falha ao carregar tokens',
'admin.oauthSessions.sectionTitle': 'Sessões OAuth',
'admin.oauthSessions.clientName': 'Cliente',
'admin.oauthSessions.owner': 'Proprietário',
'admin.oauthSessions.scopes': 'Permissões',
'admin.oauthSessions.created': 'Criado',
'admin.oauthSessions.empty': 'Nenhuma sessão OAuth ativa',
'admin.oauthSessions.revokeTitle': 'Revogar sessão',
'admin.oauthSessions.revokeMessage': 'Esta sessão OAuth será revogada imediatamente. O cliente perderá o acesso MCP.',
'admin.oauthSessions.revokeSuccess': 'Sessão revogada',
'admin.oauthSessions.revokeError': 'Falha ao revogar sessão',
'admin.oauthSessions.loadError': 'Falha ao carregar sessões OAuth',
'admin.notifications.emailPanel.title': 'Email (SMTP)',
'admin.notifications.webhookPanel.title': 'Webhook',
'admin.notifications.inappPanel.title': 'In-App',
'admin.notifications.inappPanel.hint':
'As notificações no aplicativo estão sempre ativas e não podem ser desativadas globalmente.',
'admin.notifications.adminWebhookPanel.title': 'Webhook de admin',
'admin.notifications.adminWebhookPanel.hint':
'Este webhook é usado exclusivamente para notificações de admin (ex. alertas de versão). É independente dos webhooks de usuários e dispara automaticamente quando uma URL está configurada.',
'admin.notifications.adminWebhookPanel.saved': 'URL do webhook de admin salva',
'admin.notifications.adminWebhookPanel.testSuccess': 'Webhook de teste enviado com sucesso',
'admin.notifications.adminWebhookPanel.testFailed': 'Falha no webhook de teste',
'admin.notifications.adminWebhookPanel.alwaysOnHint':
'O webhook de admin dispara automaticamente quando uma URL está configurada',
'admin.notifications.ntfy': 'Ntfy',
'admin.ntfy.hint':
'Permite que os usuários configurem seus próprios tópicos ntfy para notificações push. Configure o servidor padrão abaixo para preencher as configurações do usuário.',
'admin.notifications.testNtfy': 'Enviar Ntfy de teste',
'admin.notifications.testNtfySuccess': 'Ntfy de teste enviado com sucesso',
'admin.notifications.testNtfyFailed': 'Falha ao enviar Ntfy de teste',
'admin.notifications.adminNtfyPanel.title': 'Ntfy de admin',
'admin.notifications.adminNtfyPanel.hint':
'Este tópico Ntfy é usado exclusivamente para notificações de admin (ex. alertas de versão). É independente dos tópicos por usuário e sempre dispara quando configurado.',
'admin.notifications.adminNtfyPanel.serverLabel': 'URL do servidor Ntfy',
'admin.notifications.adminNtfyPanel.serverHint':
'Também usado como servidor padrão para notificações ntfy dos usuários. Deixe em branco para usar ntfy.sh. Os usuários podem substituir isso em suas próprias configurações.',
'admin.notifications.adminNtfyPanel.serverPlaceholder': 'https://ntfy.sh',
'admin.notifications.adminNtfyPanel.topicLabel': 'Tópico de admin',
'admin.notifications.adminNtfyPanel.topicPlaceholder': 'trek-admin-alerts',
'admin.notifications.adminNtfyPanel.tokenLabel': 'Token de acesso (opcional)',
'admin.notifications.adminNtfyPanel.tokenCleared': 'Token de acesso admin removido',
'admin.notifications.adminNtfyPanel.saved': 'Configurações de Ntfy de admin salvas',
'admin.notifications.adminNtfyPanel.test': 'Enviar Ntfy de teste',
'admin.notifications.adminNtfyPanel.testSuccess': 'Ntfy de teste enviado com sucesso',
'admin.notifications.adminNtfyPanel.testFailed': 'Falha ao enviar Ntfy de teste',
'admin.notifications.adminNtfyPanel.alwaysOnHint': 'O Ntfy de admin sempre dispara quando um tópico está configurado',
'admin.notifications.adminNotificationsHint':
'Configure quais canais entregam notificações de admin (ex. alertas de versão). O webhook dispara automaticamente se uma URL de webhook de admin estiver definida.',
'admin.notifications.tripReminders.title': 'Lembretes de viagem',
'admin.notifications.tripReminders.hint':
'Envia uma notificação de lembrete antes do início de uma viagem (requer dias de lembrete definidos na viagem).',
'admin.notifications.tripReminders.enabled': 'Lembretes de viagem ativados',
'admin.notifications.tripReminders.disabled': 'Lembretes de viagem desativados',
'admin.tabs.notifications': 'Notificações',
'admin.addons.catalog.journey.name': 'Jornada',
'admin.addons.catalog.journey.description':
'Rastreamento de viagens e diário de viajante com check-ins, fotos e histórias diárias',
'admin.addons.catalog.collections.name': 'Coleções',
'admin.addons.catalog.collections.description':
'Biblioteca pessoal de lugares — salve lugares entre viagens em listas nomeadas, copie para qualquer viagem, compartilhe com outras pessoas',
'admin.passkey.title': 'Login com passkey',
'admin.passkey.cardHint': 'Permite que os usuários entrem com passkeys (WebAuthn). Desativado por padrão.',
'admin.passkey.login': 'Ativar login com passkey',
'admin.passkey.loginHint':
'Mostra a opção "Entrar com uma passkey" e permite que os usuários cadastrem passkeys nas configurações.',
'admin.passkey.notConfigured':
'Nenhum domínio WebAuthn é resolvido para esta instalação ainda. Defina APP_URL ou o Relying Party ID abaixo — as passkeys ficam ocultas até lá.',
'admin.passkey.rpId': 'Relying Party ID (domínio)',
'admin.passkey.rpIdHint':
'O domínio puro ao qual as passkeys ficam vinculadas, ex.: trek.example.org. Deixe vazio para derivá-lo de APP_URL. Alterá-lo depois invalida as passkeys existentes.',
'admin.passkey.origins': 'Origens permitidas',
'admin.passkey.originsHint':
'Origens completas separadas por vírgula, ex.: https://trek.example.org. Deixe vazio para usar APP_URL.',
'admin.passkey.reset': 'Redefinir passkeys',
'admin.passkey.resetHint':
'Remove todas as passkeys deste usuário (ex.: em caso de perda do dispositivo). Ele ainda poderá entrar com a senha.',
'admin.passkey.resetConfirm': 'Remover todas as passkeys de {name}?',
'admin.passkey.resetDone': 'Removida(s) {count} passkey(s)',
'admin.defaultSettings.mapProvider': 'Motor de mapas',
'admin.defaultSettings.mapProviderHint':
'O mapa padrão para todos nesta instância. Cada usuário ainda pode substituí-lo nas próprias configurações.',
'admin.defaultSettings.providerLeaflet': 'Padrão (gratuito)',
'admin.defaultSettings.providerMapbox': 'Mapbox (3D)',
'admin.defaultSettings.providerMapLibre': 'MapLibre (OpenFreeMap)',
'admin.defaultSettings.mapboxToken': 'Token compartilhado do Mapbox',
'admin.defaultSettings.mapboxTokenHint':
'Usado para todos os usuários que não inseriram o próprio token — assim toda a instância usa o Mapbox sem compartilhar a chave individualmente. Armazenado de forma criptografada.',
'admin.defaultSettings.mapboxStyle': 'Estilo do mapa',
'admin.defaultSettings.mapboxStylePlaceholder': 'Escolha um estilo…',
'admin.defaultSettings.mapbox3d': 'Edifícios & relevo em 3D',
'admin.defaultSettings.mapboxQuality': 'Modo de alta qualidade',
'admin.defaultSettings.cartoKey': 'Chave CARTO compartilhada',
'admin.defaultSettings.cartoKeyHint':
"Usada para todos os usuários que não inseriram a própria chave, assim toda a instância recebe blocos do CARTO sem marca d'água. Armazenada de forma criptografada.",
'admin.group.users': 'Users',
'admin.group.config': 'Configuration',
'admin.group.integration': 'Integrations',
'admin.group.maintenance': 'Maintenance',
'admin.invite.tripLabel': 'Adicionar à viagem (opcional)',
'admin.invite.tripNone': 'Nenhuma viagem',
'admin.invite.tripHint': 'O novo usuário é adicionado automaticamente a esta viagem ao se registrar pelo link.',
'admin.invite.boundTo': 'adiciona a {trip}',
};
export default admin;