Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
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
Intlayer v9 Baru - Apa yang baru?
Selamat datang di Intlayer v9! Rilis besar ini menandai tonggak sejarah besar dalam menyederhanakan jalur migrasi ke Intlayer dengan Compat Adapter Packages untuk pustaka i18n utama (react-i18next, next-intl, vue-i18n, dll.) dan menambahkan dukungan untuk struktur konten yang kaya: Collections, Variants, dan Dynamic Records.
Daftar Isi
Compat Adapter Packages
Migrasi ke Intlayer dari pustaka i18n populer kini lebih mudah dari sebelumnya. Kami telah membuat lima paket kompatibilitas (compat packages) yang mengekspos API publik yang persis sama dengan pustaka i18n standar tetapi mendelegasikan semua pekerjaan penerjemahan ke Intlayer pada saat runtime.
Mengekspos API Publik yang Sama dengan Strict Typing
Dengan mengganti impor, Anda mendapatkan semua manfaat Intlayer (termasuk type safety pada saat compile-time terhadap dictionary Anda yang sebenarnya) dengan perubahan kode yang minimal:
@intlayer/i18next@intlayer/react-i18next@intlayer/next-intl@intlayer/next-i18next@intlayer/vue-i18n
Sebagai contoh, cukup ubah:
Salin kode ke clipboard
menjadi:
Salin kode ke clipboard
Key Anda sekarang akan bertipe ketat (strictly typed) terhadap dictionary Intlayer Anda, menawarkan auto-completion dot-path lengkap di IDE Anda!
Plugin Alias Bundler (Vite, Next.js, Turbopack)
Untuk memungkinkan migrasi tanpa menulis ulang semua pernyataan impor Anda secara manual, setiap paket compat adapter menyertakan plugin bundler kustom (Vite atau Next.js) di bawah subpath /plugin.
Plugin ini secara otomatis menulis ulang impor yang ada (misalnya react-i18next atau next-intl) ke padanannya di @intlayer/* pada saat build time.
Contoh Next.js (Webpack / Turbopack)
Alih-alih withIntlayer, bungkus konfigurasi Next.js Anda dengan plugin kompatibilitas:
Salin kode ke clipboard
Contoh Vite (React, Vue, Solid, Svelte)
Salin kode ke clipboard
Mutualized Runtime Resolver
Semua compat adapter sekarang merutekan resolusi terjemahan melalui satu parser runtime yang sangat dioptimalkan: @intlayer/core/messageFormat.
- Interpolate Message: Menyelesaikan
{{var}}standar (whitespace & dot-path), argumen berformat ICU ({v, number, percent}dll.), dan templat{var}polos. - Message Node Resolver: Menyelesaikan node bersarang:
insert(),plural()(aturan jamak CLDR),enu()(enumerasi),gender(), tag HTML, array, dan node fungsi yang dapat dipanggil (callable function nodes). - Tokenized Tag Parser: Mendukung tag XML/HTML inline dan tag bernomor (misalnya,
<1>children</1>) untuk mendukung rendering rich-text secara langsung (out of the box).
Spesifikasi Fitur: Collections, Variants & Dynamic Records
Intlayer v9 berkembang melampaui objek key-value statis, memungkinkan dictionary untuk mendeklarasikan struktur tata letak dinamis yang sepenuhnya bertipe (fully typed) dari ujung ke ujung (end-to-end).
1. Collections
Definisikan daftar item terurut yang dikelola CMS (misalnya FAQ, produk, atau daftar blog):
Salin kode ke clipboard
Penggunaan:
Salin kode ke clipboard
2. Variants
Sajikan pengujian A/B (A/B tests), header musiman, feature flags, atau landing page kustom:
Salin kode ke clipboard
Penggunaan:
Salin kode ke clipboard
3. Dynamic Records
Definisikan dictionary yang entrinya dimuat secara dinamis pada saat runtime melalui ID kueri:
Salin kode ke clipboard
Penggunaan:
Salin kode ke clipboard
Dynamic Loading & Optimisasi Ukuran Bundle
Untuk menjaga ukuran bundle tetap sangat kecil, Intlayer v9 mendukung dynamic lazy loading.
Dalam konfigurasi Anda, atur importMode ke 'dynamic' atau 'fetch':
Salin kode ke clipboard
Pada saat build time, @intlayer/swc and @intlayer/babel memindai file Anda dan mengganti panggilan useIntlayer / getIntlayer dengan wrapper yang mendukung tree-shaking (useDictionary / useDictionaryDynamic). Hanya konten yang diperlukan untuk item koleksi, varian, atau locale terpilih yang dimuat, mencegah bundle produksi Anda berisi terjemahan yang tidak digunakan.
Catatan migrasi dari v8
Jika Anda memperbarui dari v8, perhatikan bahwa v9 tidak menyertakan breaking changes (perubahan yang merusak). Namun berikut adalah perubahan utamanya:
- Locales & Dialects: Jika menggunakan dependensi i18n eksternal, tambahkan plugin compat adapter masing-masing dalam konfigurasi atau pengaturan bundler Anda untuk menulis ulang impor secara otomatis.
- Custom Selectors: Saat memanggil
useIntlayer, parameter kedua sekarang dicadangkan untuk objek opsi yang berisi{ locale, item, variant, id }. Jika sebelumnya Anda meneruskan string locale secara langsung, Anda masih dapat melakukannya, tetapi menggunakan objek opsi sangat direkomendasikan untuk pemilihan tingkat lanjut.