|Labs
Demo buchenPlattform
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)Legacy CLI (v0)
Veraltet

Lingo.dev Compiler

  • So funktioniert's
  • Einrichtung
  • Compiler – Erste Schritte

Frameworks

  • Next.js-Integration
  • Vite + React

Leitfäden

  • Sprache wechseln
  • Automatische Pluralisierung
  • Manuelle Überschreibungen
  • Build-Modi
  • Projektstruktur
  • Übersetzungsanbieter
  • Benutzerdefinierte Sprache-Resolver
  • Entwicklungstools

Referenz

  • Best Practices
  • Konfigurationsreferenz
  • Fehlerbehebung
  • Migrationsleitfaden
  • Optimierung
  • Ausgabeformate

Benutzerdefinierte Sprache-Resolver

Alpha

Der Lingo.dev Compiler befindet sich in der Alpha-Phase. Er ist instabil, nicht für den Produktionseinsatz empfohlen, und APIs können sich zwischen Releases ändern.

Mit benutzerdefinierten Sprache-Resolvern können Sie steuern, wie der Lingo.dev Compiler die Sprache des Benutzers erkennt und speichert. Standardmäßig nutzt der Compiler eine Cookie-basierte Speicherung, die über die Option localePersistence konfiguriert wird. Wenn Sie mehr Kontrolle benötigen – etwa für URL-basiertes Routing, Header-Erkennung, localStorage oder beliebige benutzerdefinierte Logik –, erstellen Sie Resolver-Dateien im Verzeichnis .lingo/.

Resolver-Dateien#

Der Compiler sucht nach zwei optionalen Dateien:

DateiUmgebungExporte
.lingo/locale-resolver.server.tsServerseitig (SSR, RSC)resolveLocale(request: Request): string
.lingo/locale-resolver.client.tsClientseitig (Browser)resolveLocale(): string und persistLocale(locale: string): void

Wenn eine Resolver-Datei vorhanden ist, verwendet der Compiler sie anstelle des standardmäßigen Cookie-basierten Verhaltens. Ist nur eine Datei vorhanden, greift die andere Umgebung auf das Standardverhalten zurück.

Serverseitiger Resolver#

Der Server-Resolver erhält das eingehende Request-Objekt und gibt einen String mit dem Sprachcode zurück:

ts
// .lingo/locale-resolver.server.ts

export function resolveLocale(request: Request): string {
  const url = new URL(request.url);

  // Check URL path prefix: /es/about -> "es"
  const pathLocale = url.pathname.split("/")[1];
  const supportedLocales = ["en", "es", "de", "fr", "ja"];

  if (supportedLocales.includes(pathLocale)) {
    return pathLocale;
  }

  // Fall back to Accept-Language header
  const acceptLanguage = request.headers.get("Accept-Language");
  if (acceptLanguage) {
    const preferred = acceptLanguage.split(",")[0].split("-")[0];
    if (supportedLocales.includes(preferred)) {
      return preferred;
    }
  }

  return "en";
}

Clientseitiger Resolver#

Der Client-Resolver umfasst zwei Funktionen: eine zum Auslesen der aktuellen Sprache und eine zum Speichern einer Sprachänderung:

ts
// .lingo/locale-resolver.client.ts

export function resolveLocale(): string {
  // Check URL path prefix
  const pathLocale = window.location.pathname.split("/")[1];
  const supportedLocales = ["en", "es", "de", "fr", "ja"];

  if (supportedLocales.includes(pathLocale)) {
    return pathLocale;
  }

  // Fall back to localStorage
  const stored = localStorage.getItem("locale");
  if (stored && supportedLocales.includes(stored)) {
    return stored;
  }

  return "en";
}

export function persistLocale(locale: string): void {
  localStorage.setItem("locale", locale);

  // Navigate to the locale-prefixed URL
  const path = window.location.pathname.replace(/^\/[a-z]{2}/, "");
  window.location.href = `/${locale}${path}`;
}

Häufige Resolver-Muster#

Nach URL-Pfadpräfix routen (/es/about, /de/pricing):

ts
// .lingo/locale-resolver.server.ts
export function resolveLocale(request: Request): string {
  const url = new URL(request.url);
  const locale = url.pathname.split("/")[1];
  const supported = ["en", "es", "de", "fr"];
  return supported.includes(locale) ? locale : "en";
}
ts
// .lingo/locale-resolver.client.ts
export function resolveLocale(): string {
  const locale = window.location.pathname.split("/")[1];
  const supported = ["en", "es", "de", "fr"];
  return supported.includes(locale) ? locale : "en";
}

export function persistLocale(locale: string): void {
  const path = window.location.pathname.replace(/^\/[a-z]{2}/, "");
  window.location.href = `/${locale}${path}`;
}

Die Funktion resolveLocale muss einen Sprachcode zurückgeben, der mit einem Ihrer konfigurierten targetLocales oder sourceLocale übereinstimmt. Wird ein nicht unterstützter Sprachcode zurückgegeben, fällt der Compiler auf die Ausgangssprache zurück.

Nächste Schritte#

Sprachwechsel
Erstellen Sie eine Sprachumschalter-Komponente
Konfigurationsreferenz
localePersistence-Optionen
Projektstruktur
Das Layout des Verzeichnisses .lingo/
Next.js-Integration
Serverseitige Sprachauflösung in Next.js

War diese Seite hilfreich?

Max PrilutskiyMax Prilutskiy·Aktualisiert vor 10 Tagen·3 Min. Lesezeit