• v1.2.0 22b1f26aed

    ESPDocs 1.2.0
    Release / Plano (reaproveitar a imagem?) (push) Successful in 5s
    Release / ci (push) Skipped
    Release / Publica a imagem (linux/arm64) (push) Successful in 17s
    Release / Cria a release no Gitea (push) Successful in 5s
    Stable

    gitea-actions released this 2026-11-01 15:29:11 +00:00 | 0 commits to main since this release

    Imagem

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

    Adicionado

    • Infraestrutura de internacionalização com next-intl (Fase 1):
      • Roteamento com prefixo de idioma sob app/[locale]/, com 6 locales declarados (pt, en, es, fr, de, zh-CN).
      • middleware.js com negociação de idioma na raiz por cookie NEXT_LOCALE e cabeçalho Accept-Language (com pesos q), redirecionamento 308 de URLs antigas sem prefixo para /pt/, e retorno 404 para /livro fora do português.
      • Seletor de idiomas acessível no cabeçalho com atalho para os 6 idiomas, persistência via cookie NEXT_LOCALE e mapeamento de rota correspondente.
      • Regras de tipografia de sistema CJK para zh-CN e hifenização/quebra de palavras para de e fr.
    • Extração de strings e dados canônicos (Fase 2):
      • Catálogo de mensagens canônico messages/pt.json cobrindo 15 namespaces de páginas e componentes sem alteração de conteúdo.
      • Conjunto de dados canônicos em data/pt/ (series.json, frameworks.json, conexoes/*.json) e módulos em lib/data/pt/ (glossario.js, diagnostico.js, componentes.js, topicos.js) com carregadores por locale em lib/data/index.js.
      • Script automatizado de validação check:i18n integrado ao npm run check, verificando paridade de chaves, ausência de valores vazios e garantia estrita de ausência de referências ao livro fora do português.
    • Controle de idiomas ativos e proteção contra conteúdo não traduzido:
      • Configuração centralizada em i18n/links.js (ENABLED_LOCALES), atualmente restrita a ["pt"].
      • Redirecionamento 307 de qualquer prefixo de idioma inativo para /pt preservando o caminho ou mapeamento equivalente.
      • Negociação de idioma na raiz selecionando unicamente entre os idiomas ativos (com fallback em pt).
      • Seletor de idiomas no cabeçalho oculto enquanto apenas um idioma estiver ativo.
      • Sitemap, hreflang/alternates e build SSG restritos aos idiomas ativos.

    Alterado

    • Todas as páginas passam a viver sob /pt/ (por exemplo /pt/series). As URLs
      antigas, sem prefixo, redirecionam com 308 para o endereço novo, e a raiz /
      redireciona para o idioma negociado. O conteúdo do site em português não mudou.
    • O teste de subida da imagem na CI virou scripts/smoke-imagem.sh: confere as
      rotas de cada idioma, a negociação de Accept-Language, os redirects 308 das
      URLs antigas, o 404 do livro fora do português e a metadata no <head>, e
      falha se o servidor registrar erro de render. O curl só na raiz deixou passar
      uma home quebrada.
    • A metadata (título, canonical, Open Graph) sempre sai no <head> do HTML
      inicial, para qualquer cliente, como já era antes do i18n.
    • A raiz / redireciona direto para /<idioma>, em um salto só.
    Downloads