अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
संस्करण इतिहास
- "रूट के head फ़ंक्शन में मेटाडेटा डिक्शनरी के स्टैटिक, डायनामिक और कैश्ड डायनामिक रिज़ॉल्यूशन की तुलना"v9.4.025/8/2026
- "सॉलिड useIntlayer API उपयोग को सीधे प्रॉपर्टी एक्सेस में अपडेट करें"v8.9.04/5/2026
- "init कमांड जोड़ें"v7.5.930/12/2025
- "validatePrefix पेश करें और चरण 14 जोड़ें: स्थानीयकृत रूट्स के साथ 404 पेज हैंडल करना।"v7.4.011/12/2025
- "चरण 13 जोड़ें: अपने सर्वर एक्शन्स में लोकेल प्राप्त करें (वैकल्पिक)"v7.3.95/12/2025
- "चरण 13 जोड़ें: Nitro को अनुकूलित करें"v7.2.318/11/2025
- "getPrefix फ़ंक्शन जोड़कर उपसर्ग डिफ़ॉल्ट को ठीक करें useLocalizedNavigate, LocaleSwitcher और LocalizedLink का उपयोग करें।"v7.1.017/11/2025
- "दस्तावेज़ अपडेट करें"v6.5.23/10/2025
- "TanStack Start के लिए जोड़ा गया"v5.8.19/9/2025
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंअगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।
दस्तावेज़ के लिए GitHub लिंकदस्तावेज़ का Markdown को क्लिपबोर्ड पर कॉपी करें
Intlayer का उपयोग करके अपनी TanStack Start वेबसाइट का अनुवाद करें | अंतर्राष्ट्रीयकरण (i18n)
विषय-सूची
यह गाइड दिखाता है कि लोकेल-जागरूक रूटिंग, TypeScript समर्थन और आधुनिक विकास प्रथाओं के साथ TanStack Start प्रोजेक्ट्स में निर्बाध अंतर्राष्ट्रीयकरण के लिए Intlayer को कैसे एकीकृत किया जाए।
विकल्पों पर इन्टलेयर क्यों?
react-i18next या use-intl, या paraglide जैसे मुख्य समाधानों की तुलना में, Intlayer एक समाधान है जो एकीकृत अनुकूलन के साथ आता है जैसे:
पूर्ण टैनस्टैक प्रारंभ कवरेज
इंटलेयर टैनस्टैक स्टार्ट के लिए पूरी तरह से अनुकूलित है, जो बहुभाषी रूटिंग, कुकी प्रबंधन, साइटमैप जेनरेशन, डायनामिक कंटेंट लोडिंग और आपके अंतर्राष्ट्रीयकरण (i18n) प्रयासों को बढ़ाने के लिए आवश्यक सभी सुविधाएँ प्रदान करता है।
बंडल का आकार
अपने पृष्ठों में विशाल JSON फ़ाइलें लोड करने के बजाय, केवल आवश्यक सामग्री लोड करें। इंटलेयर आपके बंडल और पृष्ठ आकार को 50% तक कम करने में मदद करता है।
रखरखाव
आपके एप्लिकेशन की सामग्री का दायरा बड़े पैमाने के अनुप्रयोगों के लिए रखरखाव की सुविधा प्रदान करता है। आप अपने संपूर्ण सामग्री कोडबेस की समीक्षा करने के मानसिक बोझ के बिना किसी एक फीचर फ़ोल्डर की नकल कर सकते हैं या उसे हटा सकते हैं। इसके अतिरिक्त, आपकी सामग्री की सटीकता सुनिश्चित करने के लिए Intlayer पूरी तरह से टाइप किया गया है।
एआई एजेंट
सामग्री का सह-स्थानीकरण बड़े भाषा मॉडल (एलएलएम) द्वारा आवश्यक संदर्भ को कम करता है। इंटलेयर टूल के एक सूट के साथ भी आता है, जैसे CLI ताकि लापता अनुवादों का परीक्षण किया जा सके,LSP, MCP, और agent skills, AI एजेंटों के लिए डेवलपर अनुभव (DX) को और भी आसान बनाने के लिए।
स्वचालन
अपने एआई प्रदाता की कीमत पर अपनी पसंद के एलएलएम का उपयोग करके अपने सीआई/सीडी पाइपलाइन में अनुवाद करने के लिए स्वचालन का उपयोग करें। इंटलेयर सामग्री निष्कर्षण को स्वचालित करने के लिए एक कंपाइलर के साथ-साथ पृष्ठभूमि में अनुवाद में मदद करने के लिए एक वेब प्लेटफ़ॉर्म भी प्रदान करता है।
प्रदर्शन
बड़े पैमाने पर JSON फ़ाइलों को घटकों से जोड़ने से प्रदर्शन और प्रतिक्रियाशीलता संबंधी समस्याएं हो सकती हैं। इंटलेयर बिल्ड समय पर आपकी सामग्री लोडिंग को अनुकूलित करता है।
किसी भी देव के साथ स्केलिंग
सिर्फ एक i18n समाधान से अधिक, Intlayer एक स्व-होस्टेड विज़ुअल एडिटर और एक [पूर्ण] प्रदान करता है सीएमएस](/hi/doc/concept/cms) आपकी बहुभाषी सामग्री को वास्तविक समय में प्रबंधित करने में मदद करता है, जिससे अनुवादकों, कॉपीराइटरों और टीम के अन्य सदस्यों के साथ सहयोग सहज हो जाता है। सामग्री को स्थानीय और/या दूरस्थ रूप से संग्रहीत किया जा सकता है।
TanStack Start एप्लिकेशन में Intlayer सेट अप करने के लिए चरण-दर-चरण मार्गदर्शिका
GitHub पर एप्लिकेशन टेम्पलेट देखें।
प्रोजेक्ट बनाएं
TanStack Start वेबसाइट पर नया प्रोजेक्ट शुरू करें गाइड का पालन करके एक नया TanStack Start प्रोजेक्ट बनाना शुरू करें।
Intlayer पैकेज इंस्टॉल करें
अपने पसंदीदा पैकेज मैनेजर का उपयोग करके आवश्यक पैकेज इंस्टॉल करें:
कोड को क्लिपबोर्ड पर कॉपी करें
--interactiveध्वज (flag) वैकल्पिक है। यदि आप एक AI एजेंट हैं तोintlayer-cli initका उपयोग करें।
यह कमांड आपके एनवायरनमेंट को डिटेक्ट करेगी और आवश्यक पैकेज इंस्टॉल करेगी। उदाहरण के लिए:
कोड को क्लिपबोर्ड पर कॉपी करें
intlayer
कोर पैकेज जो कॉन्फ़िगरेशन प्रबंधन, अनुवाद, सामग्री घोषणा, ट्रांसपाइलेशन और CLI कमांड के लिए अंतर्राष्ट्रीयकरण उपकरण प्रदान करता है।
react-intlayer वह पैकेज जो Intlayer को React एप्लिकेशन के साथ एकीकृत करता है। यह React अंतर्राष्ट्रीयकरण के लिए संदर्भ प्रदाता और हुक प्रदान करता है।
vite-intlayer इसमें Intlayer को Vite बंडलर के साथ एकीकृत करने के लिए Vite प्लगइन, साथ ही उपयोगकर्ता की पसंदीदा लोकेल का पता लगाने, कुकीज़ प्रबंधित करने और URL पुनर्निर्देशन को संभालने के लिए मिडलवेयर शामिल है।
अपने प्रोजेक्ट का कॉन्फ़िगरेशन
अपनी एप्लिकेशन की भाषाओं को कॉन्फ़िगर करने के लिए एक कॉन्फ़िग फ़ाइल बनाएं:
कोड को क्लिपबोर्ड पर कॉपी करें
इस कॉन्फ़िगरेशन फ़ाइल के माध्यम से, आप स्थानीयकृत URL, मिडलवेयर पुनर्निर्देशन, कुकी नाम, अपनी सामग्री घोषणाओं का स्थान और विस्तार सेट कर सकते हैं, कंसोल में Intlayer लॉग को अक्षम कर सकते हैं, और बहुत कुछ। उपलब्ध पैरामीटर की पूरी सूची के लिए, कॉन्फ़िगरेशन दस्तावेज़ देखें।
अपने Vite कॉन्फ़िगरेशन में Intlayer को एकीकृत करें
अपने कॉन्फ़िगरेशन में intlayer प्लगइन जोड़ें:
कोड को क्लिपबोर्ड पर कॉपी करें
intlayer() Vite प्लगइन का उपयोग Intlayer को Vite के साथ एकीकृत करने के लिए किया जाता है। यह सामग्री घोषणा फ़ाइलों के निर्माण को सुनिश्चित करता है और विकास मोड में उनकी निगरानी करता है। यह Vite एप्लिकेशन के भीतर Intlayer पर्यावरण चर को परिभाषित करता है। इसके अतिरिक्त, यह प्रदर्शन को अनुकूलित करने के लिए उपनाम प्रदान करता है।
रूट लेआउट बनाएं
वर्तमान लोकेल का पता लगाने के लिए useParams का उपयोग करके और html टैग पर lang और dir विशेषताओं को सेट करके अंतर्राष्ट्रीयकरण का समर्थन करने के लिए अपने रूट लेआउट को कॉन्फ़िगर करें।
कोड को क्लिपबोर्ड पर कॉपी करें
लोकेल लेआउट बनाएं
एक लेआउट बनाएं जो लोकेल उपसर्ग को संभालता है और सत्यापन करता है।
कोड को क्लिपबोर्ड पर कॉपी करें
यहाँ,{-$locale}एक गतिशील रूट पैरामीटर है जो वर्तमान लोकेल से बदल दिया जाता है। यह नोटेशन स्लॉट को वैकल्पिक बनाता है, जिससे यह'prefix-no-default'आदि जैसे रूटिंग मोड के साथ काम करने की अनुमति देता है।
ध्यान रखें कि यदि आप एक ही रूट में कई गतिशील खंडों का उपयोग करते हैं (जैसे,
/{-$locale}/other-path/$anotherDynamicPath/...), तो यह स्लॉट समस्याएँ पैदा कर सकता है।'prefix-all'मोड के लिए, आप इसके बजाय स्लॉट को$localeमें बदलना पसंद कर सकते हैं।'no-prefix'या'search-params'मोड के लिए, आप स्लॉट को पूरी तरह से हटा सकते हैं।
अपनी सामग्री घोषित करें
अनुवादों को संग्रहीत करने के लिए अपनी सामग्री घोषणाएं बनाएं और प्रबंधित करें:
कोड को क्लिपबोर्ड पर कॉपी करें
आपकी सामग्री घोषणाएं आपके एप्लिकेशन में कहीं भी परिभाषित की जा सकती हैं जैसे ही वेcontentDirनिर्देशिका (डिफ़ॉल्ट रूप से,./app) में शामिल होती हैं। और सामग्री घोषणा फ़ाइल विस्तार (डिफ़ॉल्ट रूप से,.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml}) से मेल खाती हैं।
अधिक विवरण के लिए, सामग्री घोषणा दस्तावेज़ देखें।
लोकेल-जागरूक घटक और हुक बनाएं
लोकेल-जागरूक नेविगेशन के लिए एक LocalizedLink घटक बनाएं:
कोड को क्लिपबोर्ड पर कॉपी करें
इस घटक के दो उद्देश्य हैं:
- URL से अनावश्यक
{-$locale}उपसर्ग को हटाना। - URL में लोकेल पैरामीटर इंजेक्ट करना ताकि यह सुनिश्चित हो सके कि उपयोगकर्ता सीधे स्थानीयकृत रूट पर निर्देशित हो।
फिर हम प्रोग्रामेटिक नेविगेशन के लिए एक useLocalizedNavigate हुक बना सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
अपने पृष्ठों में Intlayer का उपयोग करें
कंपोनेंट के भीतर डिफ़ॉल्ट रूप सेuseIntlayerका उपयोग करें: यह कंटेंट पढ़ने का अनुशंसित तरीका है, और कंपाइलर इसे रेंडर हो रहे लोकेल पर हल कर देता है।getIntlayer/getIntlayerAsyncका उपयोग केवल React ट्री के बाहर करें: रूट केhead, लोडर और सर्वर फ़ंक्शन में।
अपने एप्लिकेशन में अपने सामग्री शब्दकोशों तक पहुंचें:
स्थानीयकृत होम पेज
कोड को क्लिपबोर्ड पर कॉपी करें
यदि आप अपने कंटेंट को
stringattribute में उपयोग करना चाहते हैं, जैसेalt,title,href,aria-label, आदि, तो आप फ़ंक्शन का मान उपयोग कर सकते हैं:htmlकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
useIntlayer hook के बारे में अधिक जानने के लिए, दस्तावेज़ देखें।
एक लोकेल स्विचर कंपोनेंट बनाएं
उपयोगकर्ताओं को भाषा बदलने की अनुमति देने के लिए एक कंपोनेंट बनाएं:
कोड को क्लिपबोर्ड पर कॉपी करें
useLocale hook के बारे में अधिक जानने के लिए, दस्तावेज़ देखें।
HTML विशेषताएं प्रबंधन
जैसा कि स्टेप 5 में देखा गया है, आप अपने रूट कंपोनेंट में useParams का उपयोग करके html टैग की lang और dir विशेषताओं को प्रबंधित कर सकते हैं। यह सुनिश्चित करता है कि सही विशेषताएं सर्वर और क्लाइंट दोनों पर सेट हों।
कोड को क्लिपबोर्ड पर कॉपी करें
मिडलवेयर जोड़ें
आप अपने एप्लिकेशन में सर्वर-साइड रूटिंग जोड़ने के लिए intlayerProxy का भी उपयोग कर सकते हैं। यह plugin स्वचालित रूप से URL के आधार पर वर्तमान लोकेल का पता लगाएगा और उपयुक्त लोकेल कुकी सेट करेगा। यदि कोई लोकेल निर्दिष्ट नहीं है, तो plugin उपयोगकर्ता की ब्राउज़र भाषा वरीयताओं के आधार पर सबसे उपयुक्त लोकेल निर्धारित करेगा। यदि कोई लोकेल नहीं मिलता है, तो यह डिफ़ॉल्ट लोकेल पर रीडायरेक्ट करेगा।
ध्यान दें कि production मेंintlayerProxyका उपयोग करने के लिए, आपकोvite-intlayerpackage कोdevDependenciesसेdependenciesमें स्विच करना होगा।
Intlayer v9 के बाद से,intlayerProxy()को सीधेintlayer()plugin में bundled किया गया है औरrouting.enableProxyविकल्प (trueby default) के माध्यम से डिफ़ॉल्ट रूप से सक्षम है। नीचे दिखाए गए अनुसार इसे अलग से पंजीकृत करना अब वैकल्पिक है: यह backward compatibility के लिए रखा गया है और उन सेटअप के लिए जिन्हें plugin order को नियंत्रित करने की आवश्यकता है। opt out करने के लिएrouting.enableProxy: falseसेट करें। v9 release notes देखें।
कोड को क्लिपबोर्ड पर कॉपी करें
अपने मेटाडेटा को अंतर्राष्ट्रीयकृत करें
getIntlayer merged dictionary के विरुद्ध synchronously resolve करता है, वह जो प्रत्येक घोषित लोकेल को रखता है। head synchronous रहता है और कुछ भी await नहीं किया जाता है, लेकिन संपूर्ण बहुभाषी dictionary ब्राउज़र को भेजे गए route chunk में pull की जाती है।
कोड को क्लिपबोर्ड पर कॉपी करें
छोटे मेटाडेटा dictionaries, कुछ लोकेल के लिए, या prototyping के दौरान सर्वोत्तम है।
getIntlayerAsync (v9.4 से उपलब्ध) getIntlayer की तरह व्यवहार करता है, लेकिन build plugin इसे merged dictionary के बजाय .intlayer/dynamic_dictionaries/ में per-locale chunk की ओर इंगित करता है। एक पृष्ठ इसलिए केवल उस लोकेल को जहाज करता है जिसे यह render करता है। चूंकि वह chunk on demand लोड होता है, head async बन जाता है:
कोड को क्लिपबोर्ड पर कॉपी करें
यदि एकheadकई dictionaries को पढ़ता है, तो उन्हेंPromise.allके साथ resolve करें: प्रत्येकgetIntlayerAsyncको अपनी line पर await करने से requests को chain किया जाता है न कि समानांतर में चलाया जाता है।
trade-off: गतिशील import को head चलते समय resolve किया जाता है, document render के critical path पर। एक cold route पर यह head को कुछ मिलीसेकंड से देरी करता है और LCP को थोड़ा degrade कर सकता है।
route loader में dictionary को resolve करें और head में loaderData से इसे वापस पढ़ें। matched routes के loaders समानांतर में चलते हैं, और staleTime: Infinity TanStack Router को बताता है कि परिणाम कभी भी stale नहीं होते हैं, इसलिए per-locale chunk एक बार resolve होता है और router cache से बाद में served होता है, head को synchronous छोड़ता है।
कोड को क्लिपबोर्ड पर कॉपी करें
headको loader settle होने से पहले call किया जा सकता है, इसलिएloaderDataको संभवतःundefinedके रूप में typed किया जाता है। optional chaining रखें, या एक fallback title return करें।
आप head critical path पर इसकी cost दिए बिना per-locale chunk रखते हैं। कीमत developer experience है: content को explicitly loader से head में loaderData के माध्यम से threaded होना पड़ता है।
किस resolution को चुनना चाहिए?
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| Static resolution | Dynamic resolution | Cached dynamic resolution | |
|---|---|---|---|
| API | getIntlayer | getIntlayerAsync (v9.4+) | getIntlayerAsync in loader (v9.4+) |
head signature | synchronous | async | synchronous, reads loaderData |
| Locales shipped | every declared locale | requested locale only | requested locale only |
| Client navigations | nothing to resolve | re-entered on every match | served from the router cache |
| Developer experience | simplest | one await | content threaded through loaderData |
अपने server actions में locale को प्राप्त करें
आप अपने server actions या API endpoints के अंदर से current locale को access करना चाह सकते हैं।
आप इसे intlayer से getLocale helper का उपयोग करके कर सकते हैं।
यहाँ TanStack Start के server functions का उपयोग करके एक उदाहरण दिया गया है:
कोड को क्लिपबोर्ड पर कॉपी करें
Not found pages को manage करें
जब कोई user एक non-existing page पर जाता है, तो आप एक custom not found page display कर सकते हैं और locale prefix इस बात को प्रभावित कर सकता है कि not found page कैसे triggered होता है।
स्थानीयकृत होम पेज
अगर आप अपनी content को
stringattribute में use करना चाहते हैं, जैसेalt,title,href,aria-label, आदि, तो आप function के value को इस तरह use कर सकते हैं:htmlकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
useIntlayer हुक के बारे में अधिक जानने के लिए, दस्तावेज़ीकरण देखें।
कोड को क्लिपबोर्ड पर कॉपी करें
useLocale हुक के बारे में अधिक जानने के लिए, दस्तावेज़ीकरण देखें।
</Step>
HTML विशेषताओं का प्रबंधन
return ( {/* ... _/} ); } {/_ ... */} </html> ); }
export const Route = createFileRoute("/{-$locale}/")({ component: RouteComponent, head: async ({ params }) => { const { locale = defaultLocale } = params; const path = "/"; // The path for this route
कोड को क्लिपबोर्ड पर कॉपी करें
कोड को क्लिपबोर्ड पर कॉपी करें
कोड को क्लिपबोर्ड पर कॉपी करें
कोड को क्लिपबोर्ड पर कॉपी करें
अपने घटकों की सामग्री निकालें
वैकल्पिकयदि आपके पास मौजूदा कोडबेस है, तो हजारों फ़ाइलों को बदलना समय लेने वाला हो सकता है।
इस प्रक्रिया को आसान बनाने के लिए, Intlayer आपके घटकों को बदलने और सामग्री निकालने के लिए एक कंपाइलर / एक्सट्रैक्टर का प्रस्ताव करता है।
इसे सेट करने के लिए, आप अपनी intlayer.config.ts फ़ाइल में एक compiler अनुभाग जोड़ सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
import { type IntlayerConfig } from "intlayer";
/**
* आउटपुट फ़ाइलों का पथ परिभाषित करता है
*/
output: ({ fileName, extension }) => `./${fileName}${extension}`,
/**
* शब्दकोश कुंजी उपसर्ग
*/
dictionaryKeyPrefix: "",
},
};
export default config;
अपने घटकों को बदलने और सामग्री निकालने के लिए एक्सट्रैक्टर चलाएँ
कोड को क्लिपबोर्ड पर कॉपी करें
bun x intlayer extract import { defineConfig } from "vite"; import { intlayer } from "vite-intlayer";
export default defineConfig({ plugins: [
कोड को क्लिपबोर्ड पर कॉपी करें
], });
कोड को क्लिपबोर्ड पर कॉपी करें
bash packageManager="npm" npm run build # या npm run dev
कोड को क्लिपबोर्ड पर कॉपी करें
bash packageManager="pnpm" pnpm run build # Or pnpm run dev
कोड को क्लिपबोर्ड पर कॉपी करें
bash packageManager="yarn" yarn build # Or yarn dev
कोड को क्लिपबोर्ड पर कॉपी करें
bash packageManager="bun"
Please provide:
- The English source content (base block to reference)
- The current Hindi translation (to be audited)
Once you share these blocks, I will:
- Compare them thoroughly
- Insert any missing content
- Correct spelling, grammar, and Markdown syntax errors
- Ensure code blocks are properly formatted with translated comments
- Update documentation links to the Hindi locale (
/hi/instead of/en/) - Return the fully updated Hindi content
Please paste the content between the and markers for both blocks.---
bun run build # Or bun run dev import { localeFlatMap } from "intlayer"; // ... अन्य imports
कोड को क्लिपबोर्ड पर कॉपी करें
`typescript fileName="src/routes/sitemap[.]xml.ts"
export const Route = createFileRoute("/sitemap.xml")({ server: {
कोड को क्लिपबोर्ड पर कॉपी करें
}, }); { // ... आपकी मौजूदा कॉन्फ़िगरेशन include: [
कोड को क्लिपबोर्ड पर कॉपी करें
], }
Git कॉन्फ़िगरेशन
Intlayer द्वारा उत्पन्न फाइलों को अनदेखा करने की अनुशंसा की जाती है। यह आपको उन्हें अपनी Git रिपॉजिटरी में कमिट करने से बचने देता है।
ऐसा करने के लिए, आप अपनी .gitignore फाइल में निम्नलिखित निर्देश जोड़ सकते हैं:
कोड को क्लिपबोर्ड पर कॉपी करें
`
VS Code Extension
Intlayer के साथ अपने development experience को बेहतर बनाने के लिए, आप official Intlayer VS Code Extension को install कर सकते हैं।
VS Code Marketplace से Install करें
यह extension निम्नलिखित प्रदान करता है:
- Autocompletion translation keys के लिए।
- Real-time error detection missing translations के लिए।
- Inline previews translated content का।
- Quick actions आसानी से translations बनाने और update करने के लिए।
Extension के उपयोग के बारे में अधिक विवरण के लिए, Intlayer VS Code Extension documentation देखें।
आगे बढ़ें
आगे बढ़ने के लिए, आप visual editor को लागू कर सकते हैं या CMS का उपयोग करके अपनी सामग्री को बाहरीकृत कर सकते हैं।
