Faça sua pergunta e obtenha um resumo do documento referenciando esta página e o provedor AI de sua escolha
Histórico de versões
- "Mesclado configOptions em um único objeto de opções; proxy empacotado no intlayer()"v9.0.025/06/2026
O conteúdo desta página foi traduzido com uma IA.
Veja a última versão do conteúdo original em inglêsIf you have an idea for improving this documentation, please feel free to contribute by submitting a pull request on GitHub.
GitHub link to the documentationCopy doc Markdown to clipboard
intlayerProxy
O intlayerProxy é um plugin do Vite que registra o middleware de roteamento de idioma para todos os ambientes: servidor de desenvolvimento (dev server), servidor de visualização (preview server) e SSR de produção (Nitro / TanStack Start).
A partir do Intlayer v9, ointlayerProxyé incluído automaticamente dentro do plugin principalintlayer()e ativado por padrão viarouting.enableProxy: true. Você só precisa registrá-lo separadamente se precisar de controle de nível mais baixo ou se estiver usando-o fora da configuração padrão dointlayer().
Uso
Como parte do intlayer() (recomendado, v9+)
Passe as opções do proxy para o plugin principal em vez de registrar o intlayerProxy separadamente:
Copiar o código para a área de transferência
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});Standalone (quando necessário)
Copiar o código para a área de transferência
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Opções
Copiar o código para a área de transferência
import type { IntlayerProxyPluginOptions } from "vite-intlayer";Todas as opções são opcionais e passadas como um único objeto:
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Opção | Tipo | Descrição |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | Predicado que exclui requisições do roteamento de idioma. Retorne true para ignorar uma requisição (ex: rotas de API, verificações de integridade). |
configOptions | GetConfigurationOptions | Substituições de configuração do Intlayer encaminhadas para getConfiguration(). Use quando precisar que o proxy leia um arquivo de configuração específico ou substitua valores. |
Exemplo
Copiar o código para a área de transferência
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
O createIntlayerProxyHandler cria um middleware Node.js (req, res, next) independente de framework que contém toda a lógica de roteamento de idioma. É útil em ambientes onde a API do plugin do Vite não está disponível (ex: um servidor Node.js simples ou um módulo Nitro personalizado).
Copiar o código para a área de transferência
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 de Produção (TanStack Start / Nitro via h3)
Copiar o código para a área de transferência
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));Comportamento de roteamento
O middleware espelha a lógica de roteamento do middleware next-intlayer e suporta todos os modos de roteamento do Intlayer.
Modos de roteamento
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Modo | URL visível no navegador | Comportamento |
|---|---|---|
prefix | /pt/about | Padrão. Prefixo de idioma na URL. O idioma padrão redireciona para a URL sem prefixo, a menos que prefix-all esteja ativo. |
prefix-all | /en/about, /pt/about | Todos os idiomas — incluindo o padrão — são sempre prefixados. |
no-prefix | /about | Sem idioma na URL. O idioma é armazenado apenas em cookies; as reescritas de URL ocorrem internamente. |
search-params | /about?locale=pt | Idioma passado como um parâmetro de consulta. Redireciona para adicionar/atualizar o parâmetro locale quando ausente ou desatualizado. |
Prioridade de detecção
- Prefixo do caminho da URL (ex:
/pt/about→pt). - Valor do cookie / localStorage (
intlayer-locale). - Cabeçalho
Accept-Language. defaultLocaleda configuração.
Desvio automático (Bypass)
O middleware sempre passa essas requisições diretamente sem manipulação de idioma:
- Requisições que correspondem ao predicado
ignore. /node_modules/**/@**– Recursos internos do Vite (@vite/,@fs/,@id/, etc.)./_**– Recursos internos do servidor (__vite_ping,__manifest, etc.).- Requisições cujo caminho termina com uma extensão de arquivo (recursos estáticos). Se um prefixo de idioma estiver presente em um caminho de recurso estático (ex:
/pt/logo.png), ele será removido para que o arquivo possa ser servido corretamente.
Roteamento por domínio
Quando routing.domains está configurado nas suas configurações do Intlayer, o middleware lida com o roteamento de idioma entre domínios:
- Uma requisição para
/zh/aboutemintlayer.orgé redirecionada parahttps://intlayer.zh/aboutquandodomains.zh = "intlayer.zh". - Uma requisição para
intlayer.zh/abouté reescrita internamente para/zh/aboutpara que o parâmetro de rota[locale]seja preenchido.
Proteção contra loops de redirecionamento
O middleware rastreia as contagens de redirecionamento por par originalUrl → newUrl dentro de uma janela deslizante de 2 segundos. Mais de 10 redirecionamentos dentro dessa janela retornam uma resposta 500 com um erro descritivo em vez de entrar em loop eterno.
Nitro / SSR de produção (injeção automática, v9+)
Quando o intlayerProxy é usado como um plugin do Vite, ele carrega uma propriedade .nitro. O plugin de compilação nitro/vite lê esta propriedade e a insere em nitroConfig.modules, de modo que o intlayerNitroHandler é registrado como um middleware do servidor Nitro automaticamente — nenhuma configuração manual é necessária para o SSR de produção.
O manipulador Nitro usa o modelo de evento Web Fetch API da h3 v2 (não o fromNodeMiddleware), por isso é compatível com todas as predefinições do Nitro: Node, Bun, Deno, runtimes edge.
Aliases depreciados
Abrir a tabela em um modal para ver todo o conteúdo claramente
| Exportação depreciada | Substituição |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |