Konfigurationsreferenz

Vollständige Referenz für alle Konfigurationsoptionen von @lingo.dev/compiler.

Kernoptionen

OptionTypStandardBeschreibung
sourceRootstring"src"Stammverzeichnis mit dem zu übersetzenden Quellcode
lingoDirstring".lingo"Verzeichnis für Übersetzungsmetadaten und Cache
sourceLocalestring(erforderlich)Quellsprachen-Code (z. B. "en", "en-US")
targetLocalesstring[](erforderlich)Array der Zielsprachen-Codes, in die übersetzt werden soll
useDirectivebooleanfalseOb die 'use i18n'-Direktive für Opt-in-Übersetzung erforderlich ist
modelsstring | object"lingo.dev"Konfiguration des Übersetzungsanbieters (siehe Übersetzungsanbieter)
promptstringundefinedBenutzerdefinierte Übersetzungs-Prompt-Vorlage
buildMode"translate" | "cache-only""translate"Build-Modus (siehe Build-Modi)

Beispiel

{
  sourceRoot: "./app",
  lingoDir: ".lingo",
  sourceLocale: "en",
  targetLocales: ["es", "de", "fr", "ja"],
  useDirective: false,
  models: "lingo.dev",
  buildMode: "translate",
}

Entwicklungsoptionen

Konfigurieren Sie entwicklungsspezifisches Verhalten über das dev-Objekt:

OptionTypStandardBeschreibung
dev.usePseudotranslatorbooleanfalseVerwenden Sie Fake-Übersetzungen anstelle von echter KI (empfohlen für die Entwicklung)
dev.translationServerStartPortnumber60000Startport für Übersetzungsserver (findet automatisch 60000-60099)
dev.translationServerUrlstringundefinedBenutzerdefinierte Übersetzungsserver-URL (erweiterte Verwendung)

Beispiel

{
  dev: {
    usePseudotranslator: true, // Fast fake translations
    translationServerStartPort: 60000, // Default port range
  }
}

Warum Pseudotranslator? Es ist sofort verfügbar (keine API-Aufrufe), zeigt genau, was übersetzt wird, und testet dein UI mit unterschiedlichen Textlängen – alles ohne API-Kosten.

Locale-Persistenz

Konfiguriere, wie Locale-Änderungen gespeichert werden:

OptionTypStandardBeschreibung
localePersistence.type"cookie""cookie"Aktuell wird nur Cookie-basierte Persistenz unterstützt
localePersistence.config.namestring"locale"Cookie-Name
localePersistence.config.maxAgenumber31536000Maximale Cookie-Lebensdauer in Sekunden (Standard: 1 Jahr)

Beispiel

{
  localePersistence: {
    type: "cookie",
    config: {
      name: "user-locale",
      maxAge: 31536000, // 1 year
    },
  },
}

Eigene Persistenz? Implementiere Custom Locale Resolvers, um localStorage, URL-Parameter oder Datenbank-Persistenz zu nutzen.

Pluralisierung

Konfiguriere die automatische Erkennung von Pluralformen:

OptionTypStandardBeschreibung
pluralization.enabledbooleantrueAutomatische Erkennung von ICU MessageFormat aktivieren
pluralization.modelstring"groq:llama-3.1-8b-instant"LLM-Modell zur Erkennung von Pluralformen

Beispiel

{
  pluralization: {
    enabled: true,
    model: "groq:llama-3.1-8b-instant", // Fast model for plural detection
  },
}

Funktionsweise: Der Compiler erkennt Pluralformen in deinem Text (z. B. "Du hast 5 Elemente") und wandelt sie in ICU MessageFormat um ({count, plural, one {1 item} other {# items}}).

Für Performance deaktivieren: Wenn du keine Pluralformen verwendest, deaktiviere dies, um LLM-Aufrufe für die Pluralisierung zu überspringen.

Übersetzungsanbieter

Die Option models konfiguriert, welche LLM-Anbieter für Übersetzungen verwendet werden.

Einfache Konfiguration

Verwende einen einzelnen Anbieter für alle Übersetzungen:

{
  models: "lingo.dev" // Recommended: Lingo.dev Engine
}

Erweiterte Konfiguration

Verwenden Sie Locale-Pair-Mapping für granulare Kontrolle:

{
  models: {
    "en:es": "groq:llama-3.3-70b-versatile", // English to Spanish
    "en:de": "google:gemini-2.0-flash",      // English to German
    "*:fr": "openai:gpt-4o",                 // Any locale to French
    "*:*": "anthropic:claude-3-5-sonnet",    // Fallback for all others
  }
}

Muster:

  • "source:target": Spezifisches Locale-Paar (z. B. "en:es")
  • "*:target": Beliebige Quelle zu spezifischem Ziel (z. B. "*:de")
  • "source:*": Spezifische Quelle zu beliebigem Ziel (z. B. "en:*")
  • "*:*": Fallback für alle Paare

Siehe Translation Providers für Provider-Syntax und API-Key-Setup.

Benutzerdefinierte Übersetzungsprompts

Passen Sie den Übersetzungsprompt mithilfe von Platzhaltern an:

{
  prompt: `Translate from {SOURCE_LOCALE} to {TARGET_LOCALE}.
Use a formal tone and preserve all technical terms.
Do not translate brand names or product names.`
}

Verfügbare Platzhalter:

  • {SOURCE_LOCALE}: Quell-Locale-Code (z. B. "en")
  • {TARGET_LOCALE}: Ziel-Locale-Code (z. B. "es")

Der Compiler fügt Kontext über den zu übersetzenden Text (Komponentenposition, umgebende Elemente) an Ihren benutzerdefinierten Prompt an.

Überschreibung durch Umgebungsvariablen

Überschreiben Sie die Konfiguration über Umgebungsvariablen:

# Override build mode
LINGO_BUILD_MODE=cache-only npm run build

# Set API key
LINGODOTDEV_API_KEY=your_key_here
GROQ_API_KEY=gsk_...
GOOGLE_API_KEY=...
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
MISTRAL_API_KEY=...
OPENROUTER_API_KEY=...

Vollständiges Beispiel

// 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, {
    // Core
    sourceRoot: "./app",
    lingoDir: ".lingo",
    sourceLocale: "en",
    targetLocales: ["es", "de", "fr", "ja"],
    useDirective: false,

    // Build mode
    buildMode: process.env.NODE_ENV === "production" ? "cache-only" : "translate",

    // Models
    models: {
      "en:es": "groq:llama-3.3-70b-versatile",
      "*:*": "lingo.dev",
    },

    // Custom prompt
    prompt: "Translate from {SOURCE_LOCALE} to {TARGET_LOCALE}. Use a professional tone.",

    // Development
    dev: {
      usePseudotranslator: true,
      translationServerStartPort: 60000,
    },

    // Locale persistence
    localePersistence: {
      type: "cookie",
      config: {
        name: "locale",
        maxAge: 31536000,
      },
    },

    // Pluralization
    pluralization: {
      enabled: true,
      model: "groq:llama-3.1-8b-instant",
    },
  });
}

TypeScript-Typen

Importieren Sie Konfigurationstypen für Typsicherheit:

import type { LingoConfig } from "@lingo.dev/compiler";

const config: LingoConfig = {
  // ...config
};

Häufige Fragen

Muss ich alle Optionen konfigurieren? Nein. Nur sourceLocale und targetLocales sind erforderlich. Alle anderen haben sinnvolle Standardwerte.

Was ist der Unterschied zwischen sourceRoot und lingoDir? sourceRoot ist der Ort, an dem sich Ihr Quellcode befindet (z. B. ./app, src). lingoDir ist der Ort, an dem Übersetzungsmetadaten gespeichert werden (Standard: .lingo).

Kann ich unterschiedliche Modelle pro Locale verwenden? Ja. Verwenden Sie Locale-Pair-Mapping in der Option models. Siehe Translation Providers.

Sollte ich .lingo/ in Git committen? Ja. Das Verzeichnis .lingo/ enthält Übersetzungsmetadaten und Cache. Es sollte zusammen mit Ihrem Code versioniert werden.

Wie deaktiviere ich die Pluralisierung? Setzen Sie pluralization.enabled: false. Dies überspringt die Erkennung von Pluralformen und reduziert LLM-Aufrufe.

Nächste Schritte