@intlayer/docs 5.8.0-canary.0 → 5.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blog/ar/intlayer_with_next-i18next.md +2 -2
- package/blog/ar/next-i18next_vs_next-intl_vs_intlayer.md +96 -219
- package/blog/ar/react-i18next_vs_react-intl_vs_intlayer.md +88 -129
- package/blog/ar/vue-i18n_vs_intlayer.md +268 -0
- package/blog/de/intlayer_with_next-i18next.md +2 -2
- package/blog/de/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/de/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/de/vue-i18n_vs_intlayer.md +268 -0
- package/blog/en/intlayer_with_next-i18next.md +2 -2
- package/blog/en/next-i18next_vs_next-intl_vs_intlayer.md +89 -220
- package/blog/en/react-i18next_vs_react-intl_vs_intlayer.md +85 -123
- package/blog/en/vue-i18n_vs_intlayer.md +268 -0
- package/blog/en-GB/intlayer_with_next-i18next.md +2 -2
- package/blog/en-GB/next-i18next_vs_next-intl_vs_intlayer.md +85 -218
- package/blog/en-GB/react-i18next_vs_react-intl_vs_intlayer.md +80 -130
- package/blog/en-GB/vue-i18n_vs_intlayer.md +258 -0
- package/blog/es/intlayer_with_next-i18next.md +2 -2
- package/blog/es/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/es/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/es/vue-i18n_vs_intlayer.md +268 -0
- package/blog/fr/intlayer_with_next-i18next.md +2 -2
- package/blog/fr/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
- package/blog/fr/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
- package/blog/fr/vue-i18n_vs_intlayer.md +269 -0
- package/blog/hi/intlayer_with_next-i18next.md +2 -2
- package/blog/hi/next-i18next_vs_next-intl_vs_intlayer.md +97 -220
- package/blog/hi/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
- package/blog/hi/vue-i18n_vs_intlayer.md +268 -0
- package/blog/it/intlayer_with_next-i18next.md +2 -2
- package/blog/it/next-i18next_vs_next-intl_vs_intlayer.md +91 -214
- package/blog/it/react-i18next_vs_react-intl_vs_intlayer.md +86 -127
- package/blog/it/vue-i18n_vs_intlayer.md +268 -0
- package/blog/ja/intlayer_with_next-i18next.md +2 -2
- package/blog/ja/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/ja/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/ja/vue-i18n_vs_intlayer.md +268 -0
- package/blog/ko/intlayer_with_next-i18next.md +2 -2
- package/blog/ko/next-i18next_vs_next-intl_vs_intlayer.md +95 -217
- package/blog/ko/react-i18next_vs_react-intl_vs_intlayer.md +89 -130
- package/blog/ko/vue-i18n_vs_intlayer.md +268 -0
- package/blog/pt/intlayer_with_next-i18next.md +2 -2
- package/blog/pt/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/pt/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/pt/vue-i18n_vs_intlayer.md +268 -0
- package/blog/ru/intlayer_with_next-i18next.md +2 -2
- package/blog/ru/next-i18next_vs_next-intl_vs_intlayer.md +94 -217
- package/blog/ru/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/ru/vue-i18n_vs_intlayer.md +268 -0
- package/blog/zh/intlayer_with_next-i18next.md +2 -2
- package/blog/zh/next-i18next_vs_next-intl_vs_intlayer.md +93 -216
- package/blog/zh/react-i18next_vs_react-intl_vs_intlayer.md +87 -128
- package/blog/zh/vue-i18n_vs_intlayer.md +269 -0
- package/dist/cjs/generated/blog.entry.cjs +41 -0
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +41 -0
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/types/generated/blog.entry.d.ts +1 -0
- package/dist/types/generated/blog.entry.d.ts.map +1 -1
- package/docs/ar/formatters.md +417 -31
- package/docs/ar/how_works_intlayer.md +2 -4
- package/docs/ar/interest_of_intlayer.md +7 -10
- package/docs/ar/intlayer_CMS.md +2 -3
- package/docs/ar/intlayer_visual_editor.md +2 -3
- package/docs/ar/intlayer_with_tanstack.md +1 -1
- package/docs/ar/introduction.md +4 -4
- package/docs/de/formatters.md +444 -34
- package/docs/de/introduction.md +2 -2
- package/docs/en/dictionary/enumeration.md +2 -2
- package/docs/en/dictionary/function_fetching.md +2 -2
- package/docs/en/dictionary/get_started.md +2 -2
- package/docs/en/dictionary/translation.md +2 -2
- package/docs/en/formatters.md +383 -15
- package/docs/en/how_works_intlayer.md +2 -4
- package/docs/en/interest_of_intlayer.md +40 -29
- package/docs/en/intlayer_CMS.md +2 -3
- package/docs/en/intlayer_visual_editor.md +2 -3
- package/docs/en/intlayer_with_create_react_app.md +2 -2
- package/docs/en/intlayer_with_express.md +2 -2
- package/docs/en/intlayer_with_tanstack.md +1 -1
- package/docs/en/introduction.md +4 -4
- package/docs/en/packages/express-intlayer/index.md +2 -2
- package/docs/en/packages/intlayer/getConfiguration.md +2 -3
- package/docs/en/packages/intlayer/getEnumeration.md +2 -7
- package/docs/en/packages/intlayer/getHTMLTextDir.md +2 -4
- package/docs/en/packages/intlayer/getLocaleLang.md +2 -4
- package/docs/en/packages/intlayer/getLocaleName.md +2 -3
- package/docs/en/packages/intlayer/getLocalizedUrl.md +2 -8
- package/docs/en/packages/intlayer/getMultilingualUrls.md +2 -7
- package/docs/en/packages/intlayer/getPathWithoutLocale.md +2 -3
- package/docs/en/packages/intlayer/getTranslation.md +2 -4
- package/docs/en/packages/intlayer/index.md +2 -2
- package/docs/en/packages/next-intlayer/index.md +2 -2
- package/docs/en/packages/next-intlayer/t.md +2 -2
- package/docs/en/packages/next-intlayer/useDictionary.md +2 -2
- package/docs/en/packages/next-intlayer/useIntlayer.md +2 -2
- package/docs/en/packages/next-intlayer/useLocale.md +2 -2
- package/docs/en/packages/react-intlayer/index.md +2 -2
- package/docs/en/packages/react-intlayer/t.md +2 -2
- package/docs/en/packages/react-intlayer/useI18n.md +2 -2
- package/docs/en/packages/react-intlayer/useIntlayer.md +2 -2
- package/docs/en/packages/react-intlayer/useLocale.md +2 -2
- package/docs/en/packages/react-scripts-intlayer/index.md +2 -2
- package/docs/en/packages/solid-intlayer/index.md +2 -2
- package/docs/en/packages/vite-intlayer/index.md +2 -2
- package/docs/en-GB/formatters.md +402 -16
- package/docs/en-GB/how_works_intlayer.md +2 -4
- package/docs/en-GB/interest_of_intlayer.md +7 -10
- package/docs/en-GB/intlayer_with_tanstack.md +1 -1
- package/docs/en-GB/introduction.md +2 -2
- package/docs/es/formatters.md +438 -28
- package/docs/es/how_works_intlayer.md +2 -4
- package/docs/es/interest_of_intlayer.md +7 -10
- package/docs/es/intlayer_with_tanstack.md +1 -1
- package/docs/es/introduction.md +2 -2
- package/docs/fr/formatters.md +438 -28
- package/docs/fr/how_works_intlayer.md +2 -4
- package/docs/fr/interest_of_intlayer.md +7 -10
- package/docs/fr/intlayer_with_tanstack.md +1 -1
- package/docs/fr/introduction.md +2 -2
- package/docs/hi/formatters.md +430 -39
- package/docs/hi/how_works_intlayer.md +2 -4
- package/docs/hi/interest_of_intlayer.md +7 -10
- package/docs/hi/intlayer_with_tanstack.md +1 -1
- package/docs/hi/introduction.md +2 -2
- package/docs/it/formatters.md +438 -30
- package/docs/it/how_works_intlayer.md +2 -4
- package/docs/it/interest_of_intlayer.md +7 -10
- package/docs/it/intlayer_with_tanstack.md +1 -1
- package/docs/it/introduction.md +2 -2
- package/docs/ja/formatters.md +435 -47
- package/docs/ja/how_works_intlayer.md +2 -4
- package/docs/ja/interest_of_intlayer.md +7 -10
- package/docs/ja/intlayer_with_tanstack.md +1 -1
- package/docs/ja/introduction.md +2 -2
- package/docs/ko/formatters.md +432 -41
- package/docs/ko/how_works_intlayer.md +2 -4
- package/docs/ko/interest_of_intlayer.md +7 -10
- package/docs/ko/intlayer_with_tanstack.md +1 -1
- package/docs/ko/introduction.md +2 -2
- package/docs/pt/formatters.md +416 -30
- package/docs/pt/how_works_intlayer.md +2 -4
- package/docs/pt/intlayer_with_tanstack.md +1 -1
- package/docs/pt/introduction.md +2 -2
- package/docs/ru/autoFill.md +2 -2
- package/docs/ru/configuration.md +1 -40
- package/docs/ru/formatters.md +438 -28
- package/docs/ru/how_works_intlayer.md +5 -7
- package/docs/ru/index.md +1 -1
- package/docs/ru/interest_of_intlayer.md +8 -11
- package/docs/ru/intlayer_CMS.md +7 -8
- package/docs/ru/intlayer_cli.md +4 -7
- package/docs/ru/intlayer_visual_editor.md +5 -6
- package/docs/ru/intlayer_with_angular.md +1 -1
- package/docs/ru/intlayer_with_create_react_app.md +5 -5
- package/docs/ru/intlayer_with_lynx+react.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +3 -3
- package/docs/ru/intlayer_with_nextjs_page_router.md +2 -2
- package/docs/ru/intlayer_with_nuxt.md +1 -1
- package/docs/ru/intlayer_with_react_native+expo.md +2 -2
- package/docs/ru/intlayer_with_tanstack.md +3 -3
- package/docs/ru/intlayer_with_vite+preact.md +3 -3
- package/docs/ru/intlayer_with_vite+react.md +3 -3
- package/docs/ru/intlayer_with_vite+solid.md +1 -1
- package/docs/ru/intlayer_with_vite+svelte.md +1 -1
- package/docs/ru/intlayer_with_vite+vue.md +2 -2
- package/docs/ru/introduction.md +5 -5
- package/docs/ru/locale_mapper.md +1 -1
- package/docs/ru/packages/@intlayer/api/index.md +2 -2
- package/docs/ru/packages/@intlayer/chokidar/index.md +1 -1
- package/docs/ru/packages/@intlayer/cli/index.md +2 -2
- package/docs/ru/packages/@intlayer/config/index.md +2 -2
- package/docs/ru/packages/@intlayer/core/index.md +2 -2
- package/docs/ru/packages/@intlayer/design-system/index.md +2 -2
- package/docs/ru/packages/@intlayer/dictionary-entry/index.md +2 -2
- package/docs/ru/packages/@intlayer/editor/index.md +1 -1
- package/docs/ru/packages/@intlayer/editor-react/index.md +1 -1
- package/docs/ru/packages/@intlayer/webpack/index.md +1 -1
- package/docs/ru/packages/angular-intlayer/index.md +1 -1
- package/docs/ru/packages/express-intlayer/index.md +3 -3
- package/docs/ru/packages/express-intlayer/t.md +1 -1
- package/docs/ru/packages/intlayer/getEnumeration.md +3 -8
- package/docs/ru/packages/intlayer/getTranslation.md +3 -5
- package/docs/ru/packages/intlayer/getTranslationContent.md +1 -3
- package/docs/ru/packages/intlayer/index.md +3 -3
- package/docs/ru/packages/intlayer-cli/index.md +1 -1
- package/docs/ru/packages/intlayer-editor/index.md +2 -2
- package/docs/ru/packages/lynx-intlayer/index.md +1 -1
- package/docs/ru/packages/next-intlayer/index.md +4 -4
- package/docs/ru/packages/next-intlayer/t.md +4 -4
- package/docs/ru/packages/next-intlayer/useLocale.md +3 -3
- package/docs/ru/packages/nuxt-intlayer/index.md +1 -1
- package/docs/ru/packages/preact-intlayer/index.md +1 -1
- package/docs/ru/packages/react-intlayer/index.md +4 -4
- package/docs/ru/packages/react-intlayer/t.md +4 -4
- package/docs/ru/packages/react-native-intlayer/index.md +1 -1
- package/docs/ru/packages/react-scripts-intlayer/index.md +3 -3
- package/docs/ru/packages/solid-intlayer/index.md +3 -3
- package/docs/ru/packages/svelte-intlayer/index.md +1 -1
- package/docs/ru/packages/vite-intlayer/index.md +3 -3
- package/docs/ru/packages/vue-intlayer/index.md +1 -1
- package/docs/ru/per_locale_file.md +1 -1
- package/docs/ru/roadmap.md +3 -5
- package/docs/ru/vs_code_extension.md +1 -1
- package/docs/zh/formatters.md +446 -38
- package/docs/zh/how_works_intlayer.md +2 -4
- package/docs/zh/interest_of_intlayer.md +7 -10
- package/docs/zh/intlayer_with_tanstack.md +1 -1
- package/docs/zh/introduction.md +2 -2
- package/frequent_questions/ar/domain_routing.md +1 -1
- package/frequent_questions/en/domain_routing.md +1 -1
- package/frequent_questions/en-GB/domain_routing.md +1 -1
- package/frequent_questions/es/domain_routing.md +1 -1
- package/frequent_questions/fr/domain_routing.md +1 -1
- package/frequent_questions/hi/domain_routing.md +1 -1
- package/frequent_questions/it/domain_routing.md +1 -1
- package/frequent_questions/ko/domain_routing.md +1 -1
- package/frequent_questions/pt/domain_routing.md +1 -1
- package/frequent_questions/ru/domain_routing.md +1 -1
- package/frequent_questions/ru/get_locale_cookie.md +4 -4
- package/frequent_questions/ru/static_rendering.md +1 -2
- package/frequent_questions/zh/domain_routing.md +1 -1
- package/package.json +7 -7
- package/src/generated/blog.entry.ts +41 -0
|
@@ -1,285 +1,162 @@
|
|
|
1
1
|
---
|
|
2
|
-
createdAt:
|
|
3
|
-
updatedAt: 2025-
|
|
4
|
-
title: next-i18next
|
|
5
|
-
description: Next.js
|
|
2
|
+
createdAt: 2025-08-23
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
|
+
title: next-i18next बनाम next-intl बनाम Intlayer
|
|
5
|
+
description: Next.js ऐप के अंतरराष्ट्रीयकरण (i18n) के लिए next-i18next की तुलना next-intl और Intlayer के साथ करें
|
|
6
6
|
keywords:
|
|
7
7
|
- next-intl
|
|
8
8
|
- next-i18next
|
|
9
9
|
- Intlayer
|
|
10
|
-
-
|
|
11
|
-
-
|
|
10
|
+
- अंतरराष्ट्रीयकरण
|
|
11
|
+
- ब्लॉग
|
|
12
12
|
- Next.js
|
|
13
|
-
-
|
|
14
|
-
-
|
|
13
|
+
- जावास्क्रिप्ट
|
|
14
|
+
- रिएक्ट
|
|
15
15
|
slugs:
|
|
16
16
|
- blog
|
|
17
17
|
- next-i18next-vs-next-intl-vs-intlayer
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
# next-i18next
|
|
20
|
+
# next-i18next बनाम next-intl बनाम intlayer | Next.js अंतरराष्ट्रीयकरण (i18n)
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
यह गाइड **Next.js** के लिए तीन व्यापक रूप से उपयोग किए जाने वाले i18n विकल्पों की तुलना करता है: **next-intl**, **next-i18next**, और **Intlayer**।
|
|
23
|
+
हम **Next.js 13+ App Router** (जिसमें **React Server Components** शामिल हैं) पर ध्यान केंद्रित करते हैं और मूल्यांकन करते हैं:
|
|
23
24
|
|
|
24
|
-
|
|
25
|
+
1. **आर्किटेक्चर और सामग्री संगठन**
|
|
26
|
+
2. **TypeScript और सुरक्षा**
|
|
27
|
+
3. **अनुवाद की कमी को संभालना**
|
|
28
|
+
4. **रूटिंग और मिडलवेयर**
|
|
29
|
+
5. **प्रदर्शन और लोडिंग व्यवहार**
|
|
30
|
+
6. **डेवलपर अनुभव (DX), टूलिंग और रखरखाव**
|
|
31
|
+
7. **SEO और बड़े प्रोजेक्ट की स्केलेबिलिटी**
|
|
25
32
|
|
|
26
|
-
|
|
27
|
-
2. **TypeScript समर्थन**
|
|
28
|
-
3. **गायब अनुवादों का प्रबंधन**
|
|
29
|
-
4. **सर्वर घटकों का समर्थन**
|
|
30
|
-
5. **Next.js के लिए उन्नत रूटिंग और मिडलवेयर**
|
|
31
|
-
6. **सेटअप की सादगी**
|
|
32
|
-
|
|
33
|
-
यह मार्गदर्शिका **Intlayer** पर एक **गहन नज़र** भी प्रदान करती है, यह दिखाते हुए कि यह एक मजबूत विकल्प क्यों हो सकता है, विशेष रूप से Next.js 13+ के लिए, जिसमें **App Router** और **Server Components** शामिल हैं।
|
|
33
|
+
> **संक्षेप में**: ये सभी तीनों Next.js ऐप को स्थानीयकृत कर सकते हैं। यदि आप चाहते हैं **कंपोनेंट-स्कोप्ड कंटेंट**, **कठोर TypeScript प्रकार**, **बिल्ड-टाइम मिसिंग-की जांच**, **ट्री-शेक्ड डिक्शनरीज़**, और **फर्स्ट-क्लास App Router + SEO हेल्पर्स**, तो **Intlayer** सबसे पूर्ण, आधुनिक विकल्प है।
|
|
34
34
|
|
|
35
35
|
---
|
|
36
36
|
|
|
37
|
-
##
|
|
38
|
-
|
|
39
|
-
### 1. next-intl
|
|
37
|
+
## उच्च स्तरीय स्थिति
|
|
40
38
|
|
|
41
|
-
|
|
39
|
+
- **next-intl** - हल्का, सरल संदेश स्वरूपण जो मजबूत Next.js समर्थन के साथ आता है। केंद्रीकृत कैटलॉग आम हैं; DX सरल है, लेकिन सुरक्षा और बड़े पैमाने पर रखरखाव मुख्य रूप से आपकी जिम्मेदारी बनी रहती है।
|
|
40
|
+
- **next-i18next** - Next.js के लिए i18next का रूप। परिपक्व इकोसिस्टम और प्लगइन्स (जैसे ICU) के माध्यम से फीचर्स, लेकिन कॉन्फ़िगरेशन लंबा हो सकता है और जैसे-जैसे प्रोजेक्ट बढ़ते हैं कैटलॉग केंद्रीकृत हो जाते हैं।
|
|
41
|
+
- **Intlayer** - Next.js के लिए कंपोनेंट-केंद्रित कंटेंट मॉडल, **कठोर TS टाइपिंग**, **बिल्ड-टाइम चेक्स**, **ट्री-शेकिंग**, **इन-बिल्ट मिडलवेयर और SEO हेल्पर्स**, वैकल्पिक **विज़ुअल एडिटर/CMS**, और **AI-सहायता प्राप्त अनुवाद**।
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
- **TypeScript समर्थन**: आधारभूत TypeScript एकीकरण। कुछ प्रकार की श्रेष्ठताएँ मौजूद हैं, लेकिन ये आपके अनुवाद फ़ाइलों से TypeScript परिभाषाओं को स्वचालित रूप से उत्पन्न करने पर केंद्रित नहीं हैं।
|
|
45
|
-
- **गायब अनुवाद**: आधारभूत फ़ॉलबैक तंत्र। डिफ़ॉल्ट रूप से, एक कुंजी या डिफ़ॉल्ट स्थानीयकरण स्ट्रिंग पर वापस जाता है। उन्नत गायब अनुवाद परीक्षणों के लिए किसी प्रकार का सुसंगत उपकरण नहीं है।
|
|
46
|
-
- **सर्वर घटकों का समर्थन**: सामान्य तौर पर Next.js 13+ के साथ काम करता है, लेकिन पैटर्न गहरे सर्वर-साइट उपयोग के लिए कम विशेषज्ञ है (जैसे, जटिल गतिशील रूटिंग के साथ सर्वर घटक)।
|
|
47
|
-
- **रूटिंग और मिडलवेयर**: मिडलवेयर समर्थन संभव है लेकिन सीमित। आमतौर पर Next.js `Middleware` पर स्थानीयकरण पहचान के लिए या स्थानीयकरण पथ को फिर से लिखने के लिए मैनुअल कॉन्फ़िगरेशन पर भरोसा करता है।
|
|
48
|
-
- **सेटअप की सादगी**: बहुत सीधा है। न्यूनतम बॉयलरप्लेट की आवश्यकता है।
|
|
43
|
+
---
|
|
49
44
|
|
|
50
|
-
|
|
45
|
+
## साइड-बाय-साइड फीचर तुलना (Next.js केंद्रित)
|
|
46
|
+
|
|
47
|
+
| फीचर | `next-intlayer` (Intlayer) | `next-intl` | `next-i18next` |
|
|
48
|
+
| ------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
|
|
49
|
+
| **कंपोनेंट के पास अनुवाद** | ✅ हाँ, प्रत्येक कंपोनेंट के साथ सामग्री सह-स्थित | ❌ नहीं | ❌ नहीं |
|
|
50
|
+
| **टाइपस्क्रिप्ट एकीकरण** | ✅ उन्नत, स्वचालित रूप से उत्पन्न सख्त प्रकार | ✅ अच्छा | ⚠️ बुनियादी |
|
|
51
|
+
| **अनुवाद की कमी का पता लगाना** | ✅ टाइपस्क्रिप्ट त्रुटि हाइलाइट और बिल्ड-टाइम त्रुटि/चेतावनी | ⚠️ रनटाइम फॉलबैक | ⚠️ रनटाइम फॉलबैक |
|
|
52
|
+
| **समृद्ध सामग्री (JSX/मार्कडाउन/कंपोनेंट्स)** | ✅ सीधे समर्थन | ❌ समृद्ध नोड्स के लिए डिज़ाइन नहीं किया गया | ⚠️ सीमित |
|
|
53
|
+
| **एआई-संचालित अनुवाद** | ✅ हाँ, कई एआई प्रदाताओं का समर्थन करता है। अपने स्वयं के API कुंजी का उपयोग करके उपयोग किया जा सकता है। आपके एप्लिकेशन और सामग्री के संदर्भ को ध्यान में रखता है | ❌ नहीं | ❌ नहीं |
|
|
54
|
+
| **विज़ुअल एडिटर** | ✅ हाँ, स्थानीय विज़ुअल एडिटर + वैकल्पिक CMS; कोडबेस सामग्री को बाहरी रूप से प्रबंधित कर सकता है; एम्बेड करने योग्य | ❌ नहीं / बाहरी स्थानीयकरण प्लेटफार्मों के माध्यम से उपलब्ध | ❌ नहीं / बाहरी स्थानीयकरण प्लेटफार्मों के माध्यम से उपलब्ध |
|
|
55
|
+
| **स्थानीयकृत रूटिंग** | ✅ हाँ, बॉक्स से बाहर स्थानीयकृत पथों का समर्थन करता है (Next.js और Vite के साथ काम करता है) | ✅ अंतर्निर्मित, ऐप राउटर `[locale]` सेगमेंट का समर्थन करता है | ✅ अंतर्निर्मित |
|
|
56
|
+
| **डायनामिक रूट जनरेशन** | ✅ हाँ | ✅ हाँ | ✅ हाँ |
|
|
57
|
+
| **बहुवचन** | ✅ एनेमरेशन-आधारित पैटर्न | ✅ अच्छा | ✅ अच्छा |
|
|
58
|
+
| **स्वरूपण (तिथियाँ, संख्याएँ, मुद्राएँ)** | ✅ अनुकूलित स्वरूपक (अंदर से Intl) | ✅ अच्छा (Intl सहायक) | ✅ अच्छा (Intl सहायक) |
|
|
59
|
+
| **सामग्री स्वरूप** | ✅ .tsx, .ts, .js, .json, .md, .txt, (.yaml WIP) | ✅ .json, .js, .ts | ⚠️ .json |
|
|
60
|
+
| **ICU समर्थन** | ⚠️ प्रगति पर | ✅ हाँ | ⚠️ प्लगइन के माध्यम से (`i18next-icu`) |
|
|
61
|
+
| **SEO सहायक (hreflang, साइटमैप)** | ✅ अंतर्निर्मित उपकरण: साइटमैप, robots.txt, मेटाडेटा के लिए सहायक | ✅ अच्छा | ✅ अच्छा |
|
|
62
|
+
| **इकोसिस्टम / समुदाय** | ⚠️ छोटा लेकिन तेजी से बढ़ रहा और प्रतिक्रियाशील | ✅ मध्यम आकार, Next.js-केंद्रित | ✅ मध्यम आकार, Next.js-केंद्रित |
|
|
63
|
+
| **सर्वर-साइड रेंडरिंग और सर्वर कंपोनेंट्स** | ✅ हाँ, SSR / React सर्वर कंपोनेंट्स के लिए सुव्यवस्थित | ⚠️ पेज स्तर पर समर्थित लेकिन चाइल्ड सर्वर कंपोनेंट्स के लिए कंपोनेंट ट्री में t-फंक्शंस पास करने की आवश्यकता है | ⚠️ पेज स्तर पर समर्थित लेकिन चाइल्ड सर्वर कंपोनेंट्स के लिए कंपोनेंट ट्री में t-फंक्शंस पास करने की आवश्यकता है |
|
|
64
|
+
| **ट्री-शेकिंग (केवल उपयोग किए गए कंटेंट को लोड करना)** | ✅ हाँ, Babel/SWC प्लगइन्स के माध्यम से बिल्ड समय पर प्रति-कंपोनेंट | ⚠️ आंशिक | ⚠️ आंशिक |
|
|
65
|
+
| **लेज़ी लोडिंग** | ✅ हाँ, प्रति-लोकल / प्रति-डिक्शनरी | ✅ हाँ (प्रति-रूट/प्रति-लोकल), नेमस्पेस प्रबंधन की आवश्यकता | ✅ हाँ (प्रति-रूट/प्रति-लोकल), नेमस्पेस प्रबंधन की आवश्यकता |
|
|
66
|
+
| **अप्रयुक्त कंटेंट को हटाना** | ✅ हाँ, बिल्ड समय पर प्रति-डिक्शनरी | ❌ नहीं, नेमस्पेस प्रबंधन के साथ मैन्युअली प्रबंधित किया जा सकता है | ❌ नहीं, नेमस्पेस प्रबंधन के साथ मैन्युअली प्रबंधित किया जा सकता है |
|
|
67
|
+
| **बड़े प्रोजेक्ट्स का प्रबंधन** | ✅ मॉड्यूलर को प्रोत्साहित करता है, डिज़ाइन-सिस्टम के लिए उपयुक्त | ✅ सेटअप के साथ मॉड्यूलर | ✅ सेटअप के साथ मॉड्यूलर |
|
|
51
68
|
|
|
52
69
|
---
|
|
53
70
|
|
|
54
|
-
|
|
71
|
+
## गहराई से तुलना
|
|
55
72
|
|
|
56
|
-
|
|
73
|
+
### 1) आर्किटेक्चर और स्केलेबिलिटी
|
|
57
74
|
|
|
58
|
-
-
|
|
59
|
-
- **
|
|
60
|
-
- **गायब अनुवाद**: i18next इंटरपोलेशन/फ़ॉलबैक प्रदान करता है। हालाँकि, गायब अनुवाद पहचान अक्सर अतिरिक्त सेटअप या थर्ड-पार्टी प्लगइन्स की आवश्यकता होती है।
|
|
61
|
-
- **सर्वर घटकों का समर्थन**: Next.js 13 के साथ बुनियादी उपयोग का दस्तावेज़ है, लेकिन जटिल उपयोग (जैसे, सर्वर घटकों के साथ गहरे एकीकरण, गतिशील रूट जेनरेशन) कठिन हो सकता है।
|
|
62
|
-
- **रूटिंग और मिडलवेयर**: स्थानीयकरण उपपथों के लिए Next.js `Middleware` और पुनर्लेखन पर भारी निर्भर करता है। अधिक जटिल सेटअप के लिए, आपको उन्नत i18next कॉन्फ़िगरेशन में गोताखोरी करने की आवश्यकता हो सकती है।
|
|
63
|
-
- **सेटअप की सादगी**: i18next का उपयोग करने वाले लोगों के लिए परिचित दृष्टिकोण। हालाँकि, जब उन्नत i18n सुविधाओं (नेमस्पेस, कई फ़ॉलबैक स्थान) की आवश्यकता होती है, तो यह और अधिक बॉयलरप्लेट-गहन हो सकता है।
|
|
75
|
+
- **next-intl / next-i18next**: डिफ़ॉल्ट रूप से प्रति-लोकल **केंद्रीकृत कैटलॉग** (साथ ही i18next में **नेमस्पेस**) का उपयोग करता है। शुरू में यह ठीक काम करता है, लेकिन अक्सर बढ़ती कूप्लिंग और की चर्न के साथ एक बड़ा साझा सतह क्षेत्र बन जाता है।
|
|
76
|
+
- **Intlayer**: प्रत्येक घटक (या प्रत्येक फीचर) के लिए शब्दकोशों को प्रोत्साहित करता है जो उस कोड के साथ सह-स्थित होते हैं जिसे वे सेवा देते हैं। इससे संज्ञानात्मक भार कम होता है, UI के टुकड़ों की नकल/स्थानांतरण आसान होता है, और टीमों के बीच संघर्ष कम होता है। अप्रयुक्त सामग्री को स्वाभाविक रूप से पहचानना और हटाना आसान होता है।
|
|
64
77
|
|
|
65
|
-
|
|
78
|
+
**महत्व क्यों है:** बड़े कोडबेस या डिज़ाइन-सिस्टम सेटअप में, **मॉड्यूलर सामग्री** मोनोलिथिक कैटलॉग की तुलना में बेहतर स्केल करती है।
|
|
66
79
|
|
|
67
80
|
---
|
|
68
81
|
|
|
69
|
-
###
|
|
70
|
-
|
|
71
|
-
**मुख्य ध्यान**: Next.js **App Router** (12, 13, 14, और 15) के लिए विशेष रूप से अनुकूलित एक आधुनिक, ओपन-सोर्स i18n पुस्तकालय जिसमें **Server Components** और **Turbopack** का अंतर्निहित समर्थन है।
|
|
82
|
+
### 2) टाइपस्क्रिप्ट और सुरक्षा
|
|
72
83
|
|
|
73
|
-
|
|
84
|
+
- **next-intl**: मजबूत टाइपस्क्रिप्ट समर्थन, लेकिन **चाबियाँ डिफ़ॉल्ट रूप से सख्ती से टाइप नहीं होतीं**; आपको सुरक्षा पैटर्न मैन्युअली बनाए रखने होंगे।
|
|
85
|
+
- **next-i18next**: हुक्स के लिए बेस टाइपिंग; **सख्त कुंजी टाइपिंग के लिए अतिरिक्त टूलिंग/कॉन्फ़िग की आवश्यकता होती है**।
|
|
86
|
+
- **Intlayer**: आपके कंटेंट से **सख्त प्रकार (strict types)** उत्पन्न करता है। **IDE ऑटोकम्प्लीशन** और **कंपाइल-टाइम त्रुटियाँ** तैनाती से पहले टाइपो और गायब कुंजियों को पकड़ती हैं।
|
|
74
87
|
|
|
75
|
-
|
|
88
|
+
**महत्व क्यों है:** मजबूत टाइपिंग विफलताओं को **बाएं** (CI/build) स्थानांतरित करती है बजाय इसके कि वे **दाएं** (runtime) हों।
|
|
76
89
|
|
|
77
|
-
|
|
78
|
-
- यह आपके कोड को अधिक **मॉड्यूलर और बनाए रखने योग्य** बनाता है, विशेष रूप से बड़े कोड बेस में।
|
|
79
|
-
|
|
80
|
-
2. **TypeScript समर्थन**
|
|
81
|
-
|
|
82
|
-
- **स्वचालित रूप से उत्पन्न प्रकार की परिभाषाएँ**: जिस क्षण आप अपनी सामग्री को परिभाषित करते हैं, Intlayer उन प्रकारों को उत्पन्न करता है जो ऑटोकम्पलीट को पावर देते हैं और अनुवाद संबंधित त्रुटियों को पकड़ते हैं।
|
|
83
|
-
- गायब कुंजियों जैसी रनटाइम में त्रुटियों को कम करता है और आपके IDE में सीधे उन्नत **ऑटोकम्पलीट** प्रदान करता है।
|
|
84
|
-
|
|
85
|
-
3. **गायब अनुवादों का प्रबंधन**
|
|
90
|
+
---
|
|
86
91
|
|
|
87
|
-
|
|
88
|
-
- यह सुनिश्चित करता है कि आप कभी भी अनुवादों के बीच गायब पाठ के साथ शिप न करें।
|
|
92
|
+
### 3) गायब अनुवाद प्रबंधन
|
|
89
93
|
|
|
90
|
-
|
|
94
|
+
- **next-intl / next-i18next**: **रनटाइम फॉलबैक** पर निर्भर करते हैं (जैसे, कुंजी या डिफ़ॉल्ट लोकल दिखाना)। बिल्ड विफल नहीं होता।
|
|
95
|
+
- **Intlayer**: **बिल्ड-टाइम डिटेक्शन** के साथ **चेतावनी/त्रुटियाँ** प्रदान करता है जब लोकल या कुंजी गायब हो।
|
|
91
96
|
|
|
92
|
-
|
|
93
|
-
- **सर्वर संदर्भ** को **आइसोलेट** करने के लिए विशेषज्ञ प्रदाता (`IntlayerServerProvider`, `IntlayerClientProvider`) प्रदान करता है (Next.js 13+ के साथ काम करते समय महत्वपूर्ण)।
|
|
97
|
+
**महत्व क्यों है:** बिल्ड के दौरान अंतर पकड़ना उत्पादन में “रहस्यमय स्ट्रिंग्स” को रोकता है और सख्त रिलीज गेट्स के अनुरूप होता है।
|
|
94
98
|
|
|
95
|
-
|
|
99
|
+
---
|
|
96
100
|
|
|
97
|
-
|
|
98
|
-
- न्यूनतम कॉन्फ़िगरेशन के साथ स्थानीयकृत पथों को गतिशील रूप से संभालता है (जैसे, `/en-US/about` बनाम `/fr/about`)।
|
|
99
|
-
- वैकल्पिक भाषा लिंक बनाने के लिए `getMultilingualUrls` जैसी सहायक विधियाँ प्रदान करता है (**SEO** के लिए शानदार)।
|
|
101
|
+
### 4) रूटिंग, मिडलवेयर और URL रणनीति
|
|
100
102
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
- एक रैपर प्लगइन `withIntlayer(nextConfig)` जो आपके सभी पर्यावरण चर और आपकी सामग्री के लिए वॉचर को **इंजेक्ट** करता है।
|
|
104
|
-
- **कोई बड़ा फ़ॉलबैक कॉन्फ़िगरेशन नहीं**, सिस्टम को न्यूनतम घर्षण के साथ "बस काम करना" के लिए बनाया गया है।
|
|
103
|
+
- तीनों ही **Next.js स्थानीयकृत रूटिंग** के साथ App Router पर काम करते हैं।
|
|
104
|
+
- **Intlayer** आगे बढ़ता है **i18n मिडलवेयर** (हेडर/कुकीज़ के माध्यम से लोकल डिटेक्शन) और **हेल्पर्स** के साथ जो स्थानीयकृत URLs और `<link rel="alternate" hreflang="…">` टैग्स उत्पन्न करते हैं।
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
**महत्व क्यों है:** कम कस्टम ग्लू लेयर्स; **सुसंगत UX** और **साफ SEO** सभी लोकल्स में।
|
|
107
107
|
|
|
108
108
|
---
|
|
109
109
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
| **विशेषता** | **next-intl** | **next-i18next** | **Intlayer** |
|
|
113
|
-
| ------------------------------ | ------------------------------------------- | ----------------------------------------------- | ------------------------------------------ |
|
|
114
|
-
| **घटकों के निकट अनुवाद रखें** | आंशिक – सामान्यतः एक स्थानीयकरण फ़ोल्डर | डिफ़ॉल्ट नहीं – अक्सर `public/locales` | **हां – अनुशंसित और सरल** |
|
|
115
|
-
| **TypeScript ऑटो उत्पन्न** | आधारभूत TS परिभाषाएँ | आधारभूत TS समर्थन | **हां – उन्नत बॉक्स से बाहर** |
|
|
116
|
-
| **गायब अनुवादों का पता लगाना** | अधिकांशतः फ़ॉलबैक स्ट्रिंग | अधिकांशतः फ़ॉलबैक स्ट्रिंग | **हां – निर्माण के समय जांच** |
|
|
117
|
-
| **सर्वर घटकों का समर्थन** | काम करता है लेकिन विशेषज्ञ नहीं | समर्थित लेकिन जटिल हो सकता है | **विशेषज्ञ प्रदाताओं के साथ पूर्ण समर्थन** |
|
|
118
|
-
| **रूटिंग और मिडलवेयर** | Next मिडलवेयर के साथ मैन्युअल रूप से एकीकृत | पुनर्लेखन कॉन्फ़िग के माध्यम से प्रदान किया गया | **समर्पित i18n मिडलवेयर + उन्नत हुक** |
|
|
119
|
-
| **सेटअप की जटिलता** | सरल, न्यूनतम कॉन्फ़िगरेशन | पारंपरिक, उन्नत उपयोग के लिए जटिल हो सकता है | **एक कॉन्फ़िग फ़ाइल और प्लगइन** |
|
|
120
|
-
|
|
121
|
-
---
|
|
110
|
+
### 5) सर्वर कंपोनेंट्स (RSC) संरेखण
|
|
122
111
|
|
|
123
|
-
|
|
112
|
+
- **सभी** Next.js 13+ का समर्थन करते हैं।
|
|
113
|
+
- **Intlayer** **सर्वर/क्लाइंट सीमा** को एक सुसंगत API और RSC के लिए डिज़ाइन किए गए प्रोवाइडर्स के साथ सहज बनाता है, ताकि आप फॉर्मेटर्स या t-फंक्शंस को कंपोनेंट ट्रीज़ के माध्यम से शटल न करें।
|
|
124
114
|
|
|
125
|
-
|
|
115
|
+
**महत्व क्यों है:** साफ मानसिक मॉडल और हाइब्रिड ट्रीज़ में कम एज केस।
|
|
126
116
|
|
|
127
|
-
|
|
117
|
+
---
|
|
128
118
|
|
|
129
|
-
|
|
119
|
+
### 6) प्रदर्शन और लोडिंग व्यवहार
|
|
130
120
|
|
|
131
|
-
|
|
121
|
+
- **next-intl / next-i18next**: आंशिक नियंत्रण **namespaces** और **route-level splits** के माध्यम से; अनुशासन में कमी होने पर अप्रयुक्त स्ट्रिंग्स के बंडलिंग का जोखिम।
|
|
122
|
+
- **Intlayer**: बिल्ड के समय **tree-shakes** करता है और **प्रत्येक शब्दकोश/लोकल के लिए lazy-loads** करता है। अप्रयुक्त सामग्री भेजी नहीं जाती।
|
|
132
123
|
|
|
133
|
-
|
|
124
|
+
**महत्व क्यों:** छोटे बंडल और तेज़ स्टार्टअप, विशेष रूप से मल्टी-लोकल साइट्स पर।
|
|
134
125
|
|
|
135
|
-
|
|
126
|
+
---
|
|
136
127
|
|
|
137
|
-
|
|
128
|
+
### 7) DX, टूलिंग और रखरखाव
|
|
138
129
|
|
|
139
|
-
|
|
130
|
+
- **next-intl / next-i18next**: आप आमतौर पर अनुवाद और संपादकीय वर्कफ़्लोज़ के लिए बाहरी प्लेटफार्मों को जोड़ेंगे।
|
|
131
|
+
- **Intlayer**: एक **मुफ्त विज़ुअल एडिटर** और **वैकल्पिक CMS** (Git-फ्रेंडली या बाहरी) प्रदान करता है। साथ ही **VSCode एक्सटेंशन** सामग्री लेखन के लिए और **AI-सहायता प्राप्त अनुवाद** आपके अपने प्रदाता कुंजी का उपयोग करके।
|
|
140
132
|
|
|
141
|
-
|
|
142
|
-
- मानक `intlayerMiddleware` को गहरी कस्टम पुनर्लेखन की आवश्यकता नहीं होती है।
|
|
133
|
+
**यह क्यों महत्वपूर्ण है:** ऑपरेशंस की लागत कम करता है और डेवलपर्स और कंटेंट लेखकों के बीच लूप को छोटा करता है।
|
|
143
134
|
|
|
144
|
-
|
|
135
|
+
---
|
|
145
136
|
|
|
146
|
-
|
|
147
|
-
- दोनों **सर्वर** और **क्लाइंट** घटकों के लिए स्पष्ट, सीधी उपयोगिता `IntlayerServerProvider` और `IntlayerClientProvider` के माध्यम से।
|
|
137
|
+
## कब किसे चुनें?
|
|
148
138
|
|
|
149
|
-
|
|
150
|
-
|
|
139
|
+
- **next-intl चुनें** यदि आप एक **न्यूनतम** समाधान चाहते हैं, आप केंद्रीकृत कैटलॉग्स के साथ सहज हैं, और आपका ऐप **छोटा से मध्यम आकार** का है।
|
|
140
|
+
- **next-i18next चुनें** यदि आपको **i18next के प्लगइन इकोसिस्टम** की आवश्यकता है (जैसे, प्लगइन्स के माध्यम से उन्नत ICU नियम) और आपकी टीम पहले से i18next जानती है, और आप **अधिक कॉन्फ़िगरेशन** को लचीलापन देने के लिए स्वीकार करते हैं।
|
|
141
|
+
- **Intlayer चुनें** यदि आप **कंपोनेंट-स्कोप्ड कंटेंट**, **सख्त TypeScript**, **बिल्ड-टाइम गारंटियां**, **tree-shaking**, और **बिल्ट-इन** रूटिंग/SEO/एडिटर टूलिंग को महत्व देते हैं - विशेष रूप से **Next.js App Router** और **बड़े, मॉड्यूलर कोडबेस** के लिए।
|
|
151
142
|
|
|
152
143
|
---
|
|
153
144
|
|
|
154
|
-
##
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
1. **स्थापना और कॉन्फ़िगर करें**
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
npm install intlayer next-intlayer
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
```ts
|
|
168
|
-
// intlayer.config.ts
|
|
169
|
-
import { Locales, type IntlayerConfig } from "intlayer";
|
|
170
|
-
|
|
171
|
-
const config: IntlayerConfig = {
|
|
172
|
-
internationalization: {
|
|
173
|
-
locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
|
|
174
|
-
defaultLocale: Locales.ENGLISH,
|
|
175
|
-
},
|
|
176
|
-
};
|
|
177
|
-
export default config;
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
2. **प्लगइन का उपयोग करें**
|
|
181
|
-
|
|
182
|
-
```ts
|
|
183
|
-
// next.config.mjs
|
|
184
|
-
import { withIntlayer } from "next-intlayer/server";
|
|
185
|
-
|
|
186
|
-
/** @type {import('next').NextConfig} */
|
|
187
|
-
const nextConfig = {};
|
|
188
|
-
|
|
189
|
-
export default withIntlayer(nextConfig);
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
3. **मिडलवेयर जोड़ें**
|
|
193
|
-
|
|
194
|
-
```ts
|
|
195
|
-
// src/middleware.ts
|
|
196
|
-
export { intlayerMiddleware as middleware } from "next-intlayer/middleware";
|
|
197
|
-
|
|
198
|
-
export const config = {
|
|
199
|
-
matcher:
|
|
200
|
-
"/((?!api|static|assets|robots|sitemap|sw|service-worker|manifest|.*\\..*|_next).*)",
|
|
201
|
-
};
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
4. **एक स्थानीयकृत लेआउट बनाएँ**
|
|
205
|
-
|
|
206
|
-
```tsx
|
|
207
|
-
// src/app/[locale]/layout.tsx
|
|
208
|
-
import { getHTMLTextDir } from "intlayer";
|
|
209
|
-
import { NextLayoutIntlayer } from "next-intlayer";
|
|
210
|
-
|
|
211
|
-
const LocaleLayout: NextLayoutIntlayer = async ({ children, params }) => {
|
|
212
|
-
const { locale } = params;
|
|
213
|
-
return (
|
|
214
|
-
<html lang={locale} dir={getHTMLTextDir(locale)}>
|
|
215
|
-
<body>{children}</body>
|
|
216
|
-
</html>
|
|
217
|
-
);
|
|
218
|
-
};
|
|
219
|
-
|
|
220
|
-
export { generateStaticParams } from "next-intlayer";
|
|
221
|
-
export default LocaleLayout;
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
5. **सामग्री की घोषणा और उपयोग करें**
|
|
225
|
-
|
|
226
|
-
```tsx
|
|
227
|
-
// src/app/[locale]/page.content.ts
|
|
228
|
-
import { t } from "intlayer";
|
|
229
|
-
|
|
230
|
-
export default {
|
|
231
|
-
key: "page",
|
|
232
|
-
content: {
|
|
233
|
-
getStarted: {
|
|
234
|
-
main: t({
|
|
235
|
-
en: "Get started by editing",
|
|
236
|
-
fr: "Commencez par éditer",
|
|
237
|
-
es: "Comience por editar",
|
|
238
|
-
}),
|
|
239
|
-
pageLink: "src/app/page.tsx",
|
|
240
|
-
},
|
|
241
|
-
},
|
|
242
|
-
};
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
```tsx
|
|
246
|
-
// src/app/[locale]/page.tsx
|
|
247
|
-
import { IntlayerServerProvider } from "next-intlayer/server";
|
|
248
|
-
import { IntlayerClientProvider, useIntlayer } from "next-intlayer";
|
|
249
|
-
|
|
250
|
-
const PageContent = () => {
|
|
251
|
-
const { content } = useIntlayer("page");
|
|
252
|
-
return (
|
|
253
|
-
<>
|
|
254
|
-
<p>{content.getStarted.main}</p>
|
|
255
|
-
<code>{content.getStarted.pageLink}</code>
|
|
256
|
-
</>
|
|
257
|
-
);
|
|
258
|
-
};
|
|
259
|
-
|
|
260
|
-
export default function Page({ params }) {
|
|
261
|
-
return (
|
|
262
|
-
<IntlayerServerProvider locale={params.locale}>
|
|
263
|
-
<IntlayerClientProvider locale={params.locale}>
|
|
264
|
-
<PageContent />
|
|
265
|
-
</IntlayerClientProvider>
|
|
266
|
-
</IntlayerServerProvider>
|
|
267
|
-
);
|
|
268
|
-
}
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
</details>
|
|
145
|
+
## व्यावहारिक माइग्रेशन नोट्स (next-intl / next-i18next → Intlayer)
|
|
146
|
+
|
|
147
|
+
- **प्रत्येक फीचर से शुरू करें**: एक बार में एक रूट या कंपोनेंट को **स्थानीय शब्दकोशों** में स्थानांतरित करें।
|
|
148
|
+
- **पुराने कैटलॉग्स को समानांतर रखें**: माइग्रेशन के दौरान पुल का काम करें; एक बड़ा बदलाव करने से बचें।
|
|
149
|
+
- **सख्त जांचें चालू करें**: बिल्ड-टाइम पर अंतराल जल्दी पता चलने दें।
|
|
150
|
+
- **मिडलवेयर और हेल्पर्स अपनाएं**: साइट-वाइड लोकल डिटेक्शन और SEO टैग्स को मानकीकृत करें।
|
|
151
|
+
- **बंडल्स को मापें**: जब अप्रयुक्त सामग्री हटाई जाती है तो **बंडल आकार में कमी** की उम्मीद करें।
|
|
272
152
|
|
|
273
153
|
---
|
|
274
154
|
|
|
275
155
|
## निष्कर्ष
|
|
276
156
|
|
|
277
|
-
|
|
157
|
+
तीनों लाइब्रेरीज़ मूल स्थानीयकरण में सफल हैं। फर्क यह है कि **आपको कितना काम करना होगा** एक मजबूत, स्केलेबल सेटअप प्राप्त करने के लिए **आधुनिक Next.js** में:
|
|
278
158
|
|
|
279
|
-
-
|
|
280
|
-
-
|
|
281
|
-
- **शक्तिशाली TypeScript** स्वचालित उत्पन्न सुरक्षा के लिए
|
|
282
|
-
- निर्माण के समय **गायब अनुवादों** का प्रबंधन करना
|
|
283
|
-
- उन्नत रूटिंग और मिडलवेयर के साथ **सरल, एकल कॉन्फ़िगरेशन** दृष्टिकोण प्रदान करना
|
|
159
|
+
- **Intlayer** के साथ, **मॉड्यूलर कंटेंट**, **सख्त TS**, **बिल्ड-टाइम सुरक्षा**, **ट्री-शेक्ड बंडल**, और **प्रथम श्रेणी का App Router + SEO टूलिंग** **डिफ़ॉल्ट** हैं, न कि बोझ।
|
|
160
|
+
- यदि आपकी टीम एक मल्टी-लोकल, कंपोनेंट-चालित ऐप में **रखरखाव और गति** को महत्व देती है, तो Intlayer आज सबसे **पूर्ण** अनुभव प्रदान करता है।
|
|
284
161
|
|
|
285
|
-
|
|
162
|
+
अधिक जानकारी के लिए ['Why Intlayer?' दस्तावेज़](https://intlayer.org/doc/why) देखें।
|