Verrouillage de clés

La CLI Lingo.dev vous permet de verrouiller des clés de traduction spécifiques afin que leurs valeurs restent identiques dans toutes les langues. Lorsque vous verrouillez des clés, la CLI les exclut du traitement de traduction et copie directement les valeurs sources dans tous les fichiers cibles.

Configuration du verrouillage de clés

Ajoutez lockedKeys à la configuration de votre bucket dans i18n.json :

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["system/component", "config/engine", "modules/processor"]
    }
  }
}

Le tableau lockedKeys utilise la notation barre oblique (/) pour spécifier les clés imbriquées et l'astérisque (*) pour correspondre à plusieurs clés.

Fonctionnement du verrouillage de clés

Pendant le traitement de traduction, la CLI Lingo.dev :

  1. Identifie les clés verrouillées à partir de votre configuration
  2. Les exclut de la traduction — le contenu verrouillé n'est jamais envoyé aux modèles d'IA
  3. Copie les valeurs sources directement dans tous les fichiers cibles
  4. Maintient la cohérence dans toutes les langues

Exemple de flux de travail :

// locales/en.json (source)
{
  "welcome": "Welcome to our platform",
  "system": {
    "component": "Lingo.dev CLI",
    "processor": "Translation Engine"
  },
  "config": {
    "engine": "Lingo.dev Engine"
  }
}

Avec la configuration des clés verrouillées :

{
  "lockedKeys": ["system/component", "system/processor", "config/engine"]
}

Traduction espagnole générée :

// locales/es.json (generated)
{
  "welcome": "Bienvenido a nuestra plataforma",
  "system": {
    "component": "Lingo.dev CLI",
    "processor": "Translation Engine"
  },
  "config": {
    "engine": "Lingo.dev Engine"
  }
}

Seul welcome est traduit, tandis que les clés verrouillées restent identiques à la source.

Sans verrouillage de clés, « Lingo.dev Engine » pourrait être mal traduit en « Motor de Lingo.dev » en espagnol ou « Lingo.devエンジン » en japonais, ce que nous ne voulons pas dans cet exemple.

Chemins de clés imbriquées

Utilisez la notation barre oblique (/) pour verrouiller des clés à n'importe quel niveau :

{
  "lockedKeys": [
    "system/engine/component",
    "modules/ai/processor",
    "config/translation/handler"
  ]
}

Cette notation fonctionne avec des structures imbriquées complexes :

// Source structure
{
  "system": {
    "engine": {
      "component": "Lingo.dev Engine"
    }
  }
}

Le chemin system/engine/component verrouille la valeur du nom du composant.

Clés contenant des points

La notation barre oblique gère les clés qui contiennent des points dans leurs noms :

// Source with dotted key names
{
  "modules": {
    "ai.translation": "AI Translation",
    "content.processor": "Content Processor"
  }
}

Verrouillez ces clés avec :

{
  "lockedKeys": ["modules/ai.translation", "modules/content.processor"]
}

Plusieurs types de buckets

Différents formats de fichiers peuvent avoir différentes clés verrouillées :

{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"],
      "lockedKeys": ["config/engine", "system/component"]
    },
    "yaml": {
      "include": ["translations/[locale].yml"],
      "lockedKeys": ["service/name", "module/title"]
    }
  }
}

Chaque type de bucket maintient sa propre liste de clés verrouillées en fonction de la structure du contenu.

Valeurs de tableau

Pour les clés avec des valeurs de tableau, ajoutez /* après le nom de la clé :

// Source file
{
  "navigation": {
    "menuItems": ["Home", "About", "Contact"],
    "title": "Main Navigation"
  }
}

Verrouillez le tableau avec :

{
  "lockedKeys": ["navigation/menuItems/*"]
}

Résultat :

// locales/es.json
{
  "navigation": {
    "menuItems": ["Home", "About", "Contact"],
    "title": "Navegación Principal"
  }
}