Konfigurationsreferenz
Vollständige Referenz für alle Konfigurationsoptionen von @lingo.dev/compiler.
Kernoptionen
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
sourceRoot | string | "src" | Stammverzeichnis mit dem zu übersetzenden Quellcode |
lingoDir | string | ".lingo" | Verzeichnis für Übersetzungsmetadaten und Cache |
sourceLocale | string | (erforderlich) | Quellsprachen-Code (z. B. "en", "en-US") |
targetLocales | string[] | (erforderlich) | Array der Zielsprachen-Codes, in die übersetzt werden soll |
useDirective | boolean | false | Ob die 'use i18n'-Direktive für Opt-in-Übersetzung erforderlich ist |
models | string | object | "lingo.dev" | Konfiguration des Übersetzungsanbieters (siehe Übersetzungsanbieter) |
prompt | string | undefined | Benutzerdefinierte Ü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:
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
dev.usePseudotranslator | boolean | false | Verwenden Sie Fake-Übersetzungen anstelle von echter KI (empfohlen für die Entwicklung) |
dev.translationServerStartPort | number | 60000 | Startport für Übersetzungsserver (findet automatisch 60000-60099) |
dev.translationServerUrl | string | undefined | Benutzerdefinierte Ü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:
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
localePersistence.type | "cookie" | "cookie" | Aktuell wird nur Cookie-basierte Persistenz unterstützt |
localePersistence.config.name | string | "locale" | Cookie-Name |
localePersistence.config.maxAge | number | 31536000 | Maximale 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:
| Option | Typ | Standard | Beschreibung |
|---|---|---|---|
pluralization.enabled | boolean | true | Automatische Erkennung von ICU MessageFormat aktivieren |
pluralization.model | string | "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
- Übersetzungsanbieter — LLM-Anbieter konfigurieren
- Build-Modi — Translate vs. cache-only verstehen
- Benutzerdefinierte Locale-Resolver — Benutzerdefinierte Locale-Erkennung implementieren
- Best Practices — Empfohlene Konfigurationen