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

Lingo.dev Compiler

  • Fonctionnement
  • Configuration
  • Compiler : prise en main rapide

Frameworks

  • Intégration à Next.js
  • Vite + React

Guides

  • Changement de langue
  • Pluralisation automatique
  • Remplacements manuels
  • Modes de build
  • Structure du projet
  • Fournisseurs de traduction
  • Résolveurs de langue personnalisés
  • Outils de développement

Référence

  • Bonnes pratiques
  • Référence de configuration
  • Dépannage
  • Guide de migration
  • Optimisation
  • Formats de sortie

Structure du projet

Alpha

Le Compiler de Lingo.dev est en version alpha. Il est instable, n’est pas recommandé en production et les API peuvent changer d’une version à l’autre.

Le Compiler de Lingo.dev crée et maintient un répertoire .lingo/ à la racine de votre projet pour stocker les métadonnées de traduction et le cache. Comprendre sa structure vous aide à gérer les traductions dans le contrôle de version, à diagnostiquer les traductions manquantes et à optimiser les performances de build.

Le répertoire .lingo/#

Le Compiler crée ce répertoire automatiquement lors du premier build. Il contient toutes les métadonnées de traduction utilisées par le pipeline de build :

text
.lingo/
  metadata.json              # Translation cache and content hashes
  locale-resolver.server.ts  # Optional: custom server-side locale resolver
  locale-resolver.client.ts  # Optional: custom client-side locale resolver

metadata.json#

Il s’agit du fichier principal du répertoire .lingo/. Il contient :

  • Hachages de contenu — des identifiants stables basés sur un hash pour chaque chaîne traduisible
  • Traductions en cache — les traductions générées pour chaque paire de langues
  • Instantanés du texte source — le texte source au moment de la traduction, utilisé pour détecter les changements

Le Compiler lit ce fichier au début de chaque build. Les chaînes dont le hash correspond réutilisent les traductions en cache. Les chaînes dont le hash a changé ou est manquant sont envoyées au fournisseur de traduction configuré.

Versionnez-le

Versionnez toujours .lingo/metadata.json dans votre dépôt. Les builds de production en mode cache-only lisent les traductions exclusivement depuis ce fichier. S’il n’est pas versionné, les builds de production échoueront.

À savoir pour .gitignore#

N’ajoutez pas .lingo/ à .gitignore. Ce répertoire doit être suivi dans le contrôle de version. Exemple de .gitignore pour un projet qui utilise le Compiler :

gitignore
# Do NOT ignore .lingo/ - it contains translation cache
node_modules/
dist/
.env

sourceRoot#

L’option sourceRoot détermine le répertoire que le Compiler analyse pour trouver les composants React traduisibles :

ts
{
  sourceRoot: "./app",  // Next.js App Router
  // or
  sourceRoot: "src",    // Vite + React
}

Le Compiler analyse récursivement tous les fichiers .tsx, .ts, .jsx et .js dans sourceRoot à la recherche de contenu JSX traduisible. Les fichiers en dehors de ce répertoire ne sont pas traités.

Valeur de sourceRootÉléments analysés
"./app"Tous les fichiers du répertoire app/ (convention Next.js)
"src"Tous les fichiers du répertoire src/ (convention Vite)
"."Tous les fichiers à la racine du projet (utile pour les monorepos avec packages partagés)

Un sourceRoot plus large entraîne l’analyse d’un plus grand nombre de fichiers, ce qui augmente le temps de build. Gardez-le aussi restreint que possible. Si seules certaines parties doivent être traduites, utilisez plutôt l’option useDirective.

Mode opt-in avec 'use i18n'#

Par défaut, le Compiler traduit tout le texte JSX dans sourceRoot. Pour passer en mode opt-in, définissez useDirective: true :

ts
{
  useDirective: true,
}

En mode opt-in, seuls les fichiers qui commencent par la directive 'use i18n' sont traités :

tsx
'use i18n';

export function Welcome() {
  return <h1>Welcome to our app</h1>;
  // This text IS translated
}

Les fichiers sans cette directive sont ignorés :

tsx
export function InternalAdmin() {
  return <h1>Admin Dashboard</h1>;
  // This text is NOT translated
}

Quand utiliser le mode opt-in#

ScénarioMode recommandé
Petite application où tout le contenu doit être traduitPar défaut (useDirective: false)
Grande base de code avec seulement certaines pages destinées aux utilisateursOpt-in (useDirective: true)
Monorepo avec des composants internes et externes partagésOpt-in (useDirective: true)
Adoption progressive — ajout de l’i18n à une application existanteOpt-in (useDirective: true)

lingoDir#

L’option lingoDir change l’emplacement du répertoire de métadonnées :

ts
{
  lingoDir: ".lingo",  // Default
  // or
  lingoDir: ".translations",  // Custom location
}

C’est utile si .lingo/ entre en conflit avec un répertoire existant dans votre projet.

Étapes suivantes#

Modes de build
Comment metadata.json est utilisé dans chaque mode
Résolveurs de langue personnalisés
Ajoutez des fichiers de résolution à .lingo/
Référence de configuration
Options sourceRoot, lingoDir et useDirective
Bonnes pratiques
Conseils pour le contrôle de version et la configuration du projet

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

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