Skip to content

Integración de Fumadocs

Utilice init -t ui-fumadocs y docsOutput.style: "fumadocs" para sitios de documentación de Fumadocs 4 en Next.js App Router. El preajuste es un alias para doc-system con un localeSubpath vacío y códigos de configuración regional BCP-47 o cortos preservados (localePathLowercase por defecto es false).

Consulte también Documentos y la demostración ejecutable examples/fumadocs-docs (analizador de puntos, puerto 3080).

Inicio rápido

bash
ai-i18n-tools init -t ui-fumadocs [-P <provider>]
# edit ai-i18n-tools.config.json (targetLocales, providers, contentPaths)
pnpm run i18n:sync   # or: ai-i18n-tools sync
pnpm run build       # Next.js build (project-specific script)

Habilite features.translateDocs cuando traduzca el contenido de la página, las etiquetas de la barra lateral de meta.json y las anulaciones de la interfaz de usuario de Fumadocs en una ejecución de sync.

Diseño de página

Fumadocs admite dos diseños de contenido i18n a través de docsOutput.fumadocsParser. El analizador de puntos es el predeterminado (integrado en Fumadocs y sitios de producción como SWR).

Analizador de puntos (predeterminado)

El MDX en inglés reside en la raíz de la colección. Las copias traducidas utilizan un sufijo de configuración regional en el mismo directorio:

text
content/docs/index.mdx                    →  content/docs/index.pt.mdx
content/docs/guide/getting-started.mdx    →  content/docs/guide/getting-started.zh.mdx
json
{
  "contentPaths": ["content/docs"],
  "outputDir": "content/docs",
  "docsOutput": {
    "style": "fumadocs",
    "docsRoot": "content/docs",
    "fumadocsParser": "dot",
    "rewriteFumadocsLinks": true
  }
}

Alinee targetLocales con defineI18n().languages en lib/i18n.ts exactamente (el ejemplo utiliza códigos cortos pt y zh).

Analizador de directorios (estilo Nextra)

Para equipos acostumbrados a las carpetas de configuración regional (content/docs/en/content/docs/pt-BR/), establezca fumadocsParser en "dir":

text
content/docs/en/index.mdx           →  content/docs/pt-BR/index.mdx
content/docs/en/guide/foo.mdx       →  content/docs/zh-Hans/guide/foo.mdx
json
{
  "contentPaths": ["content/docs/en"],
  "outputDir": "content/docs",
  "docsOutput": {
    "style": "fumadocs",
    "docsRoot": "content/docs/en",
    "fumadocsParser": "dir",
    "rewriteFumadocsLinks": true
  }
}

Consulte ai-i18n-tools.config.dir.example.json en examples/fumadocs-docs para una configuración de directorio de copiar y pegar. El modelo mental coincide con la integración de Nextra.

Barra lateral (meta.json)

Fumadocs utiliza archivos JSON meta.json para la estructura y los títulos de la barra lateral. Cuando docsOutput.style es "fumadocs", translate-docs recopila meta.json bajo docsRoot (o docs[].fumadocsMetaGlob), traduce los valores de cadena para las claves enumeradas en docs[].fumadocsMetaTranslatableKeys (predeterminado: title, description) y escribe las salidas de configuración regional:

AnalizadorFuente en inglésSalida
puntocontent/docs/**/meta.jsoncontent/docs/**/meta.{locale}.json
dircontent/docs/en/**/meta.jsoncontent/docs/{locale}/**/meta.json

No traduzca las matrices de slug de pages, root, icon, defaultOpen u otras claves estructurales, solo las etiquetas legibles por humanos.

Catálogo de interfaz de usuario

El "chrome" del diseño de Fumadocs (marcador de posición de búsqueda, nombres de visualización de configuración regional y otras anulaciones de defineTranslations / i18n.translations() en lib/layout.shared.ts) no se extrae de markdown. Configure docsOutput.fumadocsUiCatalog para que translate-docs arranque el catálogo en inglés desde sourcePath y traduzca el JSON por configuración regional:

json
{
  "features": {
    "translateDocs": true
  },
  "docs": [
    {
      "contentPaths": ["content/docs"],
      "outputDir": "content/docs",
      "docsOutput": {
        "style": "fumadocs",
        "docsRoot": "content/docs",
        "fumadocsParser": "dot",
        "fumadocsUiCatalog": {
          "sourcePath": "lib/layout.shared.ts",
          "catalogPath": "lib/i18n/ui.en.json"
        }
      }
    }
  ]
}
  • catalogPath — JSON plano en inglés generado (salida de arranque). Vuelva a ejecutar sync cuando cambien las anulaciones en inglés en layout.shared.ts.
  • outputPathTemplate (opcional) — salidas por configuración regional; predeterminado: ui.{locale}.json junto a catalogPath.

Cargue el JSON por configuración regional en layout.shared.ts a través de loadUiCatalog(locale) y combínelo con i18nProvider(translations, lang) en su diseño raíz. Consulte examples/fumadocs-docs/lib/layout.shared.ts.

Las locales estándar pueden estar cubiertas por los ajustes preestablecidos de @fumadocs/language/* sin costo de LLM; el catálogo traduce las anulaciones de proyecto en el bloque de inglés solo.

No utilice json[] para las cadenas de interfaz de usuario de Fumadocs — esa canalización es para paquetes de locales de aplicaciones no relacionados.

Convenciones de enlaces

Fumadocs sirve rutas con prefijo de locale a través de middleware de Next.js (/docs/getting-started, /pt/docs/getting-started). Los enlaces dentro de la página deben permanecer neutrales en cuanto al locale (/docs/getting-started) para que el prefijo de locale activo se aplique automáticamente.

Habilite el normalizador incorporado para que translate-docs corrija los enlaces en cada archivo traducido automáticamente:

json
"docsOutput": {
  "style": "fumadocs",
  "docsRoot": "content/docs",
  "rewriteFumadocsLinks": true
}

rewriteFumadocsLinks se habilita de forma predeterminada cuando style es "fumadocs".

Autor en fuente en inglésDespués del normalizador
[Guide](content/docs/guide/getting-started.mdx)[Guide](/docs/guide/getting-started)
[Home](content/docs/index.mdx)[Home](/docs)
[Guide](/es/guide/getting-started.mdx)[Guide](/docs/guide/getting-started)
[Demo](https://github.com/org/repo)sin cambios (URL completa)

Reglas de autoría

  • Enlaces de documentos entre páginas: use rutas de sitio neutrales en cuanto al locale (/docs/…) en MDX en inglés, o content/docs/… / rutas relativas .mdx y deje que el normalizador las reescriba durante sync.
  • Archivos de repositorio fuera del árbol de contenido: use URLs completas.
  • No edite manualmente los enlaces en copias con sufijo de locale (*.pt.mdx) o árboles content/{locale}/ — regenere con sync / translate-docs.

Consulte también Documentos — reescritura de enlaces y Configuración — docsOutput.

Códigos de locale

Mantenga targetLocales en ai-i18n-tools.config.json alineado con defineI18n().languages en su aplicación Fumadocs exactamente. El ejemplo de punto utiliza códigos cortos (pt, zh); las configuraciones de directorio pueden utilizar carpetas BCP-47 (pt-BR, zh-Hans). No hay normalización forzada — los códigos no coincidentes producen rutas de salida incorrectas o páginas que faltan.

Colecciones múltiples

Los proyectos de Fumadocs pueden definir varios bloques de defineDocs en source.config.ts (documentos, blog, ejemplos). Agregue un bloque de docs[] por cada colección que traduzca, cada uno con su propio contentPaths, outputDir y docsRoot.

Proyecto de ejemplo

examples/fumadocs-docs — MDX en inglés en content/docs/, comprometido pt y zh páginas con sufijo de punto, meta.json y lib/i18n/ui.{locale}.json. Ejecute pnpm run dev en el puerto 3080.

Referencias cruzadas

Publicado bajo la licencia MIT.