Schlüsselsperrung
Lingo.dev CLI ermöglicht es Ihnen, bestimmte Übersetzungsschlüssel zu sperren, sodass ihre Werte in allen Sprachen identisch bleiben. Wenn Sie Schlüssel sperren, schließt die CLI sie von der Übersetzungsverarbeitung aus und kopiert die Quellwerte direkt in alle Zieldateien.
Einrichtung der Schlüsselsperrung
Fügen Sie lockedKeys zu Ihrer Bucket-Konfiguration in i18n.json hinzu:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"lockedKeys": ["system/component", "config/engine", "modules/processor"]
}
}
}
Das lockedKeys Array verwendet die Schrägstrich-Notation (/), um verschachtelte Schlüssel anzugeben, und das Sternchen (*), um mehrere Schlüssel zu erfassen.
Funktionsweise der Schlüsselsperrung
Während der Übersetzungsverarbeitung führt Lingo.dev CLI folgende Schritte aus:
- Identifiziert gesperrte Schlüssel aus Ihrer Konfiguration
- Schließt sie von der Übersetzung aus — gesperrte Inhalte werden niemals an KI-Modelle gesendet
- Kopiert Quellwerte direkt in alle Zieldateien
- Gewährleistet Konsistenz über alle Sprachen hinweg
Beispiel-Workflow:
// locales/en.json (source)
{
"welcome": "Welcome to our platform",
"system": {
"component": "Lingo.dev CLI",
"processor": "Translation Engine"
},
"config": {
"engine": "Lingo.dev Engine"
}
}
Mit Konfiguration für gesperrte Schlüssel:
{
"lockedKeys": ["system/component", "system/processor", "config/engine"]
}
Generierte spanische Übersetzung:
// locales/es.json (generated)
{
"welcome": "Bienvenido a nuestra plataforma",
"system": {
"component": "Lingo.dev CLI",
"processor": "Translation Engine"
},
"config": {
"engine": "Lingo.dev Engine"
}
}
Nur welcome wird übersetzt, während gesperrte Schlüssel identisch zur Quelle bleiben.
Ohne Schlüsselsperrung könnte "Lingo.dev Engine" fälschlicherweise als "Motor de Lingo.dev" ins Spanische oder als "Lingo.devエンジン" ins Japanische übersetzt werden, was wir in diesem Beispiel nicht möchten.
Verschachtelte Schlüsselpfade
Verwenden Sie die Schrägstrich-Notation (/), um Schlüssel in beliebiger Tiefe zu sperren:
{
"lockedKeys": [
"system/engine/component",
"modules/ai/processor",
"config/translation/handler"
]
}
Diese Notation funktioniert mit komplexen verschachtelten Strukturen:
// Source structure
{
"system": {
"engine": {
"component": "Lingo.dev Engine"
}
}
}
Der Pfad system/engine/component sperrt den Wert des Komponentennamens.
Schlüssel mit Punkten
Die Schrägstrich-Notation verarbeitet Schlüssel, die Punkte in ihren Namen enthalten:
// Source with dotted key names
{
"modules": {
"ai.translation": "AI Translation",
"content.processor": "Content Processor"
}
}
Sperren Sie diese Schlüssel mit:
{
"lockedKeys": ["modules/ai.translation", "modules/content.processor"]
}
Mehrere Bucket-Typen
Verschiedene Dateiformate können unterschiedliche gesperrte Schlüssel haben:
{
"buckets": {
"json": {
"include": ["locales/[locale].json"],
"lockedKeys": ["config/engine", "system/component"]
},
"yaml": {
"include": ["translations/[locale].yml"],
"lockedKeys": ["service/name", "module/title"]
}
}
}
Jeder Bucket-Typ verwaltet seine eigene Liste gesperrter Schlüssel basierend auf der Inhaltsstruktur.
Array-Werte
Für Schlüssel mit Array-Werten fügen Sie /* nach dem Schlüsselnamen hinzu:
// Source file
{
"navigation": {
"menuItems": ["Home", "About", "Contact"],
"title": "Main Navigation"
}
}
Sperren Sie das Array mit:
{
"lockedKeys": ["navigation/menuItems/*"]
}
Ergebnis:
// locales/es.json
{
"navigation": {
"menuItems": ["Home", "About", "Contact"],
"title": "Navegación Principal"
}
}