Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Ініціалізація документації"v9.4.024.08.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюЯкщо у вас є ідея щодо покращення цієї документації, будь ласка, долучіться, надіславши pull request на GitHub.
Посилання на документацію на GitHubСкопіювати документацію у форматі Markdown в буфер обміну
Документація плагіна intlayer для Elysia
Плагін intlayer для Elysia визначає локаль користувача та впроваджує об'єкт intlayer у контекст маршруту. Він також дозволяє використовувати глобальні функції перекладу в контексті запиту.
Використання
Скопіюйте код у буфер обміну
Плагін реєструє свій контекст через глобальнийderive, який Elysia типізує якPartial<{ intlayer: IntlayerContext }>. Під час виконання значення завжди присутнє для маршрутів, зареєстрованих після.use(intlayer()), тож використовуйте non-null assertion (intlayer!.t) — або optional chaining — щоб задовольнити TypeScript у режиміstrict.
Ті самі хелпери доступні як окремі експорти, тож їх можна викликати без деструктуризації контексту маршруту:
Скопіюйте код у буфер обміну
Опис
Плагін виконує такі завдання:
- Визначення локалі: Він зчитує локаль, явно встановлену клієнтом, зі storage (cookie, header), а потім повертається до локалі, узгодженої із заголовка
Accept-Language. - Впровадження в контекст: Додає властивість
intlayerдо контексту маршруту Elysia (див. таблицю «Контекст маршруту» нижче). - Управління контекстом: Використовує
AsyncLocalStorageдля керування асинхронним контекстом, що дозволяє глобальним функціям Intlayer (t,getIntlayer,getDictionary) отримувати доступ до локалі, специфічної для запиту, без передавання об'єкта контексту. - Підготовка словників: Викликає
prepareIntlayerпід час створення плагіна, тож словники збираються під час старту застосунку.
Контекст маршруту
Відкрийте таблицю в модальному вікні, щоб чітко переглянути всі дані
| Властивість | Тип | Опис |
|---|---|---|
locale | Locale | Локаль, яку слід використати для цього запиту; locale_storage має пріоритет над locale_detected. |
locale_storage | Locale (необов'язково) | Локаль, явно запитана клієнтом через cookie або header. |
locale_detected | Locale | Локаль, узгоджена із заголовків запиту. |
defaultLocale | Locale | Локаль, налаштована як fallback у intlayer.config.ts. |
t | TranslateFunction | Функція перекладу. |
getIntlayer | typeof getIntlayer | Функція для отримання словників за ключем. |
getDictionary | typeof getDictionary | Функція для обробки об'єктів словників. |
На відміну від плагінів Intlayer, побудованих на Node,elysia-intlayerспирається наAsyncLocalStorageзамістьcls-hooked, оскількиcls-hookedзалежить відasync_hooks.createHook, який Bun не реалізує.
Контекст запиту звільняється одразу після мапінгу відповіді, тож окремі хелпери ніколи не розв'язуються щодо вже завершеного запиту. Якщо їх викликати поза запитом, який обробляє плагін, вони повертаються до налаштованої локалі за замовчуванням.
Порядок визначення локалі
За замовчуванням плагін визначає локаль у такому порядку:
- Cookie
INTLAYER_LOCALE. - Заголовок
x-intlayer-locale. - Узгодження через заголовок
Accept-Language. - Налаштована
defaultLocale.
Скопіюйте код у буфер обміну
Конфігурація
Плагін читає ваш файл intlayer.config.ts. Ви можете налаштувати cookie та header, які використовуються для визначення локалі:
Скопіюйте код у буфер обміну
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;
Докладніше про конфігурацію дивіться в документації з конфігурації.
