Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Riwayat Versi
- "Inisialisasi dokumentasi"v9.4.024/8/2026
Konten halaman ini diterjemahkan menggunakan AI.
Lihat versi terakhir dari konten aslinya dalam bahasa InggrisJika Anda memiliki ide untuk meningkatkan dokumentasi ini, silakan berkontribusi dengan mengajukan pull request di GitHub.
Tautan GitHub ke dokumentasiSalin Markdown dokumentasi ke clipboard
Dokumentasi Plugin intlayer untuk Elysia
Plugin intlayer untuk Elysia mendeteksi locale pengguna dan menyuntikkan objek intlayer ke dalam route context. Plugin ini juga memungkinkan penggunaan fungsi terjemahan global di dalam konteks request.
Penggunaan
Salin kode ke clipboard
Plugin mendaftarkan context-nya melaluideriveglobal, yang oleh Elysia diberi tipePartial<{ intlayer: IntlayerContext }>. Nilainya selalu ada saat runtime untuk route yang didaftarkan setelah.use(intlayer()), jadi gunakan non-null assertion (intlayer!.t) — atau optional chaining — agar TypeScript pada modestrictpuas.
Helper yang sama tersedia sebagai export mandiri, sehingga Anda dapat memanggilnya tanpa melakukan destructuring pada route context:
Salin kode ke clipboard
Deskripsi
Plugin melakukan tugas-tugas berikut:
- Deteksi locale: Membaca locale yang ditetapkan secara eksplisit oleh klien dari storage (cookie, header), lalu beralih ke locale yang dinegosiasikan dari header
Accept-Language. - Injeksi Konteks: Menambahkan properti
intlayerke context route Elysia (lihat tabel Context Route di bawah). - Manajemen Konteks: Menggunakan
AsyncLocalStorageuntuk mengelola konteks asinkron, memungkinkan fungsi Intlayer global (t,getIntlayer,getDictionary) mengakses locale spesifik request tanpa harus meneruskan objek konteks. - Penyiapan Dictionary: Memanggil
prepareIntlayersaat plugin dibuat, sehingga dictionary dibangun ketika aplikasi melakukan boot.
Context Route
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Properti | Tipe | Deskripsi |
|---|---|---|
locale | Locale | Locale yang digunakan untuk request ini, dengan locale_storage lebih diprioritaskan daripada locale_detected. |
locale_storage | Locale (opsional) | Locale yang diminta secara eksplisit oleh klien melalui cookie atau header. |
locale_detected | Locale | Locale yang dinegosiasikan dari header request. |
defaultLocale | Locale | Locale yang dikonfigurasi sebagai fallback di intlayer.config.ts. |
t | TranslateFunction | Sebuah fungsi terjemahan. |
getIntlayer | typeof getIntlayer | Fungsi untuk mengambil dictionary berdasarkan key. |
getDictionary | typeof getDictionary | Fungsi untuk memproses objek dictionary. |
Tidak seperti plugin Intlayer berbasis Node,elysia-intlayermengandalkanAsyncLocalStoragealih-alihcls-hooked, karenacls-hookedbergantung padaasync_hooks.createHook, yang tidak diimplementasikan oleh Bun.
Konteks request dilepaskan setelah response dipetakan, sehingga helper mandiri tidak pernah diselesaikan terhadap request yang sudah berakhir. Ketika dipanggil di luar request yang ditangani plugin, keduanya beralih ke locale default yang dikonfigurasi.
Urutan Resolusi Locale
Secara default, plugin menyelesaikan locale dengan urutan berikut:
- Cookie
INTLAYER_LOCALE. - Header
x-intlayer-locale. - Negosiasi header
Accept-Language. defaultLocaleyang dikonfigurasi.
Salin kode ke clipboard
Konfigurasi
Plugin membaca file intlayer.config.ts Anda. Anda dapat menyesuaikan cookie dan header yang digunakan untuk deteksi locale:
Salin kode ke clipboard
import { Locales, type IntlayerConfig } from "intlayer";
const config: IntlayerConfig = {
internationalization: {
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
defaultLocale: Locales.ENGLISH,
},
routing: {
storage: [
{ type: "header", name: "my-locale-header" },
{ type: "cookie", name: "my-locale-cookie" },
],
},
};
export default config;
Untuk informasi lebih lanjut tentang konfigurasi, kunjungi dokumentasi konfigurasi.
