Schnellstart für The Epic Stack

Wie man den Lingo.dev Compiler mit The Epic Stack einrichtet

Einführung

Lingo.dev Compiler ist ein KI-gestütztes Tool, das die Lokalisierung von React-basierten Apps ermöglicht, ohne bestehende Komponenten zu verändern. Sie konfigurieren nur einige Einstellungen, umschließen Ihre App mit einem Context-Provider, und das war's – Ihre App ist lokalisiert.

Diese Anleitung erklärt, wie Sie Lingo.dev Compiler mit The Epic Stack einrichten, einem Full-Stack-Web-App-Framework von Kent C. Dodds, das auf Remix aufbaut.

Was Sie lernen werden

  • Wie man Lingo.dev Compiler in The Epic Stack initialisiert
  • Wie man den Compiler für die Kompatibilität mit The Epic Stack konfiguriert
  • Wie man einen Locale-Switcher zum Umschalten zwischen Sprachen einrichtet

Schritt 1. API-Schlüssel einrichten

Lingo.dev Compiler verwendet Large Language Models (LLMs), um Apps mit KI zu lokalisieren. Um eines dieser Modelle zu nutzen, benötigen Sie einen API-Schlüssel von einem unterstützten Anbieter.

Um schnellstmöglich loszulegen, empfehlen wir die Verwendung von Lingo.dev Engine – unserer eigenen, gehosteten Plattform, die 10.000 Tokens kostenlose monatliche Nutzung bietet.

So richten Sie einen API-Schlüssel ein:

  1. Melden Sie sich bei Lingo.dev Engine an.

  2. Navigieren Sie zur Seite Projects.

  3. Klicken Sie auf API key > Copy.

  4. Speichern Sie den API-Schlüssel in einer Umgebungsvariable:

    export LINGODOTDEV_API_KEY="<your_api_key>"

Alternative: Benutzerdefinierte LLM-Anbieter

Sie müssen nicht Lingo.dev Engine verwenden. Sie können den Compiler so konfigurieren, dass er mit verschiedenen benutzerdefinierten LLM-Anbietern integriert wird, darunter:

  • Groq
  • Google
  • Mistral
  • Ollama
  • OpenRouter

Schritt 2. Paket installieren

Lingo.dev Compiler wird als Teil des lingo.dev npm-Pakets vertrieben. Zur Installation verwenden Sie Ihren bevorzugten Paketmanager:

npm install lingo.dev

Schritt 3. Initialisieren des Compilers

Lingo.dev Compiler integriert sich mit Vite und läuft zur Build-Zeit. Um in den Build-Prozess von Vite einzugreifen, nehmen Sie folgende Änderungen an der Datei vite.config.ts vor:

  1. Importieren Sie den Compiler:

    import lingoCompiler from "lingo.dev/compiler";
  2. Initialisieren Sie den Compiler mit der vite-Methode:

    const withLingo = lingoCompiler.vite({
      sourceRoot: "app",
      lingoDir: "lingo",
      sourceLocale: "en",
      targetLocales: ["es"],
      rsc: false,
      useDirective: false,
      debug: false,
      models: "lingo.dev",
    });

    Für die Kompatibilität mit The Epic Stack stellen Sie sicher, dass:

    • sourceRoot auf "app" gesetzt ist
    • rsc auf false gesetzt ist

    Um mehr über die verfügbaren Optionen zu erfahren, siehe Compiler-Optionen.

  3. Führen Sie die Compiler-Konfiguration mit der bestehenden Konfiguration zusammen und exportieren Sie sie:

    export default defineConfig((config) => {
      const configWithSentry = {
        ...viteConfig,
        plugins: [
          ...viteConfig.plugins!.filter(Boolean),
          MODE === "production" && process.env.SENTRY_AUTH_TOKEN
            ? sentryReactRouter(sentryConfig, config)
            : null,
        ].filter(Boolean),
      };
    
      return withLingo(configWithSentry);
    });

Mit dieser Konfiguration wird der Lingo.dev Compiler:

  • Den Abstract Syntax Tree (AST) des Quellcodes durchlaufen
  • Lokalisierbare Inhalte finden (d.h. Text in JSX-Elementen und bestimmten Attributwerten)
  • Die konfigurierten KI-Modelle verwenden, um Übersetzungen zu generieren
  • Die originalen und übersetzten Inhalte in einer dictionary.js-Datei speichern
  • Lokalisierte Inhalte durch Platzhalter ersetzen

Schritt 4. Laden des lokalisierten Inhalts

Nachdem der Compiler Ihre App verarbeitet und Übersetzungen generiert hat, müssen Sie diesen lokalisierten Inhalt laden und Ihren Benutzern bereitstellen. Dies beinhaltet:

  • Laden des entsprechenden Wörterbuchs basierend auf der Sprachpräferenz des Benutzers
  • Bereitstellen der geladenen Übersetzungen für Ihre App durch einen Context-Provider

Laden des Wörterbuchs

In der Datei app/root.tsx:

  1. Importiere die Funktion loadDictionary aus lingo.dev/react/react-router:

    import { loadDictionary } from "lingo.dev/react/react-router";

    Diese Funktion:

    • Ruft die aktuelle Locale aus dem lingo-locale Cookie ab
    • Fällt auf "en" zurück, wenn keine Locale definiert ist
    • Lädt den lokalisierten Inhalt aus der Datei dictionary.js
  2. Rufe die Funktion loadDictionary aus der loader-Funktion auf:

    const lingoDictionary = await loadDictionary(request);
  3. Gib das Dictionary als Teil der Loader-Daten zurück:

    return data(
      {
        user,
        requestInfo: {
          hints: getHints(request),
          origin: getDomainUrl(request),
          path: new URL(request.url).pathname,
          userPrefs: {
            theme: getTheme(request),
          },
        },
        ENV: getEnv(),
        toast,
        honeyProps,
        lingoDictionary,
      },
      {
        headers: combineHeaders(
          { "Server-Timing": timings.toString() },
          toastHeaders,
        ),
      },
    );

Bereitstellen der Übersetzungen

In der Datei app/root.tsx:

  1. Importiere die Komponente LingoProvider aus lingo.dev/react/client:

    import { LingoProvider } from "lingo.dev/react/client";

    Diese Komponente ist ein React-Kontext-Provider, der die vom Compiler erstellten Platzhalter durch den lokalisierten Inhalt ersetzt.

  2. In der Komponente Layout hole die Daten aus dem Data-Loader:

    const data = useLoaderData<typeof loader | null>();
  3. Umschließe die App mit der Komponente LingoProvider:

    <LingoProvider>{/* Bestehender App-Code */}</LingoProvider>
  4. Übergib das geladene Dictionary an die Komponente:

    <LingoProvider dictionary={data?.lingoDictionary}>
      {/* Bestehender App-Code */}
    </LingoProvider>

Schritt 5. Einrichten eines Locale-Switchers

Um Benutzern das Umschalten zwischen Locales zu ermöglichen, importieren Sie den LocaleSwitcher aus dem lingo.dev-Paket. Dies ist eine unstyled Komponente, die:

  • Ein Dropdown-Menü der verfügbaren Locales rendert
  • Benutzern die Auswahl einer Locale ermöglicht
  • Die ausgewählte Locale für zukünftige Besuche speichert

Um die Komponente zu verwenden, betten Sie sie an beliebiger Stelle in Ihrer App ein und setzen Sie die locales-Prop auf ein Array, das die konfigurierten Quell- und Ziel-Locales enthält:

import { LocaleSwitcher } from "lingo.dev/react/client";

<LocaleSwitcher locales={["en", "es"]} />;

Alternative: Benutzerdefinierter Locale-Switcher

Sie müssen nicht unbedingt die LocaleSwitcher-Komponente verwenden. Sie können eine benutzerdefinierte Logik und Benutzeroberfläche für den Sprachwechsel implementieren. Die einzige Voraussetzung ist, dass die aktive Locale aus dem lingo-locale-Cookie gelesen und in diesen geschrieben wird.

Schritt 6. Die Anwendung ausführen

Um zu überprüfen, ob der Lingo.dev Compiler korrekt eingerichtet wurde:

  1. Starten Sie den Entwicklungsserver:

    npm run dev
  2. Navigieren Sie zu localhost:3000.

  3. Verwenden Sie die LocaleSwitcher-Komponente, um zwischen den Locales zu wechseln.

Die Seite sollte neu geladen werden und den lokalisierten Inhalt anzeigen.

Alternative: Cookies manuell setzen

Wenn Sie die LocaleSwitcher-Komponente nicht verwenden, können Sie alternativ die Funktionalität der Lokalisierung überprüfen, indem Sie den lingo-locale-Cookie manuell setzen.

Wenn Sie Google Chrome verwenden, folgen Sie diesen Anweisungen:

  1. Navigieren Sie zu Ansicht > Entwickler > Entwicklertools.
  2. Gehen Sie zum Tab Anwendung.
  3. Erweitern Sie in der linken Seitenleiste unter Speicher die Option Cookies und wählen Sie die URL der Website aus.
  4. Klicken Sie in der Cookie-Tabelle mit der rechten Maustaste und wählen Sie Hinzufügen.
  5. Geben Sie in der Spalte Name lingo-locale ein.
  6. Geben Sie in der Spalte Wert die gewünschte Locale ein (z.B. es).
  7. Drücken Sie Enter, um den Cookie zu speichern.
  8. Aktualisieren Sie die Seite, um den Cookie anzuwenden.

Weiterführende Lektüre

  • Um zu verstehen, wie der Compiler funktioniert, siehe Funktionsweise.
  • Um zu erfahren, wie Sie den Compiler konfigurieren können, siehe Compiler-Optionen.