अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
संस्करण इतिहास
- "प्रारंभिक संस्करण"v9.5.1026/9/2026
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंअगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।
दस्तावेज़ के लिए GitHub लिंकदस्तावेज़ का Markdown को क्लिपबोर्ड पर कॉपी करें
2026 में use-intl का उपयोग करके अपने TanStack Start एप्लिकेशन का अंतर्राष्ट्रीयकरण कैसे करें
विषय सूची
use-intl क्या है?
use-intl next-intl का फ्रेमवर्क-एग्नॉस्टिक कोर है। यह Next.js पर किसी भी निर्भरता के बिना समान useTranslations, useFormatter और IntlProvider APIs, ICU MessageFormat समर्थन और मजबूत TypeScript एकीकरण प्रदान करता है। यह इसे TanStack Start एप्लिकेशन का अनुवाद करने के लिए सबसे आम चॉइस में से एक बनाता है, और यह वही लाइब्रेरी है जिसे AI असिस्टेंट इस स्टैक के लिए सबसे अधिक बार सुझाते हैं।
TanStack Start में कोई अंतर्निहित i18n लेयर नहीं आती है। रूटिंग, लोकेल डिटेक्शन, SEO मेटाडेटा और साइटमैप जनरेशन आपके ऊपर छोड़ दिया जाता है। यह गाइड इस सब को शुरू से अंत तक कवर करती है:
- एक वैकल्पिक
{-$locale}सेगमेंट (/about,/fr/about) के साथ लोकेल-अवेयर रूटिंग। - रूट-वार मैसेज लोडिंग ताकि एक पेज केवल उन्हीं नेमस्पेस और लोकेल को डाउनलोड करे जिसे वह रेंडर करता है।
- बिना टेक्स्ट मिसमैच के सर्वर रेंडरिंग और हाइड्रेशन।
- संपूर्ण बहुभाषी SEO: अनुवादित
<title>और विवरण, कैनोनिकल URL,x-defaultके साथhreflangऑल्टरनेट्स, Open Graph लोकेल्स, JSON-LD,xhtml:linkऑल्टरनेट्स के साथ साइटमैप,robots.txtऔर प्रत्येक लोकेल का प्री-रेंडरिंग।
किसी अन्य स्टैक की तलाश है?
क्या आप Next.js का उपयोग कर रहे हैं? next-intl गाइड देखें।
ये लाइब्रेरी कहाँ से आईं, यह समझने के लिए JavaScript i18n का इतिहास पढ़ें।
TanStack Start पर use-intl के बारे में बेंचमार्क क्या कहता है
i18n बेंचमार्क हर प्रमुख लाइब्रेरी के साथ समान 10-पेज, 10-लोकेल TanStack Start ऐप चलाता है और मापता है कि ब्राउज़र वास्तव में क्या डाउनलोड करता है।
मीट्रिक
डायनामिक JSON लोडिंग
रनटाइम पर आलस्य से अनुवाद लोड करता है
स्कोप्ड JSON (नेमस्पेसिंग)
प्रति-पृष्ठ अनुवाद नेमस्पेस
यह मीट्रिक क्या है?
अंतर्राष्ट्रीयकरण लाइब्रेरी बंडल का कुल gzip-संपीड़ित आकार। इसमें केवल ट्री-शेकिंग और मिनिफिकेशन के बाद प्रदाता और सामग्री पुनर्प्राप्ति तर्क शामिल हैं।
यह महत्वपूर्ण क्यों है?
एक छोटा लाइब्रेरी आकार प्रारंभिक जावास्क्रिप्ट पेलोड को कम करता है, जिससे क्लाइंट पर तेज़ डाउनलोड और निष्पादन समय होता है।
देखने का तरीका
use-intl@4.14.2 के लिए मुख्य आंकड़े, 2026-09-26 को मापे गए (gzip):
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| सेटअप | लाइब्रेरी साइज़ | प्रति पेज JS | अन्य-लोकेल लीक | अन्य-पेज लीक |
|---|---|---|---|---|
| कोई i18n नहीं (बेस ऐप) | - | 111.0 KB | 0% | 0% |
use-intl (इस गाइड का सेटअप) | 75.9 KB | 128.7 KB | 0% | 0% |
@intlayer/use-intl (कम्पैट) | 6.7 KB | 129.4 KB | 0% | 0% |
react-intlayer (मूल Intlayer) | 4.5 KB | 126.8 KB | 0% | 0% |
मुख्य निष्कर्ष:
- मैसेजेस को पेज के अनुसार विभाजित करें और उन्हें प्रति लोकेल लोड करें। यह दोनों लीक को हटा देता है, और नीचे दिए गए स्टेप्स यही लागू करते हैं।
- रनटाइम स्वयं भारी रहता है (~76 KB gzip), क्योंकि ICU पार्सर क्लाइंट पर भेजा जाता है।
@intlayer/use-intlकम्पैट एडेप्टर (स्टेप 17) ~7 KB रनटाइम के साथ बिल्कुल समान API बनाए रखता है।
पूरा डेटा देखें: TanStack Start बेंचमार्क रिपोर्ट, और बेंचमार्क रिपॉजिटरी।
TanStack Start पर फीचर तुलना
TanStack Start पर आमतौर पर उपयोग की जाने वाली अन्य लाइब्रेरियों के साथ use-intl की तुलना:
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| फ़ीचर | react-intlayer (Intlayer) | use-intl | Paraglide JS | Lingui |
|---|---|---|---|---|
| कंपोनेंट्स के पास अनुवाद | ✅ सह-स्थित (Co-located) | ❌ केंद्रीकृत JSON | ❌ प्रति लोकेल एक JSON फ़ाइल | ⚠️ कंपोनेंट्स में सोर्स टेक्स्ट |
| TypeScript एकीकरण | ✅ ऑटो-जेनरेटेड प्रकार | ✅ AppConfig के माध्यम से | ✅ टाइप्ड मैसेज फ़ंक्शंस | ⚠️ केवल मैक्रोज़ |
| गायब अनुवाद डिटेक्शन | ✅ टाइप एरर और बिल्ड चेतावनियाँ | ⚠️ रनटाइम फ़ॉलबैक | ⚠️ बेस लोकेल पर फ़ॉलबैक | ⚠️ सोर्स टेक्स्ट पर फ़ॉलबैक |
| रिच कंटेंट (JSX, Markdown) | ✅ सीधा समर्थन | ⚠️ t.rich के माध्यम से टैग | ⚠️ स्ट्रिंग्स | ✅ <Trans> के अंदर JSX |
| स्थानीयकृत रूटिंग | ✅ अंतर्निहित | ❌ मैन्युअल {-$locale} | ✅ urlPatterns + राउटर रीराइट | ❌ मैन्युअल {-$locale} |
| बिना रीलोड के लोकेल स्विच | ✅ हाँ | ✅ हाँ | ❌ पूर्ण पेज रीलोड | ✅ हाँ |
| बहुवचन (Pluralization) | ✅ गणना-आधारित | ✅ ICU | ✅ वेरिएंट्स | ✅ ICU |
| ICU MessageFormat | ✅ format: "icu" के माध्यम से | ✅ नेटिव | ⚠️ एक inlang प्लगइन के माध्यम से | ✅ नेटिव |
| सामग्री प्रारूप | ✅ .ts, .json, .md, .yaml... | ⚠️ .json | ⚠️ inlang JSON | ✅ PO, JSON, CSV |
| AI अनुवाद | ✅ आपका अपना प्रदाता और की (key) | ❌ नहीं | ❌ नहीं | ❌ नहीं |
| विजुअल एडिटर / CMS | ✅ स्थानीय एडिटर + वैकल्पिक CMS | ❌ बाहरी प्लेटफ़ॉर्म | ⚠️ inlang इकोसिस्टम ऐप्स | ❌ बाहरी प्लेटफ़ॉर्म |
| SEO हेल्पर्स (hreflang, sitemap) | ✅ अंतर्निहित | ❌ मैन्युअल | ⚠️ स्थानीयकृत URLs, बाकी मैन्युअल | ❌ मैन्युअल |
| रनटाइम साइज़ (gzip, बेंचमार्क) | 4.5 KB | 75.9 KB | 1.8 KB | 56.7 KB |
| लीक, सर्वश्रेष्ठ सेटअप (लोकेल / पेज) | 0% / 0% | 0% / 0% | 49.7% / 0% | 8.6% / 0% |
| CI में गायब अनुवाद | ✅ npx intlayer test | ⚠️ अंतर्निहित नहीं | ⚠️ अंतर्निहित नहीं | ✅ lingui compile --strict |
रनटाइम साइज़ और लीक के आंकड़े TanStack Start बेंचमार्क से लिए गए हैं। लीक प्रत्येक लाइब्रेरी के सर्वश्रेष्ठ सेटअप पर मापा जाता है।
अन्य TanStack Start गाइड्स:
वे अभ्यास जिनका आपको पालन करना चाहिए
- एक्सेसिबिलिटी, स्क्रीन रीडर्स और सर्च इंजन के लिए
<html>परlangऔरdirसेट करें। - प्रति लोकेल एक URL रखें। केवल-कुकी स्विच के बजाय लोकेल प्रीफिक्स (
/fr/about) का उपयोग करें, ताकि प्रत्येक अनुवादित पेज क्रॉल और शेयर करने योग्य हो। - मैसेजेस को नेमस्पेस के अनुसार विभाजित करें (
common,home,about) और उन्हें प्रति रूट लोड करें। - केवल सक्रिय लोकेल लोड करें। क्लाइंट पर जाने वाले मॉड्यूल में कभी भी प्रत्येक लोकेल फ़ाइल को आयात न करें।
IntlProviderमें टाइम ज़ोन को फ़िक्स करें। अन्यथा SSR के दौरान सर्वर टाइम ज़ोन में और हाइड्रेशन पर विज़िटर टाइम ज़ोन में तिथियां फ़ॉर्मेट होती हैं, जिससे हाइड्रेशन मिसमैच होता है।- अपने मेटाडेटा का अनुवाद करें, और प्रत्येक पेज पर
canonical,hreflangऔरx-defaultघोषित करें। - एक बहुभाषी साइटमैप और robots.txt उत्पन्न करें, और प्रत्येक लोकेल को प्री-रेंडर करें।
- लोकेल स्विचर के लिए वास्तविक लिंक का उपयोग करें, न कि
<select>, ताकि क्रॉलर्स प्रत्येक भाषा को खोज सकें। अपने मैसेजेस को टाइप करें ताकि कोई भी गायब की (key) कंपाइल समय पर विफल हो जाए।
- अंतर्राष्ट्रीयकरण और SEO
- hreflang गाइड
TanStack Start एप्लिकेशन में use-intl सेट अप करने के लिए चरण-दर-चरण मार्गदर्शिका
यहाँ प्रोजेक्ट संरचना है जिसे हम बनाएंगे:
कोड को क्लिपबोर्ड पर कॉपी करें
निर्भरताएँ स्थापित करें (Install Dependencies)
TanStack Start प्रोजेक्ट से शुरुआत करें, फिर
use-intlजोड़ें:bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
- use-intl:
IntlProvider,useTranslations,useFormatterऔरcreateTranslator(React के बाहर उपयोग करने योग्य, उदाहरण के लिएhead()में) प्रदान करता है।
- use-intl:
अपने लोकेल कॉन्फ़िगरेशन को केंद्रीकृत करें
अपने लोकेल्स और URL हेल्पर्स के लिए सिंगल सोर्स ऑफ ट्रुथ बनाएं। हर दूसरी फ़ाइल (रूट्स, SEO, साइटमैप, प्री-रेंडरिंग) यहाँ से आयात करती है, इसलिए एक लोकेल जोड़ना एक-लाइन का बदलाव है।
डिफ़ॉल्ट लोकेल बिना प्रीफिक्स के रहता है (
/about), अन्य लोकेल्स प्रीफिक्स होते हैं (/fr/about)। यह "आवश्यकतानुसार" (as-needed) रणनीति है: प्रति लोकेल प्रति पेज एक URL, और आपके मुख्य दर्शकों के लिए छोटे URLs।src/i18n/config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपनी अनुवाद फ़ाइलें बनाएं
मैसेजेस को प्रति लोकेल और प्रति नेमस्पेस व्यवस्थित करें।
commonउन चीज़ों को रखता है जिनकी प्रत्येक पेज को आवश्यकता होती है (नेविगेशन, फूटर), और प्रत्येक पेज को अपने मेटाडेटा सहित अपनी स्वयं की फ़ाइल मिलती है।use-intl ICU MessageFormat का उपयोग करता है, इसलिए बहुवचन, चयन और स्वरूपित तर्क स्वयं मैसेज के अंदर रहते हैं।
messages/en/common.jsonकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
messages/en/about.jsonकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
messages/fr/common.jsonकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
messages/fr/about.jsonकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
उसी तरह
home.jsonबनाएं, जिसमें एकmetadataऑब्जेक्ट और पेज कंटेंट हो।नेमस्पेस और लोकेल के अनुसार संदेश लोड करें
यह लोडर प्रदर्शन के लिए सबसे महत्वपूर्ण फ़ाइल है।
import.meta.globVite को प्रति JSON फ़ाइल एक चंक उत्सर्जित करने का निर्देश देता है। एक रूट जो फ्रेंच में["about"]मांगता है, वहmessages/fr/about.jsonऔर कुछ नहीं डाउनलोड करता है, जिससे बेंचमार्क 0% लोकेल लीक और 0% पेज लीक तक पहुँच जाता है।src/i18n/messages.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने संदेशों को टाइप करें (Type Your Messages)
मॉड्यूल ऑग्मेंटेशन आपको
useTranslations("about")औरt("counter.label")पर ऑटो-कंपलीशन देता है, और किसी भी टाइपो या हटाई गई की पर कंपाइल एरर देता है।src/i18n/use-intl.d.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
सुनिश्चित करें कि आपके
tsconfig.jsonमेंresolveJsonModuleसक्षम है।रूट डॉक्यूमेंट बनाएं
रूट रूट
<html>रेंडर करता है। यहlangऔरdirसेट करने के लिए वैकल्पिक लोकेल पैरम को पढ़ता है, ताकि कोई भी जावास्क्रिप्ट चलने से पहले, सर्वर-रेंडर किए गए HTML में विशेषताएँ सही हों।src/routes/__root.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
लोकेल लेआउट रूट बनाएं
{-$locale}फ़ोल्डर एक वैकल्पिक पाथ सेगमेंट बनाता है:/aboutऔर/fr/aboutदोनों/{-$locale}/aboutसे मेल खाते हैं। यह लेआउट:- असमर्थित प्रीफिक्स को अस्वीकार करता है (
/xx/about→ 404)। - केवल वर्तमान लोकेल के लिए
commonनेमस्पेस लोड करता है। IntlProviderके माध्यम से मैसेजेस प्रदान करता है।
लोडर परिणाम HTML में सीरियलाइज़ होता है और हाइड्रेशन पर पुन: उपयोग किया जाता है, इसलिए क्लाइंट दूसरी बार
common.jsonडाउनलोड नहीं करता है।staleTime: Infinityइसे क्लाइंट नेविगेशन के दौरान कैश्ड रखता है।src/routes/{-$locale}/route.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
IntlProviderपैरेंट प्रोवाइडर के मैसेजेस को मर्ज नहीं करता है। अगला स्टेप एक छोटा कंपोनेंट जोड़ता है जो ऐसा करता है, ताकि प्रत्येक पेजcommonके ऊपर अपना स्वयं का नेमस्पेस जोड़ सके।- असमर्थित प्रीफिक्स को अस्वीकार करता है (
पेज मैसेजेस को स्कोप करें (Scope Page Messages)
प्रत्येक पेज अपने लोडर में अपने स्वयं के नेमस्पेस को लोड करता है, फिर अपनी सामग्री को
ScopedMessagesके साथ लपेटता है, जो पेज नेमस्पेस को पैरेंट मैसेजेस के साथ मर्ज करता है।src/components/ScopedMessages.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने पेजों में अनुवाद का उपयोग करें
पेज लोडर वर्तमान लोकेल के लिए
aboutनेमस्पेस प्राप्त करता है,head()इससे अनुवादित, SEO-पूर्ण मेटाडेटा बनाता है (स्टेप 13 देखें), और कंपोनेंट सामग्री को रेंडर करता है।src/routes/{-$locale}/about.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
कंपोनेंट्स में अनुवाद और फॉर्मेटर्स का उपयोग करें
प्रोवाइडर्स के अंतर्गत कोई भी कंपोनेंट
useTranslationsऔरuseFormatterको कॉल कर सकता है। प्लूरल्स ICU द्वारा हल किए जाते हैं, और संख्याएँ सक्रिय लोकेल के अनुसार स्वरूपित होती हैं।src/components/Counter.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
एक स्थानीयकृत लिंक कंपोनेंट बनाएं
वैकल्पिकप्रत्येक रूट
{-$locale}के अंतर्गत रहता है, इसलिए एक लिंक को वर्तमान लोकेल पैरम ले जाना चाहिए। यह रैपर TanStack Router के टाइप्डtoको रखता है और आपके लिए लोकेल इंजेक्ट करता है।src/components/LocalizedLink.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/components/Header.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपनी सामग्री की भाषा बदलें
वैकल्पिकस्विचर को लिंक्स के रूप में रेंडर करें, न कि
<select>के रूप में। लिंक्स क्रॉल करने योग्य होते हैं, इसलिए सर्च इंजन प्रत्येक भाषा संस्करण को ढूंढ लेते हैं, और वे जावास्क्रिप्ट के बिना भी काम करते हैं।to="."वर्तमान पेज को बनाए रखता है और केवल लोकेल पैरम को बदलता है। कुकी स्टेप 16 के रीडायरेक्ट मिडलवेयर के लिए स्पष्ट विकल्प को याद रखती है।src/components/LocaleSwitcher.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने मेटाडेटा का अंतर्राष्ट्रीयकरण करें
वैकल्पिकयहीं पर i18n का फायदा मिलता है: प्रत्येक भाषा संस्करण अपने दम पर रैंक कर सकता है। प्रत्येक पेज को निम्नलिखित प्रदर्शित करना चाहिए:
- एक अनुवादित
<title>औरdescription; - स्वयं की ओर इशारा करने वाला एक कैनोनिकल URL (डिफ़ॉल्ट लोकेल की ओर नहीं);
- प्रति लोकेल एक
hreflangऑल्टरनेट, साथ ही बेमेल भाषाओं के लिएx-default; - सोशल प्रीव्यूज़ द्वारा उपयोग किए जाने वाले Open Graph
og:locale,og:locale:alternateऔरog:url; inLanguageके साथ JSON-LD, जो सर्च इंजन और AI सहायकों को पेज की भाषा का श्रेय देने में मदद करता है।
एक एकल हेल्पर यह सब बनाता है, जिससे पेज कोड संक्षिप्त रहता है:
src/i18n/seo.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
प्रत्येक पेज के
head()में इसका उपयोग करें, जैसा कि स्टेप 9 में दिखाया गया है। होम पेज के लिए,path: "/"पास करें।- एक अनुवादित
अपने साइटमैप का अंतर्राष्ट्रीयकरण करें
वैकल्पिकएक बहुभाषी साइटमैप प्रत्येक लोकेल के प्रत्येक URL को सूचीबद्ध करता है, और प्रत्येक प्रविष्टि
xhtml:linkके साथ अपने सभी ऑल्टरनेट घोषित करती है। Google इन एनोटेशन का उपयोग ठीक पेज केhreflangटैग की तरह करता है, जो उन्हें तब एक विश्वसनीय बैकअप बनाता है जब किसी पेज को शायद ही कभी क्रॉल किया जाता है।TanStack Start सर्वर रूट्स आपको इसे एक फ़ाइल रूट से परोसने की सुविधा देते हैं:
src/routes/sitemap[.]xml.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने robots.txt का अंतर्राष्ट्रीयकरण करें
वैकल्पिकनिजी रूट्स प्रत्येक भाषा में मौजूद होते हैं, इसलिए
Disallowनियमों को प्रत्येक प्रीफिक्स को कवर करना चाहिए। यदि स्टार्टर ने एक फ़ाइल बनाई है तोpublic/robots.txtको हटा दें, फिर इसे एक रूट से परोसें:src/routes/robots[.]txt.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
पहली बार आने वाले आगंतुकों को उनकी भाषा पर पुनर्निर्देशित करें
वैकल्पिकएक अनुरोध मिडलवेयर
/पर आने वाले विज़िटर को उसकी पसंदीदा भाषा में भेजता है, पहले लोकेल कुकी के आधार पर, फिरAccept-Languageहेडर के आधार पर। केवल/को पुनर्निर्देशित किया जाता है: डीप लिंक्स को कभी छुआ नहीं जाता है, ताकि शेयर किए गए URLs और क्रॉलर्स को हमेशा वही पेज मिले जो उन्होंने मांगा था।src/i18n/negotiateLocale.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/start.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
एक विज़िटर जो स्विचर में स्पष्ट रूप से अंग्रेजी चुनता है, उसे कुकी में
locale=enमिलता है, इसलिए उन्हें फिर कभी रीडायरेक्ट नहीं किया जाता है। पूरी तरह से स्टेटिक परिनियोजन पर (स्टेप 18),/को एक फ़ाइल के रूप में परोसा जाता है और यह मिडलवेयर नहीं चलता है, जो कि ठीक है: पेज सुलभ रहता है और स्विचर बाकी काम करता है।use-intl API बनाए रखें, Intlayer के साथ रनटाइम घटाएं
वैकल्पिकबेंचमार्क दिखाता है कि use-intl सेटअप का सबसे भारी हिस्सा स्वयं रनटाइम है (~76 KB gzip)।
@intlayer/use-intlकम्पैट एडेप्टर समान API (useTranslations,useFormatter,IntlProvider,createTranslator, ICU प्लूरल्स,t.rich) प्रदान करता है, लेकिन इसे कंपाइल किए गए Intlayer डिक्शनरी से परोसता है: ~75.9 KB के बजाय ~6.7 KB, 0% लोकेल लीक और 0% पेज लीक, आपके कंपोनेंट्स में बिना किसी बदलाव के।bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
Vite प्लगइन
use-intlको एडेप्टर में उपनाम (alias) देता है, ताकि मौजूदा आयात काम करते रहें:vite.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
आपकी JSON फ़ाइलें sync JSON प्लगइन की बदौलत सिंगल सोर्स ऑफ ट्रुथ बनी रहती हैं:
intlayer.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
यह एडेप्टर एक आसान माइग्रेशन मार्ग भी है: एक बार जब यह चलने लगे, तो आप कंपोनेंट्स को एक-एक करके मूल
useIntlayerAPI में ले जा सकते हैं। Intlayer TanStack Start गाइड देखें।प्रत्येक लोकेल को प्री-रेंडर करें
वैकल्पिकस्टेटिक HTML सबसे तेज़ पेज है जिसे आप परोस सकते हैं और इंडेक्स करने के लिए सबसे आसान है। प्रत्येक स्थानीयकृत पाथ को सूचीबद्ध करें ताकि TanStack Start बिल्ड समय पर सभी भाषा संस्करणों, साथ ही साइटमैप और robots फ़ाइलों को प्री-रेंडर करे:
vite.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
चूंकि लोकेल स्विचर वास्तविक लिंक रेंडर करता है,
crawlLinks: trueउन पेजों को भी खोज लेता है जिन्हें आप सूचीबद्ध करना भूल गए थे।स्थानीयकृत 404 पेजों को संभालें
वैकल्पिकस्टेप 7 का लेआउट पहले से ही अज्ञात लोकेल प्रीफिक्स के लिए
notFound()थ्रो करता है। एक कैच-ऑल रूट जोड़ें ताकि लोकेल के अंदर अज्ञात पाथ भी स्थानीयकृत 404 रेंडर करें, और इसेnoindexके रूप में चिह्नित करें: React 19<meta>टैग को<head>में ले जाता है।src/components/NotFound.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/routes/{-$locale}/$.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
सर्वर फ़ंक्शंस में लोकेल एक्सेस करें
वैकल्पिकसर्वर फ़ंक्शंस को रूट पैरम्स प्राप्त नहीं होते हैं। एक स्थानीयकृत ईमेल भेजने या भाषा प्राथमिकता संग्रहीत करने के लिए, लोकेल कुकी पढ़ें, और
Accept-Languageहेडर पर फ़ॉलबैक करें:src/server/getServerLocale.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
सर्वर फ़ंक्शन के अंदर अनुवाद करने के लिए, इसे
use-intlसेloadMessagesऔरcreateTranslatorके साथ जोड़ें।Intlayer का उपयोग करके अपने अनुवादों को स्वचालित करें
वैकल्पिकuse-intl अनुवाद रेंडर करता है, लेकिन यह उन्हें उत्पन्न (produce) करने में आपकी सहायता नहीं करता है। Intlayer निःशुल्क और ओपन सोर्स है, और भले ही आप use-intl बनाए रखें, यह उस अंतर को भरता है:
- CI या यूनिट परीक्षणों में गायब अनुवादों का परीक्षण करें। अपने अनुवादों का परीक्षण करना देखें।
- अपनी खुद की API की और प्रदाता का उपयोग करके AI के साथ अनुवाद करें:
npx intlayer fillआपके ऐप के संदर्भ के साथ गायब कीज़ का अनुवाद करता है। ऑटो फिल और CLI देखें। - sync JSON प्लगइन के साथ अपनी JSON फ़ाइलों को सिंगल सोर्स ऑफ ट्रुथ के रूप में रखें।
- विजुअल एडिटर और CMS के साथ सामग्री को विजुअल रूप से संपादित करें, ताकि गैर-डेवलपर्स भी अनुवाद अपडेट कर सकें।
- MCP सर्वर और एजेंट स्किल्स के साथ अपने AI एजेंट को संदर्भ दें।
- स्कैन कमांड के साथ गायब
hreflang, गलत कैनोनिकल और लोकेल लीक के लिए अपनी तैनात साइट को स्कैन करें।
सभी सुविधाओं को जानने के लिए, Intlayer क्यों चुनें देखें।
अक्सर पूछे जाने वाले प्रश्न
हाँ, यदि आप Next.js के बाहर next-intl API चाहते हैं। यह आपको ICU संदेश, प्रारूपक (formatters) और अच्छा TypeScript समर्थन देता है, और यह Next.js-विशिष्ट बाधाओं जैसे setRequestLocale से बचाता है। इसका नकारात्मक पहलू वज़न है: बेंचमार्क रनटाइम के लिए ~76 KB gzip मापता है, और एक सामान्य सेटअप प्रत्येक लोकेल और प्रत्येक पेज को ब्राउज़र में भेज देता है। लीक से बचने के लिए, इस गाइड की तरह, रूट और लोकेल के अनुसार नेमस्पेस लोड करें।
use-intl, next-intl का कोर है। next-intl शीर्ष पर Next.js एकीकरण जोड़ता है: एक मिडलवेयर, नेविगेशन हेल्पर्स, सर्वर कंपोनेंट्स के लिए getTranslations और अनुरोध कॉन्फ़िगरेशन। TanStack Start पर आप सीधे use-intl का उपयोग करते हैं और TanStack Router के साथ रूटिंग लागू करते हैं, जैसा कि ऊपर दिखाया गया है।
URL में प्रीफिक्स का उपयोग करें। इस तरह प्रत्येक भाषा संस्करण का अपना URL होता है जिसे सर्च इंजन इंडेक्स कर सकते हैं और उपयोगकर्ता शेयर कर सकते हैं। एक स्पष्ट विकल्प को याद रखने के लिए एक कुकी अभी भी उपयोगी है, जो कि स्टेप 16 का रीडायरेक्ट मिडलवेयर करता है।
सर्वर और ब्राउज़र अलग-अलग टाइम ज़ोन में तिथियों को फ़ॉर्मेट करते हैं। IntlProvider में एक स्पष्ट timeZone पास करें (या कुकी में संग्रहीत विज़िटर टाइम ज़ोन), ताकि दोनों पक्ष समान टेक्स्ट उत्पन्न करें।
सबसे पहले, संदेशों को नेमस्पेस द्वारा विभाजित करें और उन्हें import.meta.glob के साथ प्रति रूट और प्रति लोकेल लोड करें, जो लोकेल और पेज लीक को हटा देता है। फिर, यदि रनटाइम साइज़ मायने रखता है, तो @intlayer/use-intl एडेप्टर पर स्विच करें: समान API, बेंचमार्क में ~75.9 KB के बजाय ~6.7 KB।
रूट लोडर द्वारा लौटाए गए संदेशों के साथ रूट head() फ़ंक्शन के अंदर createTranslator को कॉल करें, फिर title, description, कैनोनिकल और hreflang लिंक लौटाएं। स्टेप 13 एक पुन: प्रयोज्य हेल्पर प्रदान करता है।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। अपने विचार साझा करने वाले पहले व्यक्ति बनें।
