i18n.json Konfiguration
i18n.json ist eine standardmäßige Konfigurationsdatei, die das Verhalten der Lingo.dev CLI und der Lingo.dev CI/CD Integrationen steuert.
i18n.json implementiert eine schema-gesteuerte Konfiguration, die Spracheinstellungen, Dateientdeckungsmuster und KI-Übersetzungsmotor-Konfiguration in separate Abschnitte unterteilt. Dadurch können Entwickler genau verstehen, wie ihr Lokalisierungs-Workflow funktioniert, indem sie die Konfigurationsdatei lesen.
Diese Anleitung setzt voraus, dass Sie die Lingo.dev CLI installiert haben und einen Übersetzungs-Workflow konfigurieren. Nach Abschluss werden Sie die vollständige i18n.json-Struktur, Konfigurationsoptionen und wie jeder Abschnitt das Übersetzungsverhalten steuert, verstehen.
Version
Das Feld version gibt die Konfigurationsschema-Version an:
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": 1.8
}
Konfigurationselemente:
$schema
— Verweist auf die JSON-Schema-Definition für IDE-Autovervollständigung und Validierung. Das Schema hilft, Konfigurationsfehler frühzeitig zu erkennen, indem es Inline-Dokumentation und Typenprüfung bereitstellt.version
— Konfigurationsschema-Version für Migrations-Kompatibilität.
Lingo.dev CLI verwendet dieses Feld für automatische Konfigurationsmigration, wenn neue Schema-Versionen veröffentlicht werden.
Locale-Konfiguration
Der Abschnitt locale definiert, welche Sprachen die Lingo.dev CLI verarbeitet:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "ja", "de"]
}
}
Sprachcodes folgen dem BCP 47-Standard für Sprach-Tags, der Sprachcodes aus ISO 639 und optionale Regionscodes aus ISO 3166-1 enthält. Beispiele sind en
, en-US
, es-ES
und zh-Hans
.
Lingo.dev CLI unterstützt auch plattformspezifische Locale-Formate wie Androids en-rUS
-Konvention für Ressourcenverzeichnisse. Um die vollständige Liste der unterstützten Locale-Codes zu erhalten, führen Sie aus:
npx lingo.dev@latest show locale sources # Verfügbare Quellsprachen
npx lingo.dev@latest show locale targets # Verfügbare Zielsprachen
Wenn Ihr Locale-Code nicht unterstützt wird, erstellen Sie bitte einen Pull Request, um ihn hinzuzufügen!
Konfigurationselemente:
locale.source
— Quellsprachcode, der identifiziert, welche Dateien den maßgeblichen Inhalt enthalten. Alle Übersetzungen fließen von der Quelle zu den Zielen.locale.targets
— Array von Zielsprachcodes, die Ihre Zielmärkte repräsentieren. Jeder Code entspricht einer separaten Datei oder einem Abschnitt innerhalb einer Datei, abhängig vom Format.
Sprachverifizierungsbefehle:
Provider-Konfiguration
Der Abschnitt provider bestimmt, welchen KI-Übersetzungsdienst die Lingo.dev CLI verwendet. Dieser Abschnitt ist optional und verwendet standardmäßig die KI-Übersetzungs-Engine von Lingo.dev, wenn er weggelassen wird.
Für direkten LLM-API-Zugriff:
{
"provider": {
"id": "openai",
"model": "gpt-4o-mini",
"prompt": "Ihr benutzerdefinierter Übersetzungsprompt mit {source} und {target} Platzhaltern"
}
}
Für die Lingo.dev Engine:
Um die Lingo.dev Engine zu verwenden, lassen Sie den Provider-Abschnitt vollständig weg. Die Engine wählt automatisch Modelle und Prompts basierend auf Optimierungsforschung und Ihren Lingo.dev Engine-Einstellungen aus.
Konfigurationselemente:
provider.id
— Kennung des KI-Übersetzungsdienstes (z.B. "openai" oder "anthropic").provider.model
— Name des KI-Übersetzungsmodells (z.B. "gpt-4o-mini" für OpenAI oder "claude-3-haiku" für Anthropic).provider.prompt
— System-Prompt, der das Übersetzungsverhalten steuert. Die Platzhalter{source}
und{target}
werden zur Laufzeit durch die tatsächlichen Sprachcodes ersetzt.
Buckets-Konfiguration
Buckets definieren Muster zur Dateierkennung und Verarbeitungsregeln. Jeder Bucket repräsentiert ein Dateiformat mit spezifischen Include/Exclude-Mustern.
{
"buckets": {
"json": {
"include": ["locales/[locale].json", "app/[locale]/*.json"],
"exclude": ["locales/[locale]/internal.json"],
"lockedKeys": ["app/version", "config/apiUrl"],
"injectLocale": ["settings.language"]
},
"markdown": {
"include": ["docs/[locale]/*.md"],
"exclude": ["docs/[locale]/drafts/*.md"]
}
}
}
Konfigurationselemente:
buckets.[bucket-type]
— Konfigurationsgruppe für einen spezifischen Dateiformatbucket.buckets.[bucket-type].include
— Array von Dateientdeckungsmustern. Kann Strings oder Objekte enthalten.buckets.[bucket-type].include.[string]
— Einfaches Dateipfadmuster mit[locale]
-Platzhalter.buckets.[bucket-type].include.[object]
— Erweiterte Musterkonfiguration mit folgenden Eigenschaften:path
— Das Dateipfadmuster mit[locale]
-Platzhalter.delimiter
— Das Trennzeichen für Locale-Codes. Standardmäßig-
(Bindestrich), kann zu_
(Unterstrich) überschrieben werden. Überschreibt den Delimiter aus der Locale-Konfiguration.
buckets.[bucket-type].exclude
— Array von Dateiausschlussmustern, die während der Verarbeitung übersprungen werden sollen.buckets.[bucket-type].lockedKeys
— Array von Schlüsseln, die nicht übersetzt werden sollten. Verwendet Schrägstrich/
als Trennzeichen für verschachtelte Schlüssel.buckets.[bucket-type].ignoredKeys
— Array von Schlüsseln, die bei der Übersetzung ignoriert werden sollten. Verwendet Schrägstrich/
als Trennzeichen für verschachtelte Schlüssel.buckets.[bucket-type].injectLocale
— Array von Schlüsseln, in die der Locale-Code automatisch eingefügt werden soll.
Grundlegende Musterstruktur
Einschlussmuster verwenden eine Glob-ähnliche Syntax mit dem speziellen Platzhalter [locale]
:
locales/[locale].json
→locales/en.json
,locales/es.json
docs/[locale]/*.md
→docs/en/*.md
,docs/es/*.md
Ausschlussmuster verhindern die Verarbeitung bestimmter Dateien innerhalb von Einschlussmustern.
Erweiterte Musteroptionen
Benutzerdefinierte Locale-Trennzeichen für verschiedene Dateinamenformate:
{
"include": [
"standard/[locale].json",
{
"path": "underscore/[locale].json",
"delimiter": "_"
}
]
}
Verfügbare Trennzeichen:
-
(Bindestrich):en-US.json
_
(Unterstrich):en_US.json
Tipp: Diese Einstellung steuert das im Dateinamen verwendete Trennzeichen, sodass Sie es in einem Monorepo-Setup verwenden können, bei dem verschiedene Projekte unterschiedliche Trennzeichenkonventionen haben.
Unterstützte Bucket-Typen
Lingo.dev CLI unterstützt die folgenden Bucket-Typen für verschiedene Dateiformate:
android
— Android XML-Ressourcendateiencsv
— CSV-Dateien mit separaten Dateien für jede Zielspracheflutter
— Flutter ARB-Dateienhtml
— HTML-Dateien mit separaten Dateien für jede Zielsprachejson
— JSON-Dateien mit separaten Dateien für jede Zielsprachemarkdown
— Markdown-Dateien mit separaten Dateien für jede Zielsprachemdx
— MDX-Dateien mit separaten Dateien für jede Zielsprachexcode-strings
— Legacy Xcode .strings-Dateienxcode-stringsdict
— Xcode .stringsdict-Dateien für Pluralisierungxcode-xcstrings
— Xcode Strings-Katalogdateienyaml
— YAML-Dateien mit separaten Dateien für jede Zielspracheyaml-root-key
— YAML-Dateien mit Locale-basierten Root-Keysproperties
— Java .properties-Dateienpo
— GNU gettext .po-Dateienxml
— Generische XML-Dateien mit separaten Dateien für jede Zielsprachephp
— PHP-Array-Dateienvue-json
— Vue.js i18n JSON-Dateientypescript
— TypeScript-Dateien mit separaten Dateien für jede Zielsprache
Konfigurationsbeispiele
Grundkonfiguration
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": 1.8,
"locale": {
"source": "en",
"targets": ["es", "fr", "ja"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"]
}
}
}
Monorepo-Konfiguration
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": 1.8,
"locale": {
"source": "en-US",
"targets": ["es-ES", "fr-FR"]
},
"buckets": {
"json": {
"include": ["apps/web/locales/[locale].json"]
},
"mdx": {
"include": ["packages/docs/content/[locale]/*.mdx"]
},
"xcode-xcstrings": {
"include": ["ios/Localizable.xcstrings"]
},
"android": {
"include": ["android/values-[locale]/strings.xml"]
}
}
}
Versionsmigration
i18n.json implementiert eine intelligente Versionsmigration, die Ihre Konfiguration automatisch auf neuere Schema-Versionen aktualisiert und dabei alle Benutzereinstellungen beibehält.
Wenn Lingo.dev CLI eine ältere Konfigurationsversion erkennt:
- Erstellt es ein Backup Ihrer aktuellen
i18n.json
-Datei - Migriert die Konfiguration zur neuesten Schema-Version
- Bewahrt alle Einstellungen einschließlich benutzerdefinierter Provider, Bucket-Konfigurationen und gesperrter Schlüssel
- Aktualisiert das Versionsfeld entsprechend dem aktuellen Schema
Migrationsverhalten:
Die Migration wird automatisch ausgelöst während jeder CLI-Operation, die die Konfigurationsdatei liest. Kein manuelles Eingreifen ist erforderlich, und Ihr Übersetzungsworkflow läuft ohne Unterbrechung weiter.
Dieses Migrationssystem stellt sicher, dass i18n.json-Konfigurationen mit Lingo.dev CLI-Updates kompatibel bleiben und gleichzeitig die Abwärtskompatibilität mit bestehenden Projekten gewährleistet wird.