Herramientas de Documentación
La documentación se construye usando Docusaurus y se encuentra en la carpeta documentation. La documentación se aloja en GitHub Pages y ya no se incluye en la imagen del contenedor Docker.
Estructura de Carpetas
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
│ ├── hi/ # Hindi
│ ├── pt-BR/ # Brazilian Portuguese
│ └── zh-Hans/ # Simplified Chinese
├── src/ # React components and pages
│ ├── components/ # Custom React components
│ ├── css/ # Custom styles
│ ├── landing/ # Homepage HTML + CSS (English source; locale copies in landing/i18n/)
│ ├── pages/ # Additional pages (homepage shell, 404)
│ └── theme/ # Swizzled theme (navbar)
├── static/ # Static assets (images, files)
├── docusaurus.config.ts # Docusaurus configuration
├── sidebars.ts # Sidebar navigation configuration
└── package.json # Dependencies and scripts
Internacionalización (i18n)
La documentación utiliza el sistema i18n integrado de Docusaurus con inglés como locale predeterminada. El contenido traducido se encuentra en i18n/{locale}/docusaurus-plugin-content-docs/current/, reflejando la estructura de la carpeta docs/.
- Archivos fuente:
docs/**/*.md(inglés) - Archivos traducidos:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/*.md - Traducciones de interfaz:
i18n/{locale}/docusaurus-theme-classic/*.jsony otros archivos JSON - Capturas de pantalla localizadas:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/assets, generadas porpnpm take-screenhotsen el directorio base.
El comando pnpm write-translations extrae cadenas de la interfaz de usuario (del tema de Docusaurus y de componentes personalizados) en archivos de traducción JSON. El script pnpm translate (desde documentation/, que delega en la raíz del repositorio) ejecuta ai-i18n-tools para traducir markdown, JSON, SVG y el HTML de la página de destino según ai-i18n-tools.config.json.
La página principal de la documentación es src/landing/landing.html envuelta por src/pages/index.tsx. Edite el archivo HTML para modificar el texto; las copias de cada configuración regional se encuentran en src/landing/i18n/ y se generan mediante pnpm i18n:translate:docs.
Solo edite los archivos en docs/, el archivo fuente de la página de destino src/landing/landing.html y los archivos JSON de origen en i18n/en-GB/. El markdown traducido en i18n/{other-locales}/ y las copias de la página de destino en src/landing/i18n/ son generados y no deben editarse manualmente.
Locales Compatibles
| Locale | Idioma | Directorio |
|---|---|---|
en-GB | Inglés (predeterminada) | docs/ (fuente) |
de | Alemán | i18n/de/docusaurus-plugin-content-docs/current/ |
es | Español | i18n/es/docusaurus-plugin-content-docs/current/ |
fr | Francés | i18n/fr/docusaurus-plugin-content-docs/current/ |
hi | Hindi | i18n/hi/docusaurus-plugin-content-docs/current/ |
pt-BR | Portugués Brasileño | i18n/pt-BR/docusaurus-plugin-content-docs/current/ |
zh-Hans | Chino Simplificado | i18n/zh-Hans/docusaurus-plugin-content-docs/current/ |
Traducir la Documentación
La documentación utiliza un sistema de traducción impulsado por IA para traducir tanto el contenido (archivos markdown) como las cadenas de interfaz (de Docusaurus y componentes personalizados). El contenido fuente está en inglés (docs/), y se generan traducciones para alemán, francés, español, portugués brasileño, hindi y chino simplificado.
Cómo Funciona la Traducción
- Cadenas de interfaz de Docusaurus:
pnpm write-translationsextrae cadenas de tema/personalizadas eni18n/en/*.json. - Traducción por IA (OpenRouter; configuración en
ai-i18n-tools.config.jsonen la raíz del repositorio): desdedocumentation/,pnpm translateejecuta el script raízi18n:translate(cadenas de interfaz, SVGs, markdown/JSON de Docusaurus y plantillas de notificación predeterminadas) endocumentation/i18n/,src/locales/ysrc/locales/templates/según se configure. - Compilación:
pnpm buildgenera HTML estático para todos los locales bajodocumentation/build/.
Ejecutar Traducción
cd documentation
pnpm translate # Same as repo root: i18n:translate (ui + svg + docs + json)
pnpm translate:docs
pnpm translate:json
pnpm translate:svg
pnpm translate:ui
pnpm translate:status
Las banderas CLI se definen mediante ai-i18n-tools; ejecuta pnpm exec ai-i18n-tools --help desde la raíz del repositorio o consulta Translation Workflow.
Anulaciones de Traducción Manual
Edita documentation/glossary-user.csv (y opcionalmente borra entradas obsoletas bajo .translation-cache/ en la raíz del repositorio), luego vuelve a ejecutar el comando pnpm translate:* correspondiente.
Comandos Comunes
Todos los comandos deben ejecutarse desde el directorio documentation:
Desarrollo
Inicia el servidor de desarrollo con recarga en caliente para una configuración regional específica:
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
El sitio estará disponible en http://localhost:3000/duplistatus/ (o el siguiente puerto disponible). La ruta /duplistatus/ coincide con baseUrl de GitHub Pages y los enlaces del botón Ayuda en la aplicación.
Compilar
Compila el sitio de documentación para producción:
cd documentation
pnpm build
Esto genera archivos HTML estáticos en el directorio documentation/build.
Servir Compilación de Producción
Vista previa de la compilación de producción localmente:
cd documentation
pnpm serve
Esto sirve el sitio compilado desde el directorio documentation/build.
Otros Comandos Útiles
pnpm clear- Borrar caché de Docusauruspnpm typecheck- Ejecutar verificación de tipos de TypeScriptpnpm write-heading-ids- Escribir anclajes de encabezado explícitos{/* #id */}en markdown usando la sintaxis de comentario MDX de Docusaurus (ejecutar desdedocumentation/para enlaces estables entre traducciones). La CLI omite títulosh1, que Docusaurus utiliza como etiquetas de barra lateral.
Generando README.md
El archivo README.md del proyecto se genera automáticamente desde documentation/docs/intro.md para mantener el README del repositorio de GitHub sincronizado con la documentación de Docusaurus.
Para generar o actualizar el archivo README.md:
./scripts/generate-readme-from-intro.sh
Este script:
- Extrae la
package.jsonactual y añade un distintivo de versión - Copia contenido de
documentation/docs/intro.md - Convierte admoniciones de Docusaurus (nota, consejo, advertencia, etc.) a alertas de estilo GitHub
- Convierte todos los enlaces relativos de Docusaurus a URLs absolutas de documentos de GitHub (
https://wsj-br.github.io/duplistatus/...) - Convierte rutas de imágenes de
/img/adocumentation/static/img/para compatibilidad con GitHub - Elimina el bloque IMPORTANT de migración y añade una sección de Información de Migración con un enlace a la documentación de Docusaurus
- Genera una tabla de contenidos usando
doctoc - Genera
README_dockerhub.mdcon formato compatible con Docker Hub (convierte imágenes y enlaces a URLs absolutas, convierte alertas de GitHub a formato basado en emoji) - Genera notas de lanzamiento de GitHub (
RELEASE_NOTES_github_VERSION.md) desdedocumentation/docs/release-notes/VERSION.md(convierte enlaces e imágenes a URLs absolutas)
Actualizar README para Docker Hub
El script generate-readme-from-intro.sh genera automáticamente README_dockerhub.md con formato compatible con Docker Hub. Realiza lo siguiente:
- Copia
README.mdaREADME_dockerhub.md - Convierte rutas de imágenes relativas a URLs raw de GitHub absolutas
- Convierte enlaces de documentos relativos a URLs blob de GitHub absolutas
- Convierte alertas de estilo GitHub (
[!NOTE],[!WARNING], etc.) a formato basado en emoji para mejor compatibilidad con Docker Hub - Garantiza que todas las imágenes y enlaces funcionen correctamente en Docker Hub
Generar Notas de Lanzamiento de GitHub
El script generate-readme-from-intro.sh genera automáticamente notas de lanzamiento de GitHub cuando se ejecuta. Realiza lo siguiente:
- Lee las notas de lanzamiento de
documentation/docs/release-notes/VERSION.md(donde VERSION se extrae depackage.json) - Cambia el título de "# Versión xxxx" a "# Notas de Lanzamiento - Versión xxxxx"
- Convierte enlaces markdown relativos a URLs absolutas de documentos de GitHub (
https://wsj-br.github.io/duplistatus/...) - Convierte rutas de imágenes a URLs raw de GitHub (
https://raw.githubusercontent.com/wsj-br/duplistatus/main/documentation/static/img/...) para visualización correcta en descripciones de lanzamiento - Maneja rutas relativas con prefijo
../ - Preserva URLs absolutas (http:// y https://) sin cambios
- Crea
RELEASE_NOTES_github_VERSION.mden la raíz del proyecto
Ejemplo:
# This will generate both README.md and RELEASE_NOTES_github_VERSION.md
./scripts/generate-readme-from-intro.sh
El archivo de notas de lanzamiento generado se puede copiar y pegar directamente en la descripción de lanzamiento de GitHub. Todos los enlaces e imágenes funcionarán correctamente en el contexto de lanzamiento de GitHub.
Tomar capturas de pantalla para documentación
pnpm take-screenshots
O ejecutar directamente: pnpm take-screenshots (usa --env-file=.env si es necesario para variables de entorno).
Este script toma automáticamente capturas de pantalla de la aplicación para fines de documentación. Realiza lo siguiente:
- Después de verificaciones de entorno y salud, ejecuta
pnpm exec playwright installpara que los navegadores de Playwright estén presentes - Inicia un navegador sin interfaz gráfica (Chromium de Playwright)
- Inicia sesión como administrador y usuario regular
- Navega por varias páginas (panel de control, detalles del servidor, configuración, etc.)
- Toma capturas de pantalla en diferentes tamaños de ventana gráfica
- Guarda capturas de pantalla en
documentation/static/assets/(inglés) udocumentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets(otros idiomas)
Requisitos:
- El servidor de desarrollo debe estar ejecutándose en
http://localhost:8666 - Las variables de entorno deben estar configuradas, añádalas a su archivo
.envo expórtelas:ADMIN_PASSWORD: Contraseña para la cuenta de administradorUSER_PASSWORD: Contraseña para la cuenta de usuario regular
Opciones: --locale limita las capturas de pantalla a uno o más idiomas (separados por comas). Si se omite, se capturan todos los idiomas. Idiomas válidos: en-GB, de, fr, es, pt-BR, hi, zh-Hans. Usa -h o --help para imprimir el uso.
Ejemplo:
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-GB
# Multiple locales:
pnpm take-screenshots --locale en-GB,de,pt-BR
Desplegar la Documentación
Para desplegar la documentación en GitHub Pages, necesitarás generar un Token de Acceso Personal de GitHub. Ve a GitHub Personal Access Tokens y crea un nuevo token con el ámbito repo.
Cuándo tengas el token, guárdalo en el almacén de credenciales de Git (por ejemplo, usando git config credential.helper store o el gestor de credenciales de tu sistema).
Luego, para desplegar la documentación en GitHub Pages, ejecuta el siguiente comando desde el directorio documentation:
pnpm run deploy
Esto compilará la documentación y la enviará a la rama gh-pages del repositorio, y la documentación estará disponible en https://wsj-br.github.io/duplistatus/.
Trabajar con Documentación
Para el flujo de trabajo de traducción completo (gestión de glosario, traducción con IA, gestión de caché), consulta Translation Workflow.
Archivos de Origen
- Contenido de documentación: Archivos markdown en inglés en
documentation/docs/ - Traducciones de interfaz: Archivos JSON en inglés en
documentation/i18n/en/(generados automáticamente porpnpm write-translations) - Navegación de barra lateral:
documentation/sidebars.ts - Configuración de Docusaurus:
documentation/docusaurus.config.ts - Componentes React personalizados:
documentation/src/components/ - Recursos estáticos:
documentation/static/ - Página de inicio principal:
documentation/docs/intro.md(fuente para generarREADME.md)
Añadir Nuevos Componentes
- Crea tu componente React en
documentation/src/components/ - Expórtalo desde
documentation/src/theme/MDXComponents.jspara que esté disponible en MDX - Si el componente incluye cadenas de interfaz traducibles, ejecuta
pnpm write-translationspara extraerlas - Ejecuta
pnpm translatepara traducir las nuevas cadenas a todos los idiomas
Añadir Nuevas Páginas de Documentación
- Crea un nuevo archivo
.mdendocumentation/docs/(o en un subdirectorio) - Añádelo a la barra lateral en
documentation/sidebars.ts - Ejecuta
pnpm write-translationspara actualizar la estructura de archivos de traducción - Ejecuta
pnpm write-heading-idspara generar IDs de encabezados (anclajes) - Ejecuta
pnpm translatepara traducir la nueva página a todos los idiomas - Compila y prueba:
pnpm build
Recursos Estáticos
- Imágenes: Coloca en
documentation/static/img/y referencia con/img/filename.pngen markdown - Descargas/PDFs: Coloca en
documentation/static/y referencia con/filename.pdf - Recursos por idioma: Si un recurso necesita ser específico del idioma (por ejemplo, capturas de pantalla), colócalo en
documentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets/
Compilar y Probar
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
Siempre prueba tus cambios al menos en el idioma inglés predeterminado y en otro idioma para asegurar que las traducciones aparecen correctamente.