Задайте питання та отримайте підсумок документа, вказавши цю сторінку та обраного вами постачальника штучного інтелекту
Історія версій
- "Випуск функції варіантів"v9.0.012.06.2026
- "`variant` тепер приймає рядок або об'єкт — колишні `meta` / динамічні записи оголошуються як об'єктні варіанти"v9.1.026.06.2026
Вміст цієї сторінки перекладено за допомогою штучного інтелекту.
Переглянути останню версію оригінального вмісту англійськоюIf 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
Варіанти
Варіант — це набір файлів контенту, що мають спільний ключ словника (key), але кожен несе своє значення variant. Intlayer віддає відповідний файл на основі селектора, переданого до useIntlayer.
Значення variant може набувати двох форм:
- Рядок — одна іменована альтернатива (A/B-тести, сезонні банери, feature-прапорці).
- Об'єкт — структурований дискримінатор, адресований набором полів (записи CMS, контент конкретного користувача, будь-який контент із непрозорим ID як ключем). Ідентичністю є весь об'єкт: селектор має надати рівний об'єкт, щоб розв'язати запис.
Об'єктна форма замінює колишнє полеmeta. Усюди, де раніше ви писалиmeta: { id, … }, пишітьvariant: { id, … }і вибирайте її через{ variant: { id, … } }.
Іменовані (рядкові) варіанти
Кожен файл представляє одну іменовану альтернативу. Пропуск variant (або значення "default") позначає його як запасний.
Скопіюйте код у буфер обміну
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;Скопіюйте код у буфер обміну
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;Використання іменованих варіантів
Варіант за замовчуванням
Скопіюйте код у буфер обміну
import { useIntlayer } from "react-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → варіант за замовчуванням
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};Іменований варіант
Скопіюйте код у буфер обміну
const { headline, cta } = useIntlayer("hero-banner", { variant: "black_friday",});Іменований варіант із явною локаллю
Скопіюйте код у буфер обміну
const content = useIntlayer("hero-banner", { variant: "black_friday", locale: "fr",});Об'єктні (структуровані) варіанти
Об'єктний варіант адресує контент довільним набором пар ключ-значення, оголошених у полі variant, — що дозволяє моделювати записи CMS, контент конкретного користувача або будь-який контент із непрозорим ID як ключем. Ідентичністю є весь об'єкт: селектор має надати рівний об'єкт, щоб запис було розв'язано.
Скопіюйте код у буфер обміну
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;Скопіюйте код у буфер обміну
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;Використання об'єктних варіантів
Передайте відповідний об'єкт у variant. Кожне поле, оголошене у словнику, має бути надане й рівне; інакше результат — null. Порядок полів не має значення.
Скопіюйте код у буфер обміну
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>;
};З явною локаллю
Скопіюйте код у буфер обміну
const content = useIntlayer("product", { variant: { id: "prod_abc", userId: "user_123" }, locale: "fr",});Відсутнє поле — немає збігу
Скопіюйте код у буфер обміну
// Повертає null: відсутній `userId`, тож об'єкт не збігається з оголошеним варіантомconst content = useIntlayer("product", { variant: { id: "prod_abc" } });Режим завантаження
Об'єктні варіанти часто завантажуються ліниво. Задайте importMode у словнику, щоб керувати цим:
Скопіюйте код у буфер обміну
const dictionary = {
key: "product",
importMode: "fetch", // or "dynamic"
variant: { id: "prod_abc", userId: "user_123" },
content: { … },
} satisfies Dictionary;
export default dictionary;Див. оптимізацію бандла для деталей про режими static, dynamic і fetch.
Типові сценарії використання
- A/B-тести тексту, керовані ключем експерименту
- Сезонні або рекламні банери
- Повідомлення під feature-прапорцями
- Маркетингові кампанії для конкретної локалі
- Маркетинговий текст за товарами, керований у CMS
- Контент конкретного користувача або акаунта
- Будь-який контент, адресований непрозорим ID під час виконання