Files
TREK/shared/src/i18n/br/settings.ts
T
Maurice 6bf2e0708d feat(client): add the Startup section to General settings
Desktop and mobile both get it, in the style of the file they live in -
the On/Off button pairs on desktop, segments and a picker sheet on mobile.
The tab picker only appears once "Active trip" is chosen, since there is
nothing for it to mean otherwise.

Labels come from the same keys the planner's tab bar uses, so the picker
can never name a tab differently from the tab itself.
2026-08-08 23:01:40 +02:00

527 lines
33 KiB
TypeScript

import type { TranslationStrings } from '../types';
const settings: TranslationStrings = {
'settings.title': 'Configurações',
'settings.subtitle': 'Ajuste suas preferências pessoais',
'settings.tabs.display': 'Exibição',
'settings.tabs.map': 'Mapa',
'settings.tabs.notifications': 'Notificações',
'settings.tabs.integrations': 'Integrações',
'settings.plugins.oauth.connected': 'Conectado',
'settings.plugins.oauth.notConnected': 'Não conectado',
'settings.plugins.oauth.connect': 'Conectar',
'settings.plugins.oauth.disconnect': 'Desconectar',
'settings.tabs.plugins': 'Plugins',
'settings.plugins.title': 'Configurações de plugins',
'settings.plugins.subtitle':
'Suas configurações pessoais para os plugins que você usa (chaves de API, preferências).',
'settings.plugins.empty': 'Nenhum plugin ativo.',
'settings.plugins.saved': 'Configurações salvas',
'settings.tabs.account': 'Conta',
'settings.tabs.offline': 'Offline',
'settings.tabs.about': 'Sobre',
'settings.map': 'Mapa',
'settings.mapTemplate': 'Modelo de mapa',
'settings.mapTemplatePlaceholder.select': 'Selecione o modelo...',
'settings.mapDefaultHint': 'Deixe vazio para OpenStreetMap (padrão)',
'settings.mapHint': 'URL do modelo de blocos do mapa',
'settings.mapProvider': 'Provedor de mapa',
'settings.mapProviderHint': 'Afeta os mapas do Planejador de Viagem e Diário. Atlas sempre usa Leaflet.',
'settings.mapLeafletSubtitle': 'Clássico 2D, quaisquer blocos raster',
'settings.mapMapboxSubtitle': 'Blocos vetoriais, prédios 3D & terreno',
'settings.mapMapLibreSubtitle': 'Blocos vetoriais OpenFreeMap, sem token',
'settings.mapExperimental': 'Experimental',
'settings.mapMapboxToken': 'Token de acesso Mapbox',
'settings.mapMapboxTokenHint': 'Token público (pk.*) de',
'settings.mapMapboxTokenLink': 'mapbox.com → Tokens de acesso',
'settings.mapStyle': 'Estilo do mapa',
'settings.mapStylePlaceholder': 'Selecionar um estilo Mapbox',
'settings.mapStyleHint': 'Preset ou sua própria URL mapbox://styles/USER/ID',
'settings.mapOpenFreeMapStylePlaceholder': 'Selecionar um estilo OpenFreeMap',
'settings.mapOpenFreeMapStyleHint':
'Preset ou URL de estilo OpenFreeMap. Os estilos OpenFreeMap funcionam sem token.',
'settings.map3dBuildings': 'Prédios 3D & terreno',
'settings.map3dHint': 'Inclinação + extrusões 3D reais de prédios — funciona em todo estilo, incluindo satélite.',
'settings.mapHighQuality': 'Modo alta qualidade',
'settings.mapHighQualityHint':
'Antialiasing + projeção global para bordas mais nítidas e uma visão realista do mundo.',
'settings.mapHighQualityWarning': 'Pode afetar o desempenho em dispositivos menos potentes.',
'settings.mapTipLabel': 'Dica:',
'settings.mapTip':
'Clique direito e arraste para girar/inclinar o mapa. Clique do meio para adicionar um local (o clique direito é reservado para rotação).',
'settings.saveMap': 'Salvar mapa',
'settings.apiKeys': 'Chaves de API',
'settings.mapsKey': 'Chave da API Google Maps',
'settings.mapsKeyHint': 'Para busca de lugares. Requer Places API (New). Obtenha em console.cloud.google.com',
'settings.weatherKey': 'Chave OpenWeatherMap',
'settings.weatherKeyHint': 'Para dados meteorológicos. Grátis em openweathermap.org/api',
'settings.keyPlaceholder': 'Digite a chave...',
'settings.configured': 'Configurada',
'settings.saveKeys': 'Salvar chaves',
'settings.display': 'Exibição',
'settings.colorMode': 'Tema de cores',
'settings.light': 'Claro',
'settings.dark': 'Escuro',
'settings.auto': 'Automático',
'settings.language': 'Idioma',
'settings.temperature': 'Unidade de temperatura',
'settings.distance': 'Unidade de distância',
'settings.timeFormat': 'Formato de hora',
'settings.blurBookingCodes': 'Ocultar códigos de reserva',
'settings.aiAlwaysRetry': 'Always retry booking imports with AI',
'settings.aiAlwaysRetryHint': 'When a file cannot be read by the standard parser, automatically retry it with AI.',
'settings.optimizeFromAccommodation': 'Otimizar rota a partir da hospedagem',
'settings.optimizeFromAccommodationHint':
'Ao otimizar um dia, comece a rota no hotel onde você acorda e termine no hotel em que você faz check-in à noite.',
'settings.notifications': 'Notificações',
'settings.notifyTripInvite': 'Convites de viagem',
'settings.notifyBookingChange': 'Alterações de reserva',
'settings.notifyTripReminder': 'Lembretes de viagem',
'settings.notifyTodoDue': 'Tarefa com vencimento',
'settings.notifyVacayInvite': 'Convites de fusão Vacay',
'settings.notifyVacayShare': 'Compartilhamentos de calendário Vacay',
'settings.notifyPhotosShared': 'Fotos compartilhadas (Immich)',
'settings.notifyCollabMessage': 'Mensagens de chat (Colab)',
'settings.notifyPackingTagged': 'Lista de mala: atribuições',
'settings.notifyWebhook': 'Notificações webhook',
'settings.notificationsDisabled':
'As notificações não estão configuradas. Peça a um administrador para ativar notificações por e-mail ou webhook.',
'settings.notificationsActive': 'Canal ativo',
'settings.notificationsManagedByAdmin': 'Os eventos de notificação são configurados pelo administrador.',
'settings.on': 'Ligado',
'settings.off': 'Desligado',
'settings.account': 'Conta',
'settings.about': 'Sobre',
'settings.about.reportBug': 'Reportar um bug',
'settings.about.reportBugHint': 'Encontrou um problema? Nos avise',
'settings.about.featureRequest': 'Solicitar recurso',
'settings.about.featureRequestHint': 'Sugira um novo recurso',
'settings.about.wikiHint': 'Documentação e guias',
'settings.about.supporters.badge': 'Apoiadores Mensais',
'settings.about.supporters.title': 'Companheiros de viagem do TREK',
'settings.about.supporters.subtitle':
'Enquanto você planeja sua próxima rota, essas pessoas planejam junto o futuro do TREK. A contribuição mensal delas vai direto para o desenvolvimento e horas reais investidas — para o TREK continuar Open Source.',
'settings.about.supporters.since': 'apoiador desde {date}',
'settings.about.supporters.tierEmpty': 'Seja o primeiro',
'settings.about.supporter.tier.noReturnTicket': 'No Return Ticket',
'settings.about.supporter.tier.lostLuggageVip': 'Lost Luggage VIP',
'settings.about.supporter.tier.businessClassDreamer': 'Business Class Dreamer',
'settings.about.supporter.tier.budgetTraveller': 'Budget Traveller',
'settings.about.supporter.tier.hostelBunkmate': 'Hostel Bunkmate',
'settings.about.description':
'TREK é um planejador de viagens auto-hospedado que ajuda você a organizar suas viagens da primeira ideia à última lembrança. Planejamento diário, orçamento, listas de bagagem, fotos e muito mais — tudo em um só lugar, no seu próprio servidor.',
'settings.about.madeWith': 'Feito com',
'settings.about.madeBy': 'por Maurice e uma crescente comunidade open-source.',
'settings.username': 'Nome de usuário',
'settings.email': 'E-mail',
'settings.role': 'Função',
'settings.roleAdmin': 'Administrador',
'settings.oidcLinked': 'Vinculado a',
'settings.changePassword': 'Alterar senha',
'settings.currentPassword': 'Senha atual',
'settings.currentPasswordRequired': 'A senha atual é obrigatória',
'settings.newPassword': 'Nova senha',
'settings.confirmPassword': 'Confirmar nova senha',
'settings.updatePassword': 'Atualizar senha',
'settings.passwordRequired': 'Informe a senha atual e a nova',
'settings.passwordTooShort': 'A senha deve ter pelo menos 8 caracteres',
'settings.passwordMismatch': 'As senhas não coincidem',
'settings.passwordWeak': 'A senha deve ter maiúscula, minúscula, número e um caractere especial',
'settings.passwordChanged': 'Senha alterada com sucesso',
'settings.deleteAccount': 'Excluir conta',
'settings.deleteAccountTitle': 'Excluir sua conta?',
'settings.deleteAccountWarning':
'Sua conta e todas as viagens, lugares e arquivos serão excluídos permanentemente. Esta ação não pode ser desfeita.',
'settings.deleteAccountConfirm': 'Excluir permanentemente',
'settings.deleteBlockedTitle': 'Exclusão não permitida',
'settings.deleteBlockedMessage':
'Você é o único administrador. Promova outro usuário a administrador antes de excluir sua conta.',
'settings.roleUser': 'Usuário',
'settings.saveProfile': 'Salvar perfil',
'settings.toast.mapSaved': 'Configurações do mapa salvas',
'settings.toast.keysSaved': 'Chaves de API salvas',
'settings.toast.displaySaved': 'Configurações de exibição salvas',
'settings.toast.profileSaved': 'Perfil salvo',
'settings.uploadAvatar': 'Enviar foto do perfil',
'settings.removeAvatar': 'Remover foto do perfil',
'settings.avatarUploaded': 'Foto do perfil atualizada',
'settings.avatarRemoved': 'Foto do perfil removida',
'settings.avatarError': 'Falha no envio',
'settings.avatarRemoveError': 'Falha ao remover',
'settings.mfa.title': 'Autenticação em duas etapas (2FA)',
'settings.mfa.description':
'Adiciona uma segunda etapa ao entrar com e-mail e senha. Use um app autenticador (Google Authenticator, Authy, etc.).',
'settings.mfa.requiredByPolicy':
'O administrador exige autenticação em dois fatores. Configure um app autenticador abaixo antes de continuar.',
'settings.mfa.backupTitle': 'Códigos de backup',
'settings.mfa.backupDescription': 'Use estes códigos únicos se perder acesso ao app autenticador.',
'settings.mfa.backupWarning': 'Salve estes códigos agora. Cada código pode ser usado apenas uma vez.',
'settings.mfa.backupCopy': 'Copiar códigos',
'settings.mfa.backupDownload': 'Baixar TXT',
'settings.mfa.backupPrint': 'Imprimir / PDF',
'settings.mfa.backupCopied': 'Códigos de backup copiados',
'settings.mfa.enabled': 'O 2FA está ativado na sua conta.',
'settings.mfa.disabled': 'O 2FA não está ativado.',
'settings.mfa.setup': 'Configurar autenticador',
'settings.mfa.scanQr': 'Leia este QR code no app ou digite o segredo manualmente.',
'settings.mfa.secretLabel': 'Chave secreta (entrada manual)',
'settings.mfa.codePlaceholder': 'Código de 6 dígitos',
'settings.mfa.enable': 'Ativar 2FA',
'settings.mfa.cancelSetup': 'Cancelar',
'settings.mfa.disableTitle': 'Desativar 2FA',
'settings.mfa.disableHint': 'Digite sua senha e um código atual do autenticador.',
'settings.mfa.disable': 'Desativar 2FA',
'settings.mfa.toastEnabled': 'Autenticação em duas etapas ativada',
'settings.mfa.toastDisabled': 'Autenticação em duas etapas desativada',
'settings.mfa.demoBlocked': 'Indisponível no modo demonstração',
'settings.mcp.title': 'Configuração MCP',
'settings.mcp.endpoint': 'Endpoint MCP',
'settings.mcp.clientConfig': 'Configuração do cliente',
'settings.mcp.clientConfigHint':
'Substitua <your_token> por um token de API da lista abaixo. O caminho para o npx pode precisar ser ajustado para o seu sistema (ex.: C:\\PROGRA~1\\nodejs\\npx.cmd no Windows).',
'settings.mcp.clientConfigHintOAuth':
'Substitua <your_client_id> e <your_client_secret> pelas credenciais exibidas no cliente OAuth 2.1 criado acima. O mcp-remote abrirá seu navegador para concluir a autorização na primeira conexão. O caminho para o npx pode precisar ser ajustado para seu sistema (ex.: C:\\PROGRA~1\\nodejs\\npx.cmd no Windows).',
'settings.mcp.copy': 'Copiar',
'settings.mcp.copied': 'Copiado!',
'settings.mcp.apiTokens': 'Tokens de API',
'settings.mcp.createToken': 'Criar novo token',
'settings.mcp.noTokens': 'Nenhum token ainda. Crie um para conectar clientes MCP.',
'settings.mcp.tokenCreatedAt': 'Criado em',
'settings.mcp.tokenUsedAt': 'Usado em',
'settings.mcp.deleteTokenTitle': 'Excluir token',
'settings.mcp.deleteTokenMessage':
'Este token deixará de funcionar imediatamente. Qualquer cliente MCP que o utilize perderá o acesso.',
'settings.mcp.modal.createTitle': 'Criar token de API',
'settings.mcp.modal.tokenName': 'Nome do token',
'settings.mcp.modal.tokenNamePlaceholder': 'ex.: Claude Desktop, Notebook do trabalho',
'settings.mcp.modal.creating': 'Criando…',
'settings.mcp.modal.create': 'Criar token',
'settings.mcp.modal.createdTitle': 'Token criado',
'settings.mcp.modal.createdWarning':
'Este token será exibido apenas uma vez. Copie e guarde agora — não poderá ser recuperado.',
'settings.mcp.modal.done': 'Concluído',
'settings.mcp.toast.created': 'Token criado',
'settings.mcp.toast.createError': 'Falha ao criar token',
'settings.mcp.toast.deleted': 'Token excluído',
'settings.mcp.toast.deleteError': 'Falha ao excluir token',
'settings.mcp.apiTokensDeprecated':
'Os tokens de API estão obsoletos e serão removidos em uma versão futura. Por favor, use Clientes OAuth 2.1.',
'settings.oauth.clients': 'Clientes OAuth 2.1',
'settings.oauth.clientsHint':
'Registre clientes OAuth 2.1 para permitir que aplicações MCP de terceiros (Claude Web, Cursor, etc.) se conectem sem tokens estáticos.',
'settings.oauth.createClient': 'Novo cliente',
'settings.oauth.noClients': 'Nenhum cliente OAuth registrado.',
'settings.oauth.clientId': 'ID do cliente',
'settings.oauth.clientSecret': 'Segredo do cliente',
'settings.oauth.deleteClient': 'Excluir cliente',
'settings.oauth.deleteClientMessage':
'Este cliente e todas as sessões ativas serão removidos permanentemente. Qualquer aplicação que o utilize perderá o acesso imediatamente.',
'settings.oauth.rotateSecret': 'Renovar segredo',
'settings.oauth.rotateSecretMessage':
'Um novo segredo de cliente será gerado e todas as sessões existentes serão invalidadas imediatamente. Atualize sua aplicação antes de fechar esta janela.',
'settings.oauth.rotateSecretConfirm': 'Renovar',
'settings.oauth.rotateSecretConfirming': 'Renovando…',
'settings.oauth.rotateSecretDoneTitle': 'Novo segredo gerado',
'settings.oauth.rotateSecretDoneWarning':
'Este segredo é exibido apenas uma vez. Copie-o agora e atualize sua aplicação — todas as sessões anteriores foram invalidadas.',
'settings.oauth.activeSessions': 'Sessões OAuth ativas',
'settings.oauth.sessionScopes': 'Escopos',
'settings.oauth.sessionExpires': 'Expira',
'settings.oauth.revoke': 'Revogar',
'settings.oauth.revokeSession': 'Revogar sessão',
'settings.oauth.revokeSessionMessage': 'Isso revogará imediatamente o acesso desta sessão OAuth.',
'settings.oauth.modal.createTitle': 'Registrar cliente OAuth',
'settings.oauth.modal.presets': 'Configurações rápidas',
'settings.oauth.modal.clientName': 'Nome da aplicação',
'settings.oauth.modal.clientNamePlaceholder': 'ex.: Claude Web, Meu app MCP',
'settings.oauth.modal.redirectUris': 'URIs de redirecionamento',
'settings.oauth.modal.redirectUrisPlaceholder': 'https://your-app.com/callback\nhttps://your-app.com/auth',
'settings.oauth.modal.redirectUrisHint':
'Uma URI por linha. HTTPS obrigatório (localhost isento). Correspondência exata.',
'settings.oauth.modal.scopes': 'Escopos permitidos',
'settings.oauth.modal.scopesHint':
'list_trips e get_trip_summary estão sempre disponíveis — sem escopo necessário. Permitem à IA descobrir IDs de viagem.',
'settings.oauth.modal.selectAll': 'Selecionar tudo',
'settings.oauth.modal.deselectAll': 'Desmarcar tudo',
'settings.oauth.modal.creating': 'Registrando…',
'settings.oauth.modal.create': 'Registrar cliente',
'settings.oauth.modal.createdTitle': 'Cliente registrado',
'settings.oauth.modal.createdWarning':
'O segredo do cliente é exibido apenas uma vez. Copie-o agora — não pode ser recuperado.',
'settings.oauth.toast.createError': 'Falha ao registrar cliente OAuth',
'settings.oauth.toast.deleted': 'Cliente OAuth excluído',
'settings.oauth.toast.deleteError': 'Falha ao excluir cliente OAuth',
'settings.oauth.toast.revoked': 'Sessão revogada',
'settings.oauth.toast.revokeError': 'Falha ao revogar sessão',
'settings.oauth.toast.rotateError': 'Falha ao renovar segredo do cliente',
'settings.oauth.modal.machineClient': 'Cliente de máquina (sem login no navegador)',
'settings.oauth.modal.machineClientHint':
'Usa o grant client_credentials — sem URIs de redirecionamento. O token é emitido diretamente via client_id + client_secret e age como você dentro dos escopos selecionados.',
'settings.oauth.modal.machineClientUsage':
'Obter token: POST /oauth/token com grant_type=client_credentials, client_id e client_secret. Sem navegador, sem refresh token.',
'settings.oauth.badge.machine': 'máquina',
'settings.mustChangePassword': 'Você deve alterar sua senha antes de continuar. Defina uma nova senha abaixo.',
'settings.bookingLabels': 'Rótulos das rotas de reservas',
'settings.bookingLabelsHint': 'Mostra nomes de estações / aeroportos no mapa. Desativado, apenas o ícone aparece.',
'settings.notifyVersionAvailable': 'Nova versão disponível',
'settings.notificationPreferences.noChannels':
'Nenhum canal de notificação configurado. Peça a um administrador para configurar notificações por e-mail ou webhook.',
'settings.webhookUrl.label': 'URL do webhook',
'settings.webhookUrl.placeholder': 'https://discord.com/api/webhooks/...',
'settings.webhookUrl.hint':
'Insira a URL do seu webhook do Discord, Slack ou personalizado para receber notificações.',
'settings.webhookUrl.saved': 'URL do webhook salva',
'settings.webhookUrl.test': 'Testar',
'settings.webhookUrl.testSuccess': 'Webhook de teste enviado com sucesso',
'settings.webhookUrl.testFailed': 'Falha no webhook de teste',
'settings.ntfyUrl.topicLabel': 'Tópico Ntfy',
'settings.ntfyUrl.topicPlaceholder': 'my-trek-alerts',
'settings.ntfyUrl.serverLabel': 'URL do servidor Ntfy (opcional)',
'settings.ntfyUrl.serverPlaceholder': 'https://ntfy.sh',
'settings.ntfyUrl.hint':
'Insira seu tópico Ntfy para receber notificações push. Deixe o servidor em branco para usar o padrão configurado pelo seu administrador.',
'settings.ntfyUrl.tokenLabel': 'Token de acesso (opcional)',
'settings.ntfyUrl.tokenHint': 'Necessário para tópicos protegidos por senha.',
'settings.ntfyUrl.saved': 'Configurações do Ntfy salvas',
'settings.ntfyUrl.test': 'Testar',
'settings.ntfyUrl.testSuccess': 'Notificação de teste do Ntfy enviada com sucesso',
'settings.ntfyUrl.testFailed': 'Falha na notificação de teste do Ntfy',
'settings.ntfyUrl.tokenCleared': 'Token de acesso removido',
'settings.notificationPreferences.inapp': 'In-App',
'settings.notificationPreferences.notConfigured': 'Ainda não configurado — configure nas definições do plugin',
'settings.plugins.actions': 'Ações',
'settings.plugins.actions.confirm': 'Executar esta ação?',
'settings.notificationPreferences.sendTest': 'Enviar teste',
'settings.notificationPreferences.configure': 'Configurar',
'settings.notificationPreferences.testSuccess': 'Notificação de teste enviada.',
'settings.notificationPreferences.testFailed': 'Falha no teste.',
'settings.notificationPreferences.pluginConfigured':
'Configurado. Gerencie suas credenciais na página de configurações do plugin.',
'settings.notificationPreferences.webhook': 'Webhook',
'settings.notificationPreferences.email': 'Email',
'settings.notificationPreferences.ntfy': 'Ntfy',
'settings.currency': 'Moeda de exibição',
'settings.currencyHint':
'Os valores em Custos são exibidos convertidos para esta moeda apenas para visualização — os valores originais permanecem inalterados.',
'settings.currencyTrip': 'Moeda da viagem',
'settings.passkey.title': 'Passkeys',
'settings.passkey.description':
'Entre mais rápido e com proteção contra phishing usando uma passkey — sua impressão digital, rosto, PIN ou uma chave de segurança física. Sua senha continua disponível como reserva.',
'settings.passkey.notConfigured':
'As passkeys estão ativadas, mas ainda não foram totalmente configuradas neste servidor. Peça ao administrador para definir o domínio WebAuthn.',
'settings.passkey.add': 'Adicionar uma passkey',
'settings.passkey.addTitle': 'Adicionar uma passkey',
'settings.passkey.passwordPrompt': 'Confirme sua senha atual e depois siga as instruções do seu dispositivo.',
'settings.passkey.passwordRequired': 'A senha atual é obrigatória.',
'settings.passkey.namePlaceholder': 'Nome (opcional, ex.: "iPhone")',
'settings.passkey.addedToast': 'Passkey adicionada',
'settings.passkey.added': 'Adicionada',
'settings.passkey.addError': 'Não foi possível adicionar a passkey',
'settings.passkey.cancelled': 'Configuração da passkey cancelada',
'settings.passkey.deleted': 'Passkey removida',
'settings.passkey.deleteConfirm': 'Remover esta passkey? Confirme com sua senha.',
'settings.passkey.rename': 'Renomear',
'settings.passkey.defaultName': 'Passkey',
'settings.passkey.synced': 'Sincronizada',
'settings.passkey.deviceBound': 'Este dispositivo',
'settings.passkey.lastUsed': 'Último uso',
'settings.passkey.neverUsed': 'Nunca usada',
'settings.mapPoiPill': 'Explorar lugares no mapa',
'settings.mapPoiPillHint':
'Mostrar uma etiqueta de categoria no mapa da viagem para encontrar restaurantes, hotéis e mais por perto a partir do OpenStreetMap.',
'settings.airtrail.title': 'AirTrail',
'settings.airtrail.hint':
'Conecte seu AirTrail auto-hospedado para importar e sincronizar voos. Crie uma chave de API no AirTrail em Configurações → Segurança.',
'settings.airtrail.url': 'URL da instância',
'settings.airtrail.apiKey': 'Chave de API',
'settings.airtrail.apiKeyPlaceholder': 'Chave de API Bearer',
'settings.airtrail.apiKeyHint': 'Gerada no AirTrail em Configurações → Segurança. Armazenada de forma criptografada.',
'settings.airtrail.allowInsecureTls': 'Permitir certificados autoassinados',
'settings.airtrail.allowInsecureTlsHint': 'Ative apenas para uma instância confiável na sua própria rede.',
'settings.airtrail.writeBack': 'Gravar alterações de volta no AirTrail',
'settings.airtrail.writeBackHint':
'Desativado por padrão: o AirTrail é a fonte da verdade e o TREK apenas lê dele. Ative para enviar ao AirTrail as alterações feitas no TREK.',
'settings.airtrail.connected': 'Conectado',
'settings.airtrail.notConnected': 'Não conectado',
'settings.airtrail.toast.saved': 'Conexão com o AirTrail salva',
'settings.airtrail.toast.saveError': 'Não foi possível salvar a conexão',
'settings.airtrail.test.button': 'Testar conexão',
'settings.airtrail.test.success': 'Conectado — {count} voo(s) encontrado(s)',
'settings.airtrail.test.failed': 'Falha na conexão',
'settings.aiParsing.title': 'Análise por IA',
'settings.aiParsing.hint':
'Use seu próprio modelo de IA para extrair reservas dos arquivos enviados. Isso se aplica apenas quando o administrador não configurou um modelo para toda a instância.',
'settings.aiParsing.provider': 'Provedor',
'settings.aiParsing.providerLocal': 'Local (Ollama)',
'settings.aiParsing.providerOpenai': 'OpenAI',
'settings.aiParsing.providerAnthropic': 'Anthropic',
'settings.aiParsing.model': 'Modelo',
'settings.aiParsing.baseUrl': 'URL base',
'settings.aiParsing.baseUrlHint':
'Onde o modelo é executado — um servidor Ollama local ou um endpoint compatível com OpenAI.',
'settings.aiParsing.apiKey': 'Chave de API',
'settings.aiParsing.apiKeyHint': 'Armazenada de forma criptografada. Deixe em branco para manter a chave atual.',
'settings.aiParsing.multimodal': 'Enviar documentos como imagens',
'settings.aiParsing.multimodalHint':
'Para modelos com capacidade de visão — envia o PDF original em vez do texto extraído.',
'settings.aiParsing.toast.saved': 'Configurações de IA salvas',
'settings.aiParsing.toast.saveError': 'Não foi possível salvar as configurações de IA',
'settings.tabs.appearance': 'Appearance',
'settings.appearance.theme': 'Theme',
'settings.appearance.scheme': 'Color scheme',
'settings.appearance.scheme.default': 'Default',
'settings.appearance.scheme.highContrast': 'High contrast',
'settings.appearance.scheme.indigo': 'Indigo',
'settings.appearance.scheme.teal': 'Teal',
'settings.appearance.scheme.rose': 'Rose',
'settings.appearance.scheme.amber': 'Amber',
'settings.appearance.scheme.violet': 'Violet',
'settings.appearance.scheme.custom': 'Custom',
'settings.appearance.customAccent': 'Custom accent',
'settings.appearance.contrastOk': 'Good contrast',
'settings.appearance.contrastLow': 'Low contrast',
'settings.appearance.readability': 'Readability',
'settings.appearance.transparency': 'Transparency',
'settings.appearance.transparencyHint':
'Glassy translucent surfaces. Turn off for solid, higher-contrast backgrounds.',
'settings.appearance.reduceMotion': 'Reduce motion',
'settings.appearance.reduceMotionHint': 'Minimize animations and transitions.',
'settings.appearance.density': 'Density',
'settings.appearance.comfortable': 'Comfortable',
'settings.appearance.compact': 'Compact',
'settings.appearance.textSize': 'Text size',
'settings.appearance.advancedTextSizes': 'Advanced text sizes',
'settings.appearance.hideAdvanced': 'Hide advanced',
'settings.appearance.tier.title': 'Titles',
'settings.appearance.tier.subtitle': 'Subtitles',
'settings.appearance.tier.body': 'Body',
'settings.appearance.tier.caption': 'Captions',
'settings.appearance.dashboardWidgets': 'Dashboard widgets',
'settings.appearance.dashboardWidgetsHint': 'Show or hide dashboard widgets independently on desktop and mobile.',
'settings.appearance.desktop': 'Desktop',
'settings.appearance.mobile': 'Mobile',
'settings.appearance.widget.sidebar': 'Right sidebar',
'settings.appearance.widget.currency': 'Currency',
'settings.appearance.widget.collections': 'Coleções',
'settings.appearance.widget.timezones': 'Timezones',
'settings.appearance.widget.upcomingReservations': 'Upcoming reservations',
'settings.appearance.widget.atlas': 'Atlas / countries',
'settings.appearance.widget.tripsTotal': 'Trips total',
'settings.appearance.widget.daysTraveled': 'Days traveled',
'settings.appearance.widget.distanceFlown': 'Distance flown',
'settings.appearance.reset': 'Reset to defaults',
'settings.appearance.group.belowHero': 'Below the hero',
'settings.appearance.group.bottomOfPage': 'Bottom of page',
'settings.appearance.sidebarHint': 'The whole right column. Turn off and the dashboard centers.',
'settings.appearance.densityHint':
'Compact tightens spacing and padding for a denser layout that fits more on screen.',
'settings.appearance.textSizeAll': 'Everything',
'settings.appearance.perSize': 'Adjust each size separately',
'settings.appearance.size.large': 'Large',
'settings.appearance.size.medium': 'Medium',
'settings.appearance.size.normal': 'Normal',
'settings.appearance.size.small': 'Small',
'settings.appearance.preview.large': 'Large heading',
'settings.appearance.preview.medium': 'Medium subtitle',
'settings.appearance.preview.normal': 'Normal body text',
'settings.appearance.preview.small': 'Small caption / address',
'settings.appearance.example.large': 'Headings, big numbers',
'settings.appearance.example.medium': 'Sub-headings',
'settings.appearance.example.normal': 'Place names, descriptions',
'settings.appearance.example.small': 'Addresses, labels',
'settings.appearance.experimental': 'Experimental',
'settings.appearance.mobileNav': 'Barra inferior',
'settings.appearance.mobileNav.hint':
'Escolha quais itens aparecem na barra e quais ficam em “Mais”. O Dashboard vem sempre primeiro.',
'settings.appearance.mobileNav.inBar': 'Na barra',
'settings.appearance.mobileNav.underMore': 'Em “Mais”',
'settings.appearance.mobileNav.moreEmpty': 'Nada aqui ainda — tudo cabe na barra.',
'settings.appearance.mobileNav.pinned': 'Fixado',
'settings.appearance.mobileNav.toMore': 'Mover para “Mais”',
'settings.appearance.mobileNav.toBar': 'Mover para a barra',
'settings.appearance.dashOrder': 'Ordem do painel',
'settings.appearance.dashOrder.hint':
'Reorganize como a lista de viagens e os widgets se empilham no painel do celular. A viagem em destaque fica sempre no topo.',
'settings.appearance.dashOrder.trips': 'Viagens',
'settings.appearance.dashOrder.hidden': 'Oculto',
'settings.general.languageRegion': 'Language & region',
'settings.general.travelMap': 'Travel & map',
'settings.general.startup': 'Inicialização',
'settings.startPage': 'Página inicial',
'settings.startPageDashboard': 'Painel',
'settings.startPageActiveTrip': 'Viagem ativa',
'settings.startPageHint':
'O TREK abre direto na viagem que está acontecendo, ou na próxima que começa. É a mesma viagem que o painel destaca.',
'settings.startTripTab': 'Aba inicial',
'settings.startTripTabHint':
'A aba com que a viagem abre. Se ela pertencer a um complemento desativado, abre a visão de plano.',
// ── Offline (#1135)
'settings.offline.cache.title': 'Cache offline',
'settings.offline.mode.title': 'Modo offline',
'settings.offline.mode.force': 'Forçar modo offline',
'settings.offline.mode.forceHint':
'Trabalhe apenas com os dados em cache e enfileire suas alterações. Desative para reconectar e sincronizar.',
'settings.offline.mode.active':
'O modo offline está ligado — suas alterações estão na fila e serão sincronizadas quando você o desativar.',
'settings.offline.prepare.title': 'Preparar para uso offline',
'settings.offline.prepare.hint':
'Baixe tudo o que você precisa — dados da viagem, documentos e blocos do mapa — antes de perder a conexão.',
'settings.offline.prepare.button': 'Baixar para uso offline',
'settings.offline.prepare.running': 'Baixando…',
'settings.offline.prepare.done': 'Pronto para uso offline',
'settings.offline.prepare.phase.trips': 'Dados da viagem',
'settings.offline.prepare.phase.files': 'Documentos',
'settings.offline.prepare.phase.tiles': 'Blocos do mapa',
'settings.offline.resync': 'Sincronizar agora',
'settings.offline.resyncing': 'Sincronizando…',
'settings.offline.storage.title': 'O que armazenar offline',
'settings.offline.storage.tiles': 'Armazenar blocos do mapa offline',
'settings.offline.storage.tilesHint':
'Os blocos do mapa usam mais armazenamento. Desative para manter offline apenas os dados da viagem e os documentos.',
'settings.offline.storage.tripsTitle': 'Viagens',
'settings.offline.storage.tripOn': 'Armazenada offline',
'settings.offline.storage.tripOff': 'Não armazenada',
'settings.offline.clear': 'Limpar cache',
'settings.offline.clearConfirm':
'Limpar todos os dados de viagem offline? Você pode sincronizar novamente a qualquer momento quando estiver online.',
'settings.offline.stats.trips': 'Viagens em cache',
'settings.offline.stats.pending': 'Alterações pendentes',
'settings.offline.stats.failed': 'Alterações com falha',
'settings.offline.stats.conflicts': 'Conflitos',
'settings.offline.empty': 'Nenhuma viagem em cache ainda. Conecte-se à internet para sincronizar.',
'settings.offline.loading': 'Carregando…',
'settings.offline.conflicts.title': 'Conflitos de sincronização',
'settings.offline.conflicts.hint':
'As alterações que você fez offline conflitam com alterações mais recentes no servidor. Escolha qual versão manter.',
'settings.offline.conflicts.keepMine': 'Manter a minha',
'settings.offline.conflicts.keepServer': 'Manter a do servidor',
'settings.offline.conflicts.mine': 'Sua versão',
'settings.offline.conflicts.server': 'Versão do servidor',
'settings.offline.conflicts.item': 'Alteração em “{name}”',
'settings.offline.conflicts.strategyTitle': 'Quando ocorrer um conflito',
'settings.offline.conflicts.strategy.ask': 'Perguntar sempre',
'settings.offline.conflicts.strategy.mine': 'Sempre manter a minha versão',
'settings.offline.conflicts.strategy.server': 'Sempre manter a versão do servidor',
'settings.offline.banner.offline': 'Offline',
'settings.offline.banner.forced': 'Modo offline',
'settings.offline.banner.queued': 'Offline · {count} na fila',
'settings.offline.banner.syncing': 'Sincronizando {count}…',
'settings.offline.banner.failed': 'Falha ao sincronizar: {count}',
'settings.offline.banner.conflicts': 'Conflitos: {count}',
'settings.pluginActivity.title': 'Atividade dos plugins',
'settings.pluginActivity.description': 'Cada ação que um plugin realizou em seu nome, das mais recentes primeiro.',
'settings.pluginActivity.empty': 'Ainda não há atividade de plugins.',
'settings.pluginActivity.refresh': 'Atualizar',
'settings.pluginActivity.columns.plugin': 'Plugin',
'settings.pluginActivity.columns.action': 'Ação',
'settings.pluginActivity.columns.resource': 'Recurso',
'settings.pluginActivity.columns.when': 'Quando',
'settings.pluginActivity.columns.status': 'Resultado',
'settings.alwaysShowRoutes': 'Sempre mostrar rotas de reserva',
'settings.alwaysShowRoutesHint':
'Mostra automaticamente no mapa a rota de cada voo, trem e outra reserva, sem precisar ativar item por item.',
};
export default settings;