- 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
WordPress PT-PT Translation System v1.0.0
Sistema eficiente de traduções WordPress para Português Europeu com correcção automática de marcas, conversão PT-BR→PT-PT e validação de qualidade.
Quick Start
# 1. Inicializar base de dados (primeira vez)
python3 wp-translate-ptpt.py --init-db
# 2. Processar ficheiro individual
python3 wp-translate-ptpt.py /path/to/plugin-pt_PT.po
# 3. Processar biblioteca inteira (só marcas)
python3 wp-translate-ptpt.py --brands-only --batch /biblioteca/
# 4. Tradução completa de novo plugin
python3 wp-translate-ptpt.py /novo-plugin-pt_PT.po
Features
✅ Correcção automática de marcas — Detecta "Formulários Fluentes" → "Fluent Forms" ✅ 98 marcas seed — Fluent Forms, Rank Math, Elementor, WooCommerce, etc. ✅ 50+ regras PT-BR→PT-PT — gerenciar→gerir, deletar→eliminar, senha→palavra-passe ✅ Cache SQLite — Traduções reutilizadas, processamento rápido ✅ Validação qualidade — Preserva placeholders (%s, %d) e HTML tags ✅ Batch processing — Centenas de ficheiros em segundos ✅ Backup/rollback — Reversão automática em caso de erro ✅ Compilação .mo — Automática e tolerante a erros
Arquitectura
6 Classes Core
BrandProtector → Detecta e corrige marcas traduzidas literalmente
TranslationEngine → LibreTranslate API wrapper com retry
PoFileHandler → Parser/writer ficheiros .po
CacheManager → SQLite cache + auditoria
QualityValidator → Validação placeholders/HTML/PT-BR
TranslationProcessor → Orquestrador pipeline 9 etapas
Pipeline de 9 Etapas
1. Parse .po → PoEntry objects
2. Brand protection (pre-translation)
3. Filter (cache check)
4. Translate (LibreTranslate)
5. Restore brands
6. PT-BR fixes
7. Brand correction (post-translation)
8. Quality validation
9. Save + compile .mo
Modos de Uso
Single File
python3 wp-translate-ptpt.py /path/to/plugin-pt_PT.po
Batch Processing
python3 wp-translate-ptpt.py --batch /biblioteca/
Brands Only (sem traduzir, só corrigir marcas)
python3 wp-translate-ptpt.py --brands-only ficheiro.po
python3 wp-translate-ptpt.py --brands-only --batch /biblioteca/
Dry Run (simular sem alterar)
python3 wp-translate-ptpt.py --dry-run ficheiro.po
Database Management
# Inicializar
python3 wp-translate-ptpt.py --init-db
# Exportar marcas
python3 wp-translate-ptpt.py --export-brands brands.json
# Importar marcas
python3 wp-translate-ptpt.py --import-brands brands.json
Base de Dados SQLite
Localização: wp-translations.db
3 Tabelas
brands → 98 marcas seed + auto-detectadas
translations → Cache traduções (MD5 hash lookup)
corrections → Log auditoria de todas as correcções
Marcas Seed (98 total)
Fluent Forms, FluentCRM, Fluent SMTP, Rank Math, Elementor,
Elementor Pro, WooCommerce, WPForms, Wordfence, UpdraftPlus,
WP Rocket, Loco Translate, Bit Integrations, Element Pack,
ElementsKit, Happy Addons, Real Cookie Banner, Google,
Facebook, Instagram, PayPal, Stripe, WordPress, ...
Conversões PT-BR → PT-PT (50+ regras)
salvar → guardar
deletar → eliminar
gerenciar → gerir
senha → palavra-passe
arquivo → ficheiro
atualiz* → actualiz*
voce → o utilizador
habilitar → activar
desabilitar → desactivar
cadastro → registo
Traduções Literais Detectadas (15+)
"Fluent Forms" → ["Formulários Fluentes", "Formas Fluentes"]
"Rank Math" → ["Matemática de Classificação"]
"Happy Addons" → ["Complementos Felizes"]
"Wordfence" → ["Cerca de Palavras"]
"Element Pack" → ["Pacote de Elementos"]
Performance
Teste individual (FluentForm):
- 53 marcas corrigidas
- Tempo: 1.2s
Batch (241 ficheiros):
- 15 marcas corrigidas
- Tempo: 42.8s
- Velocidade: ~5.6 ficheiros/segundo
Dependências
pip install requests # LibreTranslate API
# gettext tools (msgfmt) - já incluído na maioria das distros Linux
Configuração LibreTranslate
API URL (default): https://translate.descomplicar.pt/translate
Auth: Whitelist IP (sem API key)
Rate limit: 0.3s entre chamadas
Troubleshooting
Erros msgfmt
Alguns ficheiros têm erros msgfmt pré-existentes (placeholders perdidos, headers inválidos). O script continua processamento e avisa, mas não falha.
Ficheiros duplicados
A biblioteca pode ter duplicados em diferentes localizações. O script processa todos.
Cache
Para limpar cache: rm wp-translations.db e executar --init-db novamente.
Ficheiros
wp-translate-ptpt.py → Script principal (~950 linhas)
wp-translations.db → Base de dados SQLite
CHANGELOG.md → Histórico de versões
REPORT-FINAL-*.md → Reports de execução
README.md → Esta documentação
Scripts Anteriores
Este script substitui:
translate-wordpress-plugin.py(v1.0)translate_missing.py(v2.0 LibreTranslate)fix_ptbr.py(conversões PT-BR)fix_malformed.py(correcções sintaxe)
Próximos Passos
-
Manutenção mensal:
python3 wp-translate-ptpt.py --brands-only --batch /biblioteca/ -
Novos plugins:
python3 wp-translate-ptpt.py /novo-plugin-pt_PT.po -
Auditoria PT-BR:
grep -r "gerenciar\|deletar\|voce" *.po
Contribuir
- Adicionar novas marcas: editar
SEED_BRANDS(linha ~800) - Adicionar regras PT-BR: editar
PTBR_TO_PTPT(linha ~400) - Adicionar mapeamentos literais: editar
LITERAL_TRANSLATIONS(linha ~200)
Versão
v1.0.0 — 2026-02-23
Autor: Descomplicar® Crescimento Digital Licença: Proprietário Python: 3.8+