Skip to content

Ráster colocalizado (doc-system)

Utilice cuando un sitio doc-system coloque los recursos específicos del idioma junto al markdown traducido; no se necesita reescritura de URL. El preajuste de Docusaurus (docsOutput.style = "docusaurus") es la implementación de referencia; otros generadores que usan "doc-system" con un localeSubpath personalizado siguen la misma idea: los recursos en inglés se ubican en una ruta de idioma fuente, los recursos traducidos se ubican bajo {outputDir}/{locale}/[localeSubpath/]assets/.

Por qué no hay un ejemplo en el repositorio: Las demos de Docusaurus de este repositorio (examples/docusaurus-docs, examples/nextjs-app) usan un diseño de carpeta por configuración regional en su lugar; consulta la guía de decisiones. El ../assets/ colocalizado es el patrón recomendado para proyectos nuevos; duplistatus es la referencia de producción completa.

Estructura de directorios

Ejemplo de árbol de directorios de recursos colocados (Docusaurus)
documentation/
├── static/
│   └── assets/
│       ├── screen-dashboard.png   ← en-GB screenshots (source locale)
│       └── screen-toolbar.png
├── docs/
│   └── assets → ../static/assets  ← symlink; webpack follows it
└── i18n/
    ├── de/
    │   └── docusaurus-plugin-content-docs/current/assets/
    │       ├── screen-dashboard.png   ← de screenshots
    │       └── screen-toolbar.png
    └── fr/
        └── docusaurus-plugin-content-docs/current/assets/
            ├── screen-dashboard.png
            └── screen-toolbar.png

Todos los documentos en cada configuración regional usan la misma ruta relativa:

markdown
![Dashboard](../assets/screen-dashboard.png)

Para la configuración regional en inglés (en-GB), ../assets/ se resuelve mediante el enlace simbólico a static/assets/. Para las configuraciones regionales traducidas, se resuelve directamente al directorio current/assets/ propio de la configuración regional.

Contrato del script de captura de pantalla

El script debe escribir los PNG en el directorio correcto para cada configuración regional. La función getScreenshotDir codifica la división:

js
function getScreenshotDir(locale) {
  if (locale === 'en-GB') return 'documentation/static/assets';
  return `documentation/i18n/${locale}/docusaurus-plugin-content-docs/current/assets`;
}

Vea una implementación real en take-screenshots.ts del repositorio duplistatus.

Configuración

No se necesita ninguna regla regexAdjustments para archivos raster. translate-docs traduce el texto alternativo en el markdown, pero la URL permanece sin cambios:

json
{
  "docsOutput": {
    "style": "docusaurus",
    "docsRoot": "documentation/docs"
  }
}

Si el proyecto también utiliza SVG traducidos, la traducción de SVG colocados los gestiona y se ubican junto a los PNG en current/assets/ sin expresiones regulares adicionales.

Requisitos previos

  • El enlace simbólico docs/assets debe existir: ln -s ../static/assets documentation/docs/assets
  • Webpack de Docusaurus sigue enlaces simbólicos por defecto (resolve.symlinks por defecto es true en las compilaciones de Docusaurus)
  • El enlace simbólico solo necesita existir para la configuración regional de origen; las compilaciones traducidas no lo utilizan

Ejemplo de implementación

duplistatusgetScreenshotDir(locale) en take-screenshots.ts; la documentación en inglés hace referencia a los PNG colocados (por ejemplo, dashboard.md con ../assets/screen-dashboard-summary.png). Los SVG colocados del mismo proyecto se ubican en los mismos directorios current/assets/ — consulte SVG colocado.

Publicado bajo la licencia MIT.