Stellen Sie Ihre Frage und erhalten Sie einen Resümee des Dokuments, indem Sie diese Seite und den AI-Anbieter Ihrer Wahl referenzieren
Versionshistorie
- "Initialisierung der Dokumentation"v9.4.024.8.2026
Der Inhalt dieser Seite wurde mit einer KI übersetzt.
Den englischen Originaltext ansehenWenn Sie eine Idee haben, um diese Dokumentation zu verbessern, zögern Sie bitte nicht, durch das Einreichen eines Pull-Requests auf GitHub beizutragen.
GitHub-Link zur DokumentationMarkdown des Dokuments in die Zwischenablage kopieren
intlayer Elysia Plugin Dokumentation
Das intlayer-Plugin für Elysia ermittelt die Locale des Benutzers und injiziert ein intlayer-Objekt in den Route-Kontext. Es ermöglicht außerdem die Verwendung globaler Übersetzungsfunktionen innerhalb des Request-Kontexts.
Verwendung
Kopieren Sie den Code in die Zwischenablage
Das Plugin registriert seinen Context über ein globalesderive, das Elysia alsPartial<{ intlayer: IntlayerContext }>typisiert. Zur Laufzeit ist der Wert für alle nach.use(intlayer())registrierten Routen immer vorhanden — verwenden Sie daher die Non-Null-Assertion (intlayer!.t) oder Optional Chaining, um TypeScript imstrict-Modus zufriedenzustellen.
Dieselben Helper stehen auch als eigenständige Exporte zur Verfügung, sodass Sie sie aufrufen können, ohne den Route-Kontext zu destrukturieren:
Kopieren Sie den Code in die Zwischenablage
Beschreibung
Das Plugin führt die folgenden Aufgaben aus:
- Locale-Erkennung: Es liest die vom Client explizit gesetzte Locale aus dem Storage (Cookie, Header) und greift anschließend auf die aus dem
Accept-Language-Header ausgehandelte Locale zurück. - Kontext-Injektion: Es fügt dem Elysia-Route-Context eine
intlayer-Eigenschaft hinzu (siehe die Tabelle Route-Context weiter unten). - Kontextverwaltung: Es verwendet
AsyncLocalStorage, um einen asynchronen Kontext zu verwalten, wodurch die globalen Intlayer-Funktionen (t,getIntlayer,getDictionary) auf die anfragebezogene Locale zugreifen können, ohne das Kontextobjekt weiterreichen zu müssen. - Vorbereitung der Dictionaries: Es ruft
prepareIntlayerbeim Erstellen des Plugins auf, sodass die Dictionaries beim Start der Anwendung gebaut werden.
Route-Context
Tabelle in einem Modal öffnen, um alle Daten übersichtlich anzuzeigen
| Eigenschaft | Typ | Beschreibung |
|---|---|---|
locale | Locale | Die für diese Anfrage zu verwendende Locale, wobei locale_storage Vorrang vor locale_detected hat. |
locale_storage | Locale (optional) | Die vom Client über ein Cookie oder einen Header explizit angeforderte Locale. |
locale_detected | Locale | Die aus den Request-Headern ausgehandelte Locale. |
defaultLocale | Locale | Die in intlayer.config.ts als Fallback konfigurierte Locale. |
t | TranslateFunction | Eine Übersetzungsfunktion. |
getIntlayer | typeof getIntlayer | Eine Funktion zum Abrufen von Wörterbüchern anhand ihres Schlüssels. |
getDictionary | typeof getDictionary | Eine Funktion zum Verarbeiten von Wörterbuchobjekten. |
Anders als die Node-basierten Intlayer-Plugins setztelysia-intlayeraufAsyncLocalStoragestatt aufcls-hooked, dacls-hookedvonasync_hooks.createHookabhängt, das Bun nicht implementiert.
Der Request-Kontext wird freigegeben, sobald die Response gemappt wurde, sodass die eigenständigen Helper niemals gegen eine bereits beendete Anfrage auflösen. Werden sie außerhalb einer vom Plugin behandelten Anfrage aufgerufen, greifen sie auf die konfigurierte Standard-Locale zurück.
Reihenfolge der Locale-Auflösung
Standardmäßig löst das Plugin die Locale in dieser Reihenfolge auf:
- Das Cookie
INTLAYER_LOCALE. - Der Header
x-intlayer-locale. - Die Aushandlung über den
Accept-Language-Header. - Die konfigurierte
defaultLocale.
Kopieren Sie den Code in die Zwischenablage
Konfiguration
Das Plugin liest Ihre intlayer.config.ts-Datei. Sie können das Cookie und den Header anpassen, die für die Locale-Erkennung verwendet werden:
Kopieren Sie den Code in die Zwischenablage
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
Weitere Informationen zur Konfiguration finden Sie in der Konfigurationsdokumentation.
