अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंअगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।
दस्तावेज़ के लिए GitHub लिंकदस्तावेज़ का Markdown को क्लिपबोर्ड पर कॉपी करें
i18next बनाम @intlayer/i18next: समान API, पूरी तरह भिन्न बंडल

@intlayer/i18next, @intlayer/react-i18next और @intlayer/next-i18next अनुकूलता (compat) एडेप्टर हैं। वे उसी i18next API को प्रदर्शित करते हैं जिसका उपयोग आपका कोड पहले से कर रहा है (useTranslation, t(), <Trans>, i18n.changeLanguage(), getFixedT, serverSideTranslations...) और इसे Intlayer द्वारा संकलित शब्दकोशों से प्रस्तुत करते हैं। घटक नहीं बदलते; केवल उनके नीचे का रनटाइम बदलता है।
यह लेख एक ही Next.js एप्लिकेशन पर उस प्रतिस्थापन को मापता है, जिसे एक बार next-i18next के साथ और एक बार @intlayer/next-i18next के साथ बनाया गया है। आंकड़े Benchmark Bloom से लिए गए हैं। लाइब्रेरी के रूप में i18next और Intlayer की तुलना के लिए, i18next बनाम Intlayer पढ़ें। यह लेख इस बात पर केंद्रित है कि जब आप अपने कोड को वैसे ही रखते हैं जैसा वह है, तो एडेप्टर क्या बदलता है।
संक्षेप में (tl;dr): उसी Next.js ऐप पर,next-i18nextको@intlayer/next-i18nextसे बदलने पर प्रति-पेज JavaScript का आकार gzip में 218.5 KB से घटकर 150.7 KB हो गया (प्राथमिक सेटअप में) और इसने पूरी तरह से अनुकूलितnext-i18nextसेटअप (163.4 KB) को 12.7 KB से पीछे छोड़ दिया। औसत घटक 78.5 KB से घटकर 9.7 KB हो गया, बाहरी-पेज स्ट्रिंग लीकेज ~90% से घटकर 0% हो गया, हाइड्रेशन का समय 15.6 ms से घटकर 11.3 ms हो गया, और रनटाइम 19.7 KB से घटकर 9.4 KB हो गया। किसी भी घटक को संपादित नहीं किया गया; केवल एक प्रोवाइडर फ़ाइल बदली गई।i18nextप्लगइन्स (बैकएंड, भाषा संसूचक) स्वीकार किए जाते हैं लेकिन वे कुछ नहीं करते, क्योंकि रनटाइम पर लोड करने या पता लगाने के लिए कुछ नहीं बचता है।
@intlayer/i18next क्या है
i18next एक रनटाइम है। i18n.init({ resources }) या कोई बैकएंड प्लगइन locales/{lng}/{ns}.json को एक ग्लोबल इंस्टेंस में लोड करता है; useTranslation("about") घटक को इससे जोड़ता है; t("title") रेंडर समय पर कुंजी की खोज करता है। नेमस्पेस, लेज़ी लोडिंग, प्रति-पेज नेमस्पेस सूचियाँ और टाइप सुरक्षा को कॉन्फ़िगर और प्रबंधित करना आपकी ज़िम्मेदारी होती है।
एडेप्टर API को बनाए रखते हैं और ग्लोबल इंस्टेंस को प्रतिस्थापित करते हैं:
- आयात उपनामकरण (Import aliasing)।
@intlayer/next-i18next/pluginकाcreateNextI18nPlugin()(याwithI18next)withIntlayerको लपेटता है और Webpack / Turbopack उपनाम जोड़ता है ताकिnext-i18next,react-i18nextऔरi18nextअपने समकक्ष@intlayer/*पैकेजों पर हल हो सकें। Vite पर,@intlayer/react-i18next/pluginसेreactI18nextVitePlugin()यही कार्य करता है। किसी भी आयात का नाम बदलने की आवश्यकता नहीं होती। - JSON एकमात्र सत्य स्रोत के रूप में।
syncJSONप्लगइन आपकी मौजूदाlocales/{lng}/{ns}.jsonफ़ाइलों कोformat: "i18next"के साथ पढ़ता है (ताकि{{name}},$t()नेस्टिंग,_one/_otherऔर संदर्भ प्रत्यय ठीक से पार्स हों) और जब CLI या CMS उन्हें अपडेट करता है तो अनुवाद वापस लिखता है। - कॉल-साइट बाइंडिंग। Intlayer अनुकूलन पास
useTranslation("about")को एक ऐसे कॉल में फिर से लिखता है जो सीधे सक्रिय लोकेल मेंaboutशब्दकोश प्राप्त करता है। घटक ग्लोबल स्टोर तक पहुंचना बंद कर देता है।
कोड को क्लिपबोर्ड पर कॉपी करें
कोड को क्लिपबोर्ड पर कॉपी करें
यह पुनर्लेखन ही नीचे दिए गए घटक-आकार और पेज-लीकेज स्तंभों को बेहतर बनाता है।
एडेप्टर क्या रखते हैं, क्या अनदेखा करते हैं और क्या प्रतिस्थापित नहीं कर सकते
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
i18next API | @intlayer/* के साथ |
|---|---|
useTranslation("ns"), useTranslation("ns", { keyPrefix }) | ✅ बरकरार। बिल्ड समय पर ns शब्दकोश से बाध्य; आपकी सामग्री के अनुसार टाइप किया गया |
t("key", { name }), {{interpolation}}, $t(key) नेस्टिंग | ✅ बरकरार |
key_one / key_other बहुवचन, key_male संदर्भ, returnObjects | ✅ बरकरार। बहुवचनों का मूल्यांकन Intl.PluralRules से किया जाता है |
components, क्रमांकित टैग <1>...</1>, values के साथ <Trans> | ✅ बरकरार |
withTranslation, Translation, I18nContext | ✅ बरकरार |
i18n.changeLanguage(), i18n.language, i18n.dir(), on("languageChanged") | ✅ बरकरार। changeLanguage Intlayer के लोकेल को चलाता है |
getFixedT(lng, ns, keyPrefix), i18n.exists(), hasLoadedNamespace() | ✅ बरकरार |
i18n.use(Backend).use(LanguageDetector).init({...}) | ⚠️ use() प्लगइन के init को कॉल करता है और समाप्त होता है; बैकएंड और डिटेक्टरों के पास लोड करने या खोजने के लिए कुछ नहीं है |
init({ resources }), addResourceBundle() | ⚠️ resources को देव चेतावनी के साथ अनदेखा किया जाता है; बंडल लाभ प्राप्त करने के लिए JSON आयात हटाएं |
I18nextProvider i18n={i18n} | ⚠️ एक IntlayerProvider प्रस्तुत करता है; i18n प्रॉप को अनदेखा किया जाता है। App Router पर, लोकेल पास करें (नीचे देखें) |
serverSideTranslations(locale, ["common"]) (next-i18next) | ⚠️ अपेक्षित आकार लौटाता है और कुछ भी लोड नहीं करता है। रखना सुरक्षित, हटाना सुरक्षित |
appWithTranslation(App) (next-i18next) | ✅ बरकरार |
next-i18next.config.js | ⚠️ पढ़ा नहीं जाता। लोकेल intlayer.config.ts से आते हैं |
बिना नेमस्पेस के useTranslation() | ✅ पूरी फ़ाइल के translation शब्दकोश के विरुद्ध काम करता है (splitKeys: false) |
बेंचमार्क
क्या मापा गया था
Benchmark Bloom सुइट प्रत्येक सेटअप के साथ समान एप्लिकेशन बनाता है: 10 पेज (होम, अबाउट, ब्लॉग, करियर, संपर्क, एफएक्यू, मूल्य निर्धारण, उत्पाद, सेटिंग्स, टीम), 10 लोकेल (en, fr, es, de, it, pt, zh, ja, ko, ru), समान घटक और समान सामग्री। पेजों को en और fr में मापा जाता है।
next-i18next को चार लोडिंग रणनीतियों में बनाया गया था, प्रत्येक लोकेल के JSON को resources में आयात करने (static) से लेकर प्रति रूट एक नेमस्पेस तक, जिसे बैकएंड के माध्यम से लोड किया गया था (scoped-dynamic)। एडेप्टर को प्राथमिक सेटअप के समान घटकों पर बनाया गया था, जिसमें केवल next.config.ts, intlayer.config.ts और प्रोवाइडर फ़ाइल बदली गई थी। इसमें कोई मैन्युअल "scoped" संस्करण नहीं है: कंपाइलर प्रति घटक सामग्री को स्वचालित रूप से सीमित करता है।
प्रत्येक बिल्ड के लिए, परीक्षण रिकॉर्ड करता है:
- लाइब्रेरी आकार: एक खाली घटक का gzip आकार जो केवल i18n लाइब्रेरी आयात करता है।
- पेज JS: सभी पेजों और लोकेलों में औसत रूप से प्रति पेज डाउनलोड किया गया gzip जावास्क्रिप्ट।
- लोकेल लीकेज %: डाउनलोड किए गए JS में अनुवादित स्ट्रिंग्स का हिस्सा जो उस लोकेल से संबंधित है जिसे उपयोगकर्ता नहीं देख रहा है।
- पेज लीकेज %: डाउनलोड किए गए JS में अनुवादित स्ट्रिंग्स का हिस्सा जो उस पेज से संबंधित है जिस पर उपयोगकर्ता नहीं है।
- घटक औसत: अलगाव में संकलित प्रत्येक घटक का औसत gzip आकार।
- E2E प्रतिक्रियाशीलता: एक नया लोकेल चुनने और DOM में
html[lang]अपडेट होने के बीच का वास्तविक समय (Playwright, 5 पुनरावृत्तियां)। - हाइड्रेशन: React हाइड्रेशन चरण की अवधि।
नीचे दिए गए आंकड़े 12-09-2026 के परीक्षण से आते हैं, जिसमेंnext-i18next16.3.0 (react-i18next17.0.13,i18next26.4.2) और@intlayer/next-i18next9.5.1 शामिल हैं। परीक्षण एप्लिकेशन जानबूझकर छोटा रखा गया है, इसलिए लीकेज प्रतिशत एक पैटर्न का वर्णन करते हैं: वे आपकी सामग्री के साथ बढ़ते हैं जबकि रनटाइम लागत स्थिर रहती है।
Next.js पर परिणाम
वे मेट्रिक्स और लाइब्रेरी चुनें जिनकी आपको परवाह है:
मीट्रिक
डायनामिक JSON लोडिंग
रनटाइम पर आलस्य से अनुवाद लोड करता है
स्कोप्ड JSON (नेमस्पेसिंग)
प्रति-पृष्ठ अनुवाद नेमस्पेस
यह मीट्रिक क्या है?
अंतर्राष्ट्रीयकरण लाइब्रेरी बंडल का कुल gzip-संपीड़ित आकार। इसमें केवल ट्री-शेकिंग और मिनिफिकेशन के बाद प्रदाता और सामग्री पुनर्प्राप्ति तर्क शामिल हैं।
यह महत्वपूर्ण क्यों है?
एक छोटा लाइब्रेरी आकार प्रारंभिक जावास्क्रिप्ट पेलोड को कम करता है, जिससे क्लाइंट पर तेज़ डाउनलोड और निष्पादन समय होता है।
देखने का तरीका
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| सेटअप | रणनीति | लाइब्रेरी आकार (gz) | पेज JS औसत (gz) | लोकेल लीकेज | पेज लीकेज | घटक औसत (gz) | E2E प्रतिक्रियाशीलता | हाइड्रेशन |
|---|---|---|---|---|---|---|---|---|
| base (बिना i18n) | - | 0.0 KB | 141.0 KB | 0.0% | 0.0% | 0.9 KB | 13.4 ms | 11.8 ms |
next-i18next | static | 19.7 KB | 218.5 KB | 0.0% | 89.8% | 78.5 KB | 16.4 ms | 15.6 ms |
next-i18next | dynamic | 19.7 KB | 169.5 KB | 50.0% | 89.8% | 26.1 KB | 15.4 ms | 27.7 ms |
next-i18next | scoped-static | 19.7 KB | 220.1 KB | 0.0% | 89.8% | 78.9 KB | 16.4 ms | 14.7 ms |
next-i18next | scoped-dynamic | 19.7 KB | 163.4 KB | 0.0% | 0.0% | 27.1 KB | 15.9 ms | 15.1 ms |
@intlayer/next-i18next | static | 9.4 KB | 150.7 KB | 0.0% | 0.0% | 9.7 KB | 10.7 ms | 11.3 ms |
@intlayer/next-i18next | dynamic | 9.4 KB | 150.7 KB | 0.0% | 0.0% | 9.7 KB | 11.9 ms | 10.6 ms |
next-intlayer (मूल) | static | 5.5 KB | 141.3 KB | 0.0% | 0.0% | 8.5 KB | 15.5 ms | 16.9 ms |
next-intlayer (मूल) | dynamic | 5.5 KB | 141.3 KB | 0.0% | 0.0% | 6.9 KB | 15.3 ms | 15.9 ms |
इसे कैसे समझें
- प्राथमिक सेटअप से प्रति पेज 68 KB कम।
resources: { en, fr, ... }हर पेज पर हर लोकेल और हर नेमस्पेस भेजता है: 218.5 KB। समान घटकों का एडेप्टर बिल्ड 150.7 KB पर आता है। यहnext-i18nextके सर्वश्रेष्ठ कॉन्फ़िगरेशन (163.4 KB) को भी 12.7 KB से हराता है, क्योंकि अकेलेi18nextरनटाइम का वजन 19.7 KB है जबकि एडेप्टर का केवल 9.4 KB है। - बिना किसी घटक को छुए लीकेज 0% हो जाता है। पूरी तरह से विभाजित सेटअप को छोड़कर प्रत्येक
next-i18nextसेटअप बाहरी पेजों की लगभग 90% स्ट्रिंग्स भेजता है।dynamicपंक्ति वास्तव में दिखती स्थिति से बदतर है: यह पेज लीकेज को कहीं भी कम नहीं करती और 50% लोकेल लीकेज जोड़ती है, क्योंकि प्रति-लोकेल बैकएंड अभी भी संपूर्णtranslationनेमस्पेस को खींचता है। एडेप्टर मूल कोड से 0% / 0% तक पहुंचता है। - घटक: 8 गुना छोटे। अलगाव में संकलित एक
useTranslation()घटक इनलाइनresourcesके साथ औसत 78.5 KB और बैकएंड के साथ 26-27 KB होता है, क्योंकिtग्लोबल स्टोर से बंधा होता है। एडेप्टर के साथ यह औसतन 9.7 KB हो जाता है। - तेज़ हाइड्रेशन और भाषा बदलना। हाइड्रेशन 15.6 ms से घटकर 11.3 ms हो जाता है (और
dynamicसेटअप में 27.7 ms से, जहाँ बैकएंड फ़ेच महत्वपूर्ण पथ पर स्थित होता है)। लोकेल बदलना 15-16 ms से घटकर 11-12 ms हो जाता है। - एडेप्टर मूल रनटाइम नहीं है।
next-intlayerबेस ऐप से केवल +0.3 KB अधिक यानी 141.3 KB पर पहुंचता है। एडेप्टर Intlayer के कोर के ऊपरi18nextAPI सतह (इंटरपोलेशन, बहुवचन और संदर्भ प्रत्यय समाधान,<Trans>टैग पार्सिंग) रखता है: 9.4 KB और मूल की तुलना में प्रति पेज +9.4 KB। यह एक पुल है, अंतिम गंतव्य नहीं।
पूरी तालिका, प्रत्येक लाइब्रेरी और रणनीति, Next.js बेंचमार्क रिपोर्ट में।
TanStack Start पर परिणाम (react-i18next)
Vite और TanStack Start के लिए, बेंचमार्क साधारण react-i18next की तुलना intlayer से करता है:
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| लाइब्रेरी | रणनीति | लाइब्रेरी आकार (gz) | पेज JS औसत (gz) | लोकेल लीकेज | पेज लीकेज | घटक औसत (gz) | E2E प्रतिक्रियाशीलता | हाइड्रेशन |
|---|---|---|---|---|---|---|---|---|
| base (बिना i18n) | - | 0.0 KB | 111.0 KB | 0.0% | 0.0% | 0.7 KB | 8.1 ms | 21.6 ms |
react-i18next | dynamic | 18.4 KB | 136.4 KB | 23.1% | 89.8% | 24.8 KB | 123.1 ms | 32.9 ms |
intlayer | dynamic | 5.0 KB | 118.6 KB | 0.0% | 0.0% | 6.3 KB | 3.6 ms | 14.1 ms |
पूरी तालिका TanStack Start बेंचमार्क रिपोर्ट में।
Vite / TanStack Start परreact-i18nextएडेप्टर इस परीक्षण का हिस्सा नहीं था। TanStack Start परreact-i18nextबेसलाइन i18next बनाम Intlayer में है: बैकएंड lazy होने पर प्रति पेज 127-184 KB और लोकेल स्विच में 123-185 ms।
संख्याएँ क्यों बदलती हैं

components/ में कुछ भी नहीं बदला, इसलिए लाभ इस बात से आता है कि useTranslation किससे बंधा है।
i18next के साथ, बाइंडिंग ग्लोबल इंस्टेंस होती है। इसमें जो कुछ भी लोड किया गया था (static में सभी लोकेल, dynamic में सक्रिय लोकेल का पूरा नेमस्पेस) वह useTranslation() को कॉल करने वाले प्रत्येक घटक से सुलभ होता है। बंडलर इंस्टेंस में रखी गई सीमा से नीचे कोड को विभाजित नहीं कर सकता है, और रनटाइम यह नहीं जान सकता कि कोई घटक किन कुंजियों की मांग करेगा।
कोड को क्लिपबोर्ड पर कॉपी करें
इंस्टेंस में जो कुछ भी होता है वह हर पेज पर भेजा जाता है, और अपव्यय दो अक्षों, पेज और लोकेल पर बढ़ता है:

@intlayer/next-i18next के साथ, बाइंडिंग सीधे शब्दकोश होती है। syncJSON प्रत्येक नेमस्पेस फ़ाइल को एक शब्दकोश में बदल देता है; अनुकूलन पास घटक को वह शब्दकोश सौंपता है जिसे वह निर्दिष्ट करता है, एक ऐसे आयात के रूप में जिसे बंडलर ट्रैक कर सकता है और प्रति पेज और प्रति लोकेल विभाजित कर सकता है।
कोड को क्लिपबोर्ड पर कॉपी करें
i18n/i18n.ts और इसका resources आयात बेकार कोड बन जाते हैं। यही 68 KB की बचत है।
तीन चरणों में माइग्रेशन
इंस्टॉल करें
bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
कमांड
i18next/react-i18next/next-i18nextका पता लगाता है,intlayer, फ्रेमवर्क पैकेज (next-intlayerयाreact-intlayer), मेल खाने वाला@intlayer/*एडेप्टर और@intlayer/sync-json-pluginस्थापित करता है, औरintlayer.config.tsको प्री-फ़िल करता है। मूल पैकेजों को स्थापित रखें: वे पीयर निर्भरता के रूप में कार्य करते हैं और प्रकार प्रदान करते हैं।Intlayer को अपनी लोकेल फ़ाइलों पर निर्देशित करें
intlayer.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
यदि आपके पास प्रति लोकेल केवल एक
translation.jsonहै (i18next का डिफ़ॉल्ट नेमस्पेस), तोsplitKeys: falseसेट करें ताकि पूरी फ़ाइल एक शब्दकोश बनी रहे और सामान्यuseTranslation()काम करता रहे।प्लगइन जोड़ें
next.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
App Router पर, क्लाइंट घटक
[locale]सेगमेंट से अपना लोकेल प्राप्त करते हैं। एडेप्टर काI18nextProviderकोई लोकेल नहीं लेता है, इसलिए इसे अपनी प्रोवाइडर फ़ाइल में एक बार बदलें:components/AppProviders.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
इसके नीचे का प्रत्येक घटक अभी भी सामान्य रूप से
useTranslation()को कॉल करता है।vite.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
reactI18nextVitePlugin()vite-intlayerको लपेटता है औरreact-i18nextतथाi18nextको उपनाम देता है। गैर-React प्रोजेक्ट के लिए,@intlayer/i18next/pluginसेi18nextVitePlugin()अकेलेi18nextको उपनाम देता है।
इसके बाद आप क्या हटा सकते हैं
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| फ़ाइल / पैटर्न | क्यों |
|---|---|
resources: { en, fr, ... } और JSON आयात | एडेप्टर द्वारा अनदेखा किया गया। यहीं पर 68 KB की बचत थी |
i18next-http-backend, i18next-resources-to-backend | रनटाइम पर लाने के लिए कुछ नहीं बचा |
i18next-browser-languagedetector | लोकेल का पता लगाना Intlayer के रूटिंग कॉन्फ़िगरेशन द्वारा किया जाता है |
getStaticProps में serverSideTranslations() | एक खाली संरचना लौटाता है; रखना हानिरहित, हटाना सुरक्षित |
next-i18next.config.js | पढ़ा नहीं जाता। लोकेल intlayer.config.ts में रहते हैं |
प्रति-पेज ns: [...] सूचियाँ | कंपाइलर प्रति घटक नेमस्पेस चुनता है |
बाइट्स से परे आपको क्या लाभ मिलते हैं
- टाइप की गई कुंजियाँ।
useTranslation("about")को संकलितaboutशब्दकोश के विरुद्ध टाइप किया गया है;t("does.not.exist")एक स्ट्रिंग लौटाने के बजाय एक TypeScript त्रुटि देता है। npx intlayer testकिसी भी लोकेल में गायब कुंजी पर CI को रोक देता है।npx intlayer fillआपकी अपनी प्रदाता कुंजी (OpenAI, Anthropic, Mistral, Gemini...) के साथ गायब कुंजियों का अनुवाद करता है और उन्हेंlocales/{lng}/{ns}.jsonमें वापस लिखता है।- विजुअल एडिटर और CMS उसी JSON पर काम करते हैं, इसलिए अनुवादक UI के माध्यम से संपादन करते हैं और फ़ाइलें Git में अपडेट हो जाती हैं।
.content.tsमें क्रमिक स्थानांतरण। कोई भी घटक एक समर्पित सामग्री फ़ाइल के साथuseTranslation("about")सेuseIntlayer("about")पर स्विच कर सकता है। JSON और.content.tsशब्दकोश एक साथ शांतिपूर्वक काम करते हैं।
शुरू करने से पहले जानने योग्य सीमाएँ
i18n.use(HttpBackend) केवल प्लगइन के init को कॉल करता है और कुछ नहीं। यदि आपका ऐप रनटाइम पर CMS से अनुवाद लाने पर निर्भर था, तो वह प्रवाह चला गया है; इसके बजाय Intlayer CMS या intlayer pull / push कमांड का उपयोग करें। भाषा पहचान Intlayer का रूटिंग कॉन्फ़िगरेशन बन जाती है (URL उपसर्ग, कुकी, हेडर)।
कुछ अन्य एडाप्टरों के विपरीत, @intlayer/i18next इनलाइन resources को फ़ॉलबैक के रूप में उपयोग नहीं करता है। प्रत्येक कुंजी सिंक्रनाइज़ किए गए शब्दकोशों में मौजूद होनी चाहिए, जिसे intlayer test सत्यापित करता है।
केवल एक फ़ाइल, ऊपर दिखाई गई है। appWithTranslation के साथ Pages Router को किसी भी बदलाव की आवश्यकता नहीं है।
localePath, fallbackLng, reloadOnPrerender और समकक्षों का कोई विकल्प नहीं है; भाषाएँ और फ़ॉलबैक intlayer.config.ts से आते हैं।
next-intlayer की तुलना में 9.4 KB का रनटाइम और प्रति पेज +9.4 KB। एक बार जब प्रत्येक घटक useIntlayer पर चला जाए, तो इसे हटा दें।
फीचर तुलना
बाइट्स से आगे, हर विकल्प आपको क्या देता है:
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| फीचर | i18next / react-i18next / next-i18next | @intlayer/* एडेप्टर | नेटिव Intlayer |
|---|---|---|---|
आपकी t(), useTranslation, <Trans> कॉल्स | ✅ | ✅ अपरिवर्तित | ❌ useIntlayer में स्थानांतरित |
| रनटाइम आकार (gzip, Next.js) | 19.7 KB | 9.4 KB | 5.5 KB |
| मैनुअल namespaces के बिना अन्य-पेज लीकेज | ~90% | 0% | 0% |
| टाइप्ड कुंजियाँ | ⚠️ मैनुअल घोषणा | ✅ कंपाइल की गई डिक्शनरी से | ✅ स्वतः जनरेट |
| रनटाइम बैकएंड और प्लगइन्स | ✅ पूर्ण प्लगइन इकोसिस्टम | ❌ निष्क्रिय | ❌ लागू नहीं, CMS का उपयोग करें |
| कंपोनेंट्स के साथ रखा गया कंटेंट | ❌ केंद्रीकृत JSON | ⚠️ JSON, .content.ts साथ रह सकता है | ✅ हर कंपोनेंट के बगल में .content.ts |
| CI में छूटे अनुवाद | ⚠️ बिल्ट-इन नहीं | ✅ npx intlayer test | ✅ npx intlayer test |
| AI अनुवाद | ❌ नहीं | ✅ npx intlayer fill | ✅ npx intlayer fill |
| विज़ुअल एडिटर / CMS | ❌ बाहरी प्लेटफ़ॉर्म के माध्यम से | ✅ उसी JSON पर | ✅ हाँ |
| इकोसिस्टम / समुदाय | ✅ बहुत बड़ा | ⚠️ छोटा, तेज़ी से बढ़ रहा | ⚠️ छोटा, तेज़ी से बढ़ रहा |
रनटाइम आकार ऊपर वर्णित Next.js रन से लिए गए हैं।
कब किसका उपयोग करें?
यदि आपका ऐप रनटाइम बैकएंड (अनुरोध के समय CMS द्वारा दिए गए अनुवाद), प्लगइन पारिस्थितिकी तंत्र, या गैर-React लक्ष्य पर निर्भर करता है जिसे एडाप्टर कवर नहीं करते हैं।
आप react-i18next / next-i18next पर हैं और बिना दोबारा लिखे 68 KB की बचत, 8 गुना छोटे घटक, 0% लीकेज, टाइप की गई कुंजियाँ और CI जांच चाहते हैं। यह मौजूदा i18next कोडबेस के लिए प्रवेश बिंदु है।
नई परियोजनाओं के लिए, या एक बार जब एडाप्टर अपना काम कर ले। इसमें सबसे हल्का रनटाइम (5.5 KB, प्रति पेज +0.3 KB) है और यह समकालिक Server Components और प्रति-घटक .content.ts फ़ाइलों को अनलॉक करता है। Next.js के साथ Intlayer या Vite और React के साथ से शुरुआत करें।
अक्सर पूछे जाने वाले प्रश्न
resources: { en, fr, ... } से। सामान्य next-i18next सेटअप प्रत्येक भाषा के JSON को init() में आयात करता है, इसलिए प्रत्येक पृष्ठ हर भाषा में प्रत्येक नेमस्पेस को ले जाता है: प्रति पृष्ठ 218.5 KB। एडाप्टर उस ब्लॉक को कभी बंडल नहीं करता है; यह प्रत्येक घटक को केवल वही शब्दकोश सौंपता है जिसे वह सक्रिय भाषा में नाम देता है।
हाँ, components, क्रमांकित <1>...</1> टैग और values के साथ। इसी तरह {{interpolation}}, $t(key) नेस्टिंग, key_one / key_other बहुवचन (Intl.PluralRules के साथ मूल्यांकित), संदर्भ प्रत्यय और returnObjects भी काम करते हैं।
syncJSON प्लगइन में splitKeys: false सेट करें। पूरी फ़ाइल एक शब्दकोश बनी रहती है और एक साधारण useTranslation() इसके विरुद्ध हल करना जारी रखता है।
नहीं, यह एक सेतु है। एडाप्टर i18next API को बनाए रखता है और इसमें 9.4 KB का रनटाइम लगता है; नेटिव next-intlayer की लागत 5.5 KB है और यह समकालिक Server Components और सह-स्थित .content.ts फ़ाइलें जोड़ता है। आप घटक दर घटक स्थानांतरित कर सकते हैं, क्योंकि JSON और .content.ts शब्दकोश सह-अस्तित्व में रहते हैं।
हाँ। locales/{lng}/{ns}.json सत्य का स्रोत बना रहता है: syncJSON इसे i18next बोली के साथ पढ़ता है और जब CLI या CMS उन्हें अपडेट करता है तो अनुवाद वापस लिखता है।
संबंधित तुलनाएं
समान एडाप्टर श्रृंखला:
लाइब्रेरी की आमने-सामने तुलना:
संदर्भ दस्तावेज़:
Compat adapters:
Migration guides:
ये लाइब्रेरी कहाँ से आईं, यह समझने के लिए JavaScript i18n का इतिहास पढ़ें।
निष्कर्ष
i18next इस बेंचमार्क में सबसे भारी रनटाइम है, और एडेप्टर आपको इसके API को छोड़ने के लिए कहे बिना इसके अधिकांश भार को हटा देते हैं। उसी Next.js ऐप पर जो प्राथमिक सेटअप की तुलना में प्रति पेज 68 KB कम, हाथ से अनुकूलित सर्वोत्तम सेटअप से 12.7 KB कम, 8 गुना छोटे घटक, 0% लीकेज और 4 ms तेज़ हाइड्रेशन प्रदान करता है, वह भी केवल एक कॉन्फ़िग फ़ाइल, एक प्लगइन लाइन और एक प्रोवाइडर संपादन के साथ।
सभी परीक्षण डेटा, ऐप और स्क्रिप्ट Benchmark Bloom रिपॉजिटरी में उपलब्ध हैं।
अधिक जानकारी के लिए Intlayer क्यों? दस्तावेज़ देखें।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। अपने विचार साझा करने वाले पहले व्यक्ति बनें।
