Zadaj pytanie i otrzymaj streszczenie dokumentu, odwołując się do tej strony i wybranego dostawcy AI
Historia wersji
- "Inicjalizacja dokumentacji"v9.4.024.08.2026
Treść tej strony została przetłumaczona przy użyciu sztucznej inteligencji.
Zobacz ostatnią wersję oryginalnej treści w języku angielskimJeśli masz pomysł na ulepszenie tej dokumentacji, zachęcamy do przesłania pull requesta na GitHubie.
Link do dokumentacji na GitHubieKopiuj dokument Markdown do schowka
Dokumentacja wtyczki intlayer dla Elysia
Wtyczka intlayer dla Elysia wykrywa locale użytkownika i wstrzykuje obiekt intlayer do kontekstu route. Umożliwia również użycie globalnych funkcji tłumaczeniowych w kontekście żądania.
Użycie
Skopiuj kod do schowka
Plugin rejestruje swój kontekst poprzez globalnyderive, który Elysia typuje jakoPartial<{ intlayer: IntlayerContext }>. W czasie działania wartość jest zawsze obecna dla tras zarejestrowanych po.use(intlayer()), dlatego użyj non-null assertion (intlayer!.t) — lub optional chaining — aby zadowolić TypeScript w trybiestrict.
Te same helpery są dostępne jako samodzielne eksporty, więc możesz je wywołać bez destrukturyzacji kontekstu route:
Skopiuj kod do schowka
Opis
Wtyczka wykonuje następujące zadania:
- Wykrywanie locale: Odczytuje locale ustawione jawnie przez klienta ze storage (cookie, header), a następnie wraca do locale wynegocjowanego z nagłówka
Accept-Language. - Wstrzyknięcie do kontekstu: Dodaje właściwość
intlayerdo kontekstu trasy Elysia (zobacz tabelę Kontekst trasy poniżej). - Zarządzanie kontekstem: Używa
AsyncLocalStoragedo zarządzania asynchronicznym kontekstem, dzięki czemu globalne funkcje Intlayer (t,getIntlayer,getDictionary) mają dostęp do locale specyficznego dla żądania bez przekazywania obiektu kontekstu. - Przygotowanie słowników: Wywołuje
prepareIntlayerprzy tworzeniu pluginu, dzięki czemu słowniki są budowane przy starcie aplikacji.
Kontekst trasy
Otwórz tabelę w oknie modalnym, aby wyraźnie zobaczyć całą zawartość
| Właściwość | Typ | Opis |
|---|---|---|
locale | Locale | Locale używane dla tego żądania, przy czym locale_storage ma pierwszeństwo przed locale_detected. |
locale_storage | Locale (opcjonalne) | Locale zażądane jawnie przez klienta poprzez cookie lub header. |
locale_detected | Locale | Locale wynegocjowane z nagłówków żądania. |
defaultLocale | Locale | Locale skonfigurowane jako fallback w intlayer.config.ts. |
t | TranslateFunction | Funkcja tłumaczenia. |
getIntlayer | typeof getIntlayer | Funkcja pobierająca słowniki po kluczu. |
getDictionary | typeof getDictionary | Funkcja przetwarzająca obiekty słowników. |
W przeciwieństwie do wtyczek Intlayer opartych na Node,elysia-intlayeropiera się naAsyncLocalStoragezamiastcls-hooked, ponieważcls-hookedzależy odasync_hooks.createHook, którego Bun nie implementuje.
Kontekst żądania jest zwalniany po zmapowaniu odpowiedzi, więc samodzielne helpery nigdy nie rozwiązują się względem już zakończonego żądania. Wywołane poza żądaniem obsługiwanym przez wtyczkę, wracają do skonfigurowanego domyślnego locale.
Kolejność rozwiązywania locale
Domyślnie plugin rozwiązuje locale w następującej kolejności:
- Cookie
INTLAYER_LOCALE. - Nagłówek
x-intlayer-locale. - Negocjacja nagłówka
Accept-Language. - Skonfigurowany
defaultLocale.
Skopiuj kod do schowka
Konfiguracja
Wtyczka odczytuje Twój plik intlayer.config.ts. Możesz dostosować cookie i header używane do wykrywania locale:
Skopiuj kod do schowka
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;
Więcej informacji o konfiguracji znajdziesz w dokumentacji konfiguracji.
