Спросите свой вопрос и получите сводку документа, используя эту страницу и выбранного вами поставщика AI
История версий
- "Инициализация документации"v9.4.024.08.2026
Содержимое этой страницы было переведено с помощью ИИ.
Смотреть последнюю версию оригинального контента на английскомЕсли у вас есть идея по улучшению этой документации, не стесняйтесь внести свой вклад, подав запрос на вытягивание на 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;
Дополнительную информацию о конфигурации смотрите в документации по конфигурации.
