Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Riwayat Versi
- "Menggabungkan configOptions ke dalam satu objek options; proxy dibundel ke dalam intlayer()"v9.0.025/6/2026
Konten halaman ini diterjemahkan menggunakan AI.
Lihat versi terakhir dari konten aslinya dalam bahasa InggrisIf 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
intlayerProxy adalah plugin Vite yang mendaftarkan middleware perutean bahasa untuk setiap lingkungan: server dev, server preview, dan SSR produksi (Nitro / TanStack Start).
Sejak Intlayer v9intlayerProxysecara otomatis disertakan di dalam plugin utamaintlayer()dan diaktifkan secara default melaluirouting.enableProxy: true. Anda hanya perlu mendaftarkannya secara terpisah jika Anda memerlukan kontrol tingkat yang lebih rendah atau menggunakannya di luar setupintlayer()standar.
Penggunaan
Sebagai bagian dari intlayer() (direkomendasikan, v9+)
Teruskan opsi proxy ke plugin utama alih-alih mendaftarkan intlayerProxy secara terpisah:
Salin kode ke clipboard
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [ intlayer({ proxy: { ignore: (req) => req.url?.startsWith("/api"), }, }), ],});Mandiri (bila diperlukan)
Salin kode ke clipboard
// vite.config.tsimport { defineConfig } from "vite";import { intlayer } from "vite-intlayer";export default defineConfig({ plugins: [intlayer()],});Opsi
Salin kode ke clipboard
import type { IntlayerProxyPluginOptions } from "vite-intlayer";Semua opsi bersifat opsional dan diteruskan sebagai satu objek:
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Opsi | Tipe | Deskripsi |
|---|---|---|
ignore | (req: IncomingMessage) => boolean | Predikat yang mengecualikan permintaan dari perutean bahasa. Kembalikan true untuk melewati permintaan (misalnya rute API, pemeriksaan kesehatan). |
configOptions | GetConfigurationOptions | Override konfigurasi Intlayer yang diteruskan ke getConfiguration(). Gunakan saat Anda memerlukan proxy untuk membaca file konfigurasi tertentu atau mengabaikan nilai. |
Contoh
Salin kode ke clipboard
intlayerProxy({ ignore: (req) => req.url?.startsWith("/api"), configOptions: { configFile: "./config/intlayer.config.ts" },});createIntlayerProxyHandler
createIntlayerProxyHandler membuat middleware Node.js (req, res, next) yang mandiri dan tidak bergantung pada framework yang berisi semua logika perutean bahasa. Berguna dalam lingkungan di mana API plugin Vite tidak tersedia (misalnya server Node.js biasa atau modul Nitro khusus).
Salin kode ke clipboard
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 Produksi (TanStack Start / Nitro melalui h3)
Salin kode ke clipboard
// server/middleware/intlayerProxy.tsimport { fromNodeMiddleware } from "h3";import { createIntlayerProxyHandler } from "vite-intlayer";export default fromNodeMiddleware( createIntlayerProxyHandler({ ignore: (req) => req.url?.startsWith("/api"), }));Perilaku perutean
Middleware ini mencerminkan logika perutean dari middleware next-intlayer dan mendukung semua mode perutean Intlayer.
Mode perutean
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Mode | URL terlihat di browser | Perilaku |
|---|---|---|
prefix | /id/about | Default. Prefiks bahasa di URL. Bahasa default dialihkan ke URL tanpa prefiks kecuali prefix-all aktif. |
prefix-all | /en/about, /id/about | Semua bahasa — termasuk default — selalu diberi prefiks. |
no-prefix | /about | Tidak ada bahasa di URL. Bahasa hanya disimpan di cookie; penulisan ulang URL terjadi secara internal. |
search-params | /about?locale=id | Bahasa diteruskan sebagai parameter kueri. Mengalihkan untuk menambahkan/memperbarui parameter locale ketika hilang atau kedaluwarsa. |
Prioritas deteksi
- Prefiks jalur URL (misalnya
/id/about→id). - Nilai cookie / localStorage (
intlayer-locale). - Header
Accept-Language. defaultLocaledari konfigurasi.
Bypass otomatis
Middleware selalu meloloskan permintaan ini secara langsung tanpa penanganan bahasa:
- Permintaan yang cocok dengan predikat
ignore. /node_modules/**/@**– Internal Vite (@vite/,@fs/,@id/, dll.)./_**– Internal server (__vite_ping,__manifest, dll.).- Permintaan yang jalurnya diakhiri dengan ekstensi file (aset statis). Jika prefiks bahasa ada pada jalur aset statik (misalnya
/id/logo.png), prefiks tersebut akan dilucuti agar file dapat disajikan dengan benar.
Perutean domain
Ketika routing.domains dikonfigurasi dalam konfigurasi Intlayer Anda, middleware menangani perutean bahasa lintas domain:
- Permintaan untuk
/zh/aboutdiintlayer.orgdialihkan kehttps://intlayer.zh/aboutketikadomains.zh = "intlayer.zh". - Permintaan ke
intlayer.zh/aboutditulis ulang secara internal ke/zh/aboutsehingga parameter rute[locale]terisi.
Perlindungan pengalihan tak terbatas (Redirect loop protection)
Middleware melacak jumlah pengalihan per pasangan originalUrl → newUrl dalam jendela geser 2 detik. Lebih dari 10 pengalihan dalam jendela tersebut akan mengembalikan respons 500 dengan deskripsi kesalahan alih-alih mengulang selamanya.
Nitro / SSR produksi (injeksi otomatis, v9+)
Ketika intlayerProxy digunakan sebagai plugin Vite, ia membawa properti .nitro. Plugin build nitro/vite membaca properti ini dan memasukkannya ke dalam nitroConfig.modules, sehingga intlayerNitroHandler terdaftar sebagai middleware server Nitro secara otomatis — tidak diperlukan konfigurasi manual untuk SSR produksi.
Handler Nitro menggunakan model event Web Fetch API h3 v2 (bukan fromNodeMiddleware) sehingga kompatibel dengan semua preset Nitro: Node, Bun, Deno, edge runtimes.
Alias yang tidak digunakan lagi (Deprecated)
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Ekspor yang tidak digunakan lagi | Pengganti |
|---|---|
intlayerMiddleware | intlayerProxy |
intLayerMiddlewarePlugin | intlayerProxy |