Lingo.dev + .json-dictionary
Lingo.dev CLI übersetzt JSON-Dateien, bei denen jeder übersetzbare String mehrere Locale-Schlüssel in einem einzelnen Objekt enthält. Im Gegensatz zum Standard-JSON-Format, das Sprachen in verschiedene Dateien trennt, speichert json-dictionary alle Übersetzungen zusammen mit sprachspezifischen Schlüsseln wie {"en": "Hello", "es": "Hola"}
.
Schnelle Einrichtung
Erstellen Sie eine i18n.json
Konfigurationsdatei:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json-dictionary": {
"include": ["content/pages.json"]
}
}
}
Dateistruktur
Das json-dictionary Format speichert Übersetzungen als verschachtelte Objekte mit Locale-Schlüsseln:
{
"title": {
"en": "Welcome to our site",
"es": "Bienvenido a nuestro sitio"
},
"navigation": {
"home": {
"en": "Home",
"es": "Inicio"
},
"about": {
"en": "About Us",
"es": "Acerca de nosotros"
}
},
"staticValue": "This won't be translated",
"pages": [
{
"title": {
"en": "Page One",
"es": "Página Uno"
}
}
]
}
Alles übersetzen
npx lingo.dev@latest i18n
Die CLI führt automatisch folgende Aktionen durch:
- Extrahiert nur übersetzbare Objekte (solche mit Locale-Schlüsseln)
- Bewahrt nicht-übersetzbare Werte unverändert
- Fügt Zielsprachen-Schlüssel neben den bestehenden hinzu
- Behält die Reihenfolge der Quellsprachen-Schlüssel bei (Quellsprache zuerst, andere alphabetisch)
Schlüsselverhalten
Erkennung übersetzbarer Elemente: Nur Objekte, die Ihren Quellsprachen-Schlüssel enthalten, werden als übersetzbar betrachtet. Einfache Strings, Zahlen, Booleans und Objekte ohne Locale-Schlüssel bleiben unverändert.
Schlüsselreihenfolge: Beim Hinzufügen von Übersetzungen erscheint die Quellsprache zuerst, gefolgt von anderen Sprachen in alphabetischer Reihenfolge:
{
"message": {
"en": "Original text",
"de": "Deutscher Text",
"es": "Texto en español",
"fr": "Texte français"
}
}
Verschachtelungsunterstützung: Funktioniert mit tief verschachtelten Strukturen und Arrays, die übersetzbare Objekte enthalten.
Erweiterte Konfiguration
Dateien ausschließen
"json-dictionary": {
"include": ["content/*.json"],
"exclude": ["content/config.json"]
}