Lingo.dev + .json-dictionary

Lingo.dev CLI traduit les fichiers JSON où chaque chaîne traduisible contient plusieurs clés de locale dans un seul objet. Contrairement au format JSON standard qui sépare les locales dans différents fichiers, json-dictionary stocke toutes les traductions ensemble avec des clés spécifiques à la locale comme {"en": "Hello", "es": "Hola"}.

Configuration rapide

Créez un fichier de configuration i18n.json :

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de"]
  },
  "buckets": {
    "json-dictionary": {
      "include": ["content/pages.json"]
    }
  }
}

Structure de fichier

Le format json-dictionary stocke les traductions sous forme d'objets imbriqués avec des clés de locale :

{
  "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"
      }
    }
  ]
}

Traduire tout

npx lingo.dev@latest i18n

Le CLI automatiquement :

  • Extrait uniquement les objets traduisibles (ceux avec des clés de locale)
  • Préserve les valeurs non traduisibles inchangées
  • Ajoute des clés de locale cible à côté des existantes
  • Maintient l'ordre des clés de locale source (source en premier, les autres par ordre alphabétique)

Comportement des clés

Détection des traduisibles : Seuls les objets contenant votre clé de locale source sont considérés comme traduisibles. Les chaînes simples, nombres, booléens et objets sans clés de locale restent inchangés.

Ordre des clés : Lors de l'ajout de traductions, la locale source apparaît en premier, suivie des autres locales par ordre alphabétique :

{
  "message": {
    "en": "Original text",
    "de": "Deutscher Text",
    "es": "Texto en español",
    "fr": "Texte français"
  }
}

Support imbriqué : Fonctionne avec des structures profondément imbriquées et des tableaux contenant des objets traduisibles.

Configuration avancée

Exclure des fichiers

"json-dictionary": {
  "include": ["content/*.json"],
  "exclude": ["content/config.json"]
}