Konfigurationsreferenz
sourceLocale
BCP-47-Code für die Ausgangssprache (z. B. "en-GB", "en", "pt-BR"). Für diese Sprache wird keine Übersetzungsdatei generiert – der Schlüsseltext selbst ist der Ausgangstext.
Muss SOURCE_LOCALE entsprechen, der aus Ihrer Laufzeit-i18n-Konfigurationsdatei exportiert wird (src/i18n.ts / src/i18n.js).
targetLocales
Array mit BCP-47-Gebietsschemaschlüsseln, in die übersetzt werden soll (z. B. ["de", "fr", "es", "pt-BR"]).
targetLocales ist die primäre Gebietsschema-Liste für die UI-Übersetzung und die Standard-Gebietsschema-Liste für Dokumentationsblöcke. Verwenden Sie generate-ui-languages, um das ui-languages.json-Manifest aus sourceLocale + targetLocales zu erstellen.
uiLanguage (optional)
BCP-47-Code für die eigene UI-Sprache des Tools (CLI-Hilfe, Protokolle/Zusammenfassungen und das Übersetzungs-Dashboard). Er ist unabhängig von sourceLocale / targetLocales und wird durch das Flag -L / --ui-lang sowie die Umgebungsvariable AI_I18N_LANG überschrieben. Unbekannte Werte werden ordnungsgemäß auf das Quellgebietsschema (en-GB) herabgestuft – es gibt keine strikte Validierung. Siehe Tool-UI-Sprache.
languagesManifestPath (optional)
Optionale Zeichenfolge auf Stammebene (nicht unter ui verschachtelt). Pfad, unter dem extract und generate-ui-languages das ui-languages.json-Manifest schreiben und von dem die CLI es für Anzeigenamen und die Nachbearbeitung von Sprachlisten liest. Wenn weggelassen, wird beim Laden der Konfiguration standardmäßig ui.flatOutputDir/ui-languages.json verwendet.
Verwenden Sie dies, wenn:
- Das Manifest sollte sich außerhalb von
ui.flatOutputDirbefinden (z. B. neben App-Helfern untersrc/i18n/). - Sie möchten die Nachbearbeitung des Sprachumschalters (
languageListBlock), um Gebietsschema-Bezeichnungen aus dem Projektmanifest und nicht nur aus dem gebündelten Masterkatalog zu erstellen.
includeUiLanguageEnglishNames liest diese Datei nicht – es verwendet den gebündelten Masterkatalog (siehe ui.uiExtractor unten).
Legacy: Das Stammverzeichnis uiLanguagesPath wird beim Laden einer Konfigurationsdatei weiterhin akzeptiert und automatisch in languagesManifestPath umgeschrieben.
concurrency (optional)
Maximale Anzahl gleichzeitig übersetzter Zielgebietsschemata (translate-ui, translate-docs, translate-svg und die entsprechenden Schritte in sync). Wenn nicht angegeben, verwendet die CLI standardmäßig 4 für die UI-Übersetzung und 3 für die Dokumentationsübersetzung (integrierte Vorgaben). Kann pro Ausführung mit -j / --concurrency überschrieben werden.
batchConcurrency (optional)
translate-docs, translate-svg und translate-json (und die entsprechenden Schritte innerhalb von sync): maximale parallele LLM-Batch-Anfragen pro Datei (jeder Batch kann viele Segmente enthalten). Standardwert 4, wenn weggelassen. Wird von translate-ui ignoriert. Überschreiben mit -b / --batch-concurrency.
fileConcurrency (optional)
Maximale Anzahl gleichzeitig verarbeiteter Dateien innerhalb einer einzelnen Sprachumgebung während translate-docs und sync. Bei Werten größer als 1 werden Dateien innerhalb derselben Sprachumgebung parallel verarbeitet, wobei ein Semaphore zur Steuerung des Speicherverbrauchs verwendet wird. Standardwert ist 1 (sequenzielle Verarbeitung), wenn nicht angegeben. Höhere Werte können den Durchsatz bei I/O-gebundenen Operationen erheblich verbessern, insbesondere wenn alle Segmente bereits zwischengespeichert sind (keine API-Aufrufe erforderlich).
Beispiel:
{
"fileConcurrency": 4
}Anwendungsfall: Setzen Sie dies auf 2-4, wenn Sie sync --force-update mit 100 % Cache-Treffern ausführen, um die Gesamtverarbeitungszeit zu verkürzen. Die Verbesserung ist besonders bei vielen kleinen Dateien deutlich spürbar.
batchSize / maxBatchChars (optional)
Segment-Batching für translate-docs, translate-svg und translate-json: wie viele Segmente pro API-Anfrage und eine Zeichenobergrenze. Standardwerte: 20 Segmente, 4096 Zeichen (wenn weggelassen).
provider und providers
provider (Top-Level, optional) wählt den aktiven Provider-Schlüssel aus providers. Er ist optional, wenn genau ein Provider konfiguriert ist; erforderlich, wenn mehr als einer konfiguriert ist.
providers (Top-Level) ordnet einen Provider-Schlüssel seinem Block zu. Eingebaute Schlüssel (siehe Preset-Tabelle unten) benötigen nur translationModels; jeder andere Schlüssel definiert einen benutzerdefinierten OpenAI-kompatiblen Endpunkt und erfordert baseUrl (plus apiKeyEnv, es sei denn, der Endpunkt benötigt keinen Schlüssel).
Jeder providers.<name>-Block akzeptiert:
translationModelsBevorzugte geordnete Liste von Modell-IDs (reine Upstream-IDs, keinprovider/-Präfix; OpenRouter-IDs behalten ihr nativesvendor/model-Format). Die erste wird zuerst versucht; spätere Einträge sind Fallbacks bei Fehlern. Dies ist die globale Standardkette für jede Pipeline, wenn keine spezifischere Ebene zutrifft.uiModels(optional) Geordnete, nur für die Benutzeroberfläche bestimmte Modellliste fürtranslate-ui, Pluralgenerierung (Schritt 0 und Durchgang B) undproofread-ui. Wird nach jedem passendenlocaleModels-Eintrag für das Zielland vortranslationModelsversucht.localeModels(optional) Pro-Locale-Überschreibungen für alle Übersetzungs-Pipelines. Array von{ "locale": "<BCP-47>", "models": ["…"] }-Objekten. Locale-Tags werden unabhängig von Groß- und Kleinschreibung abgeglichen (pt-br=pt-BR). Die Liste jedes Locales wird zuerst nur für dieses Locale versucht, dann Pipeline-spezifische Ebenen (uiModelsfür UI) undtranslationModels. Doppelte normalisierte Locale-Schlüssel werden beim Laden der Konfiguration abgelehnt.baseUrlOpenAI-kompatible Basis-URL. Überschreibt die voreingestellte Basis-URL; erforderlich für einen nicht voreingestellten Anbieter.apiKeyEnvUmgebungsvariable, die den API-Schlüssel enthält. Überschreibt die voreingestellte Umgebungsvariable.headersZusätzliche HTTP-Header, die mit jeder Anfrage an diesen Anbieter gesendet werden.maxTokensMaximale Vervollständigungs-Tokens pro Anfrage. Standard:8192.temperatureSampling-Temperatur. Standard:0.2.requestTimeoutMsMaximale Wartezeit in Millisekunden für jede Anfrage. Standard:30000(30 Sekunden).
Integrierte Anbieter-Presets (Schlüssel — Basis-URL — API-Schlüssel-Umgebungsvariable):
| Anbieter | Basis-URL | API-Schlüssel-Umgebungsvariable |
|---|---|---|
openrouter | https://openrouter.ai/api/v1 | OPENROUTER_API_KEY |
openai | https://api.openai.com/v1 | OPENAI_API_KEY |
anthropic | https://api.anthropic.com/v1 | ANTHROPIC_API_KEY |
gemini | https://generativelanguage.googleapis.com/v1beta/openai | GOOGLE_API_KEY |
deepseek | https://api.deepseek.com | DEEPSEEK_API_KEY |
cerebras | https://api.cerebras.ai/v1 | CEREBRAS_API_KEY |
groq | https://api.groq.com/openai/v1 | GROQ_API_KEY |
mistral | https://api.mistral.ai/v1 | MISTRAL_API_KEY |
xai | https://api.x.ai/v1 | XAI_API_KEY |
nvidia | https://integrate.api.nvidia.com/v1 | NVIDIA_API_KEY |
alibaba | https://dashscope-intl.aliyuncs.com/compatible-mode/v1 | ALIBABA_API_KEY |
apifun | https://api.apikey.fun/v1 | APIFUN_API_KEY |
ollama | http://localhost:11434/v1 | (keine) |
Ein Legacy-Top-Level-openrouter-Block (mit baseUrl, translationModels, defaultModel, fallbackModel, maxTokens, temperature, requestTimeoutMs) wird immer noch akzeptiert und beim Laden automatisch in providers.openrouter (mit provider: "openrouter") migriert; defaultModel / fallbackModel werden in translationModels zusammengefasst.
Ein ausführbares Beispiel, das mehrere Anbieter in einer Konfiguration konfiguriert und mit -P zwischen ihnen wechselt, finden Sie unter examples/multi-provider (openai, anthropic, nvidia und deepseek im selben Dokument).
Warum mehrere Modelle verwenden: Verschiedene Provider und Modelle haben unterschiedliche Kosten und bieten unterschiedliche Qualitätsstufen über Sprachen und Gebiete hinweg. Konfigurieren Sie translationModels als eine geordnete Fallback-Kette (anstatt eines einzelnen Modells), damit die CLI das nächste Modell versuchen kann, wenn eine Anfrage fehlschlägt.
Betrachten Sie die folgende Liste als Grundlage, die Sie erweitern können: Wenn die Übersetzung für ein bestimmtes Gebietsschema schlecht oder erfolglos ist, recherchieren Sie, welche Modelle diese Sprache oder Schrift effektiv unterstützen (siehe Online-Ressourcen oder die Dokumentation Ihres Anbieters), und fügen Sie diese Modell-IDs als weitere Alternativen hinzu.
Diese Modell-IDs stimmen mit ai-i18n-tools init [-P <provider>] überein, wenn -P openrouter (die Standardeinstellung) verwendet wird. Andere Voreinstellungen erhalten native Modell-IDs von init -P <provider> – siehe Integrierte Anbieter.
Diese Liste wurde auf umfassende Abdeckung verschiedener Sprachen in einem großen Dokumentationsprojekt mit 36 Ziel-Lokalisierungen getestet; sie dient als praktischer Standard, ist jedoch nicht garantiert für jede Lokalisierung optimal.
Beispiel translationModels (gleiche Standardwerte wie ai-i18n-tools init [-P <provider>]):
Standard-Übersetzungsmodell-Fallback-Liste
"translationModels": [
"google/gemini-2.5-flash",
"meta-llama/llama-3.3-70b-instruct",
"openai/gpt-4o-mini",
"google/gemma-4-26b-a4b-it",
"~anthropic/claude-haiku-latest",
"z-ai/glm-5.2",
"google/gemini-3.5-flash",
"~anthropic/claude-sonnet-latest"
// … add more fallback models as needed
]Empfohlene uiModels: UI-Strings sind kurz, aber sehr sichtbar – ein Premium-Modell verbessert oft Ton, Pluralformen und Konsistenz. Optionale uiModels wird nach jedem passenden localeModels-Eintrag und vor translationModels versucht (siehe die Feldliste oben). Beispiel:
Empfohlene uiModels für die UI-Übersetzung
"uiModels": [
"~anthropic/claude-sonnet-latest",
"z-ai/glm-5.2"
]Empfohlene localeModels für asiatische Sprachen: Japanische, koreanische und chinesische Gebietsschemata profitieren oft von Modellen, die auf diese Schriften abgestimmt sind. Fügen Sie pro Gebietsschema Überschreibungen hinzu, die zuerst (vor uiModels / translationModels) versucht werden, wenn das Zielgebietsschema übereinstimmt:
Empfohlene localeModels für ja, ko, zh-Hans, zh-Hant
"localeModels": [
{ "locale": "ja", "models": [ "z-ai/glm-5.2", "minimax/minimax-m2.7" ] },
{ "locale": "ko", "models": [ "z-ai/glm-5.2", "minimax/minimax-m2.7" ] },
{ "locale": "zh-Hans", "models": [ "z-ai/glm-5.2", "minimax/minimax-m2.7" ] },
{ "locale": "zh-Hant", "models": [ "z-ai/glm-5.2", "minimax/minimax-m2.7" ] }
]Legen Sie die API-Schlüssel-Umgebungsvariable des aktiven Anbieters (siehe die Voreinstellungstabelle) in Ihrer Umgebung oder in der Datei .env fest.
Bevor Sie Modelllisten ändern, führen Sie ai-i18n-tools check-models aus. Für jeden Anbieter überprüft es jede konfigurierte Modell-ID (translationModels, uiModels und alle localeModels-Einträge) anhand der Live-Modellliste des Anbieters (GET /models), meldet fehlende oder veraltete IDs (expiration_date), listet die gültigen Modelle auf und beendet den Vorgang mit einem Fehlercode ungleich Null, wenn eine konfigurierte ID ungültig ist. Wenn der Anbieter Preise zurückgibt (z. B. OpenRouter), werden auch die geschätzten Eingabe-/Ausgabepreise (USD pro 1 Mio. Tokens) angezeigt.
Um die konfigurierten Modelle bei realen Übersetzungsarbeiten zu vergleichen, führen Sie ai-i18n-tools bench-models aus. Es bewertet jede eindeutige Modell-ID aus translationModels, uiModels und localeModels, indem es ein Beispiel isoliert (parallel, begrenzt durch concurrency) durch jedes Modell übersetzt und die Eingabe-/Ausgabe-Tokens pro Modell, die tatsächliche Zeit und die USD-Kosten ausgibt, sodass Sie die Geschwindigkeit gegen den Preis abwägen können, bevor Sie sich für Modelllisten entscheiden.
features
| Feld | Pipeline | Beschreibung |
|---|---|---|
translateUIStrings | 1 | Extrahiert t("…") / i18n.t("…") in strings.json, übersetzt dann Einträge und schreibt Flat JSON pro Gebietsschema (die Extraktion läuft automatisch; verwenden Sie das eigenständige extract, um nur den Katalog zu aktualisieren). |
translateDocs | 2 | Übersetzt .md / .mdx / .astro Seiten; Docusaurus Shell-JSON, wenn docs[].docusaurusCatalogDir gesetzt ist; Nextra _meta / Wörterbuch, wenn konfiguriert; VitePress-Theme, wenn docsOutput.vitepressThemeCatalog gesetzt ist; Fumadocs meta.json / UI-Katalog, wenn docsOutput.style "fumadocs" ist. |
translateJson | 3 | Beliebige verschachtelte JSON-Struktur unter json[] (translate-json). |
translateSVG | — | Übersetzen Sie .svg-Dateien (erfordert den svg-Block auf oberster Ebene). |
Übersetzen Sie SVG-Dateien mit translate-svg, wenn features.translateSVG wahr ist und ein oberster svg-Block konfiguriert ist. Der Befehl sync führt diesen Schritt aus, wenn beide gesetzt sind (es sei denn, --no-svg ist angegeben).
ui
sourceRoots
Verzeichnisse oder Glob-Muster (relativ zum aktuellen Verzeichnis), die nacht("…")-Aufrufen durchsucht werden. Unterstützt Muster wiesrc/oder["src/**/*.ts"].stringsJson
Pfad zur Master-Katalogdatei. Wird vonextractaktualisiert.flatOutputDir
Verzeichnis, in das die JSON-Dateien pro Locale geschrieben werden (de.json, etc.).uiExtractor.funcNames(oder veraltetreactExtractor.funcNames)
Zusätzliche zu scannende Funktionsnamen (Standard:["t", "i18n.t"]).uiExtractor.extensions(oder veraltetreactExtractor.extensions)
Dateierweiterungen, die eingeschlossen werden sollen (Standard:[".js", ".jsx", ".ts", ".tsx"]). Fügen Sie.astrofür Astro-Frontmatter und Template-Ausdrücke hinzu.uiExtractor.includePackageDescription(oder veraltetreactExtractor.includePackageDescription)
Wenntrue(Standard), schließtextractauchpackage.jsondescriptionals UI-String ein, falls vorhanden.uiExtractor.packageJsonPath(oder veraltetreactExtractor.packageJsonPath)
Benutzerdefinierter Pfad zurpackage.json-Datei, die für die optionale Beschreibungsextraktion verwendet wird.uiExtractor.includeUiLanguageEnglishNames(oder veraltetreactExtractor.includeUiLanguageEnglishNames)
Wenn true (Standard false), fügt extract auch jedes englishName aus dem gebündelten ui-languages-Masterkatalog (erstellt aus sourceLocale + targetLocales) zu strings.json hinzu, wenn es nicht bereits aus dem Quellscan vorhanden ist (gleiche Hash-Schlüssel). Liest languagesManifestPath nicht.
cacheDir
cacheDirSQLite-Cache-Verzeichnis (wird von allendocs-Blöcken gemeinsam genutzt). Standard.translation-cache. Wiederverwendung über mehrere Ausführungen hinweg. Wenn Sie von einem benutzerdefinierten Dokumentübersetzungs-Cache migrieren, archivieren oder löschen Sie ihn –cacheDirerstellt eine eigene SQLite-Datenbank und ist nicht mit anderen Schemata kompatibel.
Best Practice für git-Ausschlüsse:
- Schließen Sie den Inhalt des Übersetzungs-Cache-Ordners aus (z. B. mithilfe von
.gitignoreoder.git/info/exclude), um das Einchecken temporärer Cache-Artefakte zu verhindern. - Behalten Sie
cache.dbbei (löschen Sie es nicht routinemäßig), da die Beibehaltung des SQLite-Caches verhindert, dass unveränderte Segmente erneut übersetzt werden. Dies spart sowohl Laufzeit- als auch API-Kosten, wenn Software, dieai-i18n-toolsverwendet, aktualisiert oder geändert wird. - Schließen Sie temporäre Dateien und Protokolldateien aus, um das Einchecken von Sicherungs- und Debug-Dateien zu vermeiden.
Beispiel:
# Translation cache directory
.translation-cache/*
# Keep SQLite cache for reuse
!.translation-cache/cache.db
# Temporary and log files
*.tmp
*.logdocs
Array von Dokumentationspipeline-Blöcken. translate-docs und die Dokumentationsphase von sync verarbeiten jeden Block der Reihe nach. Legacy-Schlüssel werden zur Ladezeit weiterhin akzeptiert und neu geschrieben, wenn die Konfigurationsdatei beschreibbar ist; bevorzugen Sie aktuelle Namen in neuen Konfigurationen.
| Legacy-Schlüssel | Aktueller Schlüssel / Verhalten |
|---|---|
documentations | docs |
markdownOutput | docs[].docsOutput |
jsonSource | docs[].docusaurusCatalogDir |
Top-Level openrouter | providers.openrouter + provider: "openrouter" |
features.translateMarkdown | features.translateDocs |
features.translateJSON | entfernt (verwenden Sie docs[].docusaurusCatalogDir oder json[]) |
features.extractUIStrings | entfernt (extract läuft vor der UI-Übersetzung) |
glossary.uiGlossaryFromStringsJson | glossary.uiGlossary |
ui.reactExtractor | ui.uiExtractor (Alias wird weiterhin akzeptiert) |
svg.svgExtractor.forceLowercase | svg.forceLowercase |
Inhaltsquellen
descriptionOptionale, menschenlesbare Notiz für diesen Block (wird nicht für Übersetzungen verwendet). Wird bei Angabe demtranslate-docs-🌐-Überschriftentitel vorangestellt; erscheint auch instatus-Abschnittsüberschriften.contentPathsMarkdown-/MDX-Seiteninhalte und.astro-Vorlagen, die übersetzt werden sollen (translate-docsdurchsucht diese nach.md,.mdxund.astro). Unterstützt Verzeichnispfade oder Glob-Muster (z. B."docs/**/*.md","guides/*.mdx","src/pages/index.astro"). Hieraus stammt der lokalisierte Dokumentationstext.sourceFilesOptionaler Alias, der beim Laden incontentPathszusammengeführt wird.targetLocalesOptionale Untermenge von Sprachen (Lokalisierungen) nur für diesen Block (sonst die obergeordnetetargetLocales). Die wirksamen Dokumentationssprachen ergeben sich als Vereinigung über alle Blöcke.docusaurusCatalogDirOptional. Quellverzeichnis für Docusaurus-JSON-Label-Kataloge für diesen Block (z. B."i18n/en"vondocusaurus write-translations). Seiteninhalte stammen immer voncontentPaths;docusaurusCatalogDirliefert nur Shell-/UI-JSON, nicht MDX.nextraMetaGlobOptionale Glob(s) für Nextra_meta.ts/_meta.tsx/_meta.jsunterdocsRoot. WenndocsOutput.styleauf"nextra"gesetzt ist und dies weggelassen wird, werden alle_meta-Dateien unterdocsRootautomatisch gesammelt.nextraMetaTranslatableKeysOptionale Eigenschaftsnamen, deren Zeichenfolgenwerte in Nextra_meta-Objekten übersetzt werden (Standard:title,display,breadcrumb).nextraDictionaryPathOptionales englisches Nextra-Theme-Wörterbuchmodul (z. B."app/_dictionaries/en.ts"). Wird während{dir}/{locale}.tsnachtranslate-docsübersetzt.nextraDictionaryOutputTemplateOptionale Ausgabevorlage für lokale Wörterbuchmodule (Standard:{dir}/{locale}.tsrelativ zum Wörterbuchverzeichnis).
Ausgabe-Layout
outputDirStammverzeichnis für die übersetzte Ausgabe dieses Blocks.docsOutput.style"nested"(Standard),"flat","doc-system"oder Aliase"docusaurus"/"astro-starlight"/"vitepress"/"nextra".docsOutput.localeSubpathPfadsegment zwischen{locale}/und{relativeToDocsRoot}fürdoc-system(erforderlich bei direkter Verwendung vonstyle: "doc-system"; voreingestellt bei Verwendung eines Alias). Verwenden Sie""für Starlight-ähnliche Locale-Ordner.docsOutput.docsRootQuell-Dokumentationsstamm für Docusaurus-Layout (z. B."docs"). Standard"docs", wenn weggelassen.docsOutput.pathTemplateBenutzerdefinierter Markdown-Ausgabepfad. Platzhalter:"{outputDir}","{locale}","{LOCALE}","{llocale}","{relPath}","{stem}","{basename}","{extension}","{docsRoot}","{relativeToDocsRoot}".docsOutput.jsonPathTemplateBenutzerdefinierter JSON-Ausgabepfad für Label-Dateien. Unterstützt die gleichen Platzhalter wiepathTemplate.docsOutput.localePathLowercaseWenntrue, verwenden integrierte Ausgabelayouts (nested,flat,doc-systemohnepathTemplate) kleingeschriebene Gebietsschema-Segmente in Pfaden. Standardfalse;astro-starlightunddoc-systemmit leeremlocaleSubpathstandardmäßig auftruebeim Laden der Konfiguration.docsOutput.flatPreserveRelativeDirWenndocsOutput.style = "flat", Quellunterverzeichnisse beibehalten, damit Dateien mit demselben Basisnamen nicht kollidieren. Standardfalse.docsOutput.rewriteRelativeLinksRelative Links nach der Übersetzung neu schreiben (automatisch aktiviert, wenndocsOutput.style = "flat"und kein benutzerdefiniertespathTemplate).docsOutput.linkRewriteDocsRootDas Repository-Root-Verzeichnis, das beim Berechnen von Präfixen für Flat-Link-Umschreibungen verwendet wird. Dies sollte normalerweise als"."belassen werden, es sei denn, Ihre übersetzten Dokumente befinden sich unter einem anderen Projekt-Root-Verzeichnis.docsOutput.rewriteVitepressLinksWenntrue, den VitePress-Link-Normalisierer nach der Übersetzung ausführen. Standardmäßig aktiviert, wenndocsOutput.styleauf"vitepress"gesetzt ist. Verwenden Sie dies mit jedemdoc-system-Layout, bei dem sich die Gebietsschema-Ordner neben Englisch unterdocsRootbefinden. Schreibt README-ähnlichedocs/guide/…-Pfade in Site-Routen (/guide/…) und gebietsschema-relative../guide/…-Links um. Für Links zu Repository-Dateien außerhalb des VitePress-Baums (LICENSE,examples/) verwenden Sie vollständige URLs in der englischen Quelle – siehe VitePress-Integration – README als Dokumentations-Homepage.docsOutput.rewriteNextraLinksWenntrue, den Nextra-Link-Normalisierer nach der Übersetzung ausführen. Standardmäßig aktiviert, wenndocsOutput.styleauf"nextra"gesetzt ist. Schreibtcontent/en/…und relative.mdx-Pfade in gebietsschema-neutrale Site-Routen (/guide/…) für Next.jsi18num. Siehe Nextra-Integration – Link-Konventionen.docsOutput.fumadocsParser"dot"(Standard) oder"dir". Dot schreibtstem.{locale}.mdxneben englische Quellen; dir schreibt Gebietsschema-Ordner wie Nextra. Siehe Fumadocs-Integration – Seitenlayout.docsOutput.rewriteFumadocsLinksWenntrue, den Fumadocs-Link-Normalisierer nach der Übersetzung ausführen. Standardmäßig aktiviert, wenndocsOutput.styleauf"fumadocs"gesetzt ist. Schreibt Inhaltspfade und relative.mdx-Links in/docs/…-Routen um.docsOutput.fumadocsUiCatalogOptional. Fumadocs UI-Überschreibungskatalog-Bootstrap + Übersetzung innerhalb vontranslate-docs. Felder:sourcePath(z. B.lib/layout.shared.ts),catalogPath(generiertes englisches JSON), optionaloutputPathTemplate(Standard:ui.{locale}.jsonnebencatalogPath).docs[].fumadocsMetaGlobOptionale Globs für diemeta.json-Sammlung, wenndocsOutput.styleauf"fumadocs"gesetzt ist. Standard: rekursivesmeta.jsonunterdocsOutput.docsRoot.docs[].fumadocsMetaTranslatableKeysEigenschaftsnamen, deren String-Werte in Fumadocsmeta.jsonübersetzt werden (Standard:title,description).docsOutput.vitepressThemeCatalogOptional. VitePress Theme/Nav/Sidebar Katalog-Bootstrap + Übersetzung innerhalb vontranslate-docs. Felder:configPath(VitePress-Konfiguration mit Theme-Strings),catalogPath(generiertes englisches verschachteltes JSON), optionaloutputPathTemplate(Standard:theme.{locale}.jsonnebencatalogPath).
Nachbearbeitung
docsOutput.postProcessingOptionale Transformationen am übersetzten Markdown-Textkörper (YAML-Schlüssel und nicht-prosaartige Frontmatter-Werte bleiben erhalten). Wird nach der Segmentwiederherstellung und Link-Umschreibung (flat oder VitePress) und voraddFrontmatterausgeführt.docsOutput.postProcessing.regexAdjustmentsGeordnete Liste von{ "description"?, "search", "replace" }.searchist ein Regex-Muster (einfache Zeichenfolge verwendet Flaggoder/pattern/flags).replaceunterstützt Platzhalter wie${translatedLocale},${sourceLocale},${sourceFullPath},${translatedFullPath},${sourceFilename},${translatedFilename},${sourceBasedir},${translatedBasedir}.docsOutput.postProcessing.languageListBlock{ "start", "end", "separator", "label"? }– generiert eine begrenzte „in anderen Sprachen lesen“-Linkzeile in Quell- und übersetztem Markdown neu. ErfordertlanguagesManifestPath(oder ein Manifest unterui.flatOutputDir/ui-languages.json) für Endonym-Bezeichnungen, wennlabel: "local".
Verhalten und Metadaten
translateFrontmatterFieldsAuf derselben Ebene wiedocsOutput(prodocs[]-Block). Standardtrue: Übersetzt benutzerseitige YAML-Prosa für Starlight/Docusaurus (title,description,sidebar.label,sidebar_label,keywords,hero.title,hero.tagline,hero.image.alt,hero.actions[].text,pagination_label,prev/next-Bezeichnungen). Setzen Siefalse, um den gesamten Frontmatter-Block unverändert zu lassen; übergeben Sie ein String-Array, um auf bestimmte Dot-Pfade zu beschränken.segmentSplittingAuf derselben Ebene wiedocsOutput(prodocs[]-Block). Optionale feiner granulierte Segmente für dietranslate-docs-Extraktion:{ "enabled", "maxCharsPerSegment"?, "splitPipeTables"?, "splitDenseParagraphs"?, "maxLinesPerParagraphChunk"?, "splitLongLists"?, "maxListItemsPerChunk"?, "qualityRetrySplit"?, "maxQualityRetrySplitDepth"? }. Wennenabledtrueist (Standard, wennsegmentSplittingweggelassen wird), werden dichte Absätze, GFM-Pipe-Tabellen (der erste Block enthält Kopfzeile, Trennzeichen und erste Datenzeile) und lange Listen geteilt; Unterteile werden mit einzelnen Zeilenumbrüchen wieder zusammengeführt (tightJoinPrevious). Setzen Sie"enabled": false, um nur ein Segment pro durch Leerzeilen getrennten Textblock zu verwenden. WennqualityRetrySplittrueist (Standard), werden Markdown-Segmente, die nach Ausschöpfung aller Modelle die AST-Validierung nicht bestehen, schrittweise geteilt und ab dem ersten Modell erneut versucht;maxQualityRetrySplitDepth(Standard3) begrenzt rekursive Teilungen.warnMarkdownSourceIssuesWenntrue(Standard, wenn weggelassen), scannt jedertranslate-docs-Lauf Markdown-Segmente erneut auf riskante Trennzeichen / nicht geschlossenen Inline-Code, gibt Terminalwarnungen aus und ersetztmarkdown_source_issues-Zeilen für den Cache-Dateipfad dieser Datei. Setzen Siefalse, um Warnungen und SQLite-Updates für diesen Block zu überspringen.addFrontmatterWenntrue(Standard, wenn weggelassen), enthalten übersetzte Markdown-Dateien YAML-Schlüssel:translation_last_updated,source_file_mtime,source_file_hash,translation_language,source_file_path, und wenn mindestens ein Segment Modellmetadaten enthält,translation_models(sortierte Liste der Modell-IDs des aktiven Anbieters). Auffalsesetzen, um dies zu überspringen.emphasisPlaceholdersProdocs[]-Block. Wenntrue, werden Markdown-Hervorhebungsbegrenzer vor der Übersetzung als Platzhalter maskiert. Standardmäßigtruefür CJK-Gebietsschemas (zh,ja,ko) und für inrtlLocalesaufgeführte Gebietsschemas; ansonsten standardmäßigfalse. Überschreibbar über CLI--emphasis-placeholders/--no-emphasis-placeholders.rtlLocalesOptionales Array von BCP-47-Codes, die für Hervorhebungs-Platzhalter-Standardwerte als RTL behandelt werden (zusammengeführt mit integrierter RTL-Erkennung).
protectAttributesOptional. Zusätzliche JSX/HTML-Attributnamen, deren in Anführungszeichen stehende Zeichenkettenwerte nicht an den Übersetzer gesendet werden dürfen. Wird mit integrierten Standardwerten zusammengeführt (class,id,style,src,href,type,data-*, die meistenaria-*usw.). Groß-/Kleinschreibung wird ignoriert. Gilt für:.astro-Analyse-und-Ersetzungs-Extraktion (statische HTML-Tags und String-Literale nachattr=innerhalb von{expression}-Blöcken).- MDX-Platzhalter-Extraktion während der Übersetzung von Markdown/Astro-Abschnitten (
label,tooltipundaria-labelbei großgeschriebenen JSX-Tags sowieTabItemvalue, falls zutreffend).
- MDX-Platzhalter-Extraktion während der Übersetzung von Markdown/Astro-Abschnitten (
Beispiel: "protectAttributes": ["variant", "size"] behält variant="primary" innerhalb von {items.map(...)} unverändert über alle Sprachen hinweg.
Sie können auch normalerweise übersetzbare Attribute (z. B. "title" oder "aria-label") auflisten, wenn deren Werte wortwörtlich aus dem Englischen übernommen werden sollen.
protectKeysOptional. Zusätzliche Namen von Objekteigenschaften, deren in Anführungszeichen stehende String-Werte innerhalb von{expression}-Template-Blöcken und MDX-Objektliteralen nicht übersetzt werden dürfen (z. B.label:innerhalb von<Tabs values={[ … ]}>). Wird mit integrierten Standardwerten zusammengeführt (class,key,id,href,srcusw.). Groß-/Kleinschreibung wird ignoriert.
Beispiel: "protectKeys": ["slug", "code"] überspringt { slug: 'getting-started', title: 'Getting started' } → nur title wird übersetzt, wenn slug geschützt ist.
Beispiel (docsOutput.style = "flat" — Screenshot-Pfade + optionaler Sprachlisten-Wrapper):
Beispiel für die Nachbearbeitung im flachen Layout (Screenshots + languageListBlock)
"docsOutput": {
"style": "flat",
"postProcessing": {
"regexAdjustments": [
{
"description": "Per-locale screenshot folders",
"search": "images/screenshots/[^/]+/",
"replace": "images/screenshots/${translatedLocale}/"
}
],
"languageListBlock": {
"start": "<small id=\"lang-list\">",
"end": "</small>",
"separator": " · ",
"label": "local"
}
}
}json
Top-Level-Array von verschachtelten JSON-Übersetzungspipelines. Wird nur verwendet, wenn features.translateJson wahr ist (translate-json oder die JSON-Phase von sync). Siehe JSON.
| Feld | Beschreibung |
|---|---|
description | Optionale Anmerkung für CLI / status (wird nicht übersetzt). |
contentPaths | Quell-.json-Dateien, Verzeichnisse oder Muster unterhalb des Projekt-Stammverzeichnisses. |
outputPathTemplate | Erforderlicher Ausgabepfad pro Zielsprache. Platzhalter: {locale}, {LOCALE}, {llocale}, {stem}, {basename}, {extension}, {relativeToSourceRoot}. |
targetLocales | Optionaler Teilbereich für diesen Block; andernfalls Stamm-targetLocales. |
keyPolicy.mode | allowlist, denylist oder both. |
keyPolicy.translateKeys | Punkt-Pfade / Muster, die eingeschlossen werden sollen, wenn der Modus allowlist oder both ist. |
keyPolicy.skipKeys | Punkt-Pfade / Muster, die ausgeschlossen werden sollen (Standard-Verweigerungsliste enthält id, slug, href, url, key, code). |
svg
Pfade und Layout auf oberster Ebene für SVG-Dateien. Die Übersetzung wird nur ausgeführt, wenn features.translateSVG wahr ist (über translate-svg oder die SVG-Phase von sync).
| Feld | Beschreibung |
|---|---|
sourcePath | Ein oder mehrere Verzeichnisse oder Glob-Muster (z. B. "images/*.svg", "**/icons/*.svg"). Die Muster werden relativ zum Projektstamm aufgelöst und rekursiv nach .svg-Dateien durchsucht. |
outputDir | Stammverzeichnis für die übersetzte SVG-Ausgabe. |
style | "flat" oder "nested", wenn pathTemplate nicht gesetzt ist. |
pathTemplate | Benutzerdefinierter SVG-Ausgabepfad. Platzhalter: "{outputDir}", "{locale}", "{LOCALE}", "{llocale}", "{relPath}", "{stem}", "{basename}", "{extension}", "{relativeToSourceRoot}". |
localePathLowercase | Wenn true, verwenden integrierte flat / nested SVG-Layouts kleingeschriebene Gebietsschema-Abschnitte. Benutzerdefinierte pathTemplate-Werte bleiben unverändert; verwenden Sie {llocale} für klein geschriebene Abschnitte. |
forceLowercase | Kleinschreibung bei der Übersetzung beim erneuten Zusammensetzen des SVG. Nützlich für Designs, die auf vollständig kleingeschriebenen Beschriftungen basieren. |
glossary
| Feld | Beschreibung |
|---|---|
uiGlossary | Pfad zu strings.json – erstellt automatisch ein Glossar aus vorhandenen Übersetzungen. |
userGlossary | Pfad zu einer CSV-Datei mit den Spalten Original language string (oder en), locale, Translation – eine Zeile pro Quellbegriff und Zielsprache (locale kann * für alle Ziele sein). |
autoAddUserEditedToGlossary | Wenn true, können Dashboard-Bearbeitungen von UI-Strings automatisch dem Benutzerglossar hinzugefügt werden. |
Ein leeres Glossar im CSV-Format generieren:
ai-i18n-tools glossary-generate