Ajukan pertanyaan Anda dan dapatkan ringkasan dokumen dengan merujuk halaman ini dan penyedia AI pilihan Anda
Riwayat Versi
- "Rilis fitur varian"v9.0.012/6/2026
- "`variant` kini menerima string atau objek — `meta` / record dinamis sebelumnya dideklarasikan sebagai varian objek"v9.1.026/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
Varian
Sebuah varian adalah sekumpulan file konten yang berbagi key kamus yang sama tetapi masing-masing membawa nilai variant yang berbeda. Intlayer menyajikan file yang sesuai berdasarkan selektor yang diberikan ke useIntlayer.
Nilai variant dapat berupa dua bentuk:
- String — satu alternatif bernama (pengujian A/B, banner musiman, feature flag).
- Objek — diskriminator terstruktur yang dialamatkan oleh sekumpulan field (record CMS, konten khusus pengguna, konten apa pun yang dikunci oleh ID buram). Seluruh objek adalah identitasnya: selektor harus memberikan objek yang sama untuk menyelesaikan entri.
Bentuk objek menggantikan fieldmetasebelumnya. Di mana pun Anda dulu menulismeta: { id, … }, tulisvariant: { id, … }, dan pilih dengan{ variant: { id, … } }.
Varian bernama (string)
Setiap file mewakili satu alternatif bernama. Menghilangkan variant (atau mengaturnya ke "default") menandainya sebagai fallback.
Salin kode ke clipboard
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "hero-banner",
variant: "default",
content: {
headline: t({
en: "Build faster with Intlayer",
fr: "Développez plus vite avec Intlayer",
}),
cta: t({ en: "Get started", fr: "Commencer" }),
},
} satisfies Dictionary;
export default dictionary;Salin kode ke clipboard
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "hero-banner",
variant: "black_friday",
content: {
headline: t({
en: "50 % off — today only",
fr: "−50 % — aujourd'hui seulement",
}),
cta: t({ en: "Shop now", fr: "Acheter maintenant" }),
},
} satisfies Dictionary;
export default dictionary;Mengonsumsi varian bernama
Varian default
Salin kode ke clipboard
import { useIntlayer } from "react-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → varian default
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};Varian bernama
Salin kode ke clipboard
const { headline, cta } = useIntlayer("hero-banner", { variant: "black_friday",});Varian bernama dengan locale eksplisit
Salin kode ke clipboard
const content = useIntlayer("hero-banner", { variant: "black_friday", locale: "fr",});Varian objek (terstruktur)
Varian objek mengalamatkan konten dengan sekumpulan pasangan key-value sewenang-wenang yang dideklarasikan di field variant — memungkinkan pemodelan record CMS, konten khusus pengguna, atau konten apa pun yang kuncinya berupa ID buram. Seluruh objek adalah identitasnya: selektor harus memberikan objek yang sama agar entri diselesaikan.
Salin kode ke clipboard
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "product",
variant: { id: "prod_abc", userId: "user_123" },
content: {
name: t({ en: "Widget Pro", fr: "Widget Pro" }),
description: t({ en: "The best widget.", fr: "Le meilleur widget." }),
},
} satisfies Dictionary;
export default dictionary;Salin kode ke clipboard
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "product",
variant: { id: "prod_abcd", userId: "user_123" },
content: {
name: t({ en: "Widget Lite", fr: "Widget Lite" }),
description: t({ en: "A lighter option.", fr: "Une option plus légère." }),
},
} satisfies Dictionary;
export default dictionary;Mengonsumsi varian objek
Berikan objek yang cocok ke variant. Setiap field yang dideklarasikan pada kamus harus disediakan dan sama; jika tidak, hasilnya null. Urutan field tidak penting.
Salin kode ke clipboard
import { useIntlayer } from "react-intlayer";
export const Product = ({
productId,
userId,
}: {
productId: string;
userId: string;
}) => {
const content = useIntlayer("product", {
variant: { id: productId, userId },
});
if (!content) return null;
return <p>{content.description}</p>;
};Dengan locale eksplisit
Salin kode ke clipboard
const content = useIntlayer("product", { variant: { id: "prod_abc", userId: "user_123" }, locale: "fr",});Field hilang — tidak cocok
Salin kode ke clipboard
// Mengembalikan null: `userId` hilang, sehingga objek tidak cocok dengan varian yang dideklarasikanconst content = useIntlayer("product", { variant: { id: "prod_abc" } });Mode pemuatan
Varian objek sering dimuat secara malas. Atur importMode pada kamus untuk mengendalikannya:
Salin kode ke clipboard
const dictionary = {
key: "product",
importMode: "fetch", // or "dynamic"
variant: { id: "prod_abc", userId: "user_123" },
content: { … },
} satisfies Dictionary;
export default dictionary;Lihat optimasi bundle untuk detail tentang mode static, dynamic, dan fetch.
Kasus penggunaan umum
- Pengujian A/B teks yang digerakkan oleh kunci eksperimen
- Banner musiman atau promosi
- Pesan ber-feature flag
- Kampanye pemasaran spesifik locale
- Teks pemasaran per-produk yang dikelola di CMS
- Konten khusus pengguna atau akun
- Konten apa pun yang dikunci oleh ID buram saat runtime