|Labs
Réserver une démoPlateforme
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI historique (v0)
Déconseillé

Lingo.dev CLI

  • Fonctionnement
  • Installation
  • Démarrage rapide
  • Monorepos

Configuration

  • Formats pris en charge
  • i18n.json
  • i18n.lock
  • Langues prises en charge

Fonctionnalités

  • Traductions existantes
  • Ajouter des langues
  • Surcharges
  • Notes de traduction
  • Clés de traduction
  • Renommage des clés
  • Verrouillage des clés
  • Ignorer des clés
  • Préservation des clés
  • Extraire des clés avec l’IA

Performance

  • Projets d’envergure
  • Traitement parallèle
  • Estimation des coûts

Retraduction

  • Retraduction automatique
  • Retraduction
  • Supprimer des traductions

Cette documentation couvre le CLI historique (v0) et est déconseillée. Le CLI actuel est la v1. Voir la documentation du CLI actuel

Formats pris en charge

Le CLI Lingo.dev s’appuie sur des types de bucket pour analyser et traduire différents formats de fichiers. Chaque type de bucket correspond à un parseur dédié, conçu pour un format précis. Configurez un ou plusieurs buckets dans votre i18n.json afin de définir quels fichiers le CLI doit traduire.

Types de bucket#

Type de bucketFormatMode de sortie[locale] requis
jsonFichiers JSONUn fichier distinct par langueOui
json5Fichiers JSON5Un fichier distinct par langueOui
jsoncFichiers JSONC (avec commentaires)Un fichier distinct par langueOui
json-dictionaryDictionnaire JSON (clé-valeur à plat)Un fichier distinct par langueOui
yamlFichiers YAMLUn fichier distinct par langueOui
yaml-root-keyYAML avec clés racines par langueModifie le fichier sourceNon
markdownFichiers MarkdownUn fichier distinct par langueOui
mdxFichiers MDXUn fichier distinct par langueOui
markdocFichiers MarkdocUn fichier distinct par langueOui
htmlFichiers HTMLUn fichier distinct par langueOui
mjmlTemplates d’e-mails MJMLUn fichier distinct par langueOui
androidRessources XML AndroidUn fichier distinct par langueOui
xcode-stringsFichiers Xcode .stringsUn fichier distinct par langueOui
xcode-stringsdictFichiers Xcode .stringsdictUn fichier distinct par langueOui
xcode-xcstringsCatalogues Xcode .xcstringsModifie le fichier sourceNon
flutterFichiers ARB FlutterUn fichier distinct par langueOui
poFichiers PO GNU gettextUn fichier distinct par langueOui
propertiesFichiers Java .propertiesUn fichier distinct par langueOui
csvFichiers CSVModifie le fichier sourceNon
csv-per-localeFichiers CSV (un par langue)Un fichier distinct par langueOui
xmlFichiers XML génériquesUn fichier distinct par langueOui
xliffFichiers XLIFFUn fichier distinct par langueOui
srtFichiers de sous-titres SRTUn fichier distinct par langueOui
vttFichiers de sous-titres VTTUn fichier distinct par langueOui
phpTableaux de localisation PHPUn fichier distinct par langueOui
typescriptFichiers TypeScriptUn fichier distinct par langueOui
vue-jsonBlocs JSON i18n de VueUn fichier distinct par langueOui
txtFichiers texte brutUn fichier distinct par langueOui

Modes de sortie#

Les buckets fonctionnent selon l’un des deux modes de sortie suivants :

Un fichier distinct par langue — le CLI crée un fichier dédié pour chaque langue cible. Les motifs d’inclusion doivent contenir l’espace réservé [locale] :

json
{
  "buckets": {
    "json": {
      "include": ["locales/[locale].json"]
    }
  }
}

Vous obtenez ainsi locales/en.json, locales/es.json, locales/fr.json, etc.

Modifie le fichier source — le CLI réécrit les traductions dans le même fichier que celui qui contient le contenu source. L’espace réservé [locale] n’est pas utilisé :

json
{
  "buckets": {
    "csv": {
      "include": ["translations.csv"]
    }
  }
}

Les fichiers CSV stockent généralement toutes les langues dans des colonnes au sein d’un même fichier. Les catalogues Xcode .xcstrings et les fichiers YAML avec clés racines fonctionnent de façon similaire.

Exemples de configuration#

Application web avec JSON#

json
{
  "buckets": {
    "json": {
      "include": ["src/locales/[locale].json"],
      "lockedKeys": ["brand/name"]
    }
  }
}

Site de documentation avec Markdown#

json
{
  "buckets": {
    "markdown": {
      "include": ["docs/[locale]/*.md"],
      "exclude": ["docs/[locale]/drafts/*.md"]
    }
  }
}

Application mobile (iOS + Android)#

json
{
  "buckets": {
    "xcode-xcstrings": {
      "include": ["ios/Localizable.xcstrings"]
    },
    "android": {
      "include": ["android/app/src/main/res/values-[locale]/strings.xml"]
    }
  }
}

Monorepo avec plusieurs formats#

json
{
  "buckets": {
    "json": {
      "include": ["apps/web/locales/[locale].json"]
    },
    "mdx": {
      "include": ["packages/docs/content/[locale]/*.mdx"]
    },
    "flutter": {
      "include": ["apps/mobile/lib/l10n/app_[locale].arb"]
    }
  }
}

Fonctionnalités propres à chaque bucket#

Certains buckets prennent en charge des fonctionnalités supplémentaires au-delà des motifs include/exclude :

FonctionnalitéBuckets pris en chargeDescription
Key LockingFormats clé-valeur (JSON, YAML, etc.)Recopier les valeurs source sans les traduire
Key IgnoringFormats clé-valeurExclure complètement des clés des fichiers cibles
Key PreservingFormats clé-valeurInitialiser une seule fois, puis empêcher toute mise à jour
Translator NotesJSONC, XCStringsAjouter du contexte via des commentaires pour améliorer la traduction

Règles des motifs d’inclusion#

  • Les motifs sont relatifs à l’emplacement du fichier i18n.json
  • Utilisez [locale] comme espace réservé pour les codes de langue (obligatoire pour les buckets en mode « fichier distinct »)
  • L’astérisque (*) correspond à n’importe quel nom de fichier : locales/[locale]/*.json
  • Les motifs récursifs (**) correspondent à des fichiers à n’importe quel niveau de profondeur : src/**/[locale].json, config/locales/**/[locale].yml. Lorsqu’un motif utilise **, node_modules, .git, dist, build, .next et .turbo sont exclus par défaut — ajoutez vos propres entrées exclude si nécessaire (nécessite CLI 0.135.0+)
  • Les extensions de fichier n’ont aucune incidence sur l’analyse — c’est le type de bucket qui détermine le parseur

Étapes suivantes#

i18n.json
Référence complète de la configuration
Key Locking
Empêcher la traduction de clés spécifiques
Traductions existantes
Ajouter le CLI à un projet qui comporte déjà des traductions
Setup
Installer et configurer le CLI

Cette page vous a-t-elle été utile ?

Max PrilutskiyMax Prilutskiy·Mis à jour il y a 1 jour·4 min de lecture