Files
scripts/translate-wp-plugin/CHANGELOG.md
AikTop 44e2250eb7 feat(v1.1.0): validação de base de dados SQLite
- Verificação de integridade ao conectar (PRAGMA integrity_check)
- Validação de esquema completo (4 tabelas, todas as colunas)
- Migração automática de colunas em falta
- Tabela translation_backups para guardar originais antes de traduzir
- CLI --verify-db e --restore-backup
- WAL mode para melhor concorrência

Tarefa #419, Discussão #33, Projecto #65
2026-03-12 14:43:09 +00:00

3.6 KiB

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