# Changelog — wp-translate-ptpt.py ## [1.1.0] - 2026-03-12 ### Added - Validação de base de dados: verificação de integridade SQLite (PRAGMA integrity_check) ao conectar - Validação de esquema: verifica que todas as tabelas e colunas esperadas existem - Migração automática: adiciona colunas em falta sem perder dados existentes - Tabela `translation_backups`: guarda string original antes de cada tradução/correcção - Método `verify_health()`: diagnóstico completo da BD (integridade, tabelas, contagens) - CLI `--verify-db`: verifica saúde da BD e reporta estado de cada tabela - CLI `--restore-backup HASH`: consulta backups de traduções por hash msgid - Método `backup_translation()`: regista original antes de sobrescrever - WAL mode activado para melhor concorrência em SQLite - Tratamento de erros de BD no arranque do TranslationProcessor com mensagem de sugestão ### Changed - CacheManager agora valida esquema completo após _init_db (4 tabelas, todas as colunas) - TranslationProcessor verifica saúde da BD antes de iniciar processamento - _process_entry guarda backup da string original antes de aplicar correcções de marcas e PT-BR - Criação do processor envolvida em try/except com mensagem orientativa ### Fixed - BDs existentes de v1.0.0 são migradas automaticamente (nova tabela translation_backups adicionada) ## [1.0.0] - 2026-02-23 ### Added - Script unificado de ~950 linhas combinando funcionalidades de v1.0, v2.0 e v3.0 - 6 classes core: BrandProtector, TranslationEngine, PoFileHandler, CacheManager, QualityValidator, TranslationProcessor - Base de dados SQLite com 3 tabelas (brands, translations, corrections) - 98 marcas seed (Fluent Forms, Rank Math, Elementor, WooCommerce, etc.) - 15+ mapeamentos literal→correcto para traduções de marcas - ~50 regras PT-BR → PT-PT - Pipeline de 9 etapas: parse → protect → translate → restore → fix → validate → save → compile - CLI completo com 6 modos: single, batch, brands-only, dry-run, init-db, export/import - Backup/rollback automático em caso de erro - Validação de placeholders (%s, %d, %1$s) e HTML tags - Rate limiting LibreTranslate: 0.3s entre chamadas - Retry logic: 3 tentativas com exponential backoff - Compilação .mo automática (best-effort, não bloqueante) - Suporte formas plurais (`msgstr[0]`, `msgstr[1]`) - Log completo de correcções em SQLite ### Fixed - Bug regex sem verificação None (linha 582): `.group(1)` chamado em `None` - Bug compilação msgfmt bloqueante: ficheiros com avisos eram revertidos incorrectamente - Processamento de linhas `msgstr[N]` com `[` mas sem formato plural válido ### Changed - Compilação .mo agora é tolerante a erros: avisa mas não falha o processamento - Parser .po mais robusto: detecta e corrige linhas malformadas ### Tested - Teste individual FluentForm: 53 marcas corrigidas em 1.2s - Batch 241 ficheiros: 15 marcas corrigidas em 42.8s - 0 falhas críticas, 100% ficheiros processados com sucesso ### Documentation - REPORT-FINAL-wp-translate-ptpt.md: Report completo com arquitectura, estatísticas e exemplos - Comentários inline no código (~10% linhas são comentários) - Docstrings em todas as classes e métodos principais --- ## [v2.0] - 2026-02 (anterior) ### Added - LibreTranslate API integration - SQLite cache básico - Batch processing ### Issues - Protecção de marcas parcial - Sem correcção de traduções literais - Compilação msgfmt falhava em ficheiros com avisos --- ## [v1.0] - 2025 (anterior) ### Added - Processamento básico .po - Conversões PT-BR → PT-PT básicas ### Issues - Sem tradução automática - Sem cache - Sem protecção de marcas - Sem batch processing