Pipelines kombinieren
Lesen Sie dies, wenn ein Projekt mehr als eine Art von Übersetzung benötigt: UI-Strings der App plus Dokumentation, eine Dokumentationsseite plus eine README-Datei im Stammverzeichnis oder Dokumente plus SVG-Illustrationen. Wenn Sie nur eine Art von Inhalt übersetzen, ist der Schnellstart ausreichend.
Eine App plus ihre Repository-README ist die gängige Hybridlösung. Gerüstet wird sie mit init (der ui-markdown-Vorlage) oder init -t <template> --with-readme, folgen Sie dann i18n zu Ihrer README und Markdown-Dokumentation hinzufügen. Die gemischte Konfiguration weiter unten auf dieser Seite ist die gleiche Idee neben einer Dokumentationsseite.
Dieses Repository ist ein solches Projekt. ai-i18n-tools.config.json übersetzt die CLI- und Translation Dashboard UI-Strings und diese VitePress-Website in einem sync. Der UI-Block umfasst src/cli, src/server, src/dashboard-app und src/api und schreibt flaches JSON unter src/i18n/locales. Der VitePress-Block verwendet docsOutput.style: "vitepress" für docs/ und den Themenkatalog. Dieselbe Datei schreibt auch README.md-Übersetzungen unter translated-docs/. Website-Verdrahtung: VitePress.
Was der Sync ausführt
ai-i18n-tools sync führt die aktivierten Schritte in dieser Reihenfolge aus:
extract, danntranslate-ui, wennfeatures.translateUIStringsaktiviert ist.translate-svg, wennfeatures.translateSVGaktiviert ist und einsvg-Block existiert.translate-docs, wennfeatures.translateDocsaktiviert ist oder ein beliebigesdocs[].docusaurusCatalogDirgesetzt ist.translate-json, wennfeatures.translateJsonaktiviert ist undjson[]Einträge hat.
Überspringen Sie Teile mit --no-ui, --no-svg, --no-docs oder --no-json. Die Schritte für Dokumente und json[] akzeptieren --dry-run, -p / --path, --force, --force-update und --check-cache. Nur-Dokumente-Flags werden ignoriert, wenn --no-docs gesetzt ist. JSON verwendet dieselben Cache-Flags, wenn --no-json nicht gesetzt ist.
Bevorzugen Sie sync gegenüber dem manuellen Verketten der einzelnen Befehle. Reihenfolge, Extraktion und Gebietsschema-Flags können bei manueller Ausführung leicht falsch sein.
UI-Strings und Dokumente gemeinsam
Aktivieren Sie beide Funktionen in einer Konfiguration, um UI-Strings und Dokumente in einem einzigen Durchlauf auszuführen:
Beispiel für kombinierte UI- und Dokumentationskonfiguration
{
"sourceLocale": "en-GB",
"targetLocales": ["de", "fr", "es", "pt-BR", "ja", "ko", "zh-Hans"],
"features": {
"translateUIStrings": true,
"translateDocs": true,
"translateSVG": false
},
"glossary": {
"userGlossary": "glossary-user.csv"
},
"ui": {
"sourceRoots": ["src/"],
"stringsJson": "src/locales/strings.json",
"flatOutputDir": "src/locales/"
},
"cacheDir": ".translation-cache",
"docs": [
{
"contentPaths": ["docs/"],
"outputDir": "i18n/",
"docsOutput": { "style": "flat" }
}
]
}UI-Blöcke enthalten standardmäßig ihre strings.json-Kataloge als Glossarhinweise für die Dokumentation (uiGlossary). glossary.userGlossary fügt CSV-Überschreibungen für Produktbegriffe hinzu. Siehe Glossar.
Weniger Gebietsschemas für Dokumente
Verwenden Sie docs[].targetLocales für einen Block, um die Dateien dieses Blocks in eine kleinere Untermenge als die UI zu übersetzen. Die effektiven Dokumentations-Gebietsschemas sind die Vereinigung über alle Blöcke hinweg:
{
"targetLocales": ["de", "fr", "es", "pt-BR", "ja", "ko", "zh-Hans"],
"docs": [
{
"contentPaths": ["docs/"],
"outputDir": "i18n/",
"targetLocales": ["de", "fr", "es"]
}
]
}Gemischte Dokumentationskonfiguration
Sie können mehrere Dokumentations-Pipelines in derselben Konfiguration kombinieren, indem Sie mehr als einen Eintrag in docs hinzufügen. Dies ist eine gängige Einrichtung, wenn ein Projekt eine Docusaurus-Website (docsOutput.style = "docusaurus") plus Markdown-Dateien auf Root-Ebene hat, wie z. B. eine Repository-README mit docsOutput.style = "flat", die mit Dateinamen mit Gebietsschema-Suffix übersetzt werden sollen.
Beispiel für gemischte Docusaurus- und flache README-Konfiguration
{
"sourceLocale": "en-GB",
"targetLocales": ["ar", "es", "fr", "de", "pt-BR"],
"features": {
"translateUIStrings": true,
"translateDocs": true
},
"ui": {
"sourceRoots": ["src/"],
"stringsJson": "locales/strings.json",
"flatOutputDir": "public/locales/"
},
"cacheDir": ".translation-cache",
"docs": [
{
"description": "Docusaurus site content (markdown)",
"contentPaths": ["docs-site/docs/"],
"outputDir": "docs-site/i18n",
"docusaurusCatalogDir": "docs-site/i18n/en",
"addFrontmatter": true,
"docsOutput": {
"style": "docusaurus",
"docsRoot": "docs-site/docs"
}
},
{
"description": "Root README with docsOutput.style flat",
"contentPaths": ["README.md"],
"outputDir": "translated-docs",
"addFrontmatter": false,
"docsOutput": {
"style": "flat",
"postProcessing": {
"languageListBlock": {
"start": "<small id=\"lang-list\">",
"end": "</small>",
"separator": " · ",
"label": "local"
}
}
}
}
]
}So läuft dies mit ai-i18n-tools sync ab:
- UI-Strings werden aus
src/extrahiert und inpublic/locales/übersetzt. - Der erste Dokumentationsblock übersetzt Markdown von
docs-site/docs/indocs-site/i18n/<locale>/docusaurus-plugin-content-docs/current/(lokalisierte Dokumentationsseiten). - Wenn
docs[].docusaurusCatalogDirgesetzt undfeatures.translateDocsaktiviert ist, übersetzt derselbe Block auch Docusaurus-Shell-JSON unterdocs-site/i18n/en/in jeden Ziel-Gebietsschema-Ordner: Navbar, Footer und Themen-/Plugin-Kataloge, nicht MDX-Haupttext. - Der zweite Dokumentationsblock übersetzt
README.mdin Dateien mit Gebietsschema-Suffix untertranslated-docs/(docsOutput.style = "flat"). - Alle Dokumentationsblöcke nutzen
cacheDirgemeinsam, sodass unveränderte Segmente zwischen den Durchläufen wiederverwendet werden, um API-Aufrufe und Kosten zu reduzieren.
Weiter: zurück zum Schnellstart, oder siehe Konfiguration für das vollständige Schema.