Author:
    Creation:2026-06-25Last update:2026-06-25

    intlayerProxy

    intlayerProxy рдПрдХ Vite рдкреНрд▓рдЧрдЗрди рд╣реИ рдЬреЛ рд╣рд░ рд╡рд╛рддрд╛рд╡рд░рдг: dev рд╕рд░реНрд╡рд░, рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди (preview) рд╕рд░реНрд╡рд░ рдФрд░ рдЙрддреНрдкрд╛рджрди SSR (Nitro / TanStack Start) рдХреЗ рд▓рд┐рдП рд▓реЛрдХреЗрд▓-рд░реВрдЯрд┐рдВрдЧ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдкрдВрдЬреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

    Intlayer v9 рд╕реЗ intlayerProxy рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдореБрдЦреНрдп intlayer() рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрдВрджрд░ рд╢рд╛рдорд┐рд▓ рд╣реЛрддрд╛ рд╣реИ рдФрд░ routing.enableProxy: true рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдЗрд╕реЗ рдЕрд▓рдЧ рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗрд╡рд▓ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рдирд┐рдпрдВрддреНрд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдЖрдк рдЗрд╕реЗ рдорд╛рдирдХ intlayer() рд╕реЗрдЯрдЕрдк рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

    рдЙрдкрдпреЛрдЧ

    intlayer() рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ (рдЕрдиреБрд╢рдВрд╕рд┐рдд, v9+)

    intlayerProxy рдХреЛ рдЕрд▓рдЧ рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдореБрдЦреНрдп рдкреНрд▓рдЧрдЗрди рдореЗрдВ proxy рд╡рд┐рдХрд▓реНрдк рдкрд╛рд╕ рдХрд░реЗрдВ:

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

    рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди (рдЬрдм рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ)

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

    рд╡рд┐рдХрд▓реНрдк

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

    рд╕рднреА рд╡рд┐рдХрд▓реНрдк рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реИрдВ рдФрд░ рдПрдХ рдПрдХрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:

    рд╡рд┐рдХрд▓реНрдкрдкреНрд░рдХрд╛рд░рд╡рд┐рд╡рд░рдг
    ignore(req: IncomingMessage) => booleanрд╡рд┐рдзреЗрдп (predicate) рдЬреЛ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рд▓реЛрдХреЗрд▓ рд░реВрдЯрд┐рдВрдЧ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдиреБрд░реЛрдз рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП true рд▓реМрдЯрд╛рдПрдВ (рдЬреИрд╕реЗ API рд░реВрдЯ, рд╕реНрд╡рд╛рд╕реНрдереНрдп рдЬрд╛рдВрдЪ)ред
    configOptionsGetConfigurationOptionsIntlayer рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдУрд╡рд░рд░рд╛рдЗрдбреНрд╕ рдЬреЛ getConfiguration() рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рддрдм рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдЬрдм рдЖрдкрдХреЛ рдкреНрд░реЙрдХреНрд╕реА рдХреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдкрдврд╝рдиреЗ рдпрд╛ рдорд╛рдиреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред

    рдЙрджрд╛рд╣рд░рдг

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

    createIntlayerProxyHandler

    createIntlayerProxyHandler рдПрдХ рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди, рдлреНрд░реЗрдорд╡рд░реНрдХ-рдЕрдЬреНрдЮреЗрдпрд╡рд╛рджреА Node.js (req, res, next) рдорд┐рдбрд▓рд╡реЗрдпрд░ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рд▓реЛрдХреЗрд▓-рд░реВрдЯрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣ рдЙрди рд╡рд╛рддрд╛рд╡рд░рдгреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ рдЬрд╣рд╛рдВ Vite рдкреНрд▓рдЧрдЗрди API рдЕрдиреБрдкрд▓рдмреНрдз рд╣реИ (рдЬреИрд╕реЗ рдПрдХ рд╕рд╛рджрд╛ 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 / Connect
    app.use(handler);
    

    рдЙрддреНрдкрд╛рджрди SSR (TanStack Start / h3 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ Nitro)

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

    рд░реВрдЯрд┐рдВрдЧ рд╡реНрдпрд╡рд╣рд╛рд░

    рдорд┐рдбрд▓рд╡реЗрдпрд░ next-intlayer рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реЗ рд░реВрдЯрд┐рдВрдЧ рд▓реЙрдЬрд┐рдХ рдХреЛ рдорд┐рд░рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рднреА Intlayer рд░реВрдЯрд┐рдВрдЧ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

    рд░реВрдЯрд┐рдВрдЧ рдореЛрдб

    рдореЛрдбрдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рджрд┐рдЦрдиреЗ рд╡рд╛рд▓рд╛ URLрд╡реНрдпрд╡рд╣рд╛рд░
    prefix/hi/aboutрдбрд┐рдлрд╝реЙрд▓реНрдЯред URL рдореЗрдВ рд▓реЛрдХреЗрд▓ рдЙрдкрд╕рд░реНрдЧред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд▓реЛрдХреЗрд▓ рдмрд┐рдирд╛ рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рд▓реЗ URL рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ рдЬрдм рддрдХ рдХрд┐ prefix-all рд╕рдХреНрд░рд┐рдп рди рд╣реЛред
    prefix-all/en/about, /hi/aboutрд╕рднреА рд▓реЛрдХреЗрд▓, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╕рд╣рд┐рдд, рд╣рдореЗрд╢рд╛ рдЙрдкрд╕рд░реНрдЧ рд╡рд╛рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред
    no-prefix/aboutURL рдореЗрдВ рдХреЛрдИ рд▓реЛрдХреЗрд▓ рдирд╣реАрдВред рд▓реЛрдХреЗрд▓ рдХреЗрд╡рд▓ рдХреБрдХреАрдЬрд╝ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддрд╛ рд╣реИ; URL рдкреБрдирд░реНрд▓реЗрдЦрди рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣реЛрддрд╛ рд╣реИред
    search-params/about?locale=hiрд▓реЛрдХреЗрд▓ рдХреЛ рдХреНрд╡реЗрд░реА рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЧрд╛рдпрдм рдпрд╛ рдмрд╛рд╕реА рд╣реЛрдиреЗ рдкрд░ locale рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЬреЛрдбрд╝рдиреЗ/рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИред

    рдбрд┐рдЯреЗрдХреНрд╢рди рдкреНрд░рд╛рдердорд┐рдХрддрд╛

    1. URL рдкрде рдЙрдкрд╕рд░реНрдЧ (рдЬреИрд╕реЗ /hi/about тЖТ hi)ред
    2. рдХреБрдХреА / localStorage рдорд╛рди (intlayer-locale)ред
    3. Accept-Language рд╣реЗрдбрд░ред
    4. рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ defaultLocaleред

    рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдмрд╛рдИрдкрд╛рд╕

    рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЗрди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЛ рдмрд┐рдирд╛ рд▓реЛрдХреЗрд▓ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЗ рд╣рдореЗрд╢рд╛ рд╕реАрдзреЗ рдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИ:

    • ignore рд╡рд┐рдзреЗрдп рд╕реЗ рдореЗрд▓ рдЦрд╛рдиреЗ рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзред
    • /node_modules/**
    • /@** тАУ Vite рдЖрдВрддрд░рд┐рдХ (@vite/, @fs/, @id/, рдЖрджрд┐)ред
    • /_** тАУ рд╕рд░реНрд╡рд░ рдЖрдВрддрд░рд┐рдХ (__vite_ping, __manifest, рдЖрджрд┐)ред
    • рдЕрдиреБрд░реЛрдз рдЬрд┐рдирдХрд╛ рдкрде рдлрд╝рд╛рдЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ (рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐)ред рдпрджрд┐ рдПрдХ рд╕реНрдерд┐рд░ рд╕рдВрдкрддреНрддрд┐ рдкрде (рдЬреИрд╕реЗ /hi/logo.png) рдкрд░ рдПрдХ рд▓реЛрдХреЗрд▓ рдЙрдкрд╕рд░реНрдЧ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдЙрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкрд░реЛрд╕рд╛ рдЬрд╛ рд╕рдХреЗред

    рдбреЛрдореЗрди рд░реВрдЯрд┐рдВрдЧ

    рдЬрдм рдЖрдкрдХреЗ Intlayer рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдореЗрдВ routing.domains рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреНрд░реЙрд╕-рдбреЛрдореЗрди рд▓реЛрдХреЗрд▓ рд░реВрдЯрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ:

    • intlayer.org рдкрд░ /zh/about рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз https://intlayer.zh/about рдкрд░ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм domains.zh = "intlayer.zh" рд╣реЛрддрд╛ рд╣реИред
    • intlayer.zh/about рдХреЗ рдЕрдиреБрд░реЛрдз рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ /zh/about рдореЗрдВ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ [locale] рд░реВрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рдЖрдмрд╛рдж рд╣реЛ рдЬрд╛рдПред

    рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд▓реВрдк рд╕реБрд░рдХреНрд╖рд╛

    рдорд┐рдбрд▓рд╡реЗрдпрд░ 2-рд╕реЗрдХрдВрдб рдХреА рд╕реНрд▓рд╛рдЗрдбрд┐рдВрдЧ рд╡рд┐рдВрдбреЛ рдХреЗ рднреАрддрд░ рдкреНрд░рддрд┐ originalUrl тЖТ newUrl рдЬреЛрдбрд╝реА рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рдЧрдгрдирд╛рдУрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рддрд╛ рд╣реИред рдЙрд╕ рд╡рд┐рдВрдбреЛ рдХреЗ рднреАрддрд░ 10 рд╕реЗ рдЕрдзрд┐рдХ рд░реАрдбрд╛рдпрд░реЗрдХреНрдЯ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╡рд░реНрдгрдирд╛рддреНрдордХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде 500 рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд▓реМрдЯрд╛рддреЗ рд╣реИрдВред

    Nitro / рдЙрддреНрдкрд╛рджрди SSR (рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдЗрдВрдЬреЗрдХреНрд╢рди, v9+)

    рдЬрдм intlayerProxy рдХреЛ Vite рдкреНрд▓рдЧрдЗрди рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдПрдХ .nitro рд╕рдВрдкрддреНрддрд┐ рд░рдЦрддрд╛ рд╣реИред nitro/vite рдмрд┐рд▓реНрдб рдкреНрд▓рдЧрдЗрди рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ nitroConfig.modules рдореЗрдВ рдзрдХреЗрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП intlayerNitroHandler рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ Nitro рд╕рд░реНрд╡рд░ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрддреНрдкрд╛рджрди SSR рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдореИрдиреНрдпреБрдЕрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

    Nitro рд╣реИрдВрдбрд▓рд░ h3 v2 рдХреЗ рд╡реЗрдм рдлрд╝реЗрдЪ API рдИрд╡реЗрдВрдЯ рдореЙрдбрд▓ (рдирд╛ рдХрд┐ fromNodeMiddleware) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╕рднреА Nitro рдкреНрд░реАрд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рд╣реИ: Node, Bun, Deno, edge runtimesред

    рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЙрдкрдирд╛рдо (Deprecated Aliases)

    рдЕрдкреНрд░рдЪрд▓рд┐рдд рдирд┐рд░реНрдпрд╛рддрдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди
    intlayerMiddlewareintlayerProxy
    intLayerMiddlewarePluginintlayerProxy