Ferramentas de Documentação
A documentação é construída usando Docusaurus e está localizada na pasta documentation. A documentação é hospedada em GitHub Pages e não está mais incluída na imagem do contêiner Docker.
Estrutura de Pastas
documentation/
├── docs/ # Documentation markdown files (English source)
│ ├── api-reference/
│ ├── development/
│ ├── installation/
│ ├── migration/
│ ├── release-notes/
│ └── user-guide/
├── i18n/ # Translations (auto-generated by translation workflow)
│ ├── de/ # German
│ ├── es/ # Spanish
│ ├── fr/ # French
│ └── pt-BR/ # Brazilian Portuguese
├── src/ # React components and pages
│ ├── components/ # Custom React components
│ ├── css/ # Custom styles
│ └── pages/ # Additional pages (e.g., 404)
├── static/ # Static assets (images, files)
├── docusaurus.config.ts # Docusaurus configuration
├── sidebars.ts # Sidebar navigation configuration
├── package.json # Dependencies and scripts
└── .intlayer/ # Intlayer generated UI translation files (auto-generated)
Internacionalização (i18n)
A documentação usa o sistema de internacionalização integrado do Docusaurus, com inglês como idioma padrão. O conteúdo traduzido fica em i18n/{locale}/docusaurus-plugin-content-docs/current/, espelhando a estrutura da pasta docs/.
- Arquivos de origem:
docs/**/*.md(Inglês) - Arquivos traduzidos:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/*.md - Traduções de interface:
i18n/{locale}/docusaurus-theme-classic/*.jsone outros arquivos JSON - Capturas de tela localizadas:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/assets, geradas porpnpm take-screenhotsno diretório base.
O comando pnpm write-translations extrai strings de interface (do tema Docusaurus e componentes personalizados) para arquivos JSON de tradução. O script pnpm translate usa IA para traduzir tanto a documentação markdown quanto os arquivos JSON de interface.
Edite apenas arquivos em docs/ e os arquivos JSON de origem em i18n/en/. Os arquivos markdown traduzidos em i18n/{other-locales}/ são gerados automaticamente e não devem ser editados manualmente.
Locais Suportados
| Idioma | Língua | Diretório |
|---|---|---|
en | Inglês (padrão) | docs/ (origem) |
de | Alemão | i18n/de/docusaurus-plugin-content-docs/current/ |
es | Espanhol | i18n/es/docusaurus-plugin-content-docs/current/ |
fr | Francês | i18n/fr/docusaurus-plugin-content-docs/current/ |
pt-BR | Português Brasileiro | i18n/pt-BR/docusaurus-plugin-content-docs/current/ |
Traduzir a Documentação
A documentação usa um sistema de tradução com IA para traduzir tanto o conteúdo (arquivos markdown) quanto as strings de interface (do Docusaurus e componentes personalizados). O conteúdo de origem está em inglês (docs/), e as traduções são geradas para alemão, francês, espanhol e português brasileiro.
Como a Tradução Funciona
-
Extração de strings de interface:
pnpm write-translationsextrai strings traduzíveis da interface do Docusaurus e componentes personalizados para arquivos JSON emi18n/en/ -
Tradução de conteúdo:
pnpm translateusa OpenRouter AI para traduzir:- Arquivos markdown de
docs/→i18n/{locale}/docusaurus-plugin-content-docs/current/ - Strings de interface JSON de
i18n/en/→i18n/{locale}/ - Arquivos SVG de
static/img/duplistatus*.svg(traduz texto dentro de SVGs e exporta para PNG via Inkscape)
- Arquivos markdown de
-
Compilação:
pnpm buildgera HTML estático para todos os idiomas embuild/(um subdiretório por idioma)
Executando Tradução
cd documentation
pnpm translate # Translate everything to all locales
pnpm translate --force # force the translation of all files
pnpm translate --locale fr # Translate only to French
pnpm translate --no-svg # Skip SVG translation
pnpm translate --path docs/intro.md # Translate specific file
pnpm translate:status # Show the status of translation of all files
Para opções detalhadas, gerenciamento de cache, solução de problemas e sistema de glossário, consulte Fluxo de Trabalho de Tradução.
Substituições Manuais de Tradução
Se você precisar ajustar manualmente uma tradução:
- adicione os termos ao
glossary-user.csv - exclua as entradas de cache para esses termos usando a ferramenta de edição de cache baseada na web
- execute novamente a tradução com
pnpm translate --force
Comandos Comuns
Todos os comandos devem ser executados a partir do diretório documentation:
Desenvolvimento
Inicie o servidor de desenvolvimento com hot-reload para um idioma específico:
cd documentation
pnpm start:en # English (default)
pnpm start:fr # French
pnpm start:de # German
pnpm start:es # Spanish
pnpm start:pt-br # Brazilian Portuguese
O site estará disponível em http://localhost:3000 (ou na próxima porta disponível).
Compilar
Construir o site de documentação para produção:
cd documentation
pnpm build
Isto gera arquivos HTML estáticos no diretório documentation/build.
Servir Build de Produção
Visualize a compilação de produção localmente:
cd documentation
pnpm serve
Isso serve o site construído a partir do diretório documentation/build.
Outros Comandos Úteis
pnpm clear- Limpar cache do Docusauruspnpm typecheck- Executar verificação de tipos do TypeScriptpnpm write-heading-ids- Gerar IDs de cabeçalho no formato interno do Docusaurus (não modifica arquivos markdown)pnpm heading-ids- Adicionar IDs de âncora explícitos{#id}a todos os cabeçalhos markdown (modifica arquivos; garante IDs consistentes entre traduções)
Gerando README.md
O arquivo README.md do projeto é gerado automaticamente a partir de documentation/docs/intro.md para manter o README do repositório GitHub sincronizado com a documentação do Docusaurus.
Para gerar ou atualizar o arquivo README.md:
./scripts/generate-readme-from-intro.sh
Este script:
- Extrai a versão atual de
package.jsone adiciona um badge de versão - Copia conteúdo de
documentation/docs/intro.md - Converte admonições do Docusaurus (note, tip, warning, etc.) para alertas no estilo GitHub
- Converte todos os links relativos do Docusaurus para URLs absolutas do GitHub docs (
https://wsj-br.github.io/duplistatus/...) - Converte caminhos de imagens de
/img/paradocumentation/static/img/para compatibilidade com GitHub - Remove o bloco IMPORTANT de migração e adiciona uma seção Informações de Migração com um link para a documentação do Docusaurus
- Gera um sumário usando
doctoc - Gera
README_dockerhub.mdcom formatação compatível com Docker Hub (converte imagens e links para URLs absolutas, converte alertas do GitHub para formato baseado em emoji) - Gera notas de lançamento do GitHub (
RELEASE_NOTES_github_VERSION.md) a partir dedocumentation/docs/release-notes/VERSION.md(converte links e imagens para URLs absolutas)
Atualizar README para Docker Hub
O script generate-readme-from-intro.sh gera automaticamente README_dockerhub.md com formatação compatível com Docker Hub. Ele:
- Copia
README.mdparaREADME_dockerhub.md - Converte caminhos de imagem relativos para URLs absolutas do GitHub raw
- Converte links de documento relativos para URLs absolutas do GitHub blob
- Converte alertas no estilo GitHub (
[!NOTE],[!WARNING], etc.) para formato baseado em emoji para melhor compatibilidade com Docker Hub - Garante que todas as imagens e links funcionem corretamente no Docker Hub
Gerar Notas de Lançamento do GitHub
O script generate-readme-from-intro.sh gera automaticamente notas de lançamento do GitHub quando executado. Ele:
- Lê as notas de lançamento de
documentation/docs/release-notes/VERSION.md(onde VERSION é extraído depackage.json) - Altera o título de "# Version xxxx" para "# Release Notes - Versão xxxxx"
- Converte links markdown relativos para URLs absolutas de documentação do GitHub (
https://wsj-br.github.io/duplistatus/...) - Converte caminhos de imagens para URLs brutas do GitHub (
https://raw.githubusercontent.com/wsj-br/duplistatus/main/documentation/static/img/...) para exibição adequada em descrições de lançamento - Trata caminhos relativos com prefixo
../ - Preserva URLs absolutas (http:// e https://) inalteradas
- Cria
RELEASE_NOTES_github_VERSION.mdna raiz do projeto
Exemplo:
# This will generate both README.md and RELEASE_NOTES_github_VERSION.md
./scripts/generate-readme-from-intro.sh
O arquivo de notas de lançamento gerado pode ser copiado e colado diretamente na descrição de lançamento do GitHub. Todos os links e imagens funcionarão corretamente no contexto de lançamento do GitHub.
Capturar capturas de tela para documentação
pnpm take-screenshots
Ou execute diretamente: pnpm take-screenshots (use --env-file=.env se precisar de variáveis de ambiente).
Este script tira automaticamente screenshots do aplicativo para fins de documentação. Ele:
- Inicia um navegador headless (Puppeteer)
- Faz login como admin e usuário regular
- Navega por várias páginas (painel, detalhes do servidor, configurações, etc.)
- Tira screenshots em diferentes tamanhos de viewport
- Salva screenshots em
documentation/static/assets/(Inglês) oudocumentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets(outros idiomas)
Requisitos:
- O servidor de desenvolvimento deve estar rodando em
http://localhost:8666 - As variáveis de ambiente devem ser definidas, adicione estas ao seu arquivo
.envou exporte-as:ADMIN_PASSWORD: Senha para conta de adminUSER_PASSWORD: Senha para conta de usuário regular
Opções: --locale limita capturas de tela para uma ou mais localidades (separadas por vírgula). Se omitido, todas as localidades são capturadas. Localidades válidas: en, de, fr, es, pt-BR. Use -h ou --help para imprimir o uso.
Exemplo:
export ADMIN_PASSWORD="your-admin-password"
export USER_PASSWORD="your-user-password"
pnpm take-screenshots
# All locales (default):
pnpm take-screenshots
# Single locale:
pnpm take-screenshots --locale en
# Multiple locales:
pnpm take-screenshots --locale en,de,pt-BR
Implantando a Documentação
Para implantar a documentação no GitHub Pages, você precisará gerar um Token de Acesso Pessoal do GitHub. Acesse GitHub Personal Access Tokens e crie um novo token com o escopo repo.
Quando tiver o token, armazene-o no repositório de credenciais do Git (por exemplo, usando git config credential.helper store ou o gerenciador de credenciais do seu sistema).
Então, para implantar a documentação no GitHub Pages, execute o seguinte comando a partir do diretório documentation:
pnpm run deploy
Isso irá compilar a documentação e enviá-la para o branch gh-pages do repositório, e a documentação estará disponível em https://wsj-br.github.io/duplistatus/.
Trabalhando com Documentação
Para o fluxo de trabalho de tradução completo (gerenciamento de glossário, tradução por IA, gerenciamento de cache), consulte Fluxo de Trabalho de Tradução.
Arquivos de Origem
- Conteúdo da documentação: Arquivos markdown em inglês em
documentation/docs/ - Traduções da interface: Arquivos JSON em inglês em
documentation/i18n/en/(gerados automaticamente porpnpm write-translations) - Navegação da barra lateral:
documentation/sidebars.ts - Configuração do Docusaurus:
documentation/docusaurus.config.ts - Componentes React personalizados:
documentation/src/components/ - Recursos estáticos:
documentation/static/ - Página inicial principal:
documentation/docs/intro.md(fonte para gerarREADME.md)
Adicionando Novos Componentes
- Crie seu componente React em
documentation/src/components/ - Exporte-o de
documentation/src/theme/MDXComponents.jspara torná-lo disponível em MDX - Se o componente incluir strings de interface traduzíveis, execute
pnpm write-translationspara extraí-las - Execute
pnpm translatepara traduzir as novas strings para todos os idiomas
Adicionando Novas Páginas de Documentação
- Crie um novo arquivo
.mdemdocumentation/docs/(ou em um subdiretório) - Adicione-o à barra lateral em
documentation/sidebars.ts - Execute
pnpm write-translationspara atualizar a estrutura dos arquivos de tradução - Execute
pnpm heading-idspara gerar IDs de cabeçalho (âncoras) - Execute
pnpm translatepara traduzir a nova página para todos os locais - Compile e teste:
pnpm build
Recursos Estáticos
- Imagens: Coloque em
documentation/static/img/e referencie com/img/filename.pngno markdown - Downloads/PDFs: Coloque em
documentation/static/e referencie com/filename.pdf - Recursos por idioma: Se um recurso precisar ser específico de um idioma (por exemplo, capturas de tela), coloque-o em
documentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets/
Compilar e Testar
cd documentation
pnpm build # Builds all locales
pnpm serve # Preview the built site locally
pnpm start:en # Development server for English
pnpm start:pt-br # Development server for Portuguese
Sempre teste suas alterações pelo menos no idioma inglês padrão e em outro idioma para garantir que as traduções apareçam corretamente.