Übersetzungs-Wartungsworkflow
Für allgemeine Dokumentationsbefehle (Erstellen, Bereitstellen, Screenshots, README-Generierung) siehe Dokumentationstools.
Übersicht
Die Dokumentation verwendet Docusaurus i18n mit Englisch als Standard-Gebietsschema. Die Quelldokumentation befindet sich in docs/; Übersetzungen werden unter i18n/{locale}/ erstellt. Unterstützte Gebietsschemas: en-GB (Standard), fr, de, es, pt-BR, hi, zh-Hans.
KI-Übersetzung für die App-Benutzeroberfläche, Docusaurus Markdown/JSON, SVG-Assets und Standard-Benachrichtigungsvorlagen wird von ai-i18n-tools aus der Repository-Wurzel behandelt, konfiguriert in ai-i18n-tools.config.json (nicht innerhalb von documentation/). Legen Sie OPENROUTER_API_KEY fest, wenn Sie Übersetzungsbefehle ausführen.
Um einen unveröffentlichten Checkout auf derselben Maschine zu testen (Standard ../ai-i18n-tools), wechseln Sie die Abhängigkeit mit pnpm i18n:tools --local oder ./scripts/link-ai-i18n-tools.sh --local. Dadurch werden sowohl die CLI (pnpm i18n:*) als auch der ai-i18n-tools/runtime-Import verknüpft. Erstellen Sie das Tools-Paket nach Quelländerungen neu (pnpm build in diesem Checkout). Stellen Sie das neueste npm-Paket mit --remote wieder her. Committen Sie nicht den link:-Spezifikator.
Wann sich die englische Dokumentation ändert
- Quelle bearbeiten in
documentation/docs/(nur Englisch). Text der Landingpage istdocumentation/src/landing/landing.html. - Docusaurus-UI-Zeichenfolgen (Design-Labels, Navigationsleiste usw.): Führen Sie bei Bedarf
pnpm write-translationsindocumentation/aus, damiti18n/en/*.jsonneue Schlüssel übernimmt. - Überschriften-IDs:
pnpm write-heading-ids(ausdocumentation/). - Übersetzen aus dem Repo-Root (oder verwenden Sie die folgenden Tastenkürzel aus
documentation/):pnpm i18n:extract—src/locales/strings.jsonaust('…')in der Next.js-App aktualisieren.pnpm i18n:translate:docs— Markdown, Docusaurus-Shell-JSON und das Landing-HTML gemäß Konfiguration nachdocumentation/i18n/unddocumentation/src/landing/i18n/übersetzen.pnpm i18n:translate:svg— SVGs unterdocumentation/static/imgwie konfiguriert übersetzen.pnpm i18n:translate:json— Standard-Benachrichtigungsvorlagen insrc/locales/templates/ausen-GB.jsonübersetzen.- Oder alles ausführen:
pnpm i18n:translate.
- Erstellen:
cd documentation && pnpm build(alle Gebietsschemas).
Innerhalb von documentation/ sind dieselben Abläufe wie pnpm translate → Wurzel i18n:translate verdrahtet, zusätzlich pnpm translate:docs, translate:ui, translate:svg, translate:status, i18n:extract, i18n:sync.
UI-Pluralformen
Kardinal-Pluralformen in der Next.js-App verwenden ai-i18n-tools, keine manuell geschriebenen _one / _other-Schlüssel.
Schreiben Sie eine englische Quellzeichenfolge (normalerweise die Pluralform) und übergeben Sie ein einfaches Objekt-Literal mit plurals: true und einer numerischen count:
t("{{count}} backups selected", { plurals: true, count: selectedBackups.size })
Regeln:
- Verwenden Sie keine
item(s)-Unsicherheiten odercount === 1 ? t('…') : t('…')-Paare. - Unabhängige numerische Zählungen benötigen separate
t()-Aufrufe — eine Pluralachse kann nicht zwei Zahlen flexibel anpassen (zum Beispiel 1 erfolgreich und 2 fehlgeschlagen). Verketten Sie die Fragmente:
`${t("Tested {{count}} connections:", { plurals: true, count: total })} ` +
`${t("{{count}} successful,", { plurals: true, count: successCount })} ` +
`${t("{{count}} failed", { plurals: true, count: failureCount })}`
- Nicht-numerische Interpolationen (Namen, Bezeichnungen usw.) sind in derselben Pluralzeichenfolge wie
{{count}}zulässig. pnpm i18n:extractmarkiert die Katalogzeile"plural": true.pnpm i18n:translate:uifüllt CLDR-Formen aus und schreibtsrc/locales/en-GB.json(nur Pluralschlüssel).src/i18n.tsundsrc/lib/i18n-server.tsladen diese Datei alssourcePluralFlatBundle, sodass englische Singular-/Pluralformen zur Laufzeit aufgelöst werden.
Standard-Benachrichtigungsvorlagen
Einstellungen → Vorlagen → Zurücksetzen lädt Standards aus src/locales/templates/{locale}.json (verdrahtet in src/lib/default-notification-templates.ts).
- Bearbeiten Sie nur
src/locales/templates/en-GB.json(englische Quelle). - Führen Sie
pnpm i18n:translate:json(oderpnpm i18n:translate) aus der Repository-Wurzel aus. - Überprüfen Sie Diffs — Platzhalter wie
{backup_name}und{problem_table}müssen unverändert bleiben;priorityundtagswerden vonkeyPolicyinai-i18n-tools.config.jsonübersprungen. - Führen Sie
pnpm i18n:statusaus, um JSON-Blockabdeckung zu sehen.
Siehe ai-i18n-tools JSON-Leitfaden für Flags (--locale, --force usw.).
Landingpage-HTML
Der Textkörper der Docs-Startseite ist eine einzelne englische HTML-Datei, keine React-Abschnittskomponenten.
- Bearbeiten Sie
documentation/src/landing/landing.html(unddocumentation/src/landing/landing.cssfür das Layout). Behalten Sie die Hash-IDsfeatures,dashboard,workflow,securityundinstallbei. - Führen Sie
pnpm i18n:translate:docsaus dem Repo-Root aus (oderpnpm translate:docsausdocumentation/). - Generierte Kopien werden nach
documentation/src/landing/i18n/{locale}/landing.htmlgeschrieben. Bearbeiten Sie diese Dateien nicht manuell.
translate-docs verwendet die HTML-Seiten-Pipeline: Sichtbarer Text und alt / title / aria-label werden übersetzt; <pre> und <code> bleiben auf Englisch. Navigationsleisten-Labels und der Seitentitel verbleiben in Docusaurus Translate (homepage.nav.*, homepage.meta.*).
Fügen Sie dieser Datei keine data-i18n-Markierungen hinzu und listen Sie sie nicht unter ui.sourceRoots auf. Dieselbe HTML-Datei darf sich nicht sowohl in der Dokumenten-Pipeline als auch in der UI-Zeichenfolgen-Pipeline befinden.
Glossar
- UI-Terminologie für die Dokumentation stammt aus jedem
ui[]-Katalog, wobeiuiGlossaryaktiviert bleibt (Standard). Der Next.js-App-Katalog istsrc/locales/strings.json(erstellt durchpnpm i18n:extract). Setzen Sieglossary.uiGlossarynicht; dieser Schlüssel wird abgelehnt. - Überschreibungen befinden sich in
documentation/glossary-user.csv(glossary.userGlossaryin der Konfiguration). Informationen zum Spaltenformat finden Sie in der ai-i18n-tools-Glossardokumentation. - Eine CSV-Vorlage generieren:
pnpm i18n:glossary-generate(Root).
Cache
Der Übersetzungscache für ai-i18n-tools befindet sich unter .translation-cache/ im Repository-Root (cacheDir in ai-i18n-tools.config.json). Er ist gitignored. Verwenden Sie pnpm i18n:status und die CLI-Optionen --force / Cache-Flags gemäß der ai-i18n-tools-Dokumentation, wenn Sie eine vollständige Aktualisierung benötigen.
Überschriften-IDs und Anker
Verwenden Sie explizite IDs, damit Links über Sprachen hinweg stabil bleiben. Bevorzugen Sie die MDX-Kommentarsyntax (pnpm write-heading-ids verwendet --syntax mdx-comment):
## This is a heading {/* #this-is-a-heading */}
Platzieren Sie IDs auf h2 und darunter. Docusaurus write-heading-ids überspringt h1 (den Seitentitel / Seitenleistentitel). documentation/docusaurus.config.ts entfernt auch Überschriften-ID-Kommentare aus abgeleiteten Titeln, da die Docusaurus-Metadatenerfassung immer noch nur klassische {#id} entfernt.
cd documentation
pnpm write-heading-ids
Ignorierlisten
Verwenden Sie .translate-ignore im Repository-Root (gleiche Idee wie .gitignore) für Pfade, die der Dokumentationsübersetzer überspringen soll, falls Sie eine solche Liste für Ihren Workflow hinzufügen.
Docusaurus Theme JSON
pnpm write-translations extrahiert Docusaurus-Benutzeroberflächenzeichenketten nach documentation/i18n/en/. Der ai-i18n-tools translate-docs-Schritt (mit markdownOutput.style: "docusaurus") füllt übersetzte JSON-Dateien unterhalb jedes Gebietsschemas neben Markdown ein, gemäß ai-i18n-tools.config.json.
Problembehandlung
OPENROUTER_API_KEYnicht festgelegt — exportieren Sie es oder fügen Sie es zu.env.localim Repository-Root hinzu.- Modell / Qualität — passen Sie
openrouter.translationModelsund verwandte Optionen inai-i18n-tools.config.jsonan. - Glossar — bearbeiten Sie
documentation/glossary-user.csvoder generieren Sie Benutzeroberflächenelemente neu und führen Sie Extraktion + Übersetzung erneut aus.
Hinzufügen einer neuen Sprache
- Fügen Sie das Gebietsschema zu Docusaurus
i18n.localesundlocaleConfigsindocumentation/docusaurus.config.tshinzu. - Fügen Sie dasselbe Gebietsschema zu
targetLocalesinai-i18n-tools.config.jsonhinzu (Repository-Root). - Führen Sie
pnpm i18n:generate-ui-languagesim Root aus, danachpnpm i18n:extract/ Übersetzungsbefehle nach Bedarf.