Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Riwayat Versi
- "Memperkenalkan konten berbasis pilihan"v9.1.030/7/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
Konten Berbasis Pilihan (Select) / Intlayer
Cara Kerja Select
Dalam Intlayer, konten berbasis pilihan (select) dicapai melalui fungsi select, yang memetakan nilai string sembarang ke konten yang sesuai. Ini setara dengan pesan ICU {value, select, …}, atau pernyataan switch dalam kode aplikasi Anda.
Gunakan select ketika penentu (discriminant) adalah string berbentuk bebas: sebuah status, paket berlangganan, platform, atau peran. Untuk penentu lainnya, Intlayer menyediakan node khusus:
Buka tabel dalam modal untuk melihat semua isi data dengan jelas
| Penentu | Node |
|---|---|
| Kuantitas | enu() |
| Boolean | cond() |
| Gender | gender() |
| String lainnya | select() |
Menyiapkan Konten Berbasis Pilihan
Untuk menyiapkan konten berbasis pilihan di proyek Intlayer Anda, buat modul konten yang menyertakan definisi pilihan Anda. Di bawah ini adalah contoh dalam berbagai format.
Salin kode ke clipboard
import { select, type Dictionary } from "intlayer";
const myPostContent = {
key: "my_key",
content: {
publishStatus: select({
draft: "This post is a draft",
published: "This post is live",
scheduled: "This post is scheduled",
fallback: "Unknown status", // opsional
}),
},
} satisfies Dictionary;
export default myPostContent;
Jika tidak adafallbackyang dideklarasikan, kunci yang dideklarasikan terakhir akan dianggap sebagai fallback ketika nilai yang diberikan tidak cocok dengan kasus mana pun yang dideklarasikan: persis seperti kontrakcond()dangender().
Type Safety
Argumen yang diterima disimpulkan dari kasus yang dideklarasikan:
- Tanpa
fallback, hanya kasus yang dideklarasikan yang diterima: salah ketik akan menghasilkan kesalahan tipe (type error). - Dengan
fallback, string apa pun akan diterima (karena fallback mencakup nilai yang tidak cocok) sementara kasus yang dideklarasikan tetap menyediakan pelengkapan otomatis (autocompletion).
Mengapa Tidak Menggunakan Objek Biasa?
Sangat menggoda untuk mendeklarasikan objek biasa dan mengindeksnya menggunakan nilai saat runtime (runtime value):
Salin kode ke clipboard
Kompilator (compiler) Intlayer menganalisis kode sumber Anda untuk menghapus konten yang tidak digunakan dan memperkecil (minify) kunci yang tersisa. Akses terkomputasi dinamis (obj[expr]) tidak dapat dianalisis secara statis, sehingga seluruh cabang akan ditandai sebagai opak (opaque): cabang tersebut akan tetap ada di dalam bundle dan kuncinya tidak akan diperkecil.
Dengan menggunakan select(), resolusi kasus terjadi di dalam pemanggilan fungsi alih-alih sebagai akses properti. Kompilator melihatnya sebagai akses bidang statis tunggal, dan mengoptimalkan node secara akurat, persis seperti yang dilakukannya dengan enu(), cond(), atau gender():
Salin kode ke clipboard
Menggunakan Konten Berbasis Pilihan
Untuk memanfaatkan konten berbasis pilihan dalam komponen React, impor dan gunakan hook useIntlayer dari paket react-intlayer. Hook ini mengambil konten untuk kunci yang ditentukan dan memungkinkan Anda meneruskan nilai untuk memilih output yang sesuai.
Salin kode ke clipboard
import type { FC } from "react";
import { useIntlayer } from "react-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>
{
/* Output: This post is a draft */
publishStatus("draft")
}
</p>
<p>
{
/* Output: This post is live */
publishStatus("published")
}
</p>
<p>
{
/* Output: Unknown status */
publishStatus("Archived")
}
</p>
</div>
);
};
export default PostStatus;
Untuk memanfaatkan konten berbasis pilihan dalam Komponen Klien (Client Components) Next.js, ambil konten tersebut melalui hook useIntlayer. Berikut adalah contohnya:
Salin kode ke clipboard
"use client";
import type { FC } from "react";
import { useIntlayer } from "next-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Untuk memanfaatkan konten berbasis pilihan dalam komponen Vue, ambil konten tersebut melalui hook useIntlayer. Berikut adalah contohnya:
Salin kode ke clipboard
Untuk memanfaatkan konten berbasis pilihan dalam komponen Svelte, ambil konten tersebut melalui hook useIntlayer. Store diakses menggunakan $. Berikut adalah contohnya:
Salin kode ke clipboard
Untuk memanfaatkan konten berbasis pilihan dalam komponen Preact, ambil konten tersebut melalui hook useIntlayer. Berikut adalah contohnya:
Salin kode ke clipboard
import type { FC } from "preact";
import { useIntlayer } from "preact-intlayer";
const PostStatus: FC = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Untuk memanfaatkan konten berbasis pilihan dalam komponen SolidJS, ambil konten tersebut melalui hook useIntlayer. Berikut adalah contohnya:
Salin kode ke clipboard
import type { Component } from "solid-js";
import { useIntlayer } from "solid-intlayer";
const PostStatus: Component = () => {
const { publishStatus } = useIntlayer("my_key");
return (
<div>
<p>{publishStatus("draft")}</p>
<p>{publishStatus("published")}</p>
</div>
);
};
export default PostStatus;
Untuk memanfaatkan konten berbasis pilihan dalam komponen Angular, ambil konten tersebut melalui hook useIntlayer. Berikut adalah contohnya:
Salin kode ke clipboard
Untuk memanfaatkan konten berbasis pilihan dengan vanilla-intlayer, ambil konten tersebut melalui hook useIntlayer. Berikut adalah contohnya:
Salin kode ke clipboard
import { installIntlayer, useIntlayer } from "vanilla-intlayer";
installIntlayer();
const content = useIntlayer("my_key").onChange((newContent) => {
document.getElementById("status")!.textContent =
newContent.publishStatus("draft");
});
// Render awal
document.getElementById("status")!.textContent = content.publishStatus("draft");
Menggabungkan Select dengan Node Lain
Karena setiap kasus berisi node konten penuh, select dapat dikombinasikan dengan t(), insert(), md(), dll:
Salin kode ke clipboard
Salin kode ke clipboard
Migrasi dari ICU select
Pesan yang menggunakan argumen select dari ICU diimpor sebagai node select:
Salin kode ke clipboard
Akan menjadi:
Salin kode ke clipboard
Kasus other pada ICU dinamai ulang menjadi fallback, nama kanonikal di Intlayer untuk semua kasus tangkapan-semua (catch-all). Argumen kedua mencatat nama variabel ICU sehingga saat diekspor, pesan tersebut berubah kembali menjadi string ICU yang sama persis.
Sebagai catatan, pernyataan ICUselectdi mana kasusnya adalah nilai gender (male/female/other) akan diimpor sebagai nodegender.
Sumber Daya Tambahan
Untuk informasi lebih rinci mengenai konfigurasi dan penggunaan, lihat sumber daya berikut:
Sumber daya ini memberikan wawasan lebih lanjut tentang cara menyiapkan dan menggunakan Intlayer dalam berbagai lingkungan dan kerangka kerja.