• v1.5.0 06e8fac0ad

    ESPDocs 1.5.0
    CI / Lint e auditorias (push) Successful in 45s
    CI / Trivy (dependências e segredos) (push) Successful in 9s
    CI / Imagem Docker (linux/arm64) (push) Successful in 2m25s
    Release / Plano (reaproveitar a imagem?) (push) Successful in 5s
    Release / ci (push) Skipped
    Release / Publica a imagem (linux/arm64) (push) Successful in 20s
    Release / Cria a release no Gitea (push) Successful in 5s
    Stable

    gitea-actions released this 2026-11-02 01:43:13 +00:00 | 5 commits to main since this release

    Imagem

    git.lucasrguerra.dev.br/lucasrguerra/espdocs:1.5.0
    

    Adicionado

    • Internacionalização completa para os idiomas Francês (fr) e Alemão (de) (Fase 5):
      • Ativação do francês e do alemão em ENABLED_LOCALES = ["pt", "en", "es", "fr", "de"] e no seletor de idiomas do cabeçalho.
      • Tradução técnica integral e paridade estrutural em messages/fr.json e messages/de.json (15 namespaces), nos arquivos de dados em data/{fr,de}/ (series.json, frameworks.json, conexoes/*.json) e lib/data/{fr,de}/ (glossario.js, diagnostico.js, componentes.js, topicos.js).
      • Tradução técnica natural com tratamento formal respeitado: "vous" em francês e "Sie" em alemão.
      • 14 exemplos práticos de código com comentários em francês e 14 em alemão em public/exemplos/{fr,de}/.
      • Slugs canônicos ASCII por idioma:
        • Francês: /fr/series, /fr/catalogue, /fr/comparaison, /fr/composants, /fr/diagnostic, /fr/frameworks, /fr/glossaire, /fr/selecteur, /fr/a-propos.
        • Alemão: /de/serien, /de/katalog, /de/vergleich, /de/komponenten, /de/diagnose, /de/frameworks, /de/glossar, /de/auswahl, /de/ueber-uns.
      • Busca dedicada por idioma em /api/busca/fr e /api/busca/de com normalização de acentos, caracteres alemães (ä, ö, ü, ß) e ligaduras francesas (œ, æ), sem menção ao livro e com links diretos aos slugs canônicos.
      • Exclusão total e estrita de referências ao livro fora do português, com /fr/livro e /de/livro respondendo HTTP 404 estrito.
      • Tabela do catálogo de placas com colunas traduzidas e mapeamento de valores técnicos nos idiomas francês e alemão.
      • Negociação de idioma na raiz com roteamento para fr ou de com base nos cabeçalhos Accept-Language ou cookies NEXT_LOCALE=fr / NEXT_LOCALE=de, e fallback padrão para en para navegadores com o idioma inativo restante (zh-CN).
      • Metadados de SEO, Open Graph e Twitter Cards localizados com og:locale (fr_FR, de_DE), inLanguage (fr, de) e hreflang cruzado entre pt-BR, en, es-419, fr-FR, de-DE e x-default.
      • Suporte CSS com hifenação automática (hyphens: auto) para alemão e francês via atributo lang dinâmico no layout raiz.
      • Extensão da suíte de verificação: scripts/check-i18n.mjs valida fr e de, scripts/smoke-imagem.sh testa as rotas francesas e alemãs e scripts/verifica-vazamentos.py varre todas as 36 rotas em francês e 36 em alemão (texto visível e blocos JSON-LD).

    Corrigido

    • O cabeçalho passou a caber em telas estreitas. Desde o seletor de idioma, a faixa de
      ícones ficava com ~410 px de largura mínima e o botão do menu era cortado em
      celulares (390 e 360 px). Agora o seletor fica compacto no celular e o logo mostra
      só o ícone abaixo de 360 px; sem rolagem horizontal de 320 px para cima.
    Downloads