Dokumentationswerkzeuge
Die Dokumentation wird mit Docusaurus erstellt und befindet sich im documentation-Ordner. Die Dokumentation wird auf GitHub Pages gehostet und ist nicht mehr im Docker-Container-Image enthalten.
Ordnerstruktur
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/ # Hindi
│ ├── pt-BR/ # Brazilian Portuguese
│ └── zh-Hans/ # Simplified Chinese
├── src/ # React components and pages
│ ├── components/ # Custom React components
│ ├── css/ # Custom styles
│ ├── landing/ # Homepage HTML + CSS (English source; locale copies in landing/i18n/)
│ ├── pages/ # Additional pages (homepage shell, 404)
│ └── theme/ # Swizzled theme (navbar)
├── static/ # Static assets (images, files)
├── docusaurus.config.ts # Docusaurus configuration
├── sidebars.ts # Sidebar navigation configuration
└── package.json # Dependencies and scripts
Internationalisierung (i18n)
Die Dokumentation verwendet das integrierte i18n-System von Docusaurus mit Englisch als Standard-Locale. Übersetzte Inhalte befinden sich in i18n/{locale}/docusaurus-plugin-content-docs/current/ und spiegeln die Struktur des docs/-Ordners wider.
- Quell-Dateien:
docs/**/*.md(Englisch) - Übersetzte Dateien:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/*.md - UI-Übersetzungen:
i18n/{locale}/docusaurus-theme-classic/*.jsonund andere JSON-Dateien - Lokalisierte Screenshots:
i18n/{locale}/docusaurus-plugin-content-docs/current/**/assets, generiert vonpnpm take-screenhotsim Basisverzeichnis.
Der Befehl pnpm write-translations extrahiert UI-Zeichenfolgen (aus dem Docusaurus-Design und benutzerdefinierten Komponenten) in JSON-Übersetzungsdateien. Das Skript pnpm translate (aus documentation/, delegiert an das Repository-Root) führt ai-i18n-tools aus, um Markdown, JSON, SVGs und das Landing-HTML gemäß ai-i18n-tools.config.json zu übersetzen.
Die Docs-Startseite ist src/landing/landing.html, umschlossen von src/pages/index.tsx. Bearbeiten Sie die HTML-Datei für Textinhalte; länderspezifische Kopien befinden sich unter src/landing/i18n/ und werden durch pnpm i18n:translate:docs generiert.
Bearbeiten Sie nur Dateien in docs/, die Landing-Quelle src/landing/landing.html und die Quell-JSON-Dateien in i18n/en-GB/. Übersetztes Markdown unter i18n/{other-locales}/ und Landing-Kopien unter src/landing/i18n/ werden generiert und sollten nicht manuell bearbeitet werden.
Unterstützte Sprachen
| Locale | Sprache | Verzeichnis |
|---|---|---|
en-GB | Englisch (Standard) | docs/ (Quelle) |
de | Deutsch | i18n/de/docusaurus-plugin-content-docs/current/ |
es | Spanisch | i18n/es/docusaurus-plugin-content-docs/current/ |
fr | Französisch | i18n/fr/docusaurus-plugin-content-docs/current/ |
hi | Hindi | i18n/hi/docusaurus-plugin-content-docs/current/ |
pt-BR | Brasilianisches Portugiesisch | i18n/pt-BR/docusaurus-plugin-content-docs/current/ |
zh-Hans | Vereinfachtes Chinesisch | i18n/zh-Hans/docusaurus-plugin-content-docs/current/ |
Dokumentation übersetzen
Die Dokumentation verwendet ein KI-gestütztes Übersetzungssystem, um sowohl Inhalte (Markdown-Dateien) als auch UI-Strings (aus Docusaurus und benutzerdefinierten Komponenten) zu übersetzen. Der Quellinhalt ist in Englisch (docs/), und Übersetzungen werden für Deutsch, Französisch, Spanisch, Brasilianisches Portugiesisch, Hindi und Vereinfachtes Chinesisch generiert.
Wie die Übersetzung funktioniert
- Docusaurus UI-Strings:
pnpm write-translationsextrahiert Design-/Benutzerdefinierte Strings ini18n/en/*.json. - KI-Übersetzung (OpenRouter; Konfiguration in
ai-i18n-tools.config.jsonim Repo-Wurzelverzeichnis): vondocumentation/,pnpm translateführt das Wurzel-i18n:translate-Skript (UI-Strings, SVGs, Docusaurus Markdown/JSON und Standardbenachrichtigungsvorlagen) indocumentation/i18n/,src/locales/undsrc/locales/templates/aus, wie konfiguriert. - Build:
pnpm buildgeneriert statisches HTML für alle Sprachen unterdocumentation/build/.
Ausführen der Übersetzung
cd documentation
pnpm translate # Same as repo root: i18n:translate (ui + svg + docs + json)
pnpm translate:docs
pnpm translate:json
pnpm translate:svg
pnpm translate:ui
pnpm translate:status
CLI-Flags werden von ai-i18n-tools definiert; führen Sie pnpm exec ai-i18n-tools --help aus dem Wurzelverzeichnis des Repos aus oder sehen Sie sich Übersetzungs-Workflow an.
Manuelle Übersetzungsüberschreibungen
Bearbeiten Sie documentation/glossary-user.csv (und optional veraltete Einträge unter .translation-cache/ im Wurzelverzeichnis des Repos löschen), und führen Sie dann den relevanten pnpm translate:* Befehl erneut aus.
Häufige Befehle
Alle Befehle sollten aus dem documentation Verzeichnis ausgeführt werden:
Entwicklung
Starten Sie den Entwicklungsserver mit Hot-Reload für eine bestimmte Sprache:
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
Die Seite ist unter http://localhost:3000/duplistatus/ (oder dem nächsten verfügbaren Port) verfügbar. Der /duplistatus/ Pfad entspricht den GitHub Pages baseUrl und den Links im Hilfe-Button der App.
Erstellen
Erstellen Sie die Dokumentationsseite für die Produktion:
cd documentation
pnpm build
Dies generiert statische HTML-Dateien im documentation/build Verzeichnis.
Bereitstellen des Produktions-Builds
Vorschau des Produktions-Builds lokal:
cd documentation
pnpm serve
Dies dient die erstellte Seite aus dem documentation/build Verzeichnis.
Weitere nützliche Befehle
pnpm clear- Docusaurus-Cache löschenpnpm typecheck- TypeScript-Typprüfung ausführenpnpm write-heading-ids- Schreiben Sie explizite{/* #id */}Überschriftenanker in Markdown unter Verwendung der Docusaurus MDX-Kommentarsyntax (ausdocumentation/ausführen für stabile Links über Übersetzungen hinweg). Die CLI überspringth1Titel, die Docusaurus als Seitenleistenbeschriftungen verwendet.
Generierung von README.md
Die README.md Datei des Projekts wird automatisch aus documentation/docs/intro.md generiert, um das README des GitHub-Repositories mit der Docusaurus-Dokumentation synchron zu halten.
Um die README.md Datei zu generieren oder zu aktualisieren:
./scripts/generate-readme-from-intro.sh
Dieses Skript:
- Extrahiert die aktuelle Version von
package.jsonund fügt ein Versionsbadge hinzu - Kopiert Inhalte von
documentation/docs/intro.md - Konvertiert Docusaurus-Warnungen (Notiz, Tipp, Warnung usw.) in GitHub-Stil-Alerts
- Konvertiert alle relativen Docusaurus-Links in absolute GitHub-Dokumentations-URLs (
https://wsj-br.github.io/duplistatus/...) - Konvertiert Bildpfade von
/img/nachdocumentation/static/img/für die Kompatibilität mit GitHub - Entfernt den Migration WICHTIG-Block und fügt einen Abschnitt mit Migrationsinformationen hinzu, der einen Link zu den Docusaurus-Dokumenten enthält
- Generiert ein Inhaltsverzeichnis mit
doctoc - Generiert
README_dockerhub.mdmit Docker Hub-kompatibler Formatierung (konvertiert Bilder und Links in absolute URLs, konvertiert GitHub-Alerts in emoji-basierte Formate) - Generiert GitHub-Release-Notizen (
RELEASE_NOTES_github_VERSION.md) ausdocumentation/docs/release-notes/VERSION.md(konvertiert Links und Bilder in absolute URLs)
README für Docker Hub aktualisieren
Das generate-readme-from-intro.sh-Skript generiert automatisch README_dockerhub.md mit Docker Hub-kompatibler Formatierung. Es:
- Kopiert
README.mdnachREADME_dockerhub.md - Konvertiert relative Bildpfade in absolute GitHub-Roh-URLs
- Konvertiert relative Dokumentenlinks in absolute GitHub-Blob-URLs
- Konvertiert GitHub-Stil-Alerts (
[!NOTE],[!WARNING], usw.) in emoji-basierte Formate für eine bessere Docker Hub-Kompatibilität - Stellt sicher, dass alle Bilder und Links auf Docker Hub korrekt funktionieren
GitHub Release-Notizen generieren
Das generate-readme-from-intro.sh-Skript generiert automatisch GitHub-Release-Notizen, wenn es ausgeführt wird. Es:
- Liest die Release-Notizen von
documentation/docs/release-notes/VERSION.md(wo VERSION vonpackage.jsonextrahiert wird) - Ändert den Titel von "# Version xxxx" zu "# Release-Notizen - Version xxxxx"
- Konvertiert relative Markdown-Links in absolute GitHub-Dokumentations-URLs (
https://wsj-br.github.io/duplistatus/...) - Konvertiert Bildpfade in GitHub-Roh-URLs (
https://raw.githubusercontent.com/wsj-br/duplistatus/main/documentation/static/img/...) für die korrekte Anzeige in Release-Beschreibungen - Behandelt relative Pfade mit
../-Präfix - Bewahrt absolute URLs (http:// und https://) unverändert
- Erstellt
RELEASE_NOTES_github_VERSION.mdim Projektstamm
Beispiel:
# This will generate both README.md and RELEASE_NOTES_github_VERSION.md
./scripts/generate-readme-from-intro.sh
Die generierte Release-Notizdatei kann direkt in die GitHub-Release-Beschreibung kopiert und eingefügt werden. Alle Links und Bilder funktionieren im Kontext der GitHub-Release korrekt.
Screenshots für die Dokumentation erstellen
pnpm take-screenshots
Oder direkt ausführen: pnpm take-screenshots (verwenden Sie --env-file=.env, falls erforderlich, für Umgebungsvariablen).
Dieses Skript erstellt automatisch Screenshots der Anwendung zu Dokumentationszwecken. Es:
- Führt nach Umgebungs- und Gesundheitsprüfungen
pnpm exec playwright installaus, damit Playwright-Browser vorhanden sind - Startet einen headless Browser (Playwright Chromium)
- Meldet sich als Admin und regulärer Benutzer an
- Navigiert durch verschiedene Seiten (Dashboard, Serverdetails, Einstellungen usw.)
- Macht Screenshots in verschiedenen Ansichtsgrößen
- Speichert Screenshots in
documentation/static/assets/(Englisch) oderdocumentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets(andere Sprachen)
Anforderungen:
- Der Entwicklungsserver muss auf
http://localhost:8666laufen - Umgebungsvariablen müssen gesetzt werden, fügen Sie diese Ihrer
.env-Datei hinzu oder exportieren Sie sie:ADMIN_PASSWORD: Passwort für das Admin-KontoUSER_PASSWORD: Passwort für das reguläre Benutzerkonto
Optionen: --locale beschränkt Screenshots auf eine oder mehrere Sprachen (kommagetrennt). Wenn weggelassen, werden alle Sprachen erfasst. Gültige Sprachen: en-GB, de, fr, es, pt-BR, hi, zh-Hans. Verwenden Sie -h oder --help, um die Verwendung anzuzeigen.
Beispiel:
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
Dokumentation bereitstellen
Um die Dokumentation auf GitHub Pages bereitzustellen, müssen Sie ein GitHub-Personal-Access-Token generieren. Gehen Sie zu GitHub Personal Access Tokens und erstellen Sie ein neues Token mit dem repo-Bereich.
Wann Sie das Token haben, speichern Sie es im Git-Anmeldeinformationsspeicher (z. B. mit git config credential.helper store oder dem Anmeldeinformationsmanager Ihres Systems).
Führen Sie dann den folgenden Befehl aus dem documentation-Verzeichnis aus, um die Dokumentation auf GitHub Pages bereitzustellen:
pnpm run deploy
Dies wird die Dokumentation erstellen und in den gh-pages-Branch des Repositories pushen, und die Dokumentation wird unter https://wsj-br.github.io/duplistatus/ verfügbar sein.
Arbeiten mit Dokumentation
Für den vollständigen Übersetzungsworkflow (Glossarverwaltung, KI-Übersetzung, Cache-Verwaltung) siehe Übersetzungsworkflow.
Quelldateien
- Dokumentationsinhalt: Englische Markdown-Dateien in
documentation/docs/ - UI-Übersetzungen: Englische JSON-Dateien in
documentation/i18n/en/(automatisch generiert vonpnpm write-translations) - Sidebar-Navigation:
documentation/sidebars.ts - Docusaurus-Konfiguration:
documentation/docusaurus.config.ts - Benutzerdefinierte React-Komponenten:
documentation/src/components/ - Statische Assets:
documentation/static/ - Haupt-Homepage:
documentation/docs/intro.md(Quelle zur Generierung vonREADME.md)
Neue Komponenten hinzufügen
- Erstellen Sie Ihre React-Komponente in
documentation/src/components/ - Exportieren Sie sie von
documentation/src/theme/MDXComponents.js, um sie in MDX verfügbar zu machen - Wenn die Komponente übersetzbare UI-Strings enthält, führen Sie
pnpm write-translationsaus, um sie zu extrahieren - Führen Sie
pnpm translateaus, um die neuen Strings in alle Sprachen zu übersetzen
Neue Dokumentationsseiten hinzufügen
- Erstellen Sie eine neue
.md-Datei indocumentation/docs/(oder einem Unterverzeichnis) - Fügen Sie sie in der Sidebar in
documentation/sidebars.tshinzu - Führen Sie
pnpm write-translationsaus, um die Struktur der Übersetzungsdateien zu aktualisieren - Führen Sie
pnpm write-heading-idsaus, um Überschrift-IDs (Anker) zu generieren - Führen Sie
pnpm translateaus, um die neue Seite in alle Sprachen zu übersetzen - Erstellen und testen:
pnpm build
Statische Assets
- Bilder: In
documentation/static/img/platzieren und in Markdown mit/img/filename.pngreferenzieren - Downloads/PDFs: In
documentation/static/platzieren und mit/filename.pdfreferenzieren - Pro-Locale-Assets: Wenn ein Asset lokal spezifisch sein muss (z. B. Screenshots), platzieren Sie es in
documentation/i18n/{locale}/docusaurus-plugin-content-docs/current/assets/
Erstellen & Testen
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
Testen Sie Ihre Änderungen immer in mindestens der Standard-Englischsprache und einer anderen Sprache, um sicherzustellen, dass die Übersetzungen korrekt angezeigt werden.