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 :
- Identifie les clés verrouillées à partir de votre configuration
- Les exclut de la traduction — le contenu verrouillé n'est jamais envoyé aux modèles d'IA
- Copie les valeurs sources directement dans tous les fichiers cibles
- 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"
}
}