अपने प्रश्न को पूछें और दस्तावेज़ का सारांश प्राप्त करें, इस पृष्ठ और आपके चुने हुए AI प्रदाता का उपयोग करके
संस्करण इतिहास
- "प्रारंभिक संस्करण"v9.5.1026/9/2026
इस पृष्ठ की सामग्री एक AI द्वारा अनुवादित की गई है।
अंग्रेजी में मूल सामग्री के अंतिम संस्करण देखेंअगर आपके पास इस दस्तावेज़ को सुधारने के लिए कोई विचार है, तो कृपया GitHub पर एक पुल अनुरोध सबमिट करके योगदान देने में संकोच न करें।
दस्तावेज़ के लिए GitHub लिंकदस्तावेज़ का Markdown को क्लिपबोर्ड पर कॉपी करें
2026 में Lingui का उपयोग करके अपने Next.js एप्लिकेशन का अंतर्राष्ट्रीयकरण कैसे करें
विषय सूची
Lingui क्या है?
Lingui एक i18n लाइब्रेरी है जो macros और message extraction के इर्द-गिर्द बनाई गई है। आप अपने घटकों (components) में स्रोत टेक्स्ट लिखते हैं ( t`Hello` , <Trans>Hello</Trans>), lingui extract प्रत्येक संदेश को कैटलॉग (डिफ़ॉल्ट रूप से PO फ़ाइलें) में एकत्र करता है, और एक लोडर उन्हें कॉम्पैक्ट जावास्क्रिप्ट में संकलित (compile) करता है। संदेश ICU MessageFormat का उपयोग करते हैं, और Lingui App Router में React Server Components का समर्थन करता है।
यह गाइड एक Next.js 16 App Router प्रोजेक्ट में Lingui को सेट अप करती है, जिसमें शामिल हैं:
- SWC द्वारा संकलित Macros, ताकि Turbopack अपनी गति बनाए रखे।
- Server और Client Components जो समान
TransऔरuseLinguiAPI साझा करते हैं। proxy.tsके माध्यम से Locale routing: डिफ़ॉल्ट लोकेल के लिए/about, दूसरों के लिए/fr/about, और पहली बार आने वाले उपयोगकर्ताओं के लिए भाषा पहचान।generateStaticParamsके साथ प्रत्येक लोकेल का Static rendering।- पूर्ण बहुभाषी SEO: अनुवादित
generateMetadata, canonical,x-defaultके साथhreflang, Open Graph locales, JSON-LD,sitemap.ts,robots.tsऔर स्थानीयकृत (localized) 404 पेज।
किसी अन्य लाइब्रेरी की तलाश है?
TanStack Start का उपयोग कर रहे हैं?
देखें। पुस्तकालयों की तुलना कर रहे हैं?
ये लाइब्रेरी कहाँ से आईं, यह समझने के लिए JavaScript i18n का इतिहास पढ़ें।
Next.js पर Lingui के बारे में बेंचमार्क क्या कहता है
i18n बेंचमार्क प्रत्येक प्रमुख लाइब्रेरी के साथ समान 10-पेज, 10-लोकेल Next.js ऐप चलाता है और मापता है कि ब्राउज़र वास्तव में क्या डाउनलोड करता है।
मीट्रिक
डायनामिक JSON लोडिंग
रनटाइम पर आलस्य से अनुवाद लोड करता है
स्कोप्ड JSON (नेमस्पेसिंग)
प्रति-पृष्ठ अनुवाद नेमस्पेस
यह मीट्रिक क्या है?
अंतर्राष्ट्रीयकरण लाइब्रेरी बंडल का कुल gzip-संपीड़ित आकार। इसमें केवल ट्री-शेकिंग और मिनिफिकेशन के बाद प्रदाता और सामग्री पुनर्प्राप्ति तर्क शामिल हैं।
यह महत्वपूर्ण क्यों है?
एक छोटा लाइब्रेरी आकार प्रारंभिक जावास्क्रिप्ट पेलोड को कम करता है, जिससे क्लाइंट पर तेज़ डाउनलोड और निष्पादन समय होता है।
देखने का तरीका
Next.js 16 पर @lingui/core@6.6.0 के लिए मुख्य आंकड़े, 2026-09-26 को मापे गए (gzip):
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| सेटअप | लाइब्रेरी का आकार | प्रति पेज JS | अन्य-लोकेल लीक | अन्य-पेज लीक |
|---|---|---|---|---|
| बिना i18n (बेस ऐप) | - | 141.0 KB | 0% | 0% |
| Lingui, प्रति लोकेल एक कैटलॉग | 72.1 KB | 145.4 KB | 2.8% | 89.9% |
@intlayer/lingui (कम्पैट) | 10.7 KB | 221.6 KB | 50% | 90% |
next-intlayer (मूल Intlayer) | 4.9 KB | 141.5 KB | 0% | 0% |
मुख्य निष्कर्ष:
- प्रति लोकेल एक एकल कैटलॉग अभी भी अन्य पेजों के संदेशों को क्लाइंट प्रोवाइडर में लीक करता है। जितना संभव हो सके टेक्स्ट को Server Components में रखें, जो रेंडर किया गया HTML भेजते हैं, कैटलॉग नहीं।
- Lingui रनटाइम का वजन ~72 KB gzip है।
@intlayer/linguiकम्पैट अडैप्टर रनटाइम को घटाकर ~11 KB कर देता है, लेकिन इस बेंचमार्क में Next.js कम्पैट सेटअप अभी भी पूरे कैटलॉग को पेज पर भेजता है। मूलnext-intlayerAPI वह सेटअप है जो बेस ऐप के आकार पर बना रहता है।
पूरा डेटा देखें: Next.js बेंचमार्क रिपोर्ट, और बेंचमार्क रिपोजिटरी।
Next.js पर सुविधाओं की तुलना
Next.js App Router प्रोजेक्ट में आमतौर पर आवश्यक सुविधाओं पर Lingui की तुलना next-intl और Intlayer से कैसे होती है:
सभी डेटा सामग्री को स्पष्ट रूप से देखने के लिए तालिका को मोडल में खोलें
| सुविधा | next-intlayer (Intlayer) | Lingui | next-intl |
|---|---|---|---|
| घटकों के पास अनुवाद | ✅ सामग्री प्रत्येक घटक के साथ सह-स्थित होती है | ⚠️ घटकों में स्रोत पाठ, केंद्रीकृत कैटलॉग | ❌ केंद्रीकृत JSON |
| TypeScript एकीकरण | ✅ स्वतः-जनरेटेड सख्त प्रकार | ⚠️ मैक्रोज़ टाइप किए गए हैं, संदेश कैटलॉग नहीं | ✅ अच्छा, AppConfig वृद्धि के माध्यम से |
| लापता अनुवाद पहचान | ✅ TypeScript त्रुटियां और बिल्ड-टाइम चेतावनियां | ⚠️ स्रोत पाठ पर रनटाइम फ़ॉलबैक | ⚠️ रनटाइम फ़ॉलबैक |
| रिच कंटेंट (JSX, Markdown) | ✅ प्रत्यक्ष समर्थन | ✅ <Trans> के अंदर JSX, कोई Markdown नहीं | ⚠️ t.rich के माध्यम से टैग, कोई Markdown नहीं |
| AI अनुवाद | ✅ ऐप संदर्भ के साथ आपका अपना प्रदाता और API कुंजी | ❌ नहीं | ❌ नहीं |
| विजुअल एडिटर / CMS | ✅ स्थानीय विजुअल एडिटर + वैकल्पिक CMS | ❌ बाहरी प्लेटफॉर्म के माध्यम से | ❌ बाहरी प्लेटफॉर्म के माध्यम से |
| स्थानीयकृत रूटिंग | ✅ इन-बिल्ट | ❌ अपनी खुद की proxy.ts लिखें | ✅ इन-बिल्ट [locale] सेगमेंट |
| बहुवचन (Pluralization) | ✅ गणना-आधारित | ✅ ICU, <Plural> मैक्रो | ✅ ICU |
| सामग्री प्रारूप | ✅ .ts, .tsx, .js, .json, .md, .yaml | ✅ PO, JSON, CSV | ✅ .json, .js, .ts |
| ICU MessageFormat | ✅ format: "icu" के माध्यम से | ✅ नेटिव | ✅ नेटिव |
| SEO हेल्पर्स (hreflang, sitemap) | ✅ मेटाडेटा, साइटमैप और robots.txt हेल्पर्स | ❌ मैनुअल | ✅ अच्छा |
| Server Components | ✅ किसी भी Server Component में सीधा एक्सेस | ⚠️ प्रत्येक लेआउट और पेज में setI18n | ⚠️ प्रति घटक await getTranslations() |
| प्रति-घटक ट्री-शेकिंग | ✅ बिल्ड टाइम पर (Babel / SWC) | ⚠️ प्रति लोकेल एक कैटलॉग, प्रति-पेज एक्सट्रैक्टर प्रयोगात्मक है | ⚠️ मैनुअल, प्रति रूट pick() के साथ |
| रनटाइम आकार (gzip, बेंचमार्क) | 4.9 KB | 72.1 KB | 14.7 KB |
| CI में लापता अनुवाद | ✅ npx intlayer test | ✅ lingui compile --strict | ⚠️ इन-बिल्ट नहीं |
| इकोसिस्टम / समुदाय | ⚠️ छोटा, तेजी से बढ़ रहा है | ✅ परिपक्व | ✅ बड़ा |
रनटाइम आकार Next.js बेंचमार्क से लिए गए हैं। विस्तृत चर्चा के लिए, Lingui बनाम Intlayer पढ़ें।
अन्य Next.js गाइड:
वे अभ्यास जिनका आपको पालन करना चाहिए
[locale]लेआउट में<html>परlangऔरdirसेट करें।- टेक्स्ट के लिए Server Components को प्राथमिकता दें: वे सर्वर पर HTML रेंडर करते हैं और क्लाइंट पर कैटलॉग की आवश्यकता नहीं होती है।
- प्रत्येक लेआउट और पेज में
initLingui(locale)को कॉल करें। नेविगेशन पर लेआउट फिर से रेंडर नहीं होते हैं, इसलिए कोई पेज अपने लेआउट द्वारा लोकेल सेट किए जाने पर निर्भर नहीं रह सकता है। - प्रति लोकेल एक URL रखें और
generateStaticParamsके साथ प्रत्येक लोकेल को प्री-रेंडर करें। canonical,hreflangऔरx-defaultके साथgenerateMetadataमें अपने मेटाडेटा का अनुवाद करें।sitemap.tsऔरrobots.tsसम्मेलनों के साथ एक बहुभाषी साइटमैप और robots.txt जनरेट करें।- लोकेल स्विचर के लिए वास्तविक लिंक का उपयोग करें, ताकि क्रॉलर प्रत्येक भाषा को खोज सकें।
CI में
lingui extractचलाएं ताकि कोई नया संदेश कभी भी बिना अनुवाद के न जाए।- अंतर्राष्ट्रीयकरण और SEO
- hreflang गाइड
- Next.js बहुभाषी SEO तुलना
Next.js एप्लिकेशन में Lingui सेट अप करने के लिए चरण-दर-चरण गाइड
यहाँ वह प्रोजेक्ट संरचना है जिसे हम बनाएंगे:
कोड को क्लिपबोर्ड पर कॉपी करें
निर्भरताएं स्थापित करें (Install Dependencies)
bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
- @lingui/core / @lingui/react: रनटाइम,
I18nProvider, Server Components के लिएsetI18n, और मैक्रोज़ (@lingui/core/macro,@lingui/react/macro)। - @lingui/swc-plugin: Next.js SWC पाइपलाइन के अंदर मैक्रोज़ को संकलित करता है।
- @lingui/loader: आयात पर
.poकैटलॉग संकलित करता है, इसलिएlingui compileकी आवश्यकता नहीं है। - @lingui/cli: कैटलॉग में संदेश एकत्र करने के लिए
lingui extract।
@lingui/swc-pluginएक WebAssembly प्लगइन है जो Next.js के SWC संस्करण से जुड़ा हुआ है। यदि Next.js अपग्रेड के बाद बिल्ड विफल हो जाता है, तो प्लगइन को उसके README में संगत के रूप में सूचीबद्ध संस्करण में अपडेट करें।- @lingui/core / @lingui/react: रनटाइम,
अपने लोकेल कॉन्फ़िगरेशन को केंद्रीकृत करें
एक एकल फ़ाइल लोकेल और URL हेल्पर्स को परिभाषित करती है। रूटिंग, मेटाडेटा, साइटमैप और Lingui सभी इससे पढ़ते हैं।
src/i18n/config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
Lingui और Next.js कॉन्फ़िगर करें
lingui.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
SWC प्लगइन मैक्रोज़ को संकलित करता है, और लोडर Turbopack (Next.js 16 में डिफ़ॉल्ट) और webpack दोनों के लिए
.poफ़ाइलों को संकलित करता है:next.config.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
एक्सट्रैक्शन स्क्रिप्ट जोड़ें:
package.jsonकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
कैटलॉग लोड करें और सर्वर इंस्टेंस बनाएं
Server Components में कोई React context नहीं होता है, इसलिए Lingui वर्तमान रेंडर के लिए इंस्टेंस पंजीकृत करने के लिए
setI18nप्रदान करता है। यह मॉड्यूल प्रत्येक कैटलॉग को प्रति सर्वर प्रक्रिया में एक बार लोड करता है और प्रति लोकेल एकI18nइंस्टेंस बनाता है। यहserver-onlyहै: अन्य लोकेल के कैटलॉग कभी भी क्लाइंट बंडल तक नहीं पहुंचते हैं।src/i18n/appRouterI18n.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/i18n/initLingui.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
TypeScript द्वारा
.poआयात को स्वीकार करने के लिए, मॉड्यूल को एक बार घोषित करें:src/i18n/po.d.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
क्लाइंट प्रोवाइडर बनाएं
Client Components एक React context से अनुवाद पढ़ते हैं। प्रोवाइडर सर्वर लेआउट से सक्रिय लोकेल का कैटलॉग प्राप्त करता है, और अपना खुद का इंस्टेंस एक बार बनाता है।
src/components/LinguiClientProvider.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
डायनेमिक लोकेल रूट्स परिभाषित करें
[locale]सेगमेंट रूट लेआउट को रखता है।generateStaticParamsबिल्ड टाइम पर प्रत्येक लोकेल को प्री-रेंडर करता है, औरdynamicParams = falseकिसी अन्य प्रीफ़िक्स के लिए 404 लौटाता है।src/app/[locale]/layout.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
क्लाइंट प्रोवाइडर सक्रिय लोकेल का पूरा कैटलॉग प्राप्त करता है। बेंचमार्क इसे "अन्य-पेज लीक" के रूप में मापता है। Server Components में टेक्स्ट रखने से वह सीमित हो जाता है जिसकी क्लाइंट को वास्तव में आवश्यकता होती है। बड़े ऐप्स के लिए, Lingui का प्रयोगात्मक प्रति-पेज एक्सट्रैक्टर (
lingui.config.tsमेंexperimental.extractor) एंट्री पॉइंट द्वारा कैटलॉग को विभाजित करता है।Server Components में अनुवाद का उपयोग करें
Server Components, Client Components के समान ही मैक्रोज़ का उपयोग करते हैं।
initLinguiको पेज में भी चलना चाहिए, क्योंकि एक लेआउट अपने पेजों के बीच नेविगेट करते समय फिर से रेंडर नहीं होता है।src/app/[locale]/about/page.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
Client Components में अनुवाद का उपयोग करें
Client Components समान आयात का उपयोग करते हैं। मैक्रोज़
LinguiClientProviderसे इंस्टेंस पढ़ते हैं।src/components/Counter.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने संदेश निकालें और अनुवाद करें
एक्सट्रैक्शन चलाएं। Lingui
srcमें पाए गए प्रत्येक संदेश को प्रत्येक लोकेल कैटलॉग में लिखता है:bashकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
फिर प्रत्येक प्रविष्टि के
msgstrका अनुवाद करें:src/locales/fr/messages.poकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/locales/es/messages.poकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
<0>प्लेसहोल्डर<Trans>के JSX तत्वों को यथास्थान रखते हैं, ताकि अनुवादक मार्कअप को छुए बिना उन्हें स्थानांतरित कर सकें।लोकेल रूटिंग के लिए प्रॉक्सी सेट करें
वैकल्पिकNext.js 16 ने
middleware.tsका नाम बदलकरproxy.tsकर दिया। प्रॉक्सी "आवश्यकतानुसार" प्रीफ़िक्स रणनीति लागू करता है:/fr/aboutको वैसे ही सर्व किया जाता है;/en/about/aboutपर पुनर्निर्देशित (redirect) करता है, इसलिए डिफ़ॉल्ट लोकेल का एक ही URL होता है;/aboutको URL बदले बिना आंतरिक रूप से/en/aboutपर फिर से लिखा (rewrite) जाता है;/पर पहली विज़िट पसंदीदा भाषा पर पुनर्निर्देशित करती है (पहले कुकी, फिरAccept-Language)।
src/i18n/negotiateLocale.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/proxy.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपनी सामग्री की भाषा बदलें
वैकल्पिकusePathnameब्राउज़र द्वारा देखे गए URL (/aboutया/fr/about) को लौटाता है। लोकेल को हटा दें, फिर प्रत्येक भाषा का लिंक बनाएं। स्विचर वास्तविक लिंक रेंडर करता है, जिससे क्रॉलर प्रत्येक भाषा संस्करण तक पहुंच सकते हैं, और कुकी स्पष्ट विकल्प को याद रखती है।src/components/LocaleSwitcher.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
एक स्थानीयकृत लिंक घटक बनाएं
वैकल्पिकsrc/components/LocalizedLink.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
यह Server Components से भी काम करता है, क्योंकि यह
LinguiClientProviderके अंदर रेंडर होता है:tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने मेटाडेटा का अंतर्राष्ट्रीयकरण करें
वैकल्पिकप्रत्येक भाषा संस्करण अपने दम पर रैंक कर सकता है, बशर्ते प्रत्येक पेज निम्नलिखित प्रदर्शित करे:
- एक अनुवादित
titleऔरdescription; - स्वयं की ओर इशारा करने वाला एक canonical URL;
- प्रति लोकेल एक
hreflangalternate, साथ हीx-default; - Open Graph
locale,alternateLocaleऔरurl; inLanguageके साथ JSON-LD।
generateMetadataReact ट्री के बाहर चलता है, इसलिए यहmsgमैक्रो के साथ सीधे सर्वर इंस्टेंस का उपयोग करता है:src/i18n/metadata.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/app/[locale]/about/page.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
JSON-LD स्वयं पेज द्वारा रेंडर किया जाता है। पेज फ़ाइलें केवल Next.js फ़ील्ड निर्यात कर सकती हैं, इसलिए घटक को उसकी अपनी फ़ाइल में रखें:
src/components/WebPageJsonLd.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/app/[locale]/about/page.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
- एक अनुवादित
अपने साइटमैप का अंतर्राष्ट्रीयकरण करें
वैकल्पिकsitemap.tsपरंपराalternates.languagesका समर्थन करती है, जिसे Next.jsxhtml:linkअल्टरनेट के रूप में रेंडर करता है। प्रत्येक लोकेल के प्रत्येक URL को सूचीबद्ध करें:src/app/sitemap.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने robots.txt का अंतर्राष्ट्रीयकरण करें
वैकल्पिकनिजी रूट्स प्रत्येक भाषा में मौजूद होते हैं, इसलिए
disallowको प्रत्येक स्थानीयकृत पथ को कवर करना चाहिए:src/app/robots.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
स्थानीयकृत 404 पेजों को संभालें
वैकल्पिकnot-found.tsx[locale]लेआउट के अंदर रेंडर होता है, इसलिए इसके पास क्लाइंट प्रोवाइडर तक पहुंच होती है। कैच-ऑल रूट किसी लोकेल के अंदर अज्ञात पथों को इस पर भेजता है। Next.js 404 प्रतिक्रियाओं में स्वचालित रूप सेnoindexजोड़ता है।src/app/[locale]/not-found.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/app/[locale]/[...rest]/page.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
Server Actions में लोकेल तक पहुंचें
वैकल्पिकServer Actions को रूट पैरामीटर प्राप्त नहीं होते हैं। सबसे विश्वसनीय तरीका यह है कि उस पेज से फ़ॉर्म के साथ लोकेल भेजें जिसे यह पता है:
src/app/[locale]/contact/page.tsxकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
src/app/actions/sendContactMessage.tsकोड कॉपी करेंकोड को क्लिपबोर्ड पर कॉपी करें
अपने मैक्रोज़ बनाए रखें, Intlayer के साथ रनटाइम घटाएं
वैकल्पिक@intlayer/linguiकम्पैट अडैप्टर आपके स्रोत को अछूता रखता है: मैक्रोज़ पहले की तरह संकलित होते हैं, और परिणामीi18n._(),useLingui()और<Trans>कॉल Intlayer शब्दकोशों द्वारा सेवित किए जाते हैं। Next.js बेंचमार्क में, रनटाइम ~72.1 KB से घटकर ~10.7 KB gzip हो जाता है।Next.js पर, अडैप्टर को
next.config.ts(webpack और Turbopack) में@lingui/coreऔर@lingui/reactको@intlayer/linguiमें उपनाम (alias) देकर, और कॉन्फ़िग कोnext-intlayer/serverसेwithIntlayerके साथ लपेटकर जोड़ा जाता है।@lingui/swc-pluginबनाए रखें ताकि मैक्रोज़ अभी भी पहले संकलित हों। पूरा कॉन्फ़िगरेशन Lingui कम्पैट गाइड में है।जैसा कि बेंचमार्क तालिका से पता चलता है, अडैप्टर रनटाइम को कम करता है लेकिन Next.js पर प्रत्येक पेज पर भेजे जाने वाले कैटलॉग को अभी कम नहीं करता है। इसका सबसे अच्छा उपयोग प्रवासन सेतु (migration bridge) के रूप में किया जाता है: एक बार जब यह काम करने लगे, तो घटकों को एक-एक करके मूल
useIntlayerAPI में स्थानांतरित करें, जो केवल वही सामग्री भेजता है जो प्रत्येक घटक रेंडर करता है। Next.js + Intlayer गाइड, Lingui बनाम @intlayer/lingui और सभी कम्पैट अडैप्टर देखें।Intlayer का उपयोग करके अपने अनुवाद स्वचालित करें
वैकल्पिकLingui संदेश निकालता है, लेकिन दर्जनों कैटलॉग को हाथ से भरना वह जगह है जहाँ अधिकांश समय व्यतीत होता है। Intlayer निःशुल्क और ओपन सोर्स है, और इसके टूल Lingui के साथ मिलकर काम करते हैं:
- अपनी स्वयं की API कुंजी और प्रदाता का उपयोग करके AI के साथ अनुवाद करें। ऑटो फिल और CLI देखें।
- sync PO प्लगइन के साथ सत्य के स्रोत के रूप में अपनी PO फ़ाइलें रखें।
- CI में लापता अनुवादों का परीक्षण करें। अपने अनुवादों का परीक्षण करना देखें।
- scan कमांड के साथ लापता
hreflang, गलत canonical और लोकेल लीक के लिए अपनी तैनात साइट का ऑडिट करें।
अक्सर पूछे जाने वाले प्रश्न
हाँ। @lingui/react React Server Components का समर्थन करता है। Server Components @lingui/react/server से setI18n के साथ इंस्टेंस पंजीकृत करते हैं, Client Components इसे I18nProvider से पढ़ते हैं, और दोनों समान Trans और useLingui मैक्रोज़ का उपयोग करते हैं।
Server Components में कोई context नहीं होता है, इसलिए इंस्टेंस प्रति रेंडर पंजीकृत होता है। लेआउट पूरे नेविगेशन में सुरक्षित रहते हैं और दोबारा रेंडर नहीं होते हैं, इसलिए कोई पेज लोकेल सेट करने के लिए अपने लेआउट पर निर्भर नहीं रह सकता है। प्रत्येक लेआउट और पेज के शीर्ष पर initLingui(locale) को कॉल करने से वे स्वतंत्र रहते हैं।
@lingui/swc-plugin का उपयोग करें। यह SWC पाइपलाइन और Turbopack को बनाए रखता है। Babel कॉन्फ़िग जोड़ने से Next.js में SWC अक्षम हो जाता है और बिल्ड धीमा हो जाता है। एकमात्र शर्त यह है कि प्लगइन संस्करण को आपके Next.js रिलीज़ के SWC संस्करण के साथ संगत रखा जाए।
getI18nInstance(locale) के साथ सर्वर इंस्टेंस प्राप्त करें और msg मैक्रो के साथ घोषित डिस्क्रिप्टर का अनुवाद करें: i18n._(msg`About us`)। alternates.canonical, x-default के साथ alternates.languages, और openGraph.locale लौटाएं। चरण 13 एक पुन: प्रयोज्य हेल्पर प्रदान करता है।
बेंचमार्क रनटाइम के लिए ~72 KB gzip मापता है। प्रति लोकेल एक कैटलॉग के साथ, बिना i18n वाले 141 KB के मुकाबले पेजों का वजन ~145 KB होता है, लेकिन प्रत्येक पेज अभी भी क्लाइंट प्रोवाइडर के माध्यम से अन्य पेजों के संदेश प्राप्त करता है।
Lingui उन टीमों के लिए उपयुक्त है जो घटकों में स्रोत टेक्स्ट लिखना और PO फ़ाइलों तथा अनुवादकों के साथ काम करना पसंद करती हैं। next-intl उन टीमों के लिए उपयुक्त है जो JSON कैटलॉग और Next.js के साथ एकीकृत t("key") API पसंद करती हैं। next-i18next i18next प्लगइन इकोसिस्टम लाता है। next-i18next बनाम next-intl बनाम Intlayer और Next.js बेंचमार्क देखें।
टिप्पणियाँ
अभी तक कोई टिप्पणी नहीं। अपने विचार साझा करने वाले पहले व्यक्ति बनें।
