Автор:
    Дата створення:2026-06-25Останнє оновлення:2026-06-25

    intlayerProxy

    intlayerProxy — це плагін Vite, який реєструє проміжне програмне забезпечення (middleware) локалізації роутингу для будь-якого середовища: dev-сервера, preview-сервера та продакшен SSR (Nitro / TanStack Start).

    Починаючи з Intlayer v9, intlayerProxy автоматично включається в основний плагін intlayer() і активований за замовчуванням за допомогою налаштування routing.enableProxy: true. Вам потрібно реєструвати його окремо лише в тому випадку, якщо вам потрібен низькорівневий контроль або якщо ви використовуєте його за межами стандартної конфігурації intlayer().

    Використання

    У складі intlayer() (рекомендовано, v9+)

    Передайте параметри proxy в основний плагін замість окремої реєстрації intlayerProxy:

    ts
    // vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({  plugins: [    intlayer({      proxy: {        ignore: (req) => req.url?.startsWith("/api"),      },    }),  ],});

    Окремо (за необхідності)

    ts
    // vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({  plugins: [intlayer()],});

    Параметри

    ts
    import type { IntlayerProxyPluginOptions } from "vite-intlayer";

    Усі параметри є необов'язковими і передаються у вигляді єдиного об'єкта:

    Параметр Тип Опис
    ignore (req: IncomingMessage) => boolean Предикат, який виключає запити з локалізації роутингу. Поверніть true, щоб пропустити запит (наприклад, для роутів API, health check-ів).
    configOptions GetConfigurationOptions Перевизначення конфігурації Intlayer, що передаються в getConfiguration(). Використовуйте, коли вам потрібно, щоб проксі читав конкретний конфігураційний файл або перевизначав значення.

    Приклад

    ts
    intlayerProxy({  ignore: (req) => req.url?.startsWith("/api"),  configOptions: { configFile: "./config/intlayer.config.ts" },});

    createIntlayerProxyHandler

    createIntlayerProxyHandler створює незалежний від фреймворку Node.js middleware (req, res, next), який містить всю логіку локалізації роутингу. Це корисно в середовищах, де API плагінів Vite недоступний (наприклад, на звичайному сервері Node.js або в кастомному модулі Nitro).

    ts
    import { createIntlayerProxyHandler } from "vite-intlayer";const handler = createIntlayerProxyHandler({  ignore: (req) => req.url?.startsWith("/api"),  configOptions: { configFile: "./config/intlayer.config.ts" },});// Express / Connectapp.use(handler);

    Продакшен SSR (TanStack Start / Nitro через h3)

    ts
    // server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware(  createIntlayerProxyHandler({    ignore: (req) => req.url?.startsWith("/api"),  }));

    Поведінка роутингу

    Цей middleware дублює логіку роутингу з middleware next-intlayer і підтримує всі режими роутингу Intlayer.

    Режими роутингу

    Режим URL видно в браузері Поведінка
    prefix /uk/about За замовчуванням. Префікс мови в URL. Мова за замовчуванням перенаправляє на URL без префікса, якщо не активний prefix-all.
    prefix-all /en/about, /uk/about Усі мови (включаючи мову за замовчуванням) завжди мають префікс в URL.
    no-prefix /about Немає мови в URL. Мова зберігається тільки в cookies; перезапис URL відбувається на внутрішньому рівні.
    search-params /about?locale=uk Мова передається як query-параметр. Перенаправляє для додавання/оновлення параметра locale, якщо він відсутній або застарів.

    Пріоритет визначення

    1. Префікс шляху URL (наприклад, /uk/aboutuk).
    2. Значення в cookie / localStorage (intlayer-locale).
    3. Заголовок Accept-Language.
    4. defaultLocale з конфігурації.

    Автоматичний обхід (Bypass)

    Цей middleware завжди пропускає наступні запити безпосередньо без обробки локалі:

    • Запити, що відповідають предикату ignore.
    • /node_modules/**
    • /@** — внутрішні запити Vite (@vite/, @fs/, @id/ тощо).
    • /_** — внутрішні запити сервера (__vite_ping, __manifest тощо).
    • Запити, шлях яких закінчується розширенням файлу (статичні файли). Якщо в шляху статичного файлу присутній мовний префікс (наприклад, /uk/logo.png), він видаляється, щоб файл міг бути відданий коректно.

    Роутинг по доменах

    Коли у вашій конфігурації Intlayer налаштовано параметр routing.domains, цей middleware обробляє роутинг мов між різними доменами:

    • Запит для /zh/about на домені intlayer.org перенаправляється на https://intlayer.zh/about, коли domains.zh = "intlayer.zh".
    • Запит до intlayer.zh/about внутрішньо переписується в /zh/about, щоб заповнився параметр маршруту [locale].

    Захист від нескінченного редиректу

    Цей middleware відстежує кількість перенаправлень для пари originalUrl → newUrl у рухомому 2-секундному вікні. Більше 10 перенаправлень у цьому вікні повертають помилку 500 із докладним описом замість нескінченного циклу.

    Nitro / SSR у продакшені (автоматичне впровадження, v9+)

    Коли intlayerProxy використовується як плагін Vite, він містить властивість .nitro. Плагін збірки nitro/vite зчитує цю властивість і поміщає її в nitroConfig.modules, завдяки чому intlayerNitroHandler реєструється як middleware сервера Nitro автоматично — для продакшен SSR не потрібне ручне налаштування.

    Обробник Nitro використовує модель подій Web Fetch API h3 v2 (а не fromNodeMiddleware), тому він сумісний з усіма пресетами Nitro: Node, Bun, Deno, edge runtimes.

    Застарілі аліаси

    Застарілий експорт Заміна
    intlayerMiddleware intlayerProxy
    intLayerMiddlewarePlugin intlayerProxy