Skip to content

Integração com Docusaurus

Use init -t ui-docusaurus e docsOutput.style: "docusaurus" para sites de documentação Docusaurus. O preset estrutura um bloco docs[] com docusaurusCatalogDir para que translate-docs possa traduzir tanto o markdown da página quanto o JSON shell do Docusaurus em um único comando.

Consulte também Documentos, a demonstração executável examples/docusaurus-docs e examples/nextjs-app para um aplicativo Next.js combinado com documentos Docusaurus aninhados, README simples e ativos SVG.

Início rápido

bash
ai-i18n-tools init -t ui-docusaurus [-P <provider>]
# edit ai-i18n-tools.config.json (targetLocales, providers, contentPaths, docusaurusCatalogDir)
pnpm run i18n:sync   # or: ai-i18n-tools sync
cd docs-site && pnpm build   # or: cd examples/docusaurus-docs && pnpm build

Habilite features.translateDocs e defina docs[].docusaurusCatalogDir ao traduzir tanto as páginas de documentação quanto o "chrome" do site (barra de navegação, rodapé, strings do tema). Execute docusaurus write-translations em seu projeto Docusaurus ao atualizar @docusaurus/* ou alterar rótulos da barra de navegação/rodapé/tema — então execute novamente translate-docs ou sync para que o JSON shell seja traduzido para cada pasta de localidade.

Layout da página

Markdown e MDX em inglês ficam na pasta docs/ do seu Docusaurus (por exemplo, docs-site/docs/). Cópias traduzidas são gravadas na árvore de conteúdo do plugin de cada localidade:

text
docs-site/docs/getting-started.md
  →  docs-site/i18n/de/docusaurus-plugin-content-docs/current/getting-started.md
docs-site/docs/guide/quick-start.md
  →  docs-site/i18n/fr/docusaurus-plugin-content-docs/current/guide/quick-start.md

Configure um bloco docs[]:

json
{
  "contentPaths": ["docs-site/docs/"],
  "outputDir": "docs-site/i18n",
  "docusaurusCatalogDir": "docs-site/i18n/en",
  "addFrontmatter": true,
  "docsOutput": {
    "style": "docusaurus",
    "docsRoot": "docs-site/docs"
  }
}

Aponte contentPaths para seus arquivos e diretórios .md / .mdx em inglês. Defina docsRoot para a mesma pasta que o Docusaurus usa como sua raiz de conteúdo. Defina outputDir para o pai de cada pasta de localidade em i18n/.

Conecte a internacionalização do Docusaurus: mantenha targetLocales em ai-i18n-tools.config.json alinhado com o array locales em docusaurus.config.js. Cada localeConfigs[locale].path deve corresponder ao nome da pasta em i18n/ (por exemplo, path: "fr" para i18n/fr/).

Strings Shell (write-translations)

A barra de navegação, rodapé, placeholder de pesquisa e outros rótulos de tema/plugin do Docusaurus não são extraídos do markdown. Execute docusaurus write-translations em seu projeto Docusaurus para gerar catálogos JSON na pasta de localidade padrão (geralmente i18n/en/). Em seguida, aponte docs[].docusaurusCatalogDir para essa pasta:

json
{
  "features": {
    "translateDocs": true
  },
  "docs": [
    {
      "description": "Docusaurus pages + shell JSON",
      "contentPaths": ["docs-site/docs/"],
      "outputDir": "docs-site/i18n",
      "docusaurusCatalogDir": "docs-site/i18n/en",
      "docsOutput": {
        "style": "docusaurus",
        "docsRoot": "docs-site/docs"
      }
    }
  ]
}

Quando docusaurusCatalogDir é definido e features.translateDocs está habilitado, translate-docs traduz ambos:

  • Páginas de documentação — markdown/MDX de contentPaths para i18n/<locale>/docusaurus-plugin-content-docs/current/
  • JSON Shell — catálogos de barra de navegação, rodapé e tema/plugin de i18n/en/ para pastas de localidade irmãs

Não coloque o JSON shell do Docusaurus em json[]; use docs[].docusaurusCatalogDir com Documentos em vez disso.

Projeto de exemplo

examples/docusaurus-docs — Fontes em inglês em docs/, traduções confirmadas em i18n/<locale>/docusaurus-plugin-content-docs/current/, mais JSON de shell traduzido. Execute pnpm start na porta 3100 (compilar + servir) para que o menu suspenso de localidade funcione; use pnpm dev para recarregamento a quente somente em inglês.

Para strings de UI, tradução SVG e um README simples no mesmo layout de repositório, consulte examples/nextjs-app (docs-site/ aninhado na porta 3040).

Lançado sob a licença MIT.