Files
gh-christianlouis-docuelevate/frontend/translations/pt.json
T
copilot-swe-agent[bot] ff76855f29 feat(i18n): add internationalization framework with 10 languages
- Create i18n utility module (app/utils/i18n.py) with translation loading,
  browser language detection, AI fallback, and l10n helpers
- Add JSON translation files for EN, DE, FR, ES, IT, PT, NL, PL, ZH, RU
- Add preferred_language column to UserProfile model with migration
- Register _() translation function as Jinja2 global
- Update base.html with translated navigation, footer, cookie notice
- Add language selector dropdown in nav bar (desktop + mobile)
- Create API endpoints for language preference (POST/GET /api/i18n/)
- Support language detection: user profile > cookie > Accept-Language > default

Co-authored-by: christianlouis <361235+christianlouis@users.noreply.github.com>
2026-03-09 23:28:02 +00:00

191 lines
6.8 KiB
JSON

{
"app.name": "DocuElevate",
"nav.dashboard": "Painel",
"nav.upload": "Carregar",
"nav.files": "Ficheiros",
"nav.search": "Pesquisar",
"nav.pipelines": "Pipelines",
"nav.integrations": "Integrações",
"nav.help": "Ajuda",
"nav.notifications": "Notificações",
"nav.pricing": "Preços",
"nav.about": "Sobre",
"nav.admin": "Admin",
"nav.settings": "Definições",
"nav.users": "Utilizadores",
"nav.plan_designer": "Designer de planos",
"nav.credentials": "Credenciais",
"nav.file_manager": "Gestor de ficheiros",
"nav.duplicates": "Duplicados",
"nav.similarity": "Similaridade",
"nav.queue_monitor": "Monitor de fila",
"nav.scheduled_jobs": "Tarefas agendadas",
"nav.backup_restore": "Cópia de segurança e restauro",
"nav.status": "Estado",
"nav.api_docs": "Documentação API",
"nav.developer_docs": "Documentação para programadores",
"nav.dark_mode": "Modo escuro",
"nav.light_mode": "Modo claro",
"nav.toggle_dark_mode": "Alternar modo escuro",
"nav.toggle_nav": "Alternar menu de navegação",
"nav.open_main_menu": "Abrir menu principal",
"nav.skip_to_content": "Ir para o conteúdo principal",
"nav.main_navigation": "Navegação principal",
"nav.admin_menu": "Menu de administração",
"nav.admin_actions": "Ações de administração",
"nav.help_center": "Centro de ajuda",
"auth.login": "Iniciar sessão",
"auth.logout": "Terminar sessão",
"auth.signup": "Registar",
"auth.my_account": "A minha conta",
"auth.profile": "Perfil",
"footer.copyright": "DocuElevate {year}",
"footer.privacy": "Privacidade",
"footer.imprint": "Aviso legal",
"footer.terms": "Termos",
"footer.cookies": "Cookies",
"footer.license": "Licença",
"footer.attributions": "Atribuições",
"footer.version": "Versão {version}",
"footer.navigation": "Navegação do rodapé",
"cookie.notice": "O DocuElevate utiliza apenas cookies de sessão essenciais necessários para a autenticação e o funcionamento do serviço. Não são utilizados cookies de rastreamento ou analíticos.",
"cookie.policy_link": "Política de cookies",
"cookie.privacy_link": "Aviso de privacidade",
"cookie.accept": "Entendido",
"cookie.notice_label": "Aviso de cookies",
"common.save": "Guardar",
"common.cancel": "Cancelar",
"common.delete": "Eliminar",
"common.edit": "Editar",
"common.close": "Fechar",
"common.confirm": "Confirmar",
"common.back": "Voltar",
"common.next": "Seguinte",
"common.loading": "A carregar...",
"common.error": "Erro",
"common.success": "Sucesso",
"common.warning": "Aviso",
"common.info": "Informação",
"common.yes": "Sim",
"common.no": "Não",
"common.search": "Pesquisar",
"common.filter": "Filtrar",
"common.reset": "Repor",
"common.refresh": "Atualizar",
"common.download": "Descarregar",
"common.actions": "Ações",
"common.details": "Detalhes",
"common.name": "Nome",
"common.description": "Descrição",
"common.type": "Tipo",
"common.status": "Estado",
"common.date": "Data",
"common.size": "Tamanho",
"common.created": "Criado",
"common.updated": "Atualizado",
"common.enabled": "Ativado",
"common.disabled": "Desativado",
"common.active": "Ativo",
"common.inactive": "Inativo",
"common.all": "Tudo",
"common.none": "Nenhum",
"common.select": "Selecionar",
"common.upload": "Carregar",
"common.processing": "A processar",
"common.completed": "Concluído",
"common.failed": "Falhado",
"common.pending": "Pendente",
"common.retry": "Tentar novamente",
"common.view": "Ver",
"common.copy": "Copiar",
"common.copied": "Copiado!",
"language.selector": "Idioma",
"language.en": "English",
"language.de": "Deutsch",
"language.fr": "Français",
"language.es": "Español",
"language.it": "Italiano",
"language.pt": "Português",
"language.nl": "Nederlands",
"language.pl": "Polski",
"language.zh": "中文",
"language.ru": "Русский",
"language.changed": "Idioma alterado para {language}",
"dashboard.title": "Painel",
"dashboard.total_files": "Total de ficheiros",
"dashboard.files_today": "Ficheiros hoje",
"dashboard.files_this_month": "Ficheiros este mês",
"dashboard.ocr_processed": "OCR processados",
"dashboard.active_integrations": "Integrações ativas",
"dashboard.storage_targets": "Destinos de armazenamento",
"dashboard.recent_activity": "Atividade recente",
"dashboard.quick_actions": "Ações rápidas",
"dashboard.welcome": "Bem-vindo ao DocuElevate",
"upload.title": "Carregar documento",
"upload.drag_drop": "Arraste ficheiros para aqui ou clique para procurar",
"upload.select_file": "Selecionar ficheiro",
"upload.uploading": "A carregar...",
"upload.success": "Ficheiro carregado com sucesso",
"upload.error": "Falha ao carregar",
"upload.max_size": "Tamanho máximo do ficheiro: {size}",
"files.title": "Ficheiros",
"files.no_files": "Nenhum ficheiro encontrado",
"files.filename": "Nome do ficheiro",
"files.document_title": "Título do documento",
"files.uploaded": "Carregado",
"files.file_size": "Tamanho do ficheiro",
"files.ocr_status": "Estado OCR",
"files.tags": "Etiquetas",
"search.title": "Pesquisar documentos",
"search.placeholder": "Pesquisar por nome, conteúdo, etiquetas...",
"search.no_results": "Nenhum resultado encontrado",
"search.results_count": "{count} resultados encontrados",
"settings.title": "Definições",
"settings.save_success": "Definição guardada com sucesso",
"settings.save_error": "Falha ao guardar definição",
"settings.reset_confirm": "Tem a certeza de que pretende repor esta definição?",
"integrations.title": "Integrações",
"integrations.connect": "Ligar",
"integrations.disconnect": "Desligar",
"integrations.connected": "Ligado",
"integrations.not_connected": "Não ligado",
"integrations.configure": "Configurar",
"pipelines.title": "Pipelines de processamento",
"pipelines.create": "Criar pipeline",
"pipelines.edit": "Editar pipeline",
"help.title": "Centro de ajuda",
"help.getting_started": "Primeiros passos",
"help.faq": "Perguntas frequentes",
"help.documentation": "Documentação",
"help.support": "Suporte",
"error.not_found": "Página não encontrada",
"error.not_found_message": "A página que procura não existe.",
"error.server_error": "Erro interno do servidor",
"error.server_error_message": "Algo correu mal. Tente novamente mais tarde.",
"error.unauthorized": "Não autorizado",
"error.unauthorized_message": "Precisa de iniciar sessão para aceder a esta página.",
"error.forbidden": "Proibido",
"error.forbidden_message": "Não tem permissão para aceder a esta página.",
"notifications.title": "Notificações",
"notifications.mark_read": "Marcar como lida",
"notifications.mark_all_read": "Marcar todas como lidas",
"notifications.no_notifications": "Sem notificações",
"notifications.unread_count": "{count} notificações por ler"
}