@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
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2024-08-11
|
|
3
|
+
updatedAt: 2025-08-23
|
|
4
|
+
title: vue-i18n बनाम Intlayer
|
|
5
|
+
description: Vue/Nuxt ऐप्स में अंतरराष्ट्रीयकरण (i18n) के लिए vue-i18n की तुलना Intlayer से करें
|
|
6
|
+
keywords:
|
|
7
|
+
- vue-i18n
|
|
8
|
+
- Intlayer
|
|
9
|
+
- अंतरराष्ट्रीयकरण
|
|
10
|
+
- i18n
|
|
11
|
+
- ब्लॉग
|
|
12
|
+
- Vue
|
|
13
|
+
- Nuxt
|
|
14
|
+
- जावास्क्रिप्ट
|
|
15
|
+
slugs:
|
|
16
|
+
- blog
|
|
17
|
+
- vue-i18n-vs-intlayer
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# vue-i18n बनाम Intlayer | Vue अंतरराष्ट्रीयकरण (i18n)
|
|
21
|
+
|
|
22
|
+
यह गाइड **Vue 3** (और **Nuxt**) के लिए दो लोकप्रिय i18n विकल्पों की तुलना करता है: **vue-i18n** और **Intlayer**।
|
|
23
|
+
हम आधुनिक Vue टूलिंग (Vite, Composition API) पर ध्यान केंद्रित करते हैं और मूल्यांकन करते हैं:
|
|
24
|
+
|
|
25
|
+
1. **आर्किटेक्चर और सामग्री संगठन**
|
|
26
|
+
2. **TypeScript और सुरक्षा**
|
|
27
|
+
3. **अनुवाद की कमी को संभालना**
|
|
28
|
+
4. **रूटिंग और URL रणनीति**
|
|
29
|
+
5. **प्रदर्शन और लोडिंग व्यवहार**
|
|
30
|
+
6. **डेवलपर अनुभव (DX), टूलिंग और रखरखाव**
|
|
31
|
+
7. **SEO और बड़े प्रोजेक्ट की स्केलेबिलिटी**
|
|
32
|
+
|
|
33
|
+
> **संक्षेप में**: दोनों Vue ऐप्स को स्थानीयकृत कर सकते हैं। यदि आप चाहते हैं **कंपोनेंट-स्कोप्ड कंटेंट**, **सख्त TypeScript टाइप्स**, **बिल्ड-टाइम मिसिंग-की चेक्स**, **ट्री-शेक्ड डिक्शनरीज़**, और **बिल्ट-इन राउटर/SEO हेल्पर्स** के साथ-साथ **विज़ुअल एडिटर और AI अनुवाद**, तो **Intlayer** अधिक पूर्ण और आधुनिक विकल्प है।
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## उच्च-स्तरीय स्थिति
|
|
38
|
+
|
|
39
|
+
- **vue-i18n** - Vue के लिए डि-फैक्टो i18n लाइब्रेरी। लचीला संदेश स्वरूपण (ICU-शैली), स्थानीय संदेशों के लिए SFC `<i18n>` ब्लॉक्स, और एक बड़ा इकोसिस्टम। सुरक्षा और बड़े पैमाने पर रखरखाव ज्यादातर आपकी जिम्मेदारी है।
|
|
40
|
+
- **Intlayer** - Vue/Vite/Nuxt के लिए कंपोनेंट-केंद्रित कंटेंट मॉडल जिसमें **सख्त TS टाइपिंग**, **बिल्ड-टाइम चेक्स**, **ट्री-शेकिंग**, **राउटर और SEO हेल्पर्स**, वैकल्पिक **विज़ुअल एडिटर/CMS**, और **AI-सहायता प्राप्त अनुवाद** शामिल हैं।
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## साइड-बाय-साइड फीचर तुलना (Vue-केंद्रित)
|
|
45
|
+
|
|
46
|
+
| फीचर | **Intlayer** | **vue-i18n** |
|
|
47
|
+
| ------------------------------------------------ | ----------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------ |
|
|
48
|
+
| **कंपोनेंट के पास अनुवाद** | ✅ हाँ, प्रत्येक कंपोनेंट के लिए कंटेंट साथ में रखा गया (जैसे, `MyComp.content.ts`) | ✅ हाँ, SFC `<i18n>` ब्लॉक्स के माध्यम से (वैकल्पिक) |
|
|
49
|
+
| **TypeScript एकीकरण** | ✅ उन्नत, स्वचालित रूप से जनरेट किए गए **सख्त** टाइप्स और की ऑटोकंप्लीशन | ✅ अच्छे टाइपिंग; **सख्त की सुरक्षा के लिए अतिरिक्त सेटअप/अनुशासन आवश्यक** |
|
|
50
|
+
| **अनुवाद की कमी का पता लगाना** | ✅ **बिल्ड-टाइम** चेतावनियाँ/त्रुटियाँ और TS सतह पर दिखाना | ⚠️ रनटाइम फॉलबैक/चेतावनियाँ |
|
|
51
|
+
| **रिच कंटेंट (कंपोनेंट/मार्कडाउन)** | ✅ रिच नोड्स और मार्कडाउन कंटेंट फाइलों के लिए सीधे समर्थन | ⚠️ सीमित (कंपोनेंट्स `<i18n-t>` के माध्यम से, मार्कडाउन बाहरी प्लगइन्स के माध्यम से) |
|
|
52
|
+
| **एआई-संचालित अनुवाद** | ✅ आपके अपने एआई प्रदाता कीज़ का उपयोग करके अंतर्निर्मित वर्कफ़्लोज़ | ❌ अंतर्निर्मित नहीं |
|
|
53
|
+
| **विजुअल एडिटर / CMS** | ✅ मुफ्त विजुअल एडिटर और वैकल्पिक CMS | ❌ अंतर्निर्मित नहीं (बाहरी प्लेटफ़ॉर्म का उपयोग करें) |
|
|
54
|
+
| **स्थानीयकृत रूटिंग** | ✅ Vue Router/Nuxt के लिए स्थानीयकृत पथ, URL, और `hreflang` जनरेट करने में सहायक | ⚠️ मुख्य नहीं (Nuxt i18n या कस्टम Vue Router सेटअप का उपयोग करें) |
|
|
55
|
+
| **डायनामिक रूट जनरेशन** | ✅ हाँ | ❌ प्रदान नहीं किया गया (Nuxt i18n प्रदान करता है) |
|
|
56
|
+
| **बहुवचन और स्वरूपण** | ✅ एनेमरेशन पैटर्न; Intl-आधारित फॉर्मेटर्स | ✅ ICU-शैली संदेश; Intl फॉर्मेटर्स |
|
|
57
|
+
| **सामग्री प्रारूप** | ✅ `.ts`, `.js`, `.json`, `.md`, `.txt` (YAML प्रगति पर) | ✅ `.json`, `.js` (साथ ही SFC `<i18n>` ब्लॉक्स) |
|
|
58
|
+
| **ICU समर्थन** | ⚠️ प्रगति पर | ✅ हाँ |
|
|
59
|
+
| **SEO सहायक (साइटमैप, रोबोट्स, मेटाडेटा)** | ✅ अंतर्निर्मित सहायक (फ्रेमवर्क-स्वतंत्र) | ❌ मुख्य नहीं (Nuxt i18n/समुदाय) |
|
|
60
|
+
| **SSR/SSG** | ✅ Vue SSR और Nuxt के साथ काम करता है; स्थैतिक रेंडरिंग को ब्लॉक नहीं करता | ✅ Vue SSR/Nuxt के साथ काम करता है |
|
|
61
|
+
| **ट्री-शेकिंग (केवल उपयोग की गई सामग्री भेजना)** | ✅ बिल्ड समय पर प्रति-कंपोनेंट | ⚠️ आंशिक; मैनुअल कोड-स्प्लिटिंग/असिंक्रोनस संदेशों की आवश्यकता होती है |
|
|
62
|
+
| **लेज़ी लोडिंग** | ✅ प्रति-भाषा / प्रति-शब्दकोश | ✅ असिंक्रोनस भाषा संदेश समर्थित |
|
|
63
|
+
| **अप्रयुक्त सामग्री को हटाना** | ✅ हाँ (बिल्ड-टाइम) | ❌ अंतर्निर्मित नहीं |
|
|
64
|
+
| **बड़े प्रोजेक्ट की रखरखाव क्षमता** | ✅ मॉड्यूलर, डिज़ाइन-सिस्टम-अनुकूल संरचना को प्रोत्साहित करता है | ✅ संभव है, लेकिन मजबूत फ़ाइल/नेमस्पेस अनुशासन की आवश्यकता होती है |
|
|
65
|
+
| **इकोसिस्टम / समुदाय** | ⚠️ छोटा लेकिन तेजी से बढ़ रहा है | ✅ Vue इकोसिस्टम में बड़ा और परिपक्व |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## गहराई से तुलना
|
|
70
|
+
|
|
71
|
+
### 1) वास्तुकला और विस्तार क्षमता
|
|
72
|
+
|
|
73
|
+
- **vue-i18n**: सामान्य सेटअप प्रत्येक लोकल के लिए **केंद्रीकृत कैटलॉग** का उपयोग करते हैं (वैकल्पिक रूप से फ़ाइलों/नेमस्पेस में विभाजित)। SFC `<i18n>` ब्लॉक्स स्थानीय संदेशों की अनुमति देते हैं लेकिन जैसे-जैसे प्रोजेक्ट बढ़ते हैं, टीमें अक्सर साझा कैटलॉग पर वापस लौटती हैं।
|
|
74
|
+
- **Intlayer**: प्रत्येक घटक के लिए **डिक्शनरीज़** को बढ़ावा देता है जो उस घटक के पास संग्रहीत होती हैं जिसे वे सेवा देते हैं। इससे टीमों के बीच संघर्ष कम होता है, सामग्री खोजने योग्य रहती है, और स्वाभाविक रूप से विचलन/अप्रयुक्त कुंजियों को सीमित करता है।
|
|
75
|
+
|
|
76
|
+
**यह क्यों महत्वपूर्ण है:** बड़े Vue ऐप्स या डिज़ाइन सिस्टम में, **मॉड्यूलर सामग्री** मोनोलिथिक कैटलॉग की तुलना में बेहतर स्केल करती है।
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
### 2) टाइपस्क्रिप्ट और सुरक्षा
|
|
81
|
+
|
|
82
|
+
- **vue-i18n**: अच्छा TS समर्थन; **कठोर कुंजी टाइपिंग** आमतौर पर कस्टम स्कीमाओं/जनरिक्स और सावधान कन्वेंशनों की आवश्यकता होती है।
|
|
83
|
+
- **Intlayer**: आपकी सामग्री से **सख्त प्रकार (strict types)** उत्पन्न करता है, जो **IDE ऑटोकम्प्लीशन** और टाइपो/गायब कुंजियों के लिए **कंपाइल-टाइम त्रुटियाँ** प्रदान करता है।
|
|
84
|
+
|
|
85
|
+
**यह क्यों महत्वपूर्ण है:** मजबूत टाइपिंग रनटाइम से **पहले** समस्याओं को पकड़ लेती है।
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
### 3) गायब अनुवाद प्रबंधन
|
|
90
|
+
|
|
91
|
+
- **vue-i18n**: **रनटाइम** चेतावनियाँ/फॉलबैक (जैसे, फॉलबैक लोकल या कुंजी)।
|
|
92
|
+
- **Intlayer**: **बिल्ड-टाइम** पहचान चेतावनियों/त्रुटियों के साथ, जो लोकल और कुंजियों के बीच होती है।
|
|
93
|
+
|
|
94
|
+
**यह क्यों महत्वपूर्ण है:** बिल्ड-टाइम प्रवर्तन उत्पादन UI को साफ और सुसंगत रखता है।
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
### 4) रूटिंग और URL रणनीति (Vue Router/Nuxt)
|
|
99
|
+
|
|
100
|
+
- **दोनों** स्थानीयकृत रूट्स के साथ काम कर सकते हैं।
|
|
101
|
+
- **Intlayer** स्थानीयकृत पथों को **उत्पन्न करने**, **लोकल उपसर्गों का प्रबंधन करने**, और SEO के लिए **`<link rel="alternate" hreflang>`** जारी करने में सहायक प्रदान करता है। Nuxt के साथ, यह फ्रेमवर्क की रूटिंग को पूरक बनाता है।
|
|
102
|
+
|
|
103
|
+
**यह क्यों महत्वपूर्ण है:** कम कस्टम ग्लू लेयर्स और विभिन्न लोकलों में **साफ-सुथरा SEO**।
|
|
104
|
+
|
|
105
|
+
---
|
|
106
|
+
|
|
107
|
+
### 5) प्रदर्शन और लोडिंग व्यवहार
|
|
108
|
+
|
|
109
|
+
- **vue-i18n**: असिंक्रोनस लोकल मैसेज का समर्थन करता है; ओवर-बंडलिंग से बचना आपकी जिम्मेदारी है (कैटलॉग को सावधानी से विभाजित करें)।
|
|
110
|
+
- **Intlayer**: बिल्ड के दौरान **ट्री-शेकिंग** करता है और **प्रत्येक शब्दकोश/लोकल के लिए लेज़ी-लोडिंग** करता है। अप्रयुक्त सामग्री भेजी नहीं जाती।
|
|
111
|
+
|
|
112
|
+
**यह क्यों महत्वपूर्ण है:** छोटे बंडल और मल्टी-लोकल Vue ऐप्स के लिए तेज़ स्टार्टअप।
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### 6) डेवलपर अनुभव और टूलिंग
|
|
117
|
+
|
|
118
|
+
- **vue-i18n**: परिपक्व दस्तावेज़ और समुदाय; आप आमतौर पर संपादकीय कार्यप्रवाह के लिए **बाहरी स्थानीयकरण प्लेटफ़ॉर्म** पर निर्भर करेंगे।
|
|
119
|
+
- **Intlayer**: एक **मुफ्त विज़ुअल एडिटर**, वैकल्पिक **CMS** (Git-अनुकूल या बाहरी), एक **VSCode एक्सटेंशन**, **CLI/CI** उपयोगिताएँ, और आपके अपने प्रदाता कुंजी का उपयोग करके **AI-सहायता प्राप्त अनुवाद** प्रदान करता है।
|
|
120
|
+
|
|
121
|
+
**यह क्यों महत्वपूर्ण है:** कम संचालन लागत और एक छोटा विकास–सामग्री चक्र।
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### 7) SEO, SSR और SSG
|
|
126
|
+
|
|
127
|
+
- **दोनों** Vue SSR और Nuxt के साथ काम करते हैं।
|
|
128
|
+
- **Intlayer**: **SEO सहायक** (साइटमैप/मेटाडेटा/`hreflang`) जोड़ता है जो फ्रेमवर्क-स्वतंत्र हैं और Vue/Nuxt बिल्ड के साथ अच्छी तरह से काम करते हैं।
|
|
129
|
+
|
|
130
|
+
**यह क्यों महत्वपूर्ण है:** बिना विशेष कनेक्शन के अंतरराष्ट्रीय SEO।
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## क्यों Intlayer? (समस्या और दृष्टिकोण)
|
|
135
|
+
|
|
136
|
+
अधिकांश i18n स्टैक्स (जिसमें **vue-i18n** भी शामिल है) **केंद्रीकृत कैटलॉग** से शुरू होते हैं:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
.
|
|
140
|
+
├── locales
|
|
141
|
+
│ ├── en.json
|
|
142
|
+
│ ├── es.json
|
|
143
|
+
│ └── fr.json
|
|
144
|
+
└── src
|
|
145
|
+
└── components
|
|
146
|
+
└── MyComponent.vue
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
या प्रति-स्थानीय फ़ोल्डरों के साथ:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
.
|
|
153
|
+
├── locales
|
|
154
|
+
│ ├── en
|
|
155
|
+
│ │ ├── footer.json
|
|
156
|
+
│ │ └── navbar.json
|
|
157
|
+
│ ├── fr
|
|
158
|
+
│ │ ├── footer.json
|
|
159
|
+
│ │ └── navbar.json
|
|
160
|
+
│ └── es
|
|
161
|
+
│ ├── footer.json
|
|
162
|
+
│ └── navbar.json
|
|
163
|
+
└── src
|
|
164
|
+
└── components
|
|
165
|
+
└── MyComponent.vue
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
जैसे-जैसे ऐप्स बढ़ते हैं, यह अक्सर विकास को धीमा कर देता है:
|
|
169
|
+
|
|
170
|
+
1. **एक नए कॉम्पोनेंट के लिए** आप रिमोट कैटलॉग बनाते/संपादित करते हैं, नामस्थान जोड़ते हैं, और अनुवाद करते हैं (अक्सर AI टूल्स से मैनुअल कॉपी/पेस्ट के माध्यम से)।
|
|
171
|
+
2. **कॉम्पोनेंट बदलते समय** आप साझा कुंजियाँ ढूंढते हैं, अनुवाद करते हैं, स्थानीय संस्करणों को सिंक में रखते हैं, मृत कुंजियाँ हटाते हैं, और JSON संरचनाओं को संरेखित करते हैं।
|
|
172
|
+
|
|
173
|
+
**Intlayer** सामग्री को **प्रति-कॉम्पोनेंट** के रूप में सीमित करता है और इसे **कोड के बगल में** रखता है, जैसे हम पहले से CSS, स्टोरीज़, टेस्ट और डॉक्यूमेंट्स के साथ करते हैं:
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
.
|
|
177
|
+
└── components
|
|
178
|
+
└── MyComponent
|
|
179
|
+
├── MyComponent.content.ts
|
|
180
|
+
└── MyComponent.vue
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
**सामग्री घोषणा** (प्रति कॉम्पोनेंट):
|
|
184
|
+
|
|
185
|
+
```ts fileName="./components/MyComponent/MyComponent.content.ts"
|
|
186
|
+
import { t, type Dictionary } from "intlayer";
|
|
187
|
+
|
|
188
|
+
const componentExampleContent = {
|
|
189
|
+
key: "component-example",
|
|
190
|
+
content: {
|
|
191
|
+
greeting: t({
|
|
192
|
+
en: "Hello World",
|
|
193
|
+
es: "Hola Mundo",
|
|
194
|
+
fr: "Bonjour le monde",
|
|
195
|
+
}),
|
|
196
|
+
},
|
|
197
|
+
} satisfies Dictionary;
|
|
198
|
+
|
|
199
|
+
export default componentExampleContent;
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
**Vue में उपयोग** (Composition API):
|
|
203
|
+
|
|
204
|
+
```vue fileName="./components/MyComponent/MyComponent.vue"
|
|
205
|
+
<script setup lang="ts">
|
|
206
|
+
import { useIntlayer } from "vue-intlayer"; // Vue एकीकरण
|
|
207
|
+
const { greeting } = useIntlayer("component-example");
|
|
208
|
+
</script>
|
|
209
|
+
|
|
210
|
+
<template>
|
|
211
|
+
<span>{{ greeting }}</span>
|
|
212
|
+
</template>
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
यह दृष्टिकोण:
|
|
216
|
+
|
|
217
|
+
- **विकास को तेज़ करता है** (एक बार घोषित करें; IDE/AI स्वतः पूर्ण करता है)।
|
|
218
|
+
- **कोडबेस को साफ़ करता है** (1 कॉम्पोनेंट = 1 शब्दकोश)।
|
|
219
|
+
- **डुप्लिकेशन/माइग्रेशन को आसान बनाता है** (एक कॉम्पोनेंट और उसकी सामग्री को साथ में कॉपी करें)।
|
|
220
|
+
- **मृत कुंजियों से बचाता है** (अप्रयुक्त कॉम्पोनेंट सामग्री आयात नहीं करते)।
|
|
221
|
+
- **लोडिंग को अनुकूलित करता है** (लेट लोड किए गए कॉम्पोनेंट अपनी सामग्री साथ लाते हैं)।
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Intlayer की अतिरिक्त विशेषताएँ (Vue-संबंधित)
|
|
226
|
+
|
|
227
|
+
- **क्रॉस-फ्रेमवर्क समर्थन**: Vue, Nuxt, Vite, React, Express, और अधिक के साथ काम करता है।
|
|
228
|
+
- **जावास्क्रिप्ट-चालित सामग्री प्रबंधन**: पूर्ण लचीलापन के साथ कोड में घोषित करें।
|
|
229
|
+
- **प्रति-स्थान घोषणा फ़ाइल**: सभी स्थानों को बीजित करें और बाकी उपकरणों को उत्पन्न करने दें।
|
|
230
|
+
- **टाइप-सुरक्षित वातावरण**: ऑटो-कम्प्लीशन के साथ मजबूत TS कॉन्फ़िग।
|
|
231
|
+
- **सरल सामग्री पुनःप्राप्ति**: एकल हुक/कंपोज़ेबल जो एक शब्दकोश के लिए सभी सामग्री प्राप्त करता है।
|
|
232
|
+
- **संगठित कोडबेस**: 1 घटक = उसी फ़ोल्डर में 1 शब्दकोश।
|
|
233
|
+
- **सुधारित रूटिंग**: **Vue Router/Nuxt** के लिए स्थानीयकृत पथ और मेटाडेटा के लिए सहायक।
|
|
234
|
+
- **मार्कडाउन समर्थन**: प्रति स्थान दूरस्थ/स्थानीय मार्कडाउन आयात करें; फ्रंटमैटर को कोड में उजागर करें।
|
|
235
|
+
- **मुफ्त विज़ुअल एडिटर और वैकल्पिक CMS**: बिना भुगतान किए स्थानीयकरण प्लेटफ़ॉर्म के लेखक; Git-अनुकूल सिंक।
|
|
236
|
+
- **ट्री-शेकेबल सामग्री**: केवल उपयोग की गई सामग्री भेजता है; लेज़ी लोडिंग का समर्थन करता है।
|
|
237
|
+
- **स्थैतिक रेंडरिंग के अनुकूल**: SSG को अवरुद्ध नहीं करता।
|
|
238
|
+
- **एआई-संचालित अनुवाद**: अपने स्वयं के एआई प्रदाता/API कुंजी का उपयोग करके 231 भाषाओं में अनुवाद करें।
|
|
239
|
+
- **MCP सर्वर और VSCode एक्सटेंशन**: अपने IDE के अंदर i18n वर्कफ़्लोज़ और लेखन को स्वचालित करें।
|
|
240
|
+
- **इंटरऑपरेबिलिटी**: आवश्यकता पड़ने पर **vue-i18n**, **react-i18next**, और **react-intl** के साथ पुल बनाता है।
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
## कब किसे चुनें?
|
|
245
|
+
|
|
246
|
+
- **vue-i18n चुनें** यदि आप **मानक Vue दृष्टिकोण** चाहते हैं, आप कैटलॉग/नेमस्पेस स्वयं प्रबंधित करने में सहज हैं, और आपका ऐप **छोटा से मध्यम आकार** का है (या आप पहले से Nuxt i18n पर निर्भर हैं)।
|
|
247
|
+
- **Intlayer चुनें** यदि आप **कंपोनेंट-स्कोप्ड कंटेंट**, **सख्त TypeScript**, **बिल्ड-टाइम गारंटियां**, **ट्री-शेकिंग**, और **बिल्ट-इन** रूटिंग/SEO/एडिटर टूलिंग को महत्व देते हैं-विशेष रूप से **बड़े, मॉड्यूलर Vue/Nuxt कोडबेस** के लिए।
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## व्यावहारिक माइग्रेशन नोट्स (vue-i18n → Intlayer)
|
|
252
|
+
|
|
253
|
+
- **प्रत्येक फीचर से शुरू करें**: एक समय में एक रूट/व्यू/कंपोनेंट को स्थानीय Intlayer शब्दकोशों में स्थानांतरित करें।
|
|
254
|
+
- **माइग्रेशन के दौरान ब्रिज बनाए रखें**: vue-i18n कैटलॉग्स को समानांतर रखें; धीरे-धीरे लुकअप्स को बदलें।
|
|
255
|
+
- **सख्त जांच सक्षम करें**: बिल्ड-टाइम पर गायब कुंजियों/स्थानीयताओं का जल्दी पता चलने दें।
|
|
256
|
+
- **राउटर/SEO सहायक अपनाएं**: स्थानीय पहचान और `hreflang` टैग्स को मानकीकृत करें।
|
|
257
|
+
- **बंडल मापें**: अप्रयुक्त सामग्री को हटाने पर **बंडल आकार में कमी** की उम्मीद करें।
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## निष्कर्ष
|
|
262
|
+
|
|
263
|
+
दोनों **vue-i18n** और **Intlayer** Vue ऐप्स को अच्छी तरह स्थानीयकृत करते हैं। अंतर यह है कि एक मजबूत, स्केलेबल सेटअप प्राप्त करने के लिए आपको **स्वयं कितना निर्माण करना होगा**:
|
|
264
|
+
|
|
265
|
+
- **Intlayer** के साथ, **मॉड्यूलर कंटेंट**, **सख्त TS**, **बिल्ड-टाइम सुरक्षा**, **ट्री-शेक्ड बंडल**, और **राउटर/SEO/एडिटर टूलिंग** **बॉक्स से बाहर** मिलते हैं।
|
|
266
|
+
- यदि आपकी टीम एक मल्टी-लोकल, कंपोनेंट-चालित Vue/Nuxt ऐप में **रखरखाव और गति** को प्राथमिकता देती है, तो Intlayer आज सबसे **पूर्ण** अनुभव प्रदान करता है।
|
|
267
|
+
|
|
268
|
+
अधिक जानकारी के लिए ['Why Intlayer?' दस्तावेज़](https://intlayer.org/doc/why) देखें।
|