Posted 6 hours ago6 hr Administrators 📦 LDG MuWeb CMS – Changelog TécnicoVersão: 1.1.0Atualizado em: junho de 2025Responsável: Marco Junior (LDG-Tech Services)✅ Refatorações Estruturais🧬 Nova arquitetura de internacionalização com GettextSubstituído o sistema de tradução baseado em localization/*.json por arquivos padrão .mo, com compatibilidade total com o ecossistema GNU Gettext.Diretório de idiomas padronizado agora em:application/data/locale/{lang}/LC_MESSAGES/messages.moSuporte a pluralização, placeholders dinâmicos (%s, %d) e tradução no backend e frontend via sistema Gettext/JED.Implementado suporte global às funções __(), n__(), _() por meio de Translator::register().🧠 Alterações de código💡 Classe Locales (antiga locales)Reconstruída com PSR padrão (Locales com L maiúsculo).Caminho interno ajustado para application/data/locale/.Métodos:allLanguages(): detecta idiomas com base em pastas disponíveis.languageByCode() e nativeByCode(): nomes nativos e legíveis.availableLocaleDirectories(): retorna os diretórios de idiomas.💡 Classe initializeAgora converte arquivos .mo via Translations:fromMoFile().Gera .jed string automaticamente para consumo por JavaScript.Substituído uso antigo de arquivos .json por estrutura PO/MO.Detecção automática de idioma via cookie dmn_language, com fallback configurável por país.💡 Classe controllerinitializeTranslations() criado para registrar globalmente o idioma com Translator.Propriedade $availableLanguages agora popula dinamicamente os idiomas da pasta data/locale/.Propriedade $translations mantém instância acessível programaticamente.🔧 Ajustes no Bootstrap (index.php)Verificação rígida da existência de:constants.phpvendor/autoload.php (com mensagem de erro se ausente)Inclusão garantida do autoloader do Composer:require_once BASEDIR. 'vendor/autoload.php';Ambiente (ENVIRONMENT) tratado dinamicamente para exibir erros apenas em desenvolvimento.📘 Bibliotecas & Dependências📦 PHPCompatibilidade verificada com PHP 8.2+Aplicação atualizada com uso de:strict_types=1Tipagem moderna de propriedades e retorno de métodosOperadores ??, match, mixed, readonly em contextos apropriados (futuros)Uso de declare(strict_types=1); em todos os arquivos principais📦 ComposerAdicionado e verificado:"gettext/gettext": "^4.8"⚠️ Observação: versão anterior ^5.7 removida por incompatibilidade com Translator::register()Outras dependências atualizadas:geoip2/geoip2symfony/mailertracy/tracystripe/stripe-phpxendit/xendit-php, entre outras🧪 Ferramentas auxiliares🛠️ Conversor JSON → PO/MOScript PHP criado para automatizar conversão de arquivos *.json antigos:$source = json_decode(file_get_contents('en.json'), true); $translations = Translations::create('messages'); foreach ($source['messages'][''] as $msgid => $msgstr) { $translations->insert(null, $msgid)->setTranslation($msgstr[0] ?? ''); } Po::toFile($translations, 'messages.po'); Mo::toFile($translations, 'messages.mo');Arquivo .mo gerado com sucesso a partir de .po, pronto para uso por Gettext e frontend com JED.🧩 Compatibilidade com legadoAPIs e métodos antigos que esperavam .json foram descontinuados.Fallback seguro implementado para idioma padrão 'en' caso .mo esteja ausente.Detecção AJAX mantida para impedir exportação JED durante requisições assíncronas.📚 Próximos passos sugeridosGerar painel administrativo para importação/validação de .po/.moAdicionar middleware para troca de idioma via rota (/lang/pt_BR)Criar testes automatizados para verificação de cobertura linguística (e.g. PO Validator)Adicionar validação de domínio .mo extra (ex: admin.mo, panel.mo) para áreas distintasAtenciosamente!LDG - Tech Game services
📦 LDG MuWeb CMS – Changelog Técnico
Versão: 1.1.0
Atualizado em: junho de 2025
Responsável: Marco Junior (LDG-Tech Services)
✅ Refatorações Estruturais
🧬 Nova arquitetura de internacionalização com Gettext
Substituído o sistema de tradução baseado em
localization/*.json
por arquivos padrão.mo
, com compatibilidade total com o ecossistema GNU Gettext.Diretório de idiomas padronizado agora em:
application/data/locale/{lang}/LC_MESSAGES/messages.mo
Suporte a pluralização, placeholders dinâmicos (
%s
,%d
) e tradução no backend e frontend via sistema Gettext/JED.Implementado suporte global às funções
__()
,n__()
,_()
por meio deTranslator::register()
.🧠 Alterações de código
💡 Classe
Locales
(antigalocales
)Reconstruída com PSR padrão (
Locales
com L maiúsculo).Caminho interno ajustado para
application/data/locale/
.Métodos:
allLanguages()
: detecta idiomas com base em pastas disponíveis.languageByCode()
enativeByCode()
: nomes nativos e legíveis.availableLocaleDirectories()
: retorna os diretórios de idiomas.💡 Classe
initialize
Agora converte arquivos
.mo
viaTranslations:fromMoFile()
.Gera
.jed
string automaticamente para consumo por JavaScript.Substituído uso antigo de arquivos
.json
por estrutura PO/MO.Detecção automática de idioma via cookie
dmn_language
, com fallback configurável por país.💡 Classe
controller
initializeTranslations()
criado para registrar globalmente o idioma comTranslator
.Propriedade
$availableLanguages
agora popula dinamicamente os idiomas da pastadata/locale/
.Propriedade
$translations
mantém instância acessível programaticamente.🔧 Ajustes no Bootstrap (
index.php
)Verificação rígida da existência de:
constants.php
vendor/autoload.php
(com mensagem de erro se ausente)Inclusão garantida do autoloader do Composer:
require_once BASEDIR. 'vendor/autoload.php';
Ambiente (
ENVIRONMENT
) tratado dinamicamente para exibir erros apenas em desenvolvimento.📘 Bibliotecas & Dependências
📦 PHP
Compatibilidade verificada com PHP 8.2+
Aplicação atualizada com uso de:
strict_types=1
Tipagem moderna de propriedades e retorno de métodos
Operadores
??
,match
,mixed
,readonly
em contextos apropriados (futuros)Uso de
declare(strict_types=1);
em todos os arquivos principais📦 Composer
Adicionado e verificado:
"gettext/gettext": "^4.8"
⚠️ Observação: versão anterior
^5.7
removida por incompatibilidade comTranslator::register()
Outras dependências atualizadas:
geoip2/geoip2
symfony/mailer
tracy/tracy
stripe/stripe-php
xendit/xendit-php
, entre outras🧪 Ferramentas auxiliares
🛠️ Conversor JSON → PO/MO
Script PHP criado para automatizar conversão de arquivos
*.json
antigos:$source = json_decode(file_get_contents('en.json'), true); $translations = Translations::create('messages'); foreach ($source['messages'][''] as $msgid => $msgstr) { $translations->insert(null, $msgid)->setTranslation($msgstr[0] ?? ''); } Po::toFile($translations, 'messages.po'); Mo::toFile($translations, 'messages.mo');
Arquivo
.mo
gerado com sucesso a partir de.po
, pronto para uso por Gettext e frontend com JED.🧩 Compatibilidade com legado
APIs e métodos antigos que esperavam
.json
foram descontinuados.Fallback seguro implementado para idioma padrão
'en'
caso.mo
esteja ausente.Detecção AJAX mantida para impedir exportação JED durante requisições assíncronas.
📚 Próximos passos sugeridos
Gerar painel administrativo para importação/validação de
.po
/.mo
Adicionar middleware para troca de idioma via rota (
/lang/pt_BR
)Criar testes automatizados para verificação de cobertura linguística (e.g. PO Validator)
Adicionar validação de domínio
.mo
extra (ex:admin.mo
,panel.mo
) para áreas distintasAtenciosamente!
LDG - Tech Game services