@intlayer/docs 9.3.0 → 9.3.2
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/README.md +24 -24
- package/blog/ar/rag_powered_documentation_assistant.md +1 -1
- package/blog/pl/rag_powered_documentation_assistant.md +1 -1
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -2
- package/dist/cjs/authors2.cjs +0 -1
- package/dist/cjs/common.cjs.map +1 -1
- package/dist/cjs/generated/blog.entry.cjs +4 -2
- package/dist/cjs/generated/blog.entry.cjs.map +1 -1
- package/dist/cjs/generated/docs.entry.cjs +24 -2
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -2
- package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
- package/dist/cjs/generated/legal.entry.cjs +4 -2
- package/dist/cjs/generated/legal.entry.cjs.map +1 -1
- package/dist/esm/generated/blog.entry.mjs +4 -2
- package/dist/esm/generated/blog.entry.mjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +24 -2
- package/dist/esm/generated/docs.entry.mjs.map +1 -1
- package/dist/esm/generated/frequentQuestions.entry.mjs +4 -2
- package/dist/esm/generated/frequentQuestions.entry.mjs.map +1 -1
- package/dist/esm/generated/legal.entry.mjs +4 -2
- package/dist/esm/generated/legal.entry.mjs.map +1 -1
- package/dist/types/generated/docs.entry.d.ts +1 -0
- package/dist/types/generated/docs.entry.d.ts.map +1 -1
- package/docs/ar/configuration.md +10 -10
- package/docs/ar/eslint.md +336 -0
- package/docs/ar/interest_of_intlayer.md +24 -22
- package/docs/ar/intlayer_with_express.md +1 -1
- package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ar/intlayer_with_svelte_kit.md +1 -1
- package/docs/ar/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ar/intlayer_with_tanstack.md +5 -3
- package/docs/ar/lsp.md +114 -175
- package/docs/ar/readme.md +25 -25
- package/docs/bn/configuration.md +10 -10
- package/docs/bn/eslint.md +336 -0
- package/docs/bn/interest_of_intlayer.md +24 -22
- package/docs/cs/configuration.md +10 -10
- package/docs/cs/eslint.md +336 -0
- package/docs/cs/interest_of_intlayer.md +24 -22
- package/docs/de/configuration.md +10 -10
- package/docs/de/eslint.md +336 -0
- package/docs/de/interest_of_intlayer.md +24 -22
- package/docs/de/intlayer_with_svelte_kit.md +1 -1
- package/docs/de/intlayer_with_tanstack+solid.md +5 -3
- package/docs/de/intlayer_with_tanstack.md +5 -3
- package/docs/de/lsp.md +111 -172
- package/docs/de/readme.md +24 -24
- package/docs/en/configuration.md +10 -10
- package/docs/en/eslint.md +336 -0
- package/docs/en/interest_of_intlayer.md +24 -22
- package/docs/en/intlayer_with_svelte_kit.md +1 -1
- package/docs/en/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en/intlayer_with_tanstack.md +5 -3
- package/docs/en/lsp.md +109 -170
- package/docs/en/readme.md +24 -24
- package/docs/en-GB/configuration.md +10 -10
- package/docs/en-GB/eslint.md +336 -0
- package/docs/en-GB/interest_of_intlayer.md +24 -22
- package/docs/en-GB/intlayer_with_create_react_app.md +32 -35
- package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/en-GB/intlayer_with_svelte_kit.md +1 -1
- package/docs/en-GB/intlayer_with_tanstack+solid.md +5 -3
- package/docs/en-GB/intlayer_with_tanstack.md +5 -3
- package/docs/en-GB/lsp.md +109 -170
- package/docs/en-GB/readme.md +24 -24
- package/docs/es/configuration.md +10 -10
- package/docs/es/eslint.md +336 -0
- package/docs/es/interest_of_intlayer.md +24 -22
- package/docs/es/intlayer_with_svelte_kit.md +1 -1
- package/docs/es/intlayer_with_tanstack+solid.md +5 -3
- package/docs/es/intlayer_with_tanstack.md +5 -3
- package/docs/es/lsp.md +114 -175
- package/docs/es/readme.md +24 -24
- package/docs/fr/configuration.md +10 -10
- package/docs/fr/eslint.md +336 -0
- package/docs/fr/interest_of_intlayer.md +24 -22
- package/docs/fr/intlayer_with_svelte_kit.md +1 -1
- package/docs/fr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/fr/intlayer_with_tanstack.md +5 -3
- package/docs/fr/lsp.md +110 -171
- package/docs/fr/readme.md +24 -24
- package/docs/hi/configuration.md +10 -10
- package/docs/hi/eslint.md +336 -0
- package/docs/hi/interest_of_intlayer.md +24 -22
- package/docs/hi/intlayer_with_express.md +1 -1
- package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/hi/intlayer_with_svelte_kit.md +1 -1
- package/docs/hi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/hi/intlayer_with_tanstack.md +5 -3
- package/docs/hi/intlayer_with_vite+svelte.md +2 -2
- package/docs/hi/lsp.md +113 -174
- package/docs/hi/readme.md +24 -24
- package/docs/id/configuration.md +10 -10
- package/docs/id/eslint.md +336 -0
- package/docs/id/interest_of_intlayer.md +24 -22
- package/docs/id/intlayer_with_svelte_kit.md +1 -1
- package/docs/id/intlayer_with_tanstack+solid.md +5 -3
- package/docs/id/intlayer_with_tanstack.md +5 -3
- package/docs/id/lsp.md +113 -174
- package/docs/id/readme.md +24 -24
- package/docs/it/configuration.md +10 -10
- package/docs/it/eslint.md +336 -0
- package/docs/it/interest_of_intlayer.md +24 -22
- package/docs/it/intlayer_with_svelte_kit.md +1 -1
- package/docs/it/intlayer_with_tanstack+solid.md +5 -3
- package/docs/it/intlayer_with_tanstack.md +5 -3
- package/docs/it/lsp.md +115 -176
- package/docs/it/readme.md +24 -24
- package/docs/ja/configuration.md +10 -10
- package/docs/ja/eslint.md +336 -0
- package/docs/ja/interest_of_intlayer.md +24 -22
- package/docs/ja/intlayer_with_react_router_v7.md +1 -146
- package/docs/ja/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ja/intlayer_with_tanstack.md +5 -3
- package/docs/ja/intlayer_with_vite+react.md +5 -1
- package/docs/ja/lsp.md +113 -174
- package/docs/ja/readme.md +24 -24
- package/docs/ko/configuration.md +10 -10
- package/docs/ko/eslint.md +336 -0
- package/docs/ko/interest_of_intlayer.md +24 -22
- package/docs/ko/intlayer_with_lynx+react.md +4 -0
- package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
- package/docs/ko/intlayer_with_storybook.md +5 -5
- package/docs/ko/intlayer_with_svelte_kit.md +1 -1
- package/docs/ko/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ko/intlayer_with_tanstack.md +5 -3
- package/docs/ko/lsp.md +112 -173
- package/docs/ko/readme.md +24 -24
- package/docs/nl/configuration.md +10 -10
- package/docs/nl/eslint.md +336 -0
- package/docs/nl/interest_of_intlayer.md +24 -22
- package/docs/pl/configuration.md +10 -10
- package/docs/pl/eslint.md +336 -0
- package/docs/pl/interest_of_intlayer.md +4 -2
- package/docs/pl/intlayer_with_astro.md +1 -114
- package/docs/pl/intlayer_with_svelte_kit.md +1 -1
- package/docs/pl/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pl/intlayer_with_tanstack.md +5 -3
- package/docs/pl/lsp.md +115 -176
- package/docs/pl/migration_from_i18next_to_intlayer.md +4 -0
- package/docs/pl/migration_from_next-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_next-intl_to_intlayer.md +11 -5
- package/docs/pl/migration_from_nuxtjs_i18n_to_intlayer.md +8 -4
- package/docs/pl/migration_from_react-i18next_to_intlayer.md +8 -4
- package/docs/pl/migration_from_vue-i18n_to_intlayer.md +4 -0
- package/docs/pl/readme.md +24 -24
- package/docs/pt/configuration.md +10 -10
- package/docs/pt/eslint.md +336 -0
- package/docs/pt/interest_of_intlayer.md +24 -22
- package/docs/pt/intlayer_with_astro.md +1 -114
- package/docs/pt/intlayer_with_svelte_kit.md +1 -1
- package/docs/pt/intlayer_with_tanstack+solid.md +5 -3
- package/docs/pt/intlayer_with_tanstack.md +5 -3
- package/docs/pt/lsp.md +113 -174
- package/docs/pt/readme.md +24 -24
- package/docs/ru/configuration.md +10 -10
- package/docs/ru/eslint.md +336 -0
- package/docs/ru/interest_of_intlayer.md +24 -22
- package/docs/ru/intlayer_with_nextjs_14.md +1 -1
- package/docs/ru/intlayer_with_nextjs_15.md +1 -1
- package/docs/ru/intlayer_with_svelte_kit.md +1 -1
- package/docs/ru/intlayer_with_tanstack+solid.md +5 -3
- package/docs/ru/intlayer_with_tanstack.md +5 -3
- package/docs/ru/lsp.md +112 -173
- package/docs/ru/readme.md +24 -24
- package/docs/tr/configuration.md +10 -10
- package/docs/tr/eslint.md +336 -0
- package/docs/tr/interest_of_intlayer.md +24 -22
- package/docs/tr/intlayer_with_svelte_kit.md +1 -1
- package/docs/tr/intlayer_with_tanstack+solid.md +5 -3
- package/docs/tr/intlayer_with_tanstack.md +5 -3
- package/docs/tr/lsp.md +113 -174
- package/docs/tr/readme.md +24 -24
- package/docs/uk/configuration.md +10 -10
- package/docs/uk/eslint.md +336 -0
- package/docs/uk/interest_of_intlayer.md +4 -2
- package/docs/uk/intlayer_with_svelte_kit.md +1 -1
- package/docs/uk/intlayer_with_tanstack+solid.md +5 -3
- package/docs/uk/intlayer_with_tanstack.md +5 -3
- package/docs/uk/lsp.md +113 -174
- package/docs/uk/packages/angular-intlayer/exports.md +2 -2
- package/docs/uk/per_locale_file.md +1 -1
- package/docs/uk/readme.md +24 -24
- package/docs/ur/configuration.md +10 -10
- package/docs/ur/eslint.md +336 -0
- package/docs/ur/interest_of_intlayer.md +24 -22
- package/docs/vi/configuration.md +10 -10
- package/docs/vi/eslint.md +336 -0
- package/docs/vi/interest_of_intlayer.md +24 -22
- package/docs/vi/intlayer_with_svelte_kit.md +1 -1
- package/docs/vi/intlayer_with_tanstack+solid.md +5 -3
- package/docs/vi/intlayer_with_tanstack.md +5 -3
- package/docs/vi/lsp.md +115 -176
- package/docs/vi/readme.md +24 -24
- package/docs/zh/configuration.md +10 -10
- package/docs/zh/eslint.md +336 -0
- package/docs/zh/interest_of_intlayer.md +24 -22
- package/docs/zh/intlayer_with_create_react_app.md +4 -0
- package/docs/zh/intlayer_with_lynx+react.md +4 -0
- package/docs/zh/intlayer_with_nextjs_14.md +0 -2
- package/docs/zh/intlayer_with_nextjs_15.md +0 -2
- package/docs/zh/intlayer_with_nextjs_page_router.md +0 -2
- package/docs/zh/intlayer_with_nuxt.md +1 -1
- package/docs/zh/intlayer_with_react_router_v7.md +4 -0
- package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +4 -0
- package/docs/zh/intlayer_with_solid_start.md +1 -1
- package/docs/zh/intlayer_with_svelte_kit.md +1 -1
- package/docs/zh/intlayer_with_tanstack+solid.md +5 -3
- package/docs/zh/intlayer_with_tanstack.md +5 -3
- package/docs/zh/intlayer_with_vite+vue.md +0 -2
- package/docs/zh/lsp.md +113 -174
- package/docs/zh/readme.md +21 -21
- package/docs/zh-TW/eslint.md +336 -0
- package/docs/zh-TW/interest_of_intlayer.md +24 -22
- package/package.json +6 -6
- package/src/generated/docs.entry.ts +20 -0
package/docs/hi/configuration.md
CHANGED
|
@@ -404,7 +404,7 @@ const config: IntlayerConfig = {
|
|
|
404
404
|
ai: {
|
|
405
405
|
/**
|
|
406
406
|
* उपयोग किया गया AI प्रदाता।
|
|
407
|
-
* विकल्प: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio'
|
|
407
|
+
* विकल्प: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai', 'lmstudio', 'moonshotai'
|
|
408
408
|
* डिफ़ॉल्ट: 'openai'
|
|
409
409
|
*/
|
|
410
410
|
provider: "openai",
|
|
@@ -1025,15 +1025,15 @@ Intlayer अधिकतम लचीलेपन के लिए कई AI प
|
|
|
1025
1025
|
- **Together.ai**
|
|
1026
1026
|
- **LM Studio**
|
|
1027
1027
|
|
|
1028
|
-
| फ़ील्ड | विवरण | टाइप
|
|
1029
|
-
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1030
|
-
| `provider` | Intlayer AI सुविधाओं के लिए उपयोग किया जाने वाला प्रदाता। | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | `undefined` | `'anthropic'` | विभिन्न प्रदाताओं को विभिन्न API की की आवश्यकता होती है और उनकी कीमतें अलग होती हैं। |
|
|
1031
|
-
| `model` | AI सुविधाओं के लिए उपयोग किया जाने वाला मॉडल। | `string`
|
|
1032
|
-
| `temperature` | AI प्रतिक्रियाओं की यादृच्छिकता (randomness) को नियंत्रित करता है। | `number`
|
|
1033
|
-
| `apiKey` | चुने गए प्रदाता के लिए आपकी API की। | `string`
|
|
1034
|
-
| `applicationContext` | AI को अधिक सटीक अनुवाद उत्पन्न करने में मदद करने के लिए आपके एप्लिकेशन के बारे में अतिरिक्त संदर्भ (डोमेन, लक्षित दर्शक, टोन, शब्दावली)। | `string`
|
|
1035
|
-
| `baseURL` | AI API के लिए बेस URL। | `string`
|
|
1036
|
-
| `dataSerialization` | AI सुविधाओं के लिए डेटा सीरियलाइज़ेशन प्रारूप। | `'json'` | <br/> `'toon'`
|
|
1028
|
+
| फ़ील्ड | विवरण | टाइप | डिफ़ॉल्ट | उदाहरण | टिप्पणी |
|
|
1029
|
+
| -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1030
|
+
| `provider` | Intlayer AI सुविधाओं के लिए उपयोग किया जाने वाला प्रदाता। | `'openai'` | <br/> `'anthropic'` | <br/> `'mistral'` | <br/> `'deepseek'` | <br/> `'gemini'` | <br/> `'ollama'` | <br/> `'openrouter'` | <br/> `'alibaba'` | <br/> `'fireworks'` | <br/> `'groq'` | <br/> `'huggingface'` | <br/> `'bedrock'` | <br/> `'googleaistudio'` | <br/> `'googlevertex'` | <br/> `'togetherai'` | <br/> `'lmstudio'` | <br/> `'moonshotai'` | `undefined` | `'anthropic'` | विभिन्न प्रदाताओं को विभिन्न API की की आवश्यकता होती है और उनकी कीमतें अलग होती हैं। |
|
|
1031
|
+
| `model` | AI सुविधाओं के लिए उपयोग किया जाने वाला मॉडल। | `string` | कोई नहीं | `'gpt-4o-2024-11-20'` | विशिष्ट मॉडल प्रदाता पर निर्भर करता है। |
|
|
1032
|
+
| `temperature` | AI प्रतिक्रियाओं की यादृच्छिकता (randomness) को नियंत्रित करता है। | `number` | कोई नहीं | `0.1` | उच्च तापमान = अधिक रचनात्मक और कम पूर्वानुमेय। |
|
|
1033
|
+
| `apiKey` | चुने गए प्रदाता के लिए आपकी API की। | `string` | कोई नहीं | `process.env.OPENAI_API_KEY` | इसे गुप्त रखा जाना चाहिए; पर्यावरण चरों का उपयोग करें। |
|
|
1034
|
+
| `applicationContext` | AI को अधिक सटीक अनुवाद उत्पन्न करने में मदद करने के लिए आपके एप्लिकेशन के बारे में अतिरिक्त संदर्भ (डोमेन, लक्षित दर्शक, टोन, शब्दावली)। | `string` | कोई नहीं | `'मेरा अपना एप्लिकेशन संदर्भ'` | नियम जोड़ने के लिए उपयोग किया जा सकता है (जैसे: `"आपको URL को रूपांतरित नहीं करना चाहिए"` )। |
|
|
1035
|
+
| `baseURL` | AI API के लिए बेस URL। | `string` | कोई नहीं | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | स्थानीय या कस्टम AI API एंडपॉइंट की ओर इशारा कर सकता है। |
|
|
1036
|
+
| `dataSerialization` | AI सुविधाओं के लिए डेटा सीरियलाइज़ेशन प्रारूप। | `'json'` | <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: डिफ़ॉल्ट, विश्वसनीय; अधिक टोकन का उपयोग करता है।<br/>• `'toon'`: कम टोकन, कम स्थिर।<br/>• अतिरिक्त मापदंड संदर्भ के रूप में मॉडल को पास किए जाते हैं (तर्क प्रयास आदि)। |
|
|
1037
1037
|
|
|
1038
1038
|
---
|
|
1039
1039
|
|
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
---
|
|
2
|
+
createdAt: 2026-08-12
|
|
3
|
+
updatedAt: 2026-08-12
|
|
4
|
+
title: ESLint प्लगइन | Intlayer के लिए लिंट नियम
|
|
5
|
+
description: eslint-plugin-intlayer के साथ हार्डकोडेड स्ट्रिंग्स, ऐसे डायनामिक कॉल्स जिन्हें Intlayer कंपाइलर ऑप्टिमाइज़ नहीं कर सकता, और अप्रयुक्त शब्दकोश सामग्री का पता लगाएं। React, Vue, Svelte, Angular और Astro में ESLint और oxlint के साथ काम करता है।
|
|
6
|
+
keywords:
|
|
7
|
+
- Intlayer
|
|
8
|
+
- ESLint
|
|
9
|
+
- oxlint
|
|
10
|
+
- लिंटिंग
|
|
11
|
+
- i18n
|
|
12
|
+
- अंतर्राष्ट्रीयकरण
|
|
13
|
+
- no-raw-text
|
|
14
|
+
- हार्डकोडेड स्ट्रिंग्स
|
|
15
|
+
- अप्रयुक्त अनुवाद
|
|
16
|
+
- अप्रयुक्त सामग्री
|
|
17
|
+
- React
|
|
18
|
+
- Vue
|
|
19
|
+
- Svelte
|
|
20
|
+
- Angular
|
|
21
|
+
slugs:
|
|
22
|
+
- doc
|
|
23
|
+
- eslint
|
|
24
|
+
history:
|
|
25
|
+
- version: 9.3.1
|
|
26
|
+
date: 2026-08-12
|
|
27
|
+
changes: "प्रारंभिक इतिहास"
|
|
28
|
+
author: aymericzip
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# ESLint x OXLint प्लगइन
|
|
32
|
+
|
|
33
|
+
`eslint-plugin-intlayer` उन i18n गलतियों को पकड़ता है जिन्हें TypeScript नहीं पकड़ सकता:
|
|
34
|
+
|
|
35
|
+
1. **हार्डकोडेड टेक्स्ट** जो कभी डिक्शनरी में नहीं गया।
|
|
36
|
+
2. **डायनामिक कॉल्स** जो टाइप-चेक पास करते हैं और रन होते हैं, लेकिन Intlayer कंपाइलर उन्हें ऑप्टिमाइज़ नहीं कर सकता।
|
|
37
|
+
3. **अप्रयुक्त सामग्री (Dead content)** — डिक्शनरी और फ़ील्ड्स जिन्हें प्रोजेक्ट में कहीं भी नहीं पढ़ा जाता (वैकल्पिक/ऑप्ट-इन)।
|
|
38
|
+
|
|
39
|
+
अज्ञात डिक्शनरी कीज, अज्ञात फ़ील्ड पाथ और अनुपलब्ध लोकेल्स पहले से ही कंपाइल एरर हैं, इसलिए प्लगइन उन्हें दोबारा रिपोर्ट नहीं करता है।
|
|
40
|
+
|
|
41
|
+
## इंस्टॉलेशन
|
|
42
|
+
|
|
43
|
+
```bash packageManager="npm"
|
|
44
|
+
npm install --save-dev eslint-plugin-intlayer
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
```bash packageManager="pnpm"
|
|
48
|
+
pnpm add --save-dev eslint-plugin-intlayer
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```bash packageManager="yarn"
|
|
52
|
+
yarn add --dev eslint-plugin-intlayer
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
ESLint 9 या बाद के संस्करण (flat config) की आवश्यकता है।
|
|
56
|
+
|
|
57
|
+
## उपयोग
|
|
58
|
+
|
|
59
|
+
यह प्लगइन ESLint और [oxlint](https://oxc.rs) दोनों में समान नियमों और विकल्पों के साथ चलता है।
|
|
60
|
+
|
|
61
|
+
<Tabs defaultTab="eslint">
|
|
62
|
+
<Tab label="ESLint" value="eslint">
|
|
63
|
+
|
|
64
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
65
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
66
|
+
|
|
67
|
+
export default [...intlayer.configs.recommended];
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
या नियमों को एक-एक करके सक्षम करें:
|
|
71
|
+
|
|
72
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
73
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
74
|
+
|
|
75
|
+
export default [
|
|
76
|
+
{
|
|
77
|
+
plugins: { intlayer },
|
|
78
|
+
rules: {
|
|
79
|
+
"intlayer/no-raw-text": "warn",
|
|
80
|
+
"intlayer/static-dictionary-key": "error",
|
|
81
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
82
|
+
"intlayer/enforce-adapter-import": "warn",
|
|
83
|
+
"intlayer/no-unused-content": "warn",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
];
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
</Tab>
|
|
90
|
+
<Tab label="oxlint" value="oxlint">
|
|
91
|
+
|
|
92
|
+
```json fileName=".oxlintrc.json"
|
|
93
|
+
{
|
|
94
|
+
"jsPlugins": ["eslint-plugin-intlayer"],
|
|
95
|
+
"rules": {
|
|
96
|
+
"intlayer/no-raw-text": "warn",
|
|
97
|
+
"intlayer/static-dictionary-key": "error",
|
|
98
|
+
"intlayer/no-dynamic-field-access": "error",
|
|
99
|
+
"intlayer/enforce-adapter-import": "warn"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
दो सावधानियां: oxlint का JS प्लगइन समर्थन अभी भी अल्फा चरण में है, और oxlint कस्टम पार्सर्स का समर्थन नहीं करता है — इसलिए `.vue`, `.svelte`, `.astro` और Angular टेम्प्लेट्स को वहां लिंट नहीं किया जाता है। अपनी JS/TS/JSX फ़ाइलों पर oxlint चलाएं और बाकी के लिए ESLint बनाए रखें।
|
|
105
|
+
|
|
106
|
+
`no-unused-content` को ऊपर जानबूझकर छोड़ दिया गया है: इसे नियम संदर्भ से कार्यशील निर्देशिका और जांची गई फ़ाइल पथ की आवश्यकता होती है, जिसकी गारंटी अल्फा JS प्लगइन ब्रिज नहीं देता है। इसे ESLint के तहत चलाएं।
|
|
107
|
+
|
|
108
|
+
</Tab>
|
|
109
|
+
</Tabs>
|
|
110
|
+
|
|
111
|
+
### कॉन्फ़िग्स
|
|
112
|
+
|
|
113
|
+
| कॉन्फ़िग | `no-raw-text` | `static-dictionary-key` | `no-dynamic-field-access` | `enforce-adapter-import` | `no-unused-content` |
|
|
114
|
+
| --------------- | ------------------------- | ----------------------- | ------------------------- | ------------------------ | ------------------- |
|
|
115
|
+
| `recommended` | warn | error | error | off | off |
|
|
116
|
+
| `strict` | error (+ गैर-JSX लिटरल्स) | error | error | error | off |
|
|
117
|
+
| `contract-only` | off | error | error | off | off |
|
|
118
|
+
|
|
119
|
+
`recommended` जानबूझकर `no-raw-text` को `warn` पर रखता है: इसे किसी मौजूदा कोडबेस पर लागू करने से सभी अनुवादित न किए गए स्ट्रिंग्स एक साथ सामने आ जाते हैं, जिससे पहले दिन ही आपका बिल्ड टूटना नहीं चाहिए।
|
|
120
|
+
|
|
121
|
+
`enforce-adapter-import` डिफ़ॉल्ट रूप से बंद है — यदि आप चाहें तो इसे स्पष्ट रूप से सक्षम करें।
|
|
122
|
+
|
|
123
|
+
`no-unused-content` हर कॉन्फ़िग में बंद है, जिसमें `strict` भी शामिल है। यह एकमात्र ऐसा नियम है जो आपके Intlayer कॉन्फ़िगरेशन को पढ़ता है और डिस्क से आपकी सोर्स फ़ाइलों को स्कैन करता है, इसलिए इसे चालू करना एक विचारशील निर्णय होना चाहिए।
|
|
124
|
+
|
|
125
|
+
## नियम
|
|
126
|
+
|
|
127
|
+
### `no-raw-text`
|
|
128
|
+
|
|
129
|
+
उपयोगकर्ता-उन्मुख ऐसे टेक्स्ट की रिपोर्ट करता है जो डिक्शनरी में घोषित नहीं है। यह `intlayer extract` के समान डिटेक्शन का उपयोग करता है, इसलिए ब्रांड नाम, CSS क्लास और तकनीकी पहचानकर्ताओं को अनदेखा कर दिया जाता है।
|
|
130
|
+
|
|
131
|
+
```jsx
|
|
132
|
+
// ✗ रिपोर्ट किया गया
|
|
133
|
+
<h1>Welcome to our documentation</h1>
|
|
134
|
+
<input placeholder="Enter your email address" />
|
|
135
|
+
|
|
136
|
+
// ✓ सही
|
|
137
|
+
const { title } = useIntlayer("home");
|
|
138
|
+
<h1>{title}</h1>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
सामग्री घोषणा फ़ाइलें (`*.content.ts`, …) छोड़ दी जाती हैं।
|
|
142
|
+
|
|
143
|
+
एक बार में पूरी फ़ाइल को ठीक करने के लिए, `npx intlayer extract` चलाएं और कंपाइलर को स्ट्रिंग्स को डिक्शनरी में स्थानांतरित करने दें।
|
|
144
|
+
|
|
145
|
+
**विकल्प**
|
|
146
|
+
|
|
147
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
148
|
+
{
|
|
149
|
+
"intlayer/no-raw-text": [
|
|
150
|
+
"warn",
|
|
151
|
+
{
|
|
152
|
+
// वे विशेषताएं जिनका मान उपयोगकर्ता-उन्मुख टेक्स्ट है।
|
|
153
|
+
// डिफ़ॉल्ट: title, placeholder, alt, aria-label, label
|
|
154
|
+
attributes: ["title", "placeholder", "alt", "aria-label", "label"],
|
|
155
|
+
|
|
156
|
+
// वे तत्व जिनकी सामग्री कभी भी उपयोगकर्ता-उन्मुख टेक्स्ट नहीं होती है।
|
|
157
|
+
// डिफ़ॉल्ट: code, pre, script, style
|
|
158
|
+
ignoreElements: ["code", "pre", "script", "style"],
|
|
159
|
+
|
|
160
|
+
// कभी रिपोर्ट न किए जाने वाले टेक्स्ट के लिए रेगुलर एक्सप्रेशन।
|
|
161
|
+
ignorePatterns: ["^Powered by"],
|
|
162
|
+
|
|
163
|
+
// मार्कअप के बाहर स्ट्रिंग लिटरल्स की भी रिपोर्ट करें। डिफ़ॉल्ट: false
|
|
164
|
+
includeStringLiterals: false,
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### `static-dictionary-key`
|
|
171
|
+
|
|
172
|
+
आवश्यकता है कि डिक्शनरी कुंजी एक स्ट्रिंग लिटरल होनी चाहिए।
|
|
173
|
+
|
|
174
|
+
कंपाइलर केवल तभी डिक्शनरी को प्री-लोड कर सकता है जब वह कॉल साइट पर सीधे कुंजी पढ़ सके। एक गणना की गई कुंजी के साथ यह चुपचाप अनुकूलन को छोड़ देता है और इसके बजाय हर डिक्शनरी को बंडल कर देता है।
|
|
175
|
+
|
|
176
|
+
```typescript
|
|
177
|
+
// ✗ रिपोर्ट किया गया
|
|
178
|
+
useIntlayer(dictionaryKey);
|
|
179
|
+
useIntlayer(`home-${suffix}`);
|
|
180
|
+
getTranslations({ namespace: page });
|
|
181
|
+
|
|
182
|
+
// ✗ वेरिएबल अभी भी लिटरल नहीं है
|
|
183
|
+
const key = "home";
|
|
184
|
+
useIntlayer(key);
|
|
185
|
+
|
|
186
|
+
// ✓ सही
|
|
187
|
+
useIntlayer("home");
|
|
188
|
+
getTranslations({ namespace: "home" });
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
यह `useIntlayer`, `getIntlayer` और प्रत्येक संगतता एडॉप्टर (`useTranslation`, `useTranslations`, `formatMessage`, `<FormattedMessage id>`, `<Trans i18nKey>`, …) पर लागू होता है।
|
|
192
|
+
|
|
193
|
+
### `no-dynamic-field-access`
|
|
194
|
+
|
|
195
|
+
आवश्यकता है कि डिक्शनरी से आप जो फ़ील्ड पढ़ते हैं वह स्थैतिक रूप से ज्ञात हो।
|
|
196
|
+
|
|
197
|
+
कंपाइलर उन फ़ील्ड्स को हटा देता है जिनका उपयोग वह नहीं देखता है। एक कंप्यूटेड एक्सेस इसके लिए अदृश्य होता है, इसलिए रनटाइम पर यह `undefined` लौटा सकता है।
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// ✗ रिपोर्ट किया गया
|
|
201
|
+
const content = useIntlayer("home");
|
|
202
|
+
content[fieldName];
|
|
203
|
+
|
|
204
|
+
const t = useTranslations("home");
|
|
205
|
+
t(messageKey);
|
|
206
|
+
|
|
207
|
+
// ✓ सही
|
|
208
|
+
content.title;
|
|
209
|
+
content["title"];
|
|
210
|
+
content.items[0];
|
|
211
|
+
t("hero.title");
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
### `enforce-adapter-import`
|
|
215
|
+
|
|
216
|
+
मूल पैकेज के बजाय `@intlayer/*` संगतता एडॉप्टर को प्राथमिकता देता है। मूल पैकेज केवल तभी Intlayer पर रीज़ॉल्व होता है जब बंडलर उपनाम कॉन्फ़िगर किया गया हो; एडॉप्टर हमेशा करता है। `--fix` के साथ ऑटोफ़िक्सेबल।
|
|
217
|
+
|
|
218
|
+
```typescript
|
|
219
|
+
// ✗ रिपोर्ट किया गया
|
|
220
|
+
import { useTranslation } from "react-i18next";
|
|
221
|
+
import { getTranslations } from "next-intl/server";
|
|
222
|
+
|
|
223
|
+
// ✓ सही
|
|
224
|
+
import { useTranslation } from "@intlayer/react-i18next";
|
|
225
|
+
import { getTranslations } from "@intlayer/next-intl/server";
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### `no-unused-content`
|
|
229
|
+
|
|
230
|
+
**डिफ़ॉल्ट रूप से बंद।** ऐसी सामग्री की रिपोर्ट करता है जिसे आपके प्रोजेक्ट में कुछ भी नहीं पढ़ता है, साथ ही एक से अधिक स्थानों पर घोषित डिक्शनरी कीज की रिपोर्ट करता है।
|
|
231
|
+
|
|
232
|
+
```typescript fileName="src/home.content.ts"
|
|
233
|
+
export default {
|
|
234
|
+
key: "home", // ✗ तब रिपोर्ट किया जाता है जब प्रोजेक्ट में कोई कॉलर "home" का अनुरोध नहीं करता है
|
|
235
|
+
content: {
|
|
236
|
+
title: t({ hi: "शीर्षक", en: "Title" }),
|
|
237
|
+
|
|
238
|
+
// ✗ तब रिपोर्ट किया जाता है जब कुछ भी `hero` को नहीं पढ़ता है
|
|
239
|
+
hero: {
|
|
240
|
+
subtitle: t({ hi: "उपशीर्षक", en: "Subtitle" }),
|
|
241
|
+
},
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
अन्य नियमों के विपरीत, यह नियम केवल सामने की फ़ाइल से निर्णय नहीं ले सकता — एक फ़ील्ड केवल पूरे प्रोजेक्ट के सापेक्ष ही अप्रयुक्त होती है। लिंट रन की पहली सामग्री घोषणा पर यह आपके Intlayer कॉन्फ़िगरेशन को लोड करता है, उन सोर्स फ़ाइलों को स्कैन करता है जिन्हें वह कॉन्फ़िगरेशन घोषित करता है (`build.traversePattern`, `compiler.transformPattern`) और उसी उपयोग विश्लेषक को चलाता है जो `@intlayer/lsp` और VS Code एक्सटेंशन में "अप्रयुक्त" स्ट्राइकथ्रू को शक्ति प्रदान करता है। परिणाम को `cacheTtl` मिलीसेकंड के लिए कैश किया जाता है, इसलिए स्कैन प्रत्येक फ़ाइल के बजाय प्रति रन एक बार होता है।
|
|
247
|
+
|
|
248
|
+
**विकल्प**
|
|
249
|
+
|
|
250
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
251
|
+
{
|
|
252
|
+
"intlayer/no-unused-content": [
|
|
253
|
+
"warn",
|
|
254
|
+
{
|
|
255
|
+
// उन डिक्शनरी कीज की रिपोर्ट करें जिन्हें कोई संदर्भित नहीं करता है। डिफ़ॉल्ट: true
|
|
256
|
+
reportUnusedDictionaries: true,
|
|
257
|
+
|
|
258
|
+
// उन कंटेंट फ़ील्ड्स की रिपोर्ट करें जिन्हें कुछ भी नहीं पढ़ता है। डिफ़ॉल्ट: true
|
|
259
|
+
reportUnusedFields: true,
|
|
260
|
+
|
|
261
|
+
// एक से अधिक स्थानों पर घोषित कीज की रिपोर्ट करें। डिफ़ॉल्ट: true
|
|
262
|
+
reportDuplicateKeys: true,
|
|
263
|
+
|
|
264
|
+
// कभी रिपोर्ट न किए जाने वाले फ़ील्ड पाथ के लिए रेगुलर एक्सप्रेशन।
|
|
265
|
+
ignoreFields: ["^meta"],
|
|
266
|
+
|
|
267
|
+
// प्रोजेक्ट रूट जहां से स्कैन शुरू होता है। डिफ़ॉल्ट: ESLint की कार्यशील निर्देशिका
|
|
268
|
+
baseDir: process.cwd(),
|
|
269
|
+
|
|
270
|
+
// एक प्रोजेक्ट स्कैन का पुन: उपयोग कितने समय तक किया जाता है (ms में)। डिफ़ॉल्ट: 30000
|
|
271
|
+
cacheTtl: 30000,
|
|
272
|
+
},
|
|
273
|
+
],
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
जब आप लंबे समय तक चलने वाले एडिटर सर्वर से लिंट करते हैं और चाहते हैं कि आपके संपादन जल्दी दिखाई दें, तो `cacheTtl` कम करें; जब एक ही लिंट रन मोनोरेपो में कई Intlayer प्रोजेक्ट्स में फैला हो तो `baseDir` सेट करें।
|
|
278
|
+
|
|
279
|
+
> **यह गलत रिपोर्ट से बचने को प्राथमिकता देता है।** यहां एक झूठी सकारात्मक रिपोर्ट एक अनुवाद को हटा सकती है, इसलिए जब डिक्शनरी का उपयोग ऐसे तरीके से किया जाता है जिसे विश्लेषण ट्रैक नहीं कर सकता है, तो कुछ भी रिपोर्ट नहीं किया जाता है: पूरा कंटेंट ऑब्जेक्ट पास करना, इससे बाउंड अनुवाद फ़ंक्शन (`const t = useTranslations("home")`), सीधे आयात के माध्यम से पहुंचा गया डिक्लेरेशन (`useDictionary(myDictionary)`), किसी अन्य डिक्शनरी से `nest()`, या स्प्रेड ऑपरेटर द्वारा गैर-विस्तृत बनाई गई फ़ील्ड सूची। सिंगल-फ़ाइल घटक (`.vue`, `.svelte`, `.astro`) उनके द्वारा उल्लिखित डिक्शनरी के प्रत्येक फ़ील्ड का उपयोग करते हुए गिने जाते हैं, क्योंकि उनके स्क्रिप्ट ब्लॉक यहां पार्स नहीं किए जाते हैं।
|
|
280
|
+
|
|
281
|
+
`reportDuplicateKeys` उन अनमर्ज्ड डिक्शनरीज़ को पढ़ता है जिन्हें बिल्ड `.intlayer/` के तहत लिखता है, इसलिए यह तब तक शांत रहता है जब तक कि प्रोजेक्ट कम से कम एक बार बिल्ड न हो जाए। एक कुंजी साझा करने वाले दो डिक्लेरेशन मर्ज किए जाते हैं, जो एक वैध पैटर्न है — रिपोर्ट इसलिए मौजूद है क्योंकि दोनों पक्षों पर परिभाषित फ़ील्ड चुपचाप दो मानों में से केवल एक को रखता है।
|
|
282
|
+
|
|
283
|
+
विश्लेषक `@intlayer/lsp` से लोड होता है, जो ESM के रूप में वितरित होता है। इसलिए नियम को एक ऐसे Node संस्करण की आवश्यकता होती है जो ES मॉड्यूल को `require()` कर सके — Node 20.19+ या 22.12+। इससे पुराने किसी भी संस्करण पर यह लिंट रन को विफल करने के बजाय कुछ भी रिपोर्ट नहीं करता है।
|
|
284
|
+
|
|
285
|
+
## फ्रेमवर्क
|
|
286
|
+
|
|
287
|
+
प्रत्येक नियम सभी Intlayer एकीकरणों में काम करता है, जिसमें Vue, Svelte और Angular टेम्प्लेट्स शामिल हैं। आपको केवल ESLint को यह बताना होगा कि प्रत्येक फ़ाइल प्रकार को कौन सा पार्सर पढ़ता है।
|
|
288
|
+
|
|
289
|
+
| फ्रेमवर्क | फ़ाइलें | पार्सर |
|
|
290
|
+
| ------------------------- | ----------------- | --------------------------------- |
|
|
291
|
+
| React, Preact, Solid, Lit | `.jsx` `.tsx` | `typescript-eslint` |
|
|
292
|
+
| Next.js | `.jsx` `.tsx` | `typescript-eslint` |
|
|
293
|
+
| Vue, Nuxt | `.vue` | `vue-eslint-parser` |
|
|
294
|
+
| Svelte, SvelteKit | `.svelte` | `svelte-eslint-parser` |
|
|
295
|
+
| Angular | `.ts` | `typescript-eslint` |
|
|
296
|
+
| Angular टेम्प्लेट्स | `.component.html` | `@angular-eslint/template-parser` |
|
|
297
|
+
| Astro | `.astro` | `astro-eslint-parser` |
|
|
298
|
+
|
|
299
|
+
```javascript fileName="eslint.config.mjs" codeFormat="esm"
|
|
300
|
+
import intlayer from "eslint-plugin-intlayer";
|
|
301
|
+
import tseslint from "typescript-eslint";
|
|
302
|
+
import vueParser from "vue-eslint-parser";
|
|
303
|
+
import svelteParser from "svelte-eslint-parser";
|
|
304
|
+
import angularTemplateParser from "@angular-eslint/template-parser";
|
|
305
|
+
|
|
306
|
+
export default [
|
|
307
|
+
...intlayer.configs.recommended,
|
|
308
|
+
|
|
309
|
+
{
|
|
310
|
+
files: ["**/*.{ts,tsx,jsx}"],
|
|
311
|
+
languageOptions: { parser: tseslint.parser },
|
|
312
|
+
},
|
|
313
|
+
{
|
|
314
|
+
files: ["**/*.vue"],
|
|
315
|
+
languageOptions: {
|
|
316
|
+
parser: vueParser,
|
|
317
|
+
parserOptions: { parser: tseslint.parser },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
files: ["**/*.svelte"],
|
|
322
|
+
languageOptions: {
|
|
323
|
+
parser: svelteParser,
|
|
324
|
+
parserOptions: { parser: tseslint.parser },
|
|
325
|
+
},
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
files: ["**/*.component.html"],
|
|
329
|
+
languageOptions: { parser: angularTemplateParser },
|
|
330
|
+
},
|
|
331
|
+
];
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
केवल वही पार्सर स्थापित करें जिनकी आपके प्रोजेक्ट को आवश्यकता है।
|
|
335
|
+
|
|
336
|
+
> **ज्ञात सीमा।** Vue और Angular टेम्प्लेट्स में, `{{ content[key] }}` जैसा एक्सप्रेशन `no-dynamic-field-access` द्वारा जाँचा नहीं जाता है। स्क्रिप्ट ब्लॉक में लिखे गए डायनामिक रीड सामान्य रूप से पकड़े जाते हैं।
|
|
@@ -192,7 +192,7 @@ export const ComponentExample = () => {
|
|
|
192
192
|
यह approach आपको निम्नलिखित की अनुमति देता है:
|
|
193
193
|
|
|
194
194
|
1. **Development की speed को बढ़ाएं**
|
|
195
|
-
- `.content.{
|
|
195
|
+
- `.content.{ts|js|mjs|cjs|json|tsx|jsx|md|mdx|yaml|yml}` files को VSCode extension का उपयोग करके बनाया जा सकता है
|
|
196
196
|
- आपके IDE में Autocompletion AI tools (जैसे GitHub Copilot) आपकी content को declare करने में मदद कर सकते हैं, copy/paste को कम कर सकते हैं
|
|
197
197
|
|
|
198
198
|
2. **अपने codebase को साफ़ करें**
|
|
@@ -216,27 +216,27 @@ export const ComponentExample = () => {
|
|
|
216
216
|
|
|
217
217
|
## Intlayer की अतिरिक्त विशेषताएं
|
|
218
218
|
|
|
219
|
-
| विशेषता | विवरण
|
|
220
|
-
| ------------------------------------------------------------------------------------------------------------------------- |
|
|
221
|
-
|  | **Cross-Frameworks Support**<br><br>Intlayer सभी प्रमुख frameworks और libraries के साथ संगत है, जिसमें Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, और बहुत कुछ शामिल है।
|
|
222
|
-
|  | **JavaScript-Powered Content Management**<br><br>अपनी content को कुशलतापूर्वक define और manage करने के लिए JavaScript की flexibility का लाभ उठाएं। <br><br> - [Content declaration](https://intlayer.org/doc/concept/content)
|
|
223
|
-
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compiler**<br><br>Intlayer Compiler स्वचालित रूप से components से content निकालता है और dictionary files generate करता है।<br><br> - [Compiler](https://intlayer.org/doc/compiler)
|
|
224
|
-
|  | **Per-Locale Content Declaration File**<br><br>Auto generation से पहले एक बार अपनी content declare करके अपने development को तेज़ करें।<br><br> - [Per-Locale Content Declaration File](https://intlayer.org/doc/concept/per-locale-file)
|
|
225
|
-
|  | **Type-Safe Environment**<br><br>अपनी content definitions और code को error-free रखने के लिए TypeScript का लाभ उठाएं, साथ ही IDE autocompletion का भी लाभ लें।<br><br> - [TypeScript configuration](https://intlayer.org/doc/environment/vite-and-react#configure-typescript)
|
|
226
|
-
|  | **Simplified Setup**<br><br>न्यूनतम configuration के साथ तेजी से शुरुआत करें। Internationalization, routing, AI, build, और content handling के लिए settings को आसानी से adjust करें। <br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs)
|
|
227
|
-
|  | **Simplified Content Retrieval**<br><br>प्रत्येक content के लिए अपने `t` function को call करने की आवश्यकता नहीं। एक single hook का उपयोग करके सीधे अपनी सभी content retrieve करें।<br><br> - [React integration](https://intlayer.org/doc/environment/create-react-app)
|
|
228
|
-
|  | **Consistent Server Component Implementation**<br><br>Next.js server components के लिए perfectly suited, client और server दोनों components के लिए एक ही implementation का उपयोग करें, अपने `t` function को प्रत्येक server component में pass करने की आवश्यकता नहीं। <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code)
|
|
229
|
-
|  | **Organized Codebase**<br><br>अपने codebase को अधिक organized रखें: 1 component = 1 dictionary एक ही folder में। उनके respective components के करीब translations maintainability और clarity को बढ़ाते हैं। <br><br> - [How Intlayer works](https://intlayer.org/doc/concept/how-works-intlayer)
|
|
230
|
-
|  | **Enhanced Routing**<br><br>App routing का पूर्ण support, complex application structures को seamlessly adapt करता है, Next.js, React, Vite, Vue.js, आदि के लिए।<br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs)
|
|
231
|
-
|  | **Markdown Support**<br><br>Locale files और remote Markdown को import और interpret करें multilingual content जैसे privacy policies, documentation, आदि के लिए। Markdown metadata को interpret करें और अपने code में accessible बनाएं।<br><br> - [Content files](https://intlayer.org/doc/concept/content/file)
|
|
232
|
-
|  | **Free Visual Editor & CMS**<br><br>एक free visual editor और CMS content writers के लिए उपलब्ध हैं, localization platform की आवश्यकता को हटाते हुए। अपनी content को Git का उपयोग करके synchronized रखें, या इसे totally या partially externalize करें CMS के साथ।<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms)
|
|
233
|
-
|  | **Tree-shakable Content**<br><br>Tree-shakable content, final bundle के size को reduce करता है। प्रत्येक component के लिए content load करता है, अपने bundle से किसी भी unused content को exclude करता है। Lazy loading को support करता है app loading efficiency को enhance करने के लिए। <br><br> - [App build optimization](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization)
|
|
234
|
-
|  | **Static Rendering**<br><br>Static Rendering को block नहीं करता। <br><br> - [Next.js integration](https://intlayer.org/doc/environment/nextjs)
|
|
235
|
-
|  | **AI-Powered Translation**<br><br>Intlayer के advanced AI-powered translation tools का उपयोग करके अपनी website को 231 languages में transform करें, अपने own AI provider/API key का उपयोग करके। <br><br> - [CI/CD integration](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Auto fill](https://intlayer.org/doc/concept/auto-fill)
|
|
236
|
-
|  | **MCP Server Integration**<br><br>एक MCP (Model Context Protocol) server provide करता है IDE automation के लिए, अपने development environment में directly seamless content management और i18n workflows को enable करता है। <br><br> - [MCP Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/mcp_server.md)
|
|
237
|
-
|  | **VSCode Extension**<br><br>Intlayer एक VSCode extension provide करता है आपकी content और translations को manage करने में मदद करने के लिए, अपने dictionaries को build करना, अपनी content को translate करना, और बहुत कुछ। <br><br> - [VSCode Extension](https://intlayer.org/doc/vs-code-extension)
|
|
238
|
-
|  | **Interoperability**<br><br>react-i18next, next-i18next, next-intl, और react-intl के साथ interoperability allow करता है। <br><br> - [Intlayer and react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer and next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer and next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next)
|
|
239
|
-
| Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI-friendly audit)
|
|
219
|
+
| विशेषता | विवरण |
|
|
220
|
+
| ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
221
|
+
|  | **Cross-Frameworks Support**<br><br>Intlayer सभी प्रमुख frameworks और libraries के साथ संगत है, जिसमें Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, और बहुत कुछ शामिल है। |
|
|
222
|
+
|  | **JavaScript-Powered Content Management**<br><br>अपनी content को कुशलतापूर्वक define और manage करने के लिए JavaScript की flexibility का लाभ उठाएं। <br><br> - [Content declaration](https://intlayer.org/doc/concept/content) |
|
|
223
|
+
| <img src="https://github.com/aymericzip/intlayer/blob/main/docs/assets/compiler.jpg?raw=true" alt="Feature" width="700"> | **Compiler**<br><br>Intlayer Compiler स्वचालित रूप से components से content निकालता है और dictionary files generate करता है।<br><br> - [Compiler](https://intlayer.org/doc/compiler) |
|
|
224
|
+
|  | **Per-Locale Content Declaration File**<br><br>Auto generation से पहले एक बार अपनी content declare करके अपने development को तेज़ करें।<br><br> - [Per-Locale Content Declaration File](https://intlayer.org/doc/concept/per-locale-file) |
|
|
225
|
+
|  | **Type-Safe Environment**<br><br>अपनी content definitions और code को error-free रखने के लिए TypeScript का लाभ उठाएं, साथ ही IDE autocompletion का भी लाभ लें।<br><br> - [TypeScript configuration](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
|
|
226
|
+
|  | **Simplified Setup**<br><br>न्यूनतम configuration के साथ तेजी से शुरुआत करें। Internationalization, routing, AI, build, और content handling के लिए settings को आसानी से adjust करें। <br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs) |
|
|
227
|
+
|  | **Simplified Content Retrieval**<br><br>प्रत्येक content के लिए अपने `t` function को call करने की आवश्यकता नहीं। एक single hook का उपयोग करके सीधे अपनी सभी content retrieve करें।<br><br> - [React integration](https://intlayer.org/doc/environment/create-react-app) |
|
|
228
|
+
|  | **Consistent Server Component Implementation**<br><br>Next.js server components के लिए perfectly suited, client और server दोनों components के लिए एक ही implementation का उपयोग करें, अपने `t` function को प्रत्येक server component में pass करने की आवश्यकता नहीं। <br><br> - [Server Components](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
|
|
229
|
+
|  | **Organized Codebase**<br><br>अपने codebase को अधिक organized रखें: 1 component = 1 dictionary एक ही folder में। उनके respective components के करीब translations maintainability और clarity को बढ़ाते हैं। <br><br> - [How Intlayer works](https://intlayer.org/doc/concept/how-works-intlayer) |
|
|
230
|
+
|  | **Enhanced Routing**<br><br>App routing का पूर्ण support, complex application structures को seamlessly adapt करता है, Next.js, React, Vite, Vue.js, आदि के लिए।<br><br> - [Explore Next.js integration](https://intlayer.org/doc/environment/nextjs) |
|
|
231
|
+
|  | **Markdown Support**<br><br>Locale files और remote Markdown को import और interpret करें multilingual content जैसे privacy policies, documentation, आदि के लिए। Markdown metadata को interpret करें और अपने code में accessible बनाएं।<br><br> - [Content files](https://intlayer.org/doc/concept/content/file) |
|
|
232
|
+
|  | **Free Visual Editor & CMS**<br><br>एक free visual editor और CMS content writers के लिए उपलब्ध हैं, localization platform की आवश्यकता को हटाते हुए। अपनी content को Git का उपयोग करके synchronized रखें, या इसे totally या partially externalize करें CMS के साथ।<br><br> - [Intlayer Editor](https://intlayer.org/doc/concept/editor) <br> - [Intlayer CMS](https://intlayer.org/doc/concept/cms) |
|
|
233
|
+
|  | **Tree-shakable Content**<br><br>Tree-shakable content, final bundle के size को reduce करता है। प्रत्येक component के लिए content load करता है, अपने bundle से किसी भी unused content को exclude करता है। Lazy loading को support करता है app loading efficiency को enhance करने के लिए। <br><br> - [App build optimization](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
|
|
234
|
+
|  | **Static Rendering**<br><br>Static Rendering को block नहीं करता। <br><br> - [Next.js integration](https://intlayer.org/doc/environment/nextjs) |
|
|
235
|
+
|  | **AI-Powered Translation**<br><br>Intlayer के advanced AI-powered translation tools का उपयोग करके अपनी website को 231 languages में transform करें, अपने own AI provider/API key का उपयोग करके। <br><br> - [CI/CD integration](https://intlayer.org/doc/concept/ci-cd) <br> - [Intlayer CLI](https://intlayer.org/doc/concept/cli) <br> - [Auto fill](https://intlayer.org/doc/concept/auto-fill) |
|
|
236
|
+
|  | **MCP Server Integration**<br><br>एक MCP (Model Context Protocol) server provide करता है IDE automation के लिए, अपने development environment में directly seamless content management और i18n workflows को enable करता है। <br><br> - [MCP Server](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/mcp_server.md) |
|
|
237
|
+
|  | **VSCode Extension**<br><br>Intlayer एक VSCode extension provide करता है आपकी content और translations को manage करने में मदद करने के लिए, अपने dictionaries को build करना, अपनी content को translate करना, और बहुत कुछ। <br><br> - [VSCode Extension](https://intlayer.org/doc/vs-code-extension) |
|
|
238
|
+
|  | **Interoperability**<br><br>react-i18next, next-i18next, next-intl, और react-intl के साथ interoperability allow करता है। <br><br> - [Intlayer and react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer and next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer and next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) <br> - [Intlayer compat adapters](https://intlayer.org/doc/compatibility) |
|
|
239
|
+
| Testing Missing Translations (CLI/CI) | ✅ CLI: npx intlayer content test (CI-friendly audit) |
|
|
240
240
|
|
|
241
241
|
## Intlayer की अन्य समाधानों के साथ तुलना
|
|
242
242
|
|
|
@@ -275,3 +275,5 @@ GitHub सितारे किसी प्रोजेक्ट की लो
|
|
|
275
275
|
`intlayer` आपके `react-intl`, `react-i18next`, `next-intl`, `next-i18next`, और `vue-i18n` नेमस्पेस को प्रबंधित करने में भी मदद कर सकता है।
|
|
276
276
|
|
|
277
277
|
`intlayer` का उपयोग करके, आप अपनी पसंदीदा i18n लाइब्रेरी के प्रारूप में अपनी सामग्री घोषित कर सकते हैं, और intlayer आपकी पसंद के स्थान पर आपके नेमस्पेस उत्पन्न करेगा (उदाहरण: `/messages/{{locale}}/{{namespace}}.json)।
|
|
278
|
+
|
|
279
|
+
यदि आप अपनी वर्तमान i18n लाइब्रेरी का API उपयोग करना जारी रखना चाहते हैं, तो `intlayer` **compat adapters** भी प्रदान करता है: ऐसे पैकेज जो `react-i18next`, `next-intl`, `react-intl`, `vue-i18n` और अन्य के बिल्कुल समान API उपलब्ध कराते हैं, लेकिन सामग्री Intlayer डिक्शनरी से आती है। इससे आप अपना कोड दोबारा लिखे बिना क्रमिक रूप से माइग्रेट कर सकते हैं। देखें [Compat Adapters दस्तावेज़ीकरण](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/compat/index.md)।
|
|
@@ -277,7 +277,7 @@ export default config;
|
|
|
277
277
|
- अनुवादित सामग्री के **इनलाइन पूर्वावलोकन**।
|
|
278
278
|
- अनुवादों को आसानी से बनाने और अपडेट करने के लिए **त्वरित क्रियाएं**।
|
|
279
279
|
|
|
280
|
-
एक्सटेंशन का उपयोग कैसे करें, इसके लिए देखें [Intlayer VS Code एक्सटेंशन दस्तावेज़](https://intlayer.org/doc/
|
|
280
|
+
एक्सटेंशन का उपयोग कैसे करें, इसके लिए देखें [Intlayer VS Code एक्सटेंशन दस्तावेज़](https://intlayer.org/hi/doc/vs-code-extension)।
|
|
281
281
|
|
|
282
282
|
### Git कॉन्फ़िगरेशन
|
|
283
283
|
|
|
@@ -387,7 +387,7 @@ export const getLocale = (event: RequestEvent): Locale => {
|
|
|
387
387
|
};
|
|
388
388
|
```
|
|
389
389
|
|
|
390
|
-
> `getLocaleFromStorage` आपके कॉन्फ़िगरेशन के अनुसार हेडर या कुकी से locale की जांच करेगा। अधिक जानकारी के लिए देखें [Configuration](https://intlayer.org/doc/configuration)।
|
|
390
|
+
> `getLocaleFromStorage` आपके कॉन्फ़िगरेशन के अनुसार हेडर या कुकी से locale की जांच करेगा। अधिक जानकारी के लिए देखें [Configuration](https://intlayer.org/doc/concept/configuration)।
|
|
391
391
|
|
|
392
392
|
> `localeDetector` फ़ंक्शन `Accept-Language` हेडर को प्रोसेस करेगा और सबसे उपयुक्त मैच लौटाएगा।
|
|
393
393
|
|
|
@@ -236,19 +236,21 @@ import {
|
|
|
236
236
|
HeadContent,
|
|
237
237
|
Scripts,
|
|
238
238
|
createRootRouteWithContext,
|
|
239
|
+
getRouteApi,
|
|
239
240
|
} from "@tanstack/solid-router";
|
|
240
241
|
import { HydrationScript } from "solid-js/web";
|
|
241
242
|
import { Suspense, type ParentComponent } from "solid-js";
|
|
242
243
|
import { IntlayerProvider } from "solid-intlayer";
|
|
243
244
|
import { defaultLocale, getHTMLTextDir } from "intlayer";
|
|
244
|
-
|
|
245
|
+
|
|
246
|
+
const localeRoute = getRouteApi("/{-$locale}");
|
|
245
247
|
|
|
246
248
|
export const Route = createRootRouteWithContext()({
|
|
247
249
|
shellComponent: RootComponent,
|
|
248
250
|
});
|
|
249
251
|
|
|
250
252
|
const RootComponent: ParentComponent = (props) => {
|
|
251
|
-
const params =
|
|
253
|
+
const params = localeRoute.useParams();
|
|
252
254
|
const locale = params()?.locale ?? defaultLocale;
|
|
253
255
|
|
|
254
256
|
return (
|
|
@@ -533,7 +535,7 @@ export default LocaleSwitcher;
|
|
|
533
535
|
|
|
534
536
|
```tsx fileName="src/routes/__root.tsx"
|
|
535
537
|
const RootComponent: ParentComponent = (props) => {
|
|
536
|
-
const params =
|
|
538
|
+
const params = localeRoute.useParams();
|
|
537
539
|
const locale = params()?.locale ?? defaultLocale;
|
|
538
540
|
|
|
539
541
|
return (
|