Creation:2024-08-13Last update:2026-01-26

    Implementasi Penulisan Ulang URL Kustom

    Intlayer mendukung penulisan ulang URL kustom, memungkinkan Anda menentukan jalur spesifik per locale yang berbeda dari struktur standar /locale/path. Ini memungkinkan URL seperti /about untuk bahasa Inggris dan /a-propos untuk bahasa Prancis sambil menjaga logika aplikasi internal tetap kanonik.

    Konfigurasi

    Penulisan ulang URL kustom dikonfigurasikan di bagian routing dari file intlayer.config.ts Anda menggunakan formatter khusus framework. Formatter ini menyediakan sintaks yang benar untuk router pilihan Anda.

    intlayer.config.ts
    import { Locales, type IntlayerConfig } from "intlayer";import { nextjsRewrite } from "intlayer/routing";const config: IntlayerConfig = {  // ... // konfigurasi lainnya  routing: {    mode: "prefix-no-default",    rewrite: nextjsRewrite({      "/[locale]/about": {        fr: "/[locale]/a-propos",        es: "/[locale]/acerca-de",      },      "/[locale]/products/[id]": {        fr: "/[locale]/produits/[id]",        es: "/[locale]/productos/[id]",      },    }),  },};export default config;

    Formatter yang Tersedia

    Intlayer menyediakan formatter untuk semua framework populer:

    • nextjsRewrite: Untuk Next.js App Router. Mendukung [slug], [...slug] (1+), dan [[...slug]] (0+).
    • svelteKitRewrite: Untuk SvelteKit. Mendukung [slug], [...path] (0+), dan [[optional]] (0-1).
    • reactRouterRewrite: Untuk React Router. Mendukung :slug dan * (0+).
    • vueRouterRewrite: Untuk Vue Router 4. Mendukung :slug, :slug? (0-1), :slug* (0+), dan :slug+ (1+).
    • solidRouterRewrite: Untuk Solid Router. Mendukung :slug dan *slug (0+). /// tanstackRouterRewrite: Untuk TanStack Router. Mendukung $slug dan * (0+). /// nuxtRewrite: Untuk Nuxt 3. Mendukung [slug] dan [...slug] (0+). /// viteRewrite: Formatter umum untuk proyek berbasis Vite. Menormalkan sintaks untuk proxy Vite. /// /// ### Pola Lanjutan /// /// Intlayer secara internal menormalkan pola-pola ini menjadi sintaks terpadu, memungkinkan pencocokan dan pembuatan path yang lebih canggih: /// /// - Segmen Opsional: [[optional]] (SvelteKit) atau :slug? (Vue/React) didukung. /// - Catch-all (Nol atau lebih): [[...slug]] (Next.js), [...path] (SvelteKit/Nuxt), atau * (React/TanStack) memungkinkan mencocokkan beberapa segmen. /// - Catch-all Wajib (Satu atau lebih): [...slug] (Next.js) atau :slug+ (Vue) memastikan setidaknya satu segmen ada. /// /// ## Koreksi URL di Sisi Klien: useRewriteURL /// ///

    Untuk memastikan bilah alamat browser selalu mencerminkan URL terlokalisasi yang "cantik", Intlayer menyediakan hook useRewriteURL. Hook ini memperbarui URL secara diam-diam menggunakan window.history.replaceState ketika pengguna mendarat pada path kanonik.

    Penggunaan pada Frameworks

    tsx
    'use client';import { useRewriteURL } from "next-intlayer";const MyLayout = ({ children }) => {  useRewriteURL(); // Secara otomatis memperbaiki /fr/about menjadi /fr/a-propos  return <>{children}</>;};

    Integrasi Router & Proxies

    Proxy sisi-server Intlayer (Vite & Next.js) secara otomatis menangani rewrite kustom untuk memastikan konsistensi SEO.

    1. Penulisan Ulang Internal: Ketika seorang pengguna mengunjungi /fr/a-propos, proxy secara internal memetakan ke /fr/about sehingga framework Anda mencocokkan route yang benar.
    2. Pengalihan Otoritatif: Jika pengguna mengetik /fr/about secara manual, proxy mengeluarkan pengalihan 301/302 ke /fr/a-propos, memastikan mesin pencari hanya mengindeks satu versi halaman tersebut.

    Integrasi Next.js

    Integrasi Next.js sepenuhnya ditangani melalui middleware intlayerProxy.

    middleware.ts
    import { intlayerProxy } from "next-intlayer/middleware";import { NextRequest } from "next/server";export function middleware(request: NextRequest) {  return intlayerProxy(request);}

    Integrasi Vite

    Untuk SolidJS, Vue, dan Svelte, plugin Vite intlayerProxy mengelola rewrite selama pengembangan.

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

    Fitur Utama

    1. Rewrite Multi-Konteks

    Setiap formatter menghasilkan sebuah RewriteObject yang berisi aturan khusus untuk berbagai konsumen:

    • url: Dioptimalkan untuk pembuatan URL di sisi klien (menghapus segmen locale).
    • nextjs: Mempertahankan [locale] untuk middleware Next.js.
    • vite: Mempertahankan :locale untuk proxy Vite.

    2. Normalisasi Pola Otomatis

    Intlayer secara internal menormalkan semua sintaks pola (misalnya mengonversi [param] menjadi :param) sehingga pemacokan tetap konsisten terlepas dari framework sumber.

    3. URL Otoritatif untuk SEO

    Dengan menegakkan pengalihan dari jalur kanonik ke alias yang lebih rapi (pretty aliases), Intlayer mencegah masalah konten duplikat dan meningkatkan keterlihatan situs.

    Utilitas Inti

    • getLocalizedUrl(url, locale): Menghasilkan URL terlokalisasi yang mematuhi aturan penulisan ulang.
    • getCanonicalPath(path, locale): Menyelesaikan URL terlokalisasi kembali ke jalur kanonik internalnya.
    • getRewritePath(pathname, locale): Mendeteksi apakah sebuah pathname perlu dikoreksi ke alias terlokalisasi yang lebih rapi.