|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

Intégration à Next.js

Alpha

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

Le Compiler de Lingo.dev s’intègre à l’App Router de Next.js via un wrapper de configuration withLingo() qui transforme votre pipeline de build pour générer des bundles par langue. Il prend en charge React Server Components, Webpack et Turbopack, sans aucune modification du code de vos composants.

Prérequis#

Configuration requise

  • Next.js 14+ avec App Router
  • Node.js 18+
  • @lingo.dev/compiler installé

Installer#

bash
pnpm install @lingo.dev/compiler

Configurer next.config.ts#

Enveloppez votre configuration Next.js avec withLingo. La fonction de configuration doit être async — c’est indispensable, car withLingo effectue une initialisation asynchrone pendant le build.

ts
// next.config.ts
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";

const nextConfig: NextConfig = {};

export default async function (): Promise<NextConfig> {
  return await withLingo(nextConfig, {
    sourceRoot: "./app",
    sourceLocale: "en",
    targetLocales: ["es", "de", "fr", "ja"],
    models: "lingo.dev",
    dev: {
      usePseudotranslator: true,
    },
  });
}

Configuration async requise

La configuration doit être exportée sous la forme d’une fonction async, et non d’un simple objet. Si vous exportez un objet simple, le compiler ne pourra pas s’initialiser et le build échouera. Consultez Troubleshooting pour plus de détails.

Ajouter LingoProvider#

Enveloppez votre layout racine avec LingoProvider pour activer le contexte de langue dans tout l’arbre de composants :

tsx
// app/layout.tsx
import { LingoProvider } from "@lingo.dev/compiler/react";

export default function RootLayout({ children }: { children: React.ReactNode }) {
  return (
    <LingoProvider>
      <html>
        <body>{children}</body>
      </html>
    </LingoProvider>
  );
}

LingoProvider gère la détection de la langue, sa persistance et le chargement des dictionnaires. Il fonctionne aussi bien avec les Server Components que les Client Components.

Server Components et Client Components#

Le compiler gère les deux types de composants en toute transparence :

Type de composantFonctionnement des traductions
React Server ComponentsTraductions résolues au moment de la requête côté serveur. Aucun surcoût JS côté client.
Client Components ("use client")Traductions incluses dans le chunk client. useLingoContext() est disponible pour changer de langue.
Composants partagésFonctionnent dans les deux contextes. Le compiler détecte automatiquement l’environnement de rendu.
tsx
// app/page.tsx - Server Component (default)
export default function Home() {
  return <h1>Welcome to our app</h1>;
  // Renders translated text with zero client JS
}
tsx
// app/components/greeting.tsx - Client Component
"use client";

export function Greeting() {
  return <p>Hello, world</p>;
  // Translations included in client bundle
}

Prise en charge des bundlers#

Le wrapper withLingo() fonctionne avec les deux bundlers pris en charge par Next.js :

BundlerPrise en chargeRemarques
WebpackComplèteBundler par défaut. Aucune configuration supplémentaire requise.
TurbopackComplèteÀ activer avec next dev --turbopack. Le compiler détecte automatiquement Turbopack.

Configuration de sourceRoot#

L’option sourceRoot indique au compiler quel répertoire contient vos composants traduisibles. Pour les projets Next.js App Router, il s’agit généralement de ./app :

ts
{
  sourceRoot: "./app",
}

Si vous avez des composants en dehors de ./app (par exemple dans un répertoire partagé components/), définissez sourceRoot sur leur parent commun :

ts
{
  sourceRoot: ".",
}

Un sourceRoot plus large signifie que davantage de fichiers seront analysés. Pour les projets volumineux, gardez-le aussi restreint que possible afin de réduire les temps de build. Vous pouvez aussi utiliser useDirective: true et n’ajouter 'use i18n' qu’aux fichiers qui nécessitent une traduction. Consultez Project Structure pour plus de détails.

Étapes suivantes#

Configuration
Guide complet de configuration avec authentification
Référence de configuration
Toutes les options de configuration
Changement de langue
Ajoutez un sélecteur de langue à votre application
Modes de build
Workflows de développement, de CI et de production

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

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