अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
यह दस्तावेज़ पुराना है, आधार संस्करण को इस तिथि पर अपडेट किया गया है 22 अगस्त 2026.
अंग्रेजी दस्तावेज़ पर जाएँसंस्करण इतिहास
- "वैरिएंट सुविधा का रिलीज़"v9.0.012/6/2026
- "`variant` अब एक स्ट्रिंग या ऑब्जेक्ट स्वीकार करता है — पूर्व `meta` / गतिशील रिकॉर्ड को ऑब्जेक्ट वेरिएंट के रूप में घोषित किया जाता है"v9.1.026/6/2026
- "वेरिएंट केवल उन्हीं कुंजियों को घोषित करता है जिन्हें वह ओवरराइड करता है; अघोषित वेरिएंट डिफ़ॉल्ट प्रविष्टि पर वापस आ जाते हैं"v9.1.131/7/2026
- "प्रोवाइडर एक परिवेशी `variant` प्रॉप स्वीकार करते हैं; सेलेक्टर एक क्रमित वरीयता शृंखला स्वीकार करते हैं"v9.1.24/8/2026
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंअगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।
दस्तावेज़ के लिए GitHub लिंकदस्तावेज़ का Markdown को क्लिपबोर्ड पर कॉपी करें
वैरिएंट
एक वैरिएंट सामग्री फ़ाइलों का एक समूह है जो समान डिक्शनरी key साझा करती हैं लेकिन प्रत्येक का एक अलग variant मान होता है। Intlayer useIntlayer को पास किए गए सेलेक्टर के आधार पर उपयुक्त फ़ाइल परोसता है।
variant मान दो रूप ले सकता है:
- एक स्ट्रिंग — एकल नामित विकल्प (A/B परीक्षण, मौसमी बैनर, फ़ीचर फ़्लैग)।
- एक ऑब्जेक्ट — फ़ील्ड के सेट द्वारा संबोधित एक संरचित विभेदक (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 { 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;
कोड को क्लिपबोर्ड पर कॉपी करें
इसलिए आप केवल वहीं वेरिएंट फ़ाइल जोड़ते हैं जहां शब्द वास्तव में भिन्न होते हैं। एक कुंजी केवल तभी null पर हल होती है जब वह वेरिएंट घोषित करती है लेकिन कोई डिफ़ॉल्ट प्रविष्टि नहीं होती है।
नामित वेरिएंट का उपयोग करना
डिफ़ॉल्ट वैरिएंट
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "react-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → डिफ़ॉल्ट वैरिएंट
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "next-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → डिफ़ॉल्ट वैरिएंट
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};
कोड को क्लिपबोर्ड पर कॉपी करें
<script setup>
import { useIntlayer } from "vue-intlayer";
const { headline, cta } = useIntlayer("hero-banner");
</script>
<template>
<section>
<h1>{{ headline }}</h1>
<a>{{ cta }}</a>
</section>
</template>
कोड को क्लिपबोर्ड पर कॉपी करें
<script lang="ts">
import { useIntlayer } from "svelte-intlayer";
const content = useIntlayer("hero-banner");
</script>
<section>
<h1>{$content.headline}</h1>
<a>{$content.cta}</a>
</section>
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "preact-intlayer";
export const Hero = () => {
const { headline, cta } = useIntlayer("hero-banner");
// → डिफ़ॉल्ट वैरिएंट
return (
<section>
<h1>{headline}</h1>
<a>{cta}</a>
</section>
);
};
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "solid-intlayer";
export const Hero = () => {
const content = useIntlayer("hero-banner");
// → डिफ़ॉल्ट वैरिएंट
return (
<section>
<h1>{content().headline}</h1>
<a>{content().cta}</a>
</section>
);
};
कोड को क्लिपबोर्ड पर कॉपी करें
import { Component } from "@angular/core";
import { useIntlayer } from "angular-intlayer";
@Component({
selector: "app-hero",
template: `
<section>
<h1>{{ content().headline }}</h1>
<a>{{ content().cta }}</a>
</section>
`,
})
export class HeroComponent {
content = useIntlayer("hero-banner");
}
कोड को क्लिपबोर्ड पर कॉपी करें
नामित वैरिएंट
कोड को क्लिपबोर्ड पर कॉपी करें
स्पष्ट locale के साथ नामित वैरिएंट
कोड को क्लिपबोर्ड पर कॉपी करें
ऑब्जेक्ट (संरचित) वैरिएंट
एक ऑब्जेक्ट वैरिएंट variant फ़ील्ड में घोषित मनमाने key-value युग्मों के सेट द्वारा सामग्री को संबोधित करता है — जिससे 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>;
};
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "next-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>;
};
कोड को क्लिपबोर्ड पर कॉपी करें
<script setup>
import { useIntlayer } from "vue-intlayer";
const props = defineProps({
productId: String,
userId: String,
});
const content = useIntlayer("product", {
variant: { id: props.productId, userId: props.userId },
});
</script>
<template>
<p v-if="content">{{ content.description }}</p>
</template>
कोड को क्लिपबोर्ड पर कॉपी करें
<script lang="ts">
import { useIntlayer } from "svelte-intlayer";
export let productId: string;
export let userId: string;
const content = useIntlayer("product", {
variant: { id: productId, userId },
});
</script>
{#if $content}
<p>{$content.description}</p>
{/if}
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "preact-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>;
};
कोड को क्लिपबोर्ड पर कॉपी करें
import { useIntlayer } from "solid-intlayer";
export const Product = (props: {
productId: string;
userId: string;
}) => {
const content = useIntlayer("product", {
variant: { id: props.productId, userId: props.userId },
});
return (
<>
{content() && <p>{content().description}</p>}
</>
);
};
कोड को क्लिपबोर्ड पर कॉपी करें
import { Component, Input, OnInit } from "@angular/core";
import { useIntlayer } from "angular-intlayer";
@Component({
selector: "app-product",
template: `
@if (content()) {
<p>{{ content().description }}</p>
}
`,
})
export class ProductComponent implements OnInit {
@Input() productId!: string;
@Input() userId!: string;
content: any;
ngOnInit() {
this.content = useIntlayer("product", {
variant: { id: this.productId, userId: this.userId },
});
}
}
कोड को क्लिपबोर्ड पर कॉपी करें
स्पष्ट locale के साथ
कोड को क्लिपबोर्ड पर कॉपी करें
अनुपस्थित फ़ील्ड — कोई मिलान नहीं
कोड को क्लिपबोर्ड पर कॉपी करें
परिवेशी वैरिएंट
कुछ वैरिएंट आयाम पूरे सत्र के लिए स्थिर रहते हैं — टेनेंट, विद्यालय का प्रकार, प्लान स्तर। ये एक ही बार हल होते हैं, और किसी भी कॉम्पोनेंट को इन्हें हाथ से पास नहीं करना चाहिए।
इन्हें इंजेक्ट करने के लिएuseIntlayerको अपने हुक में न लपेटें। बिल्ड-टाइम अनुकूलन केवल फ्रेमवर्क पैकेज से आयातित शाब्दिकuseIntlayer("key")कॉल को ही पुनर्लिखित करता है, इसलिए किसी रैपर के पीछे कुछ भी बंडल नहीं होता।
इसके बजाय वैरिएंट को प्रोवाइडर पर एक ही बार घोषित करें, ठीक locale की तरह:
कोड को क्लिपबोर्ड पर कॉपी करें
import { IntlayerProvider } from "react-intlayer";
export const App = ({ locale, schoolType }) => (
<IntlayerProvider locale={locale} variant={schoolType}>
<Hero />
</IntlayerProvider>
);
कोड को क्लिपबोर्ड पर कॉपी करें
import { IntlayerProvider } from "next-intlayer/server";
export default async function Layout({ children, params }) {
const { locale } = await params;
const schoolType = await getSchoolType();
return (
<IntlayerProvider locale={locale} variant={schoolType}>
{children}
</IntlayerProvider>
);
}
कोड को क्लिपबोर्ड पर कॉपी करें
import { IntlayerServerProvider } from "next-intlayer/server";
import { IntlayerClientProvider } from "next-intlayer";
export default async function Layout({ children, params }) {
const { locale } = await params;
const schoolType = await getSchoolType();
return (
<IntlayerServerProvider locale={locale} variant={schoolType}>
<IntlayerClientProvider locale={locale} variant={schoolType}>
{children}
</IntlayerClientProvider>
</IntlayerServerProvider>
);
}
कोड को क्लिपबोर्ड पर कॉपी करें
import { createApp } from "vue";
import { installIntlayer } from "vue-intlayer";
import App from "./App.vue";
const app = createApp(App);
installIntlayer(app, { locale: "en", variant: schoolType });
app.mount("#app");
कोड को क्लिपबोर्ड पर कॉपी करें
<script lang="ts">
import { setupIntlayer } from "svelte-intlayer";
export let schoolType: string;
setupIntlayer("en", schoolType);
</script>
<slot />
कोड को क्लिपबोर्ड पर कॉपी करें
import { IntlayerProvider } from "preact-intlayer";
export const App = ({ locale, schoolType }) => (
<IntlayerProvider locale={locale} variant={schoolType}>
<Hero />
</IntlayerProvider>
);
कोड को क्लिपबोर्ड पर कॉपी करें
import { IntlayerProvider } from "solid-intlayer";
export const App = (props) => (
<IntlayerProvider locale={props.locale} variant={props.schoolType}>
<Hero />
</IntlayerProvider>
);
कोड को क्लिपबोर्ड पर कॉपी करें
import { ApplicationConfig } from "@angular/core";
import { provideIntlayer } from "angular-intlayer";
export const appConfig: ApplicationConfig = {
providers: [provideIntlayer("en", true, schoolType)],
};
कोड को क्लिपबोर्ड पर कॉपी करें
अब प्रोवाइडर के नीचे प्रत्येक डिक्शनरी पठन उसी वैरिएंट के सापेक्ष हल होता है, और कॉल-स्थल का सेलेक्टर हमेशा जीतता है:
कोड को क्लिपबोर्ड पर कॉपी करें
रूप
variant प्रॉप तीन रूप स्वीकार करता है:
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| रूप | अर्थ |
|---|---|
variant="school1" | हर कुंजी के लिए एक नामित वैरिएंट |
variant={["school1", "default"]} | एक क्रमित वरीयता शृंखला |
variant={{ "hero-banner": "school1", default: "base" }} | प्रति डिक्शनरी कुंजी एक वैरिएंट |
वरीयता शृंखला
शृंखला को प्रत्येक कुंजी द्वारा घोषित प्रविष्टियों के सापेक्ष बाएँ से दाएँ आज़माया जाता है, और पहली घोषित प्रविष्टि जीतती है। जब कोई भी घोषित न हो, तो निहित डिफ़ॉल्ट प्रविष्टि का उपयोग होता है — ठीक वैसे ही जैसे एकल मान के लिए।
कोड को क्लिपबोर्ड पर कॉपी करें
अतः ["black_friday", "summer"] का अर्थ है «यदि इस कुंजी के पास black friday है तो वही, अन्यथा summer, अन्यथा डिफ़ॉल्ट»। शृंखलाएँ कॉल-स्थल पर भी स्वीकार्य हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
ध्यान दें कि यह कंटेंट फ़ाइल के variant फ़ील्ड द्वारा स्वीकार किए जाने वाले ऐरे का दर्पण प्रतिबिंब है: वहाँ एक ऐरे प्रति तत्व एक प्रविष्टि घोषित करता है, यहाँ वह उन्हें प्राथमिकता क्रम में उपभोग करता है।
प्रति-कुंजी मैप
प्रत्येक डिक्शनरी कुंजी को अलग-अलग संबोधित करें। आरक्षित default प्रविष्टि उन सभी कुंजियों को कवर करती है जो सूचीबद्ध नहीं हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
प्रोवाइडर पर एक सामान्य ऑब्जेक्ट हमेशा प्रति-कुंजी मैप के रूप में पढ़ा जाता है, कभी ऑब्जेक्ट वैरिएंट के रूप में नहीं — दोनों संरचनात्मक रूप से समान हैं। किसी ऑब्जेक्ट वैरिएंट को वैश्विक रूप से तय करने के लिए उसे किसी प्रविष्टि के नीचे नेस्ट करें: variant={{ default: { id: "prod_abc" } }}।
चूँकि मैप की कुंजियाँ आपकी घोषित डिक्शनरी कुंजियों के विरुद्ध जाँची जाती हैं, कोई टाइपो — या सीधे लिखा गया ऑब्जेक्ट वैरिएंट, जैसे 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 मोड के विवरण के लिए बंडल ऑप्टिमाइज़ेशन देखें।
विशिष्ट उपयोग-मामले
- प्रयोग key द्वारा संचालित A/B टेक्स्ट परीक्षण
- मौसमी या प्रचारात्मक बैनर
- फ़ीचर-फ़्लैग संदेश
- locale-विशिष्ट मार्केटिंग अभियान
- CMS में प्रबंधित प्रति-उत्पाद मार्केटिंग टेक्स्ट
- उपयोगकर्ता-विशिष्ट या खाता-विशिष्ट सामग्री
- रनटाइम पर अपारदर्शी ID द्वारा कुंजीबद्ध कोई भी सामग्री
