Auteur:
    Création:2026-06-25Dernière mise à jour:2026-06-25

    intlayerProxy

    intlayerProxy est un plugin Vite qui enregistre un middleware de routage par langue pour chaque environnement : serveur de développement, serveur de prévisualisation et SSR en production (Nitro / TanStack Start).

    Depuis Intlayer v9, intlayerProxy est automatiquement inclus dans le plugin principal intlayer() et activé par défaut via routing.enableProxy: true. Vous n'avez besoin de l'enregistrer séparément que si vous avez besoin d'un contrôle de plus bas niveau ou si vous l'utilisez en dehors de la configuration standard d'intlayer().

    Utilisation

    En tant que partie de intlayer() (recommandé, v9+)

    Transmettez les options proxy au plugin principal au lieu d'enregistrer intlayerProxy séparément :

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

    Autonome (si nécessaire)

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

    Options

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

    Toutes les options sont facultatives et transmises sous la forme d'un seul objet :

    Option Type Description
    ignore (req: IncomingMessage) => boolean Prédicat qui exclut des requêtes du routage par langue. Retournez true pour ignorer une requête (ex. routes d'API, vérifications de santé).
    configOptions GetConfigurationOptions Surcharges de configuration Intlayer transmises à getConfiguration(). À utiliser lorsque vous avez besoin que le proxy lise un fichier de configuration spécifique ou surcharge des valeurs.

    Exemple

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

    createIntlayerProxyHandler

    createIntlayerProxyHandler crée un middleware Node.js (req, res, next) autonome et indépendant du framework qui contient toute la logique de routage par langue. Il est utile dans les environnements où l'API du plugin Vite n'est pas disponible (ex. un serveur Node.js brut ou un module Nitro personnalisé).

    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 en production (TanStack Start / Nitro via h3)

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

    Comportement de routage

    Le middleware reproduit la logique de routage du middleware de next-intlayer et prend en charge tous les modes de routage d'Intlayer.

    Modes de routage

    Mode URL visible dans le navigateur Comportement
    prefix /fr/about Par défaut. Préfixe de langue dans l'URL. La langue par défaut redirige vers l'URL sans préfixe, sauf si prefix-all est activé.
    prefix-all /en/about, /fr/about Toutes les langues — y compris celle par défaut — sont toujours préfixées.
    no-prefix /about Aucune langue dans l'URL. La langue est stockée uniquement dans les cookies ; les réécritures d'URL se font en interne.
    search-params /about?locale=fr Langue transmise comme paramètre de requête. Redirige pour ajouter/mettre à jour le paramètre locale s'il est manquant ou obsolète.

    Priorité de détection

    1. Préfixe du chemin de l'URL (ex. /fr/aboutfr).
    2. Valeur du cookie / localStorage (intlayer-locale).
    3. En-tête Accept-Language.
    4. defaultLocale de la configuration.

    Contournement automatique

    Le middleware laisse toujours passer ces requêtes directement sans gestion de la langue :

    • Requêtes correspondant au prédicat ignore.
    • /node_modules/**
    • /@** – Internes de Vite (@vite/, @fs/, @id/, etc.).
    • /_** – Internes du serveur (__vite_ping, __manifest, etc.).
    • Requêtes dont le chemin se termine par une extension de fichier (actifs statiques). Si un préfixe de langue est présent sur le chemin d'un actif statique (ex. /fr/logo.png), il est supprimé afin que le fichier puisse être servi correctement.

    Routage par domaine

    Lorsque routing.domains est configuré dans votre configuration Intlayer, le middleware gère le routage de langue inter-domaines :

    • Une requête pour /zh/about sur intlayer.org est redirigée vers https://intlayer.zh/about quand domains.zh = "intlayer.zh".
    • Une requête vers intlayer.zh/about est réécrite en interne en /zh/about afin que le paramètre de route [locale] soit renseigné.

    Protection contre les boucles de redirection

    Le middleware suit le nombre de redirections par paire originalUrl → newUrl dans une fenêtre glissante de 2 secondes. Plus de 10 redirections dans cette fenêtre renvoient une réponse 500 avec une erreur descriptive au lieu de boucler indéfiniment.

    Nitro / SSR en production (injection automatique, v9+)

    Lorsque intlayerProxy est utilisé comme plugin Vite, il porte une propriété .nitro. Le plugin de build nitro/vite lit cette propriété et l'ajoute dans nitroConfig.modules, de sorte qu'intlayerNitroHandler est enregistré automatiquement comme middleware de serveur Nitro — aucune configuration manuelle n'est nécessaire pour le SSR en production.

    Le gestionnaire Nitro utilise le modèle d'événement Web Fetch API d'h3 v2 (pas fromNodeMiddleware), il est donc compatible avec tous les profils de Nitro : Node, Bun, Deno, les runtimes edge.

    Alias obsolètes

    Export obsolète Remplacement
    intlayerMiddleware intlayerProxy
    intLayerMiddlewarePlugin intlayerProxy