Jump to content

[News] Version 1.1.0 Release Notes - Marco Junior

Posted
  • Administrators

📦 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 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 initialize

  • Agora 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 controller

  • initializeTranslations() 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.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 com Translator::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 distintas

Atenciosamente!

LDG - Tech Game services

Featured Replies

No posts to show
Guest
This topic is now closed to further replies.