Herramientas de Documentación
La documentación se construye utilizando 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-Latn/ # Hindi (Roman)
│ ├── pt-BR/ # Brazilian Portuguese
│ └── zh-Hans/ # Simplified Chinese
├── 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
Internacionalización (i18n)
La documentación utiliza el sistema de internacionalización integrado de Docusaurus con inglés como configuración regional predeterminada. El contenido traducido se encuentra en i18n/{locale}/docusaurus-plugin-content-docs/current/, reflejando la estructura de la carpeta docs/.
- Archivos de origen:
docs/**/*.md(Inglés) - Archivos traducidos:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/*.md - Traducciones de la interfaz de usuario:
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 interfaz de usuario (del tema de Docusaurus y componentes personalizados) en archivos de traducción JSON. El script pnpm translate (de documentation/, delega en la raíz del repositorio) ejecuta ai-i18n-tools para traducir markdown, JSON y SVGs según ai-i18n-tools.config.json.
Solo edite archivos en docs/ y los archivos JSON de origen en i18n/en/. Los archivos markdown traducidos en i18n/{other-locales}/ se generan automáticamente y no deben editarse manualmente.
Configuraciones Regionales Compatibles
| Locale | Idioma | Directorio |
|---|---|---|
en-GB | English (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-Latn | Hindi (Romano) | i18n/hi-Latn/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
El sistema de documentación utiliza un sistema de traducción con IA para traducir tanto el contenido (archivos Markdown) como las cadenas de la interfaz de usuario (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 (romano) y chino simplificado.
Cómo Funciona la Traducción
- Cadenas de interfaz de usuario de Docusaurus:
pnpm write-translationsextrae las cadenas del tema y personalizadas eni18n/en/*.json. - Traducción con 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 y archivos markdown/JSON de Docusaurus) haciadocumentation/i18n/ysrc/locales/según la configuración. - Compilación:
pnpm buildgenera HTML estático para todas las ubicaciones endocumentation/build/.
Ejecutando Traducción
cd documentation
pnpm translate # Same as repo root: i18n:translate (ui + svg + docs)
pnpm translate:docs
pnpm translate:svg
pnpm translate:ui
pnpm translate:status
Las banderas CLI están definidas por ai-i18n-tools; ejecute pnpm exec ai-i18n-tools --help desde la raíz del repositorio o consulte Flujo de traducción.
Anulaciones de Traducción Manual
Edite documentation/glossary-user.csv (y opcionalmente borre las entradas obsoletas bajo .translation-cache/ en la raíz del repositorio), luego vuelva a ejecutar el comando pnpm translate:* correspondiente.
Comandos Comunes
Todos los comandos deben ejecutarse desde el directorio documentation:
Desarrollo
Iniciar 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 (o el siguiente puerto disponible).
Compilar
Construir el sitio de documentación para producción:
cd documentation
pnpm build
Esto genera archivos HTML estáticos en el directorio documentation/build.
Servir la 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 anclas de encabezado explícitas{#id}en el markdown usando las reglas de Docusaurus (ejecutar desdedocumentation/para enlaces estables entre traducciones)
Generando README.md
El archivo README.md del proyecto se genera automáticamente a partir de documentation/docs/intro.md para mantener sincronizado el README del repositorio de GitHub con la documentación de Docusaurus.
Para generar o actualizar el archivo README.md:
./scripts/generate-readme-from-intro.sh
Este script:
- Extrae la versión actual de
package.jsony agrega una etiqueta de versión - Copia el contenido de
documentation/docs/intro.md - Convierte las admoniciones de Docusaurus (nota, consejo, advertencia, etc.) a alertas con estilo de GitHub
- Convierte todos los enlaces relativos de Docusaurus a URLs absolutas de la documentación de GitHub (
https://wsj-br.github.io/duplistatus/...) - Convierte las rutas de las imágenes de
/img/adocumentation/static/img/para compatibilidad con GitHub - Elimina el bloque IMPORTANT de migración y agrega 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 emojis) - Genera las notas de lanzamiento de GitHub (
RELEASE_NOTES_github_VERSION.md) a partir dedocumentation/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. Hace lo siguiente:
- Copia
README.mdaREADME_dockerhub.md - Convierte rutas de imágenes relativas a URLs absolutas de GitHub raw
- Convierte enlaces de documentos relativos a URLs absolutas de blob de GitHub
- Convierte alertas con estilo de GitHub (
[!NOTE],[!WARNING], etc.) a formato basado en emojis para mejor compatibilidad con Docker Hub - Asegura 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 las notas de lanzamiento de GitHub al ejecutarse. Hace 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 la documentación de GitHub (
https://wsj-br.github.io/duplistatus/...) - Convierte las rutas de las imágenes a URLs raw de GitHub (
https://raw.githubusercontent.com/wsj-br/duplistatus/main/documentation/static/img/...) para una correcta visualización en las descripciones de lanzamiento - Maneja rutas relativas con el prefijo
../ - Mantiene sin cambios las URLs absolutas (http:// y https://)
- 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 la documentación
pnpm take-screenshots
O ejecutar directamente: pnpm take-screenshots (use --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 las siguientes acciones:
- Inicia un navegador sin interfaz gráfica (Playwright Chromium)
- Inicia sesión como administrador y usuario normal
- Navega por varias páginas (panel de control, detalles del servidor, configuración, etc.)
- Toma capturas de pantalla en diferentes tamaños de ventana
- Guarda las capturas en
documentation/static/assets/(inglés) odocumentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets(otros idiomas)
Requisitos:
- El servidor de desarrollo debe estar en ejecución en
http://localhost:8666 - El navegador Playwright Chromium debe estar instalado (ejecute
pnpm take-screenshots:installuna vez, lo que ejecutaplaywright install chromium) - Las variables de entorno deben estar configuradas, añádalas a su archivo
.envo expórtelas:ADMIN_PASSWORD: Contraseña de la cuenta de AdministradorUSER_PASSWORD: Contraseña de la cuenta de Usuario normal
Opciones: --locale limita las capturas de pantalla a una o varias localidades (separadas por comas). Si se omite, se capturan todas las localidades. Localidades válidas: en-GB, de, fr, es, pt-BR, hi-Latn, zh-Hans. Utilice -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
Implementación de la Documentación
Para implementar 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 alcance repo.
Cuando tenga el token, guárdelo en el almacén de credenciales de Git (por ejemplo, usando git config credential.helper store o el administrador de credenciales de su sistema).
Luego, para implementar la documentación en GitHub Pages, ejecute 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 de IA, gestión de caché), consulte Flujo de Trabajo de Traducción.
Archivos de Origen
- Contenido de la documentación: Archivos markdown en inglés en
documentation/docs/ - Traducciones de la interfaz: Archivos JSON en inglés en
documentation/i18n/en/(generados automáticamente porpnpm write-translations) - Navegación lateral:
documentation/sidebars.ts - Configuración de Docusaurus:
documentation/docusaurus.config.ts - Componentes React personalizados:
documentation/src/components/ - Activos estáticos:
documentation/static/ - Página principal:
documentation/docs/intro.md(fuente para generarREADME.md)
Añadiendo Nuevos Componentes
- Cree su componente de React en
documentation/src/components/ - Expórtelo desde
documentation/src/theme/MDXComponents.jspara que esté disponible en MDX - Si el componente incluye cadenas de texto traducibles de la interfaz de usuario, ejecute
pnpm write-translationspara extraerlas - Ejecute
pnpm translatepara traducir las nuevas cadenas a todos los idiomas
Añadiendo Nuevas Páginas de Documentación
- Cree un nuevo archivo
.mdendocumentation/docs/(o en un subdirectorio) - Agréguelo a la barra lateral en
documentation/sidebars.ts - Ejecute
pnpm write-translationspara actualizar la estructura de los archivos de traducción - Ejecute
pnpm write-heading-idspara generar los ID de encabezado (anclas) - Ejecute
pnpm translatepara traducir la nueva página a todos los idiomas - Compile y pruebe:
pnpm build
Recursos Estáticos
- Imágenes: Colóquelas en
documentation/static/img/y refiéralas con/img/filename.pngen markdown - Descargas/PDFs: Colóquelos en
documentation/static/y refiéralos con/filename.pdf - Recursos por idioma: Si un recurso necesita ser específico de un idioma (por ejemplo, capturas de pantalla), colóquelo 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 pruebe sus cambios al menos en el idioma inglés predeterminado y en otro idioma para asegurarse de que las traducciones aparezcan correctamente.