Sorunuzu sorun ve bu sayfaya ve seçtiğiniz AI sağlayıcısına referans vererek belgenin bir özetini alın
Sürüm Geçmişi
- "Varyantlar özelliğinin yayımlanması"v9.0.012.06.2026
- "`variant` artık bir dize veya bir nesne kabul ediyor — önceki `meta` / dinamik kayıtlar nesne varyantları olarak bildiriliyor"v9.1.026.06.2026
- "Bir varyant yalnızca geçersiz kıldığı anahtarları bildirir; bildirilmemiş varyantlar varsayılan girdiye geri döner"v9.1.131.07.2026
- "Sağlayıcılar ortam düzeyinde bir `variant` prop'u kabul eder; seçiciler sıralı bir tercih zinciri kabul eder"v9.1.204.08.2026
Bu sayfanın içeriği bir yapay zeka kullanılarak çevrildi.
Orijinal içeriğin İngilizce son sürümünü görüntüleyinIf 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
Varyantlar
Bir varyant, aynı sözlük anahtarını (key) paylaşan ancak her biri farklı bir variant değeri taşıyan bir içerik dosyaları kümesidir. Intlayer, useIntlayer'a geçirilen seçiciye göre uygun dosyayı sunar.
variant değeri iki biçim alabilir:
- Bir dize — tek bir adlandırılmış alternatif (A/B testleri, sezonluk afişler, özellik bayrakları).
- Bir nesne — bir alan kümesiyle adreslenen yapılandırılmış bir ayırt edici (CMS kayıtları, kullanıcıya özel metin, opak bir kimlikle anahtarlanan herhangi bir içerik). Kimlik nesnenin tamamıdır: seçici, girdiyi çözümlemek için eşit bir nesne sağlamalıdır.
Nesne biçimi eskimetaalanının yerini alır. Daha öncemeta: { id, … }yazdığınız her yerdevariant: { id, … }yazın ve onu{ variant: { id, … } }ile seçin.
Adlandırılmış (dize) varyantlar
Her dosya bir adlandırılmış alternatifi temsil eder. variant'ı atlamak (veya "default" olarak ayarlamak) onu yedek olarak işaretler.
Kodu panoya kopyala
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;Kodu panoya kopyala
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;Kısmi varyantlar
Bir varyant yalnızca geçersiz kıldığı anahtarları bildirir; geri kalanı varsayılan girdiden miras alınır.
Kodu panoya kopyala
import { t, type Dictionary } from "intlayer";
const dictionary = {
key: "hero-banner",
variant: "summer",
content: {
headline: t({
en: "Build faster all summer",
fr: "Développez plus vite tout l'été",
}),
},
} satisfies Dictionary;
export default dictionary;Kodu panoya kopyala
useIntlayer("hero-banner", { variant: "summer" });// → { headline: "Développez plus vite tout l'été", cta: "Commencer" } — `cta` miras alındıuseIntlayer("hero-banner", { variant: "never-declared" });// → varsayılan girdiBöylece yalnızca ifadelerin gerçekten farklı olduğu durumlarda bir varyant dosyası eklersiniz. Bir anahtar, yalnızca varyantları bildirip varsayılan girdisi olmadığında null olarak çözülür.
Adlandırılmış varyantları kullanma
Varsayılan varyant
Kodu panoya kopyala
import { useIntlayer } from "react-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → varsayılan varyant
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};Adlandırılmış varyant
Kodu panoya kopyala
const { headline, cta } = useIntlayer("hero-banner", { variant: "black_friday",});Açık locale ile adlandırılmış varyant
Kodu panoya kopyala
const content = useIntlayer("hero-banner", { variant: "black_friday", locale: "fr",});Nesne (yapılandırılmış) varyantlar
Bir nesne varyantı, variant alanında bildirilen rastgele bir anahtar-değer çiftleri kümesiyle içeriği adresler — bu da CMS kayıtlarını, kullanıcıya özel metni veya anahtarı opak bir kimlik olan herhangi bir içeriği modellemeyi mümkün kılar. Kimlik nesnenin tamamıdır: girdinin çözümlenmesi için seçici eşit bir nesne sağlamalıdır.
Kodu panoya kopyala
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;Kodu panoya kopyala
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;Nesne varyantlarını kullanma
Eşleşen nesneyi variant'a geçirin. Sözlükte bildirilen her alan sağlanmalı ve eşit olmalıdır; aksi takdirde sonuç null olur. Alanların sırası önemli değildir.
Kodu panoya kopyala
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>;
};Açık locale ile
Kodu panoya kopyala
const content = useIntlayer("product", { variant: { id: "prod_abc", userId: "user_123" }, locale: "fr",});Eksik alan — eşleşme yok
Kodu panoya kopyala
// null döndürür: `userId` eksik, bu nedenle nesne bildirilen varyantla eşleşmiyorconst content = useIntlayer("product", { variant: { id: "prod_abc" } });Ortam varyantı
Bazı varyant boyutları tüm oturum boyunca sabittir — kiracı, okul türü, plan seviyesi. Bir kez çözümlenirler ve hiçbir bileşenin bunları elle geçirmesi gerekmemelidir.
Bunları enjekte etmek içinuseIntlayer'ı kendi hook'unuza sarmayın. Derleme zamanı optimizasyonu yalnızca framework paketinden içe aktarılan düz biruseIntlayer("key")çağrısını yeniden yazar; bir sarmalayıcının arkasındaki hiçbir şey paketlenmez.
Bunun yerine varyantı sağlayıcıda bir kez bildirin, tıpkı locale gibi:
Kodu panoya kopyala
import { IntlayerProvider } from "react-intlayer";
export const App = ({ locale, schoolType }) => (
<IntlayerProvider locale={locale} variant={schoolType}>
<Hero />
</IntlayerProvider>
);Sağlayıcının altındaki her sözlük okuması artık bu varyanta göre çözümlenir ve çağrı noktasındaki bir seçici her zaman kazanır:
Kodu panoya kopyala
useIntlayer("hero-banner");// → sağlayıcının varyantıuseIntlayer("hero-banner", { variant: "summer" });// → "summer" — sağlayıcı varyantının yerini alır, onu genişletmezBiçimler
variant prop'u üç biçim kabul eder:
Tüm veri içeriğini net bir şekilde görmek için tabloyu modalde açın
| Biçim | Anlamı |
|---|---|
variant="school1" | her anahtar için tek bir adlandırılmış varyant |
variant={["school1", "default"]} | sıralı bir tercih zinciri |
variant={{ "hero-banner": "school1", default: "base" }} | sözlük anahtarı başına bir varyant |
Tercih zinciri
Zincir, her anahtarın bildirdiği girdilere karşı soldan sağa denenir ve bildirilen ilk girdi kazanır. Hiçbiri bildirilmemişse örtük varsayılan girdi kullanılır — tıpkı tek bir değerde olduğu gibi.
Kodu panoya kopyala
<IntlayerProvider variant={["school1", "school2"]} />// `hero-banner` bir `school1` girdisi bildirmez ama `school2` bildirir → "school2"// ikisini de bildirmeyen bir anahtar → varsayılan girdiYani ["black_friday", "summer"] şöyle okunur: «bu anahtarda varsa black friday, yoksa summer, o da yoksa varsayılan». Zincirler çağrı noktasında da kabul edilir:
Kodu panoya kopyala
useIntlayer("hero-banner", { variant: ["black_friday", "summer"] });Bunun, bir içerik dosyasının variant alanının kabul ettiği dizinin ayna görüntüsü olduğuna dikkat edin: orada bir dizi öğe başına bir girdi bildirir, burada ise onları öncelik sırasına göre tüketir.
Anahtar başına eşleme
Her sözlük anahtarını ayrı ayrı adresleyin. Ayrılmış default girdisi, listelenmeyen tüm anahtarları kapsar:
Kodu panoya kopyala
<IntlayerProvider variant={{ "hero-banner": "school1", product: ["school1", "default"], default: "base", }}/>Bir sağlayıcıda düz bir nesne her zaman anahtar başına eşleme olarak okunur, asla nesne varyantı olarak değil — ikisi yapısal olarak aynıdır. Bir nesne varyantını global olarak sabitlemek için onu bir girdinin altına yerleştirin: variant={{ default: { id: "prod_abc" } }}.
Eşlemenin anahtarları bildirdiğiniz sözlük anahtarlarına karşı denetlendiğinden, bir yazım hatası — ya da doğrudan yazılmış bir nesne varyantı, örneğin variant={{ id: "prod_abc" }} — derleme zamanı hatasıdır.
Yükleme modu
Nesne varyantları genellikle tembel olarak yüklenir. Bunu kontrol etmek için sözlükte importMode'u ayarlayın:
Kodu panoya kopyala
const dictionary = {
key: "product",
importMode: "fetch", // or "dynamic"
variant: { id: "prod_abc", userId: "user_123" },
content: { … },
} satisfies Dictionary;
export default dictionary;static, dynamic ve fetch modlarıyla ilgili ayrıntılar için paket optimizasyonu bölümüne bakın.
Tipik kullanım örnekleri
- Bir deney anahtarıyla yönlendirilen A/B metin testleri
- Sezonluk veya promosyon afişleri
- Özellik bayraklı mesajlaşma
- Locale'e özgü pazarlama kampanyaları
- CMS'te yönetilen ürün başına pazarlama metni
- Kullanıcıya veya hesaba özel içerik
- Çalışma zamanında opak bir kimlikle anahtarlanan herhangi bir içerik