@intlayer/docs 7.1.9 → 7.2.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.
Files changed (44) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/generated/docs.entry.cjs +19 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +19 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +1 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/intlayer_with_svelte_kit.md +730 -0
  9. package/docs/ar/intlayer_with_vite+svelte.md +288 -104
  10. package/docs/de/intlayer_with_svelte_kit.md +730 -0
  11. package/docs/de/intlayer_with_vite+svelte.md +302 -101
  12. package/docs/en/intlayer_with_svelte_kit.md +560 -0
  13. package/docs/en/intlayer_with_vite+svelte.md +22 -6
  14. package/docs/en/introduction.md +2 -0
  15. package/docs/en-GB/intlayer_with_svelte_kit.md +730 -0
  16. package/docs/en-GB/intlayer_with_vite+svelte.md +262 -84
  17. package/docs/es/intlayer_with_svelte_kit.md +730 -0
  18. package/docs/es/intlayer_with_vite+svelte.md +300 -107
  19. package/docs/fr/intlayer_with_svelte_kit.md +762 -0
  20. package/docs/fr/intlayer_with_vite+svelte.md +297 -101
  21. package/docs/hi/intlayer_with_svelte_kit.md +730 -0
  22. package/docs/hi/intlayer_with_vite+svelte.md +298 -108
  23. package/docs/id/intlayer_with_svelte_kit.md +730 -0
  24. package/docs/id/intlayer_with_vite+svelte.md +277 -99
  25. package/docs/it/intlayer_with_svelte_kit.md +762 -0
  26. package/docs/it/intlayer_with_vite+svelte.md +275 -99
  27. package/docs/ja/intlayer_with_svelte_kit.md +730 -0
  28. package/docs/ja/intlayer_with_vite+svelte.md +295 -110
  29. package/docs/ko/intlayer_with_svelte_kit.md +730 -0
  30. package/docs/ko/intlayer_with_vite+svelte.md +286 -199
  31. package/docs/pl/intlayer_with_svelte_kit.md +732 -0
  32. package/docs/pl/intlayer_with_vite+svelte.md +273 -101
  33. package/docs/pt/intlayer_with_svelte_kit.md +764 -0
  34. package/docs/pt/intlayer_with_vite+svelte.md +290 -96
  35. package/docs/ru/intlayer_with_svelte_kit.md +730 -0
  36. package/docs/ru/intlayer_with_vite+svelte.md +275 -99
  37. package/docs/tr/intlayer_with_svelte_kit.md +730 -0
  38. package/docs/tr/intlayer_with_vite+svelte.md +297 -119
  39. package/docs/vi/intlayer_with_svelte_kit.md +730 -0
  40. package/docs/vi/intlayer_with_vite+svelte.md +275 -102
  41. package/docs/zh/intlayer_with_svelte_kit.md +730 -0
  42. package/docs/zh/intlayer_with_vite+svelte.md +309 -107
  43. package/package.json +6 -6
  44. package/src/generated/docs.entry.ts +19 -0
@@ -0,0 +1,730 @@
1
+ ---
2
+ createdAt: 2025-11-20
3
+ updatedAt: 2025-11-20
4
+ title: अपने SvelteKit ऐप का अनुवाद कैसे करें – i18n गाइड 2025
5
+ description: जानें कि अपनी SvelteKit वेबसाइट को बहुभाषी कैसे बनाएं। Server-Side Rendering (SSR) का उपयोग करके इसे अंतरराष्ट्रीयकृत (i18n) और अनुवादित करने के लिए दस्तावेज़ का पालन करें।
6
+ keywords:
7
+ - अंतरराष्ट्रीयकरण
8
+ - दस्तावेज़ीकरण
9
+ - Intlayer
10
+ - SvelteKit
11
+ - JavaScript
12
+ - SSR
13
+ slugs:
14
+ - doc
15
+ - environment
16
+ - sveltekit
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-sveltekit-template
18
+ history:
19
+ - version: 7.1.10
20
+ date: 2025-11-20
21
+ changes: प्रारंभिक इतिहास
22
+ ---
23
+
24
+ # Intlayer का उपयोग करके अपनी SvelteKit वेबसाइट का अनुवाद करें | अंतरराष्ट्रीयकरण (i18n)
25
+
26
+ ## सामग्री सूची
27
+
28
+ <TOC/>
29
+
30
+ ## Intlayer क्या है?
31
+
32
+ **Intlayer** एक अभिनव, ओपन-सोर्स अंतरराष्ट्रीयकरण (i18n) लाइब्रेरी है जिसे आधुनिक वेब एप्लिकेशन में बहुभाषी समर्थन को सरल बनाने के लिए डिज़ाइन किया गया है। यह **SvelteKit** के Server-Side Rendering (SSR) क्षमताओं के साथ सहजता से काम करता है।
33
+
34
+ Intlayer के साथ, आप कर सकते हैं:
35
+
36
+ - **घोषणात्मक शब्दकोशों का उपयोग करके अनुवादों का आसानी से प्रबंधन करें** जो कि कंपोनेंट स्तर पर होते हैं।
37
+ - **मेटाडेटा, रूट्स, और कंटेंट को गतिशील रूप से स्थानीयकृत करें।**
38
+ - **स्वचालित रूप से उत्पन्न प्रकारों के साथ TypeScript समर्थन सुनिश्चित करें।**
39
+ - **SEO-अनुकूल अंतरराष्ट्रीयकरण के लिए SvelteKit के SSR का लाभ उठाएं।**
40
+
41
+ ---
42
+
43
+ ## SvelteKit एप्लिकेशन में Intlayer सेटअप करने के लिए चरण-दर-चरण मार्गदर्शिका
44
+
45
+ शुरू करने के लिए, एक नया SvelteKit प्रोजेक्ट बनाएं। यहाँ अंतिम संरचना है जिसे हम बनाएंगे:
46
+
47
+ ```bash
48
+ .
49
+ ├── intlayer.config.ts
50
+ ├── package.json
51
+ ├── src
52
+ │ ├── app.d.ts
53
+ │   ├── app.html
54
+ │   ├── hooks.server.ts
55
+ │   ├── lib
56
+ │   │   ├── getLocale.ts
57
+ │   │   ├── LocaleSwitcher.svelte
58
+ │   │   └── LocalizedLink.svelte
59
+ │   ├── params
60
+ │   │   └── locale.ts
61
+ │   └── routes
62
+ │   ├── [[locale=locale]]
63
+ │   │   ├── +layout.svelte
64
+ │   │   ├── +layout.ts
65
+ │   │   ├── +page.svelte
66
+ │   │   ├── +page.ts
67
+ │   │   ├── about
68
+ │   │   │   ├── +page.svelte
69
+ │   │   │   ├── +page.ts
70
+ │   │   │   └── page.content.ts
71
+ │   │   ├── Counter.content.ts
72
+ │   │   ├── Counter.svelte
73
+ │   │   ├── Header.content.ts
74
+ │   │   ├── Header.svelte
75
+ │   │   ├── home.content.ts
76
+ │   │   └── layout.content.ts
77
+ │   ├── +layout.svelte
78
+ │   └── layout.css
79
+ ├── static
80
+ │   ├── favicon.svg
81
+ │   └── robots.txt
82
+ ├── svelte.config.js
83
+ ├── tsconfig.json
84
+ └── vite.config.ts
85
+ ```
86
+
87
+ ### चरण 1: Dependencies इंस्टॉल करें
88
+
89
+ npm का उपयोग करके आवश्यक पैकेज इंस्टॉल करें:
90
+
91
+ ```bash packageManager="npm"
92
+ npm install intlayer svelte-intlayer
93
+ npm install vite-intlayer --save-dev
94
+ ```
95
+
96
+ ```bash packageManager="pnpm"
97
+ pnpm add intlayer svelte-intlayer
98
+ pnpm add vite-intlayer --save-dev
99
+ ```
100
+
101
+ ```bash packageManager="yarn"
102
+ yarn add intlayer svelte-intlayer
103
+ yarn add vite-intlayer --save-dev
104
+ ```
105
+
106
+ ```bash packageManager="bun"
107
+ bun add intlayer svelte-intlayer
108
+ bun add vite-intlayer --save-dev
109
+ ```
110
+
111
+ - **intlayer**: मुख्य i18n पैकेज।
112
+ - **svelte-intlayer**: Svelte/SvelteKit के लिए context providers और stores प्रदान करता है।
113
+ - **vite-intlayer**: Vite प्लगइन जो content declarations को build प्रक्रिया के साथ एकीकृत करता है।
114
+
115
+ ### चरण 2: अपने प्रोजेक्ट का कॉन्फ़िगरेशन
116
+
117
+ अपने प्रोजेक्ट रूट में एक config फ़ाइल बनाएं:
118
+
119
+ ```typescript fileName="intlayer.config.ts"
120
+ import { Locales, type IntlayerConfig } from "intlayer";
121
+
122
+ const config: IntlayerConfig = {
123
+ internationalization: {
124
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
125
+ defaultLocale: Locales.ENGLISH,
126
+ },
127
+ };
128
+
129
+ export default config;
130
+ ```
131
+
132
+ ### चरण 3: अपने Vite कॉन्फ़िगरेशन में Intlayer को एकीकृत करें
133
+
134
+ अपने `vite.config.ts` को अपडेट करें ताकि इसमें Intlayer प्लगइन शामिल हो। यह प्लगइन आपकी content फ़ाइलों के transpilation को संभालता है।
135
+
136
+ ```typescript fileName="vite.config.ts"
137
+ import { sveltekit } from "@sveltejs/kit/vite";
138
+ import { defineConfig } from "vite";
139
+ import { intlayer } from "vite-intlayer";
140
+
141
+ export default defineConfig({
142
+ plugins: [intlayer(), sveltekit()], // क्रम महत्वपूर्ण है, Intlayer को SvelteKit से पहले रखा जाना चाहिए
143
+ });
144
+ ```
145
+
146
+ ### चरण 4: अपनी सामग्री घोषित करें
147
+
148
+ अपने `src` फ़ोल्डर में कहीं भी अपनी सामग्री घोषणा फ़ाइलें बनाएं (जैसे, `src/lib/content` या अपने components के साथ)। ये फ़ाइलें आपके एप्लिकेशन के लिए अनुवाद योग्य सामग्री को परिभाषित करती हैं, प्रत्येक locale के लिए `t()` फ़ंक्शन का उपयोग करके।
149
+
150
+ ```ts fileName="src/features/hero/hero.content.ts" contentDeclarationFormat="typescript"
151
+ import { t, type Dictionary } from "intlayer";
152
+
153
+ const heroContent = {
154
+ key: "hero-section",
155
+ content: {
156
+ title: t({
157
+ en: "Welcome to SvelteKit",
158
+ fr: "Bienvenue sur SvelteKit",
159
+ es: "Bienvenido a SvelteKit",
160
+ }),
161
+ },
162
+ } satisfies Dictionary;
163
+
164
+ export default heroContent;
165
+ ```
166
+
167
+ ### चरण 5: अपने Components में Intlayer का उपयोग करें
168
+
169
+ अब आप किसी भी Svelte component में `useIntlayer` फ़ंक्शन का उपयोग कर सकते हैं। यह एक reactive store लौटाता है जो locale बदलने पर स्वचालित रूप से अपडेट हो जाता है। यह फ़ंक्शन वर्तमान locale का स्वचालित रूप से सम्मान करेगा (SSR और client-side navigation दोनों के दौरान)।
170
+
171
+ > **नोट:** `useIntlayer` एक Svelte store लौटाता है, इसलिए इसके reactive मान तक पहुँचने के लिए आपको `---
172
+ > createdAt: 2025-11-20
173
+ > updatedAt: 2025-11-20
174
+ > title: अपने SvelteKit ऐप का अनुवाद कैसे करें – i18n गाइड 2025
175
+ > description: जानें कि अपनी SvelteKit वेबसाइट को बहुभाषी कैसे बनाएं। Server-Side Rendering (SSR) का उपयोग करके इसे अंतरराष्ट्रीयकृत (i18n) और अनुवादित करने के लिए दस्तावेज़ का पालन करें।
176
+ > keywords:
177
+
178
+ - अंतरराष्ट्रीयकरण
179
+ - दस्तावेज़ीकरण
180
+ - Intlayer
181
+ - SvelteKit
182
+ - JavaScript
183
+ - SSR
184
+ slugs:
185
+ - doc
186
+ - environment
187
+ - sveltekit
188
+ applicationTemplate: https://github.com/aymericzip/intlayer-sveltekit-template
189
+ history:
190
+ - version: 7.1.10
191
+ date: 2025-11-20
192
+ changes: प्रारंभिक इतिहास
193
+
194
+ ---
195
+
196
+ # Intlayer का उपयोग करके अपनी SvelteKit वेबसाइट का अनुवाद करें | अंतरराष्ट्रीयकरण (i18n)
197
+
198
+ ## सामग्री सूची
199
+
200
+ <TOC/>
201
+
202
+ ## Intlayer क्या है?
203
+
204
+ **Intlayer** एक अभिनव, ओपन-सोर्स अंतरराष्ट्रीयकरण (i18n) लाइब्रेरी है जिसे आधुनिक वेब एप्लिकेशन में बहुभाषी समर्थन को सरल बनाने के लिए डिज़ाइन किया गया है। यह **SvelteKit** के Server-Side Rendering (SSR) क्षमताओं के साथ सहजता से काम करता है।
205
+
206
+ Intlayer के साथ, आप कर सकते हैं:
207
+
208
+ - **घोषणात्मक शब्दकोशों का उपयोग करके अनुवादों का आसानी से प्रबंधन करें** जो कि कंपोनेंट स्तर पर होते हैं।
209
+ - **मेटाडेटा, रूट्स, और कंटेंट को गतिशील रूप से स्थानीयकृत करें।**
210
+ - **स्वचालित रूप से उत्पन्न प्रकारों के साथ TypeScript समर्थन सुनिश्चित करें।**
211
+ - **SEO-अनुकूल अंतरराष्ट्रीयकरण के लिए SvelteKit के SSR का लाभ उठाएं।**
212
+
213
+ ---
214
+
215
+ ## SvelteKit एप्लिकेशन में Intlayer सेटअप करने के लिए चरण-दर-चरण मार्गदर्शिका
216
+
217
+ शुरू करने के लिए, एक नया SvelteKit प्रोजेक्ट बनाएं। यहाँ अंतिम संरचना है जिसे हम बनाएंगे:
218
+
219
+ ```bash
220
+ .
221
+ ├── intlayer.config.ts
222
+ ├── package.json
223
+ ├── src
224
+ │ ├── app.d.ts
225
+ │   ├── app.html
226
+ │   ├── hooks.server.ts
227
+ │   ├── lib
228
+ │   │   ├── getLocale.ts
229
+ │   │   ├── LocaleSwitcher.svelte
230
+ │   │   └── LocalizedLink.svelte
231
+ │   ├── params
232
+ │   │   └── locale.ts
233
+ │   └── routes
234
+ │   ├── [[locale=locale]]
235
+ │   │   ├── +layout.svelte
236
+ │   │   ├── +layout.ts
237
+ │   │   ├── +page.svelte
238
+ │   │   ├── +page.ts
239
+ │   │   ├── about
240
+ │   │   │   ├── +page.svelte
241
+ │   │   │   ├── +page.ts
242
+ │   │   │   └── page.content.ts
243
+ │   │   ├── Counter.content.ts
244
+ │   │   ├── Counter.svelte
245
+ │   │   ├── Header.content.ts
246
+ │   │   ├── Header.svelte
247
+ │   │   ├── home.content.ts
248
+ │   │   └── layout.content.ts
249
+ │   ├── +layout.svelte
250
+ │   └── layout.css
251
+ ├── static
252
+ │   ├── favicon.svg
253
+ │   └── robots.txt
254
+ ├── svelte.config.js
255
+ ├── tsconfig.json
256
+ └── vite.config.ts
257
+ ```
258
+
259
+ ### चरण 1: Dependencies इंस्टॉल करें
260
+
261
+ npm का उपयोग करके आवश्यक पैकेज इंस्टॉल करें:
262
+
263
+ ```bash packageManager="npm"
264
+ npm install intlayer svelte-intlayer
265
+ npm install vite-intlayer --save-dev
266
+ ```
267
+
268
+ ```bash packageManager="pnpm"
269
+ pnpm add intlayer svelte-intlayer
270
+ pnpm add vite-intlayer --save-dev
271
+ ```
272
+
273
+ ```bash packageManager="yarn"
274
+ yarn add intlayer svelte-intlayer
275
+ yarn add vite-intlayer --save-dev
276
+ ```
277
+
278
+ ```bash packageManager="bun"
279
+ bun add intlayer svelte-intlayer
280
+ bun add vite-intlayer --save-dev
281
+ ```
282
+
283
+ - **intlayer**: मुख्य i18n पैकेज।
284
+ - **svelte-intlayer**: Svelte/SvelteKit के लिए context providers और stores प्रदान करता है।
285
+ - **vite-intlayer**: Vite प्लगइन जो content declarations को build प्रक्रिया के साथ एकीकृत करता है।
286
+
287
+ ### चरण 2: अपने प्रोजेक्ट का कॉन्फ़िगरेशन
288
+
289
+ अपने प्रोजेक्ट रूट में एक config फ़ाइल बनाएं:
290
+
291
+ ```typescript fileName="intlayer.config.ts"
292
+ import { Locales, type IntlayerConfig } from "intlayer";
293
+
294
+ const config: IntlayerConfig = {
295
+ internationalization: {
296
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
297
+ defaultLocale: Locales.ENGLISH,
298
+ },
299
+ };
300
+
301
+ export default config;
302
+ ```
303
+
304
+ ### चरण 3: अपने Vite कॉन्फ़िगरेशन में Intlayer को एकीकृत करें
305
+
306
+ अपने `vite.config.ts` को अपडेट करें ताकि इसमें Intlayer प्लगइन शामिल हो। यह प्लगइन आपकी content फ़ाइलों के transpilation को संभालता है।
307
+
308
+ ```typescript fileName="vite.config.ts"
309
+ import { sveltekit } from "@sveltejs/kit/vite";
310
+ import { defineConfig } from "vite";
311
+ import { intlayer } from "vite-intlayer";
312
+
313
+ export default defineConfig({
314
+ plugins: [intlayer(), sveltekit()], // क्रम महत्वपूर्ण है, Intlayer को SvelteKit से पहले रखा जाना चाहिए
315
+ });
316
+ ```
317
+
318
+ ### चरण 4: अपनी सामग्री घोषित करें
319
+
320
+ अपने `src` फ़ोल्डर में कहीं भी अपनी सामग्री घोषणा फ़ाइलें बनाएं (जैसे, `src/lib/content` या अपने components के साथ)। ये फ़ाइलें आपके एप्लिकेशन के लिए अनुवाद योग्य सामग्री को परिभाषित करती हैं, प्रत्येक locale के लिए `t()` फ़ंक्शन का उपयोग करके।
321
+
322
+ ```ts fileName="src/features/hero/hero.content.ts" contentDeclarationFormat="typescript"
323
+ import { t, type Dictionary } from "intlayer";
324
+
325
+ const heroContent = {
326
+ key: "hero-section",
327
+ content: {
328
+ title: t({
329
+ en: "Welcome to SvelteKit",
330
+ fr: "Bienvenue sur SvelteKit",
331
+ es: "Bienvenido a SvelteKit",
332
+ }),
333
+ },
334
+ } satisfies Dictionary;
335
+
336
+ export default heroContent;
337
+ ```
338
+
339
+ ### चरण 5: अपने Components में Intlayer का उपयोग करें
340
+
341
+ प्रीफिक्स का उपयोग करना होगा (जैसे, `$content.title`)।
342
+
343
+ ```svelte fileName="src/lib/components/Component.svelte"
344
+ <script lang="ts">
345
+ import { useIntlayer } from "svelte-intlayer";
346
+
347
+ // "hero-section" वह key है जो चरण 4 में परिभाषित की गई है
348
+ const content = useIntlayer("hero-section");
349
+ </script>
350
+
351
+ <!-- सामग्री को सरल सामग्री के रूप में रेंडर करें -->
352
+ <h1>{$content.title}</h1>
353
+ <!-- संपादक का उपयोग करके सामग्री को संपादन योग्य बनाने के लिए -->
354
+ <h1><svelte:component this={$content.title} /></h1>
355
+ <!-- सामग्री को स्ट्रिंग के रूप में प्रस्तुत करने के लिए -->
356
+ <div aria-label={$content.title.value}></div>
357
+ ```
358
+
359
+ ### (वैकल्पिक) चरण 6: रूटिंग सेट करें
360
+
361
+ निम्नलिखित चरण दिखाते हैं कि SvelteKit में locale-आधारित रूटिंग कैसे सेट करें। यह आपके URLs को locale प्रीफिक्स (जैसे, `/en/about`, `/fr/about`) शामिल करने की अनुमति देता है, जिससे SEO और उपयोगकर्ता अनुभव बेहतर होता है।
362
+
363
+ ```bash
364
+ .
365
+ └─── src
366
+ ├── app.d.ts # locale प्रकार को परिभाषित करें
367
+ ├── hooks.server.ts # locale रूटिंग प्रबंधित करें
368
+ ├── lib
369
+ │   └── getLocale.ts # हेडर, कुकीज़ से locale जांचें
370
+ ├── params
371
+ │   └── locale.ts # locale पैरामीटर को परिभाषित करें
372
+ └── routes
373
+ ├── [[locale=locale]] # locale सेट करने के लिए route group में लपेटें
374
+ │   ├── +layout.svelte # रूट के लिए स्थानीय लेआउट
375
+ │   ├── +layout.ts
376
+ │   ├── +page.svelte
377
+ │   ├── +page.ts
378
+ │   └── about
379
+ │      ├── +page.svelte
380
+ │      └── +page.ts
381
+ └── +layout.svelte # फोंट और वैश्विक शैलियों के लिए रूट लेआउट
382
+ ```
383
+
384
+ ### चरण 7: सर्वर-साइड लोकल डिटेक्शन (हुक्स) को संभालें
385
+
386
+ SvelteKit में, SSR के दौरान सही सामग्री प्रस्तुत करने के लिए सर्वर को उपयोगकर्ता की लोकल जानकारी जाननी होती है। हम URL या कुकीज़ से लोकल पता लगाने के लिए `hooks.server.ts` का उपयोग करते हैं।
387
+
388
+ `src/hooks.server.ts` बनाएँ या संशोधित करें:
389
+
390
+ ```typescript fileName="src/hooks.server.ts"
391
+ import type { Handle } from "@sveltejs/kit";
392
+ import { getLocalizedUrl } from "intlayer";
393
+ import { getLocale } from "$lib/getLocale";
394
+
395
+ export const handle: Handle = async ({ event, resolve }) => {
396
+ const detectedLocale = getLocale(event);
397
+
398
+ // जांचें कि क्या वर्तमान पथ पहले से ही किसी locale से शुरू होता है (जैसे /fr, /en)
399
+ const pathname = event.url.pathname;
400
+ const targetPathname = getLocalizedUrl(pathname, detectedLocale);
401
+
402
+ // यदि URL में कोई locale मौजूद नहीं है (जैसे उपयोगकर्ता "/" पर जाता है), तो उन्हें पुनः निर्देशित करें
403
+ if (targetPathname !== pathname) {
404
+ return new Response(undefined, {
405
+ headers: { Location: targetPathname },
406
+ status: 307, // अस्थायी पुनर्निर्देशन
407
+ });
408
+ }
409
+
410
+ return resolve(event, {
411
+ transformPageChunk: ({ html }) => html.replace("%lang%", detectedLocale),
412
+ });
413
+ };
414
+ ```
415
+
416
+ फिर, अनुरोध ईवेंट से उपयोगकर्ता की locale प्राप्त करने के लिए एक हेल्पर बनाएं:
417
+
418
+ ```typescript fileName="src/lib/getLocale.ts"
419
+ import {
420
+ configuration,
421
+ getLocaleFromStorage,
422
+ localeDetector,
423
+ type Locale,
424
+ } from "intlayer";
425
+ import type { RequestEvent } from "@sveltejs/kit";
426
+
427
+ /**
428
+ * अनुरोध ईवेंट से उपयोगकर्ता की भाषा प्राप्त करें।
429
+ * यह फ़ंक्शन `src/hooks.server.ts` में `handle` हुक में उपयोग किया जाता है।
430
+ *
431
+ * यह पहले Intlayer स्टोरेज (कुकीज़ या कस्टम हेडर) से भाषा प्राप्त करने का प्रयास करता है।
432
+ * यदि भाषा नहीं मिलती है, तो यह ब्राउज़र के "Accept-Language" नेगोशिएशन पर वापस जाता है।
433
+ *
434
+ * @param event - SvelteKit से अनुरोध ईवेंट
435
+ * @returns उपयोगकर्ता की भाषा
436
+ */
437
+ export const getLocale = (event: RequestEvent): Locale => {
438
+ const defaultLocale = configuration?.internationalization?.defaultLocale;
439
+
440
+ // Intlayer स्टोरेज (कुकीज़ या हेडर) से भाषा प्राप्त करने का प्रयास करें
441
+ const storedLocale = getLocaleFromStorage({
442
+ // SvelteKit कुकीज़ एक्सेस
443
+ getCookie: (name: string) => event.cookies.get(name) ?? null,
444
+ // SvelteKit हेडर एक्सेस
445
+ getHeader: (name: string) => event.request.headers.get(name) ?? null,
446
+ });
447
+
448
+ if (storedLocale) {
449
+ return storedLocale;
450
+ }
451
+
452
+ // ब्राउज़र "Accept-Language" नेगोशिएशन पर फॉलबैक
453
+ const negotiatorHeaders: Record<string, string> = {};
454
+
455
+ // SvelteKit Headers ऑब्जेक्ट को साधारण Record<string, string> में कन्वर्ट करें
456
+ event.request.headers.forEach((value, key) => {
457
+ negotiatorHeaders[key] = value;
458
+ });
459
+
460
+ // `Accept-Language` हेडर से लोकल की जांच करें
461
+ const userFallbackLocale = localeDetector(negotiatorHeaders);
462
+
463
+ if (userFallbackLocale) {
464
+ return userFallbackLocale;
465
+ }
466
+
467
+ // यदि कोई मैच नहीं मिलता है तो डिफ़ॉल्ट लोकल लौटाएं
468
+ return defaultLocale;
469
+ };
470
+ ```
471
+
472
+ > `getLocaleFromStorage` आपके कॉन्फ़िगरेशन के अनुसार हेडर या कुकी से locale की जांच करेगा। अधिक जानकारी के लिए देखें [Configuration](https://intlayer.org/doc/configuration)।
473
+
474
+ > `localeDetector` फ़ंक्शन `Accept-Language` हेडर को प्रोसेस करेगा और सबसे उपयुक्त मैच लौटाएगा।
475
+
476
+ यदि locale कॉन्फ़िगर नहीं किया गया है, तो हम 404 त्रुटि लौटाना चाहते हैं। इसे आसान बनाने के लिए, हम एक `match` फ़ंक्शन बना सकते हैं जो जांचे कि locale मान्य है या नहीं:
477
+
478
+ ```ts fileName="/src/params/locale.ts"
479
+ import { configuration, type Locale } from "intlayer";
480
+
481
+ export const match = (
482
+ param: Locale = configuration.internationalization.defaultLocale
483
+ ): boolean => {
484
+ return configuration.internationalization.locales.includes(param);
485
+ };
486
+ ```
487
+
488
+ > **नोट:** सुनिश्चित करें कि आपकी `src/app.d.ts` में locale परिभाषा शामिल है:
489
+ >
490
+ > ```typescript
491
+ > declare global {
492
+ > namespace App {
493
+ > interface Locals {
494
+ > locale: import("intlayer").Locale;
495
+ > }
496
+ > }
497
+ > }
498
+ > ```
499
+
500
+ `+layout.svelte` फ़ाइल के लिए, हम सब कुछ हटा सकते हैं, केवल स्थैतिक सामग्री रखने के लिए, जो i18n से संबंधित नहीं है:
501
+
502
+ ```svelte fileName="src/+layout.svelte"
503
+ <script lang="ts">
504
+ import './layout.css';
505
+
506
+ let { children } = $props();
507
+ </script>
508
+
509
+ <div class="app">
510
+ {@render children()}
511
+ </div>
512
+
513
+ <style>
514
+ .app {
515
+ /* */
516
+ }
517
+ </style>
518
+ ```
519
+
520
+ फिर, `[[locale=locale]]` समूह के अंतर्गत एक नया पेज और लेआउट बनाएं:
521
+
522
+ ```ts fileName="src/routes/[[locale=locale]]/+layout.ts"
523
+ import type { Load } from "@sveltejs/kit";
524
+ import { configuration, type Locale } from "intlayer";
525
+
526
+ export const prerender = true;
527
+
528
+ // सामान्य Load टाइप का उपयोग करें
529
+ export const load: Load = ({ params }) => {
530
+ const locale: Locale =
531
+ (params.locale as Locale) ??
532
+ configuration.internationalization.defaultLocale;
533
+
534
+ return {
535
+ locale,
536
+ };
537
+ };
538
+ ```
539
+
540
+ ```svelte fileName="src/routes/[[locale=locale]]/+layout.svelte"
541
+ <script lang="ts">
542
+ import type { Snippet } from 'svelte';
543
+ import { useIntlayer, setupIntlayer } from 'svelte-intlayer';
544
+ import Header from './Header.svelte';
545
+ import type { LayoutData } from './$types';
546
+
547
+ let { children, data }: { children: Snippet, data: LayoutData } = $props();
548
+
549
+ // रूट से locale के साथ Intlayer को इनिशियलाइज़ करें
550
+ setupIntlayer(data.locale);
551
+
552
+ // लेआउट सामग्री शब्दकोश का उपयोग करें
553
+ const layoutContent = useIntlayer('layout');
554
+ </script>
555
+
556
+ <Header />
557
+
558
+ <main>
559
+ {@render children()}
560
+ </main>
561
+
562
+ <footer>
563
+ <p>
564
+ {$layoutContent.footer.prefix.value}{' '}
565
+ <a href="https://svelte.dev/docs/kit">{$layoutContent.footer.linkLabel.value}</a>{' '}
566
+ {$layoutContent.footer.suffix.value}
567
+ </p>
568
+ </footer>
569
+
570
+ <style>
571
+ /* */
572
+ </style>
573
+ ```
574
+
575
+ ```ts fileName="src/routes/[[locale=locale]]/+page.ts"
576
+ export const prerender = true;
577
+ ```
578
+
579
+ ```svelte fileName="src/routes/[[locale=locale]]/+page.svelte"
580
+ <script lang="ts">
581
+ import { useIntlayer } from 'svelte-intlayer';
582
+
583
+ // होम कंटेंट डिक्शनरी का उपयोग करें
584
+ const homeContent = useIntlayer('home');
585
+ </script>
586
+
587
+ <svelte:head>
588
+ <title>{$homeContent.title.value}</title>
589
+ </svelte:head>
590
+
591
+ <section>
592
+ <h1>
593
+ {$homeContent.title}
594
+ </h1>
595
+ </section>
596
+
597
+ <style>
598
+ /* */
599
+ </style>
600
+ ```
601
+
602
+ ### (वैकल्पिक) चरण 8: अंतरराष्ट्रीयकृत लिंक
603
+
604
+ SEO के लिए, यह अनुशंसा की जाती है कि आप अपने routes को locale के साथ prefix करें (जैसे, `/en/about`, `/fr/about`)। यह component स्वचालित रूप से किसी भी लिंक के साथ वर्तमान locale को prefix करता है।
605
+
606
+ ```svelte fileName="src/lib/components/LocalizedLink.svelte"
607
+ <script lang="ts">
608
+ import { getLocalizedUrl } from "intlayer";
609
+ import { useLocale } from 'svelte-intlayer';
610
+
611
+ let { href = "" } = $props();
612
+ const { locale } = useLocale();
613
+
614
+ // वर्तमान locale के साथ URL को prefix करने में मदद करता है
615
+ $: localizedHref = getLocalizedUrl(href, $locale);
616
+ </script>
617
+
618
+ <a href={localizedHref}>
619
+ <slot />
620
+ </a>
621
+ ```
622
+
623
+ यदि आप SvelteKit से `goto` का उपयोग करते हैं, तो आप localized URL पर नेविगेट करने के लिए `getLocalizedUrl` के साथ वही लॉजिक उपयोग कर सकते हैं:
624
+
625
+ ```typescript
626
+ import { goto } from "$app/navigation";
627
+ import { getLocalizedUrl } from "intlayer";
628
+ import { useLocale } from "svelte-intlayer";
629
+
630
+ const { locale } = useLocale();
631
+ const localizedPath = getLocalizedUrl("/about", $locale);
632
+ goto(localizedPath); // स्थानीय भाषा के अनुसार /en/about या /fr/about पर नेविगेट करता है
633
+ ```
634
+
635
+ ### (वैकल्पिक) चरण 9: भाषा स्विचर
636
+
637
+ उपयोगकर्ताओं को भाषाएँ बदलने की अनुमति देने के लिए, URL को अपडेट करें।
638
+
639
+ ```svelte fileName="src/lib/components/LanguageSwitcher.svelte"
640
+ <script lang="ts">
641
+ import { getLocalizedUrl, getLocaleName } from 'intlayer';
642
+ import { useLocale } from 'svelte-intlayer';
643
+ import { page } from '$app/stores';
644
+ import { goto } from '$app/navigation';
645
+
646
+ const { locale, setLocale, availableLocales } = useLocale({
647
+ onLocaleChange: (newLocale) => {
648
+ const localizedPath = getLocalizedUrl($page.url.pathname, newLocale);
649
+ goto(localizedPath);
650
+ },
651
+ });
652
+ </script>
653
+
654
+ <ul class="locale-list">
655
+ {#each availableLocales as localeEl}
656
+ <li>
657
+ <a
658
+ href={getLocalizedUrl($page.url.pathname, localeEl)}
659
+ onclick={(e) => {
660
+ e.preventDefault();
661
+ setLocale(localeEl); // स्टोर में locale सेट करेगा और onLocaleChange को ट्रिगर करेगा
662
+ }}
663
+ class:active={$locale === localeEl}
664
+ >
665
+ {getLocaleName(localeEl)}
666
+ </a>
667
+ </li>
668
+ {/each}
669
+ </ul>
670
+
671
+ <style>
672
+ /* */
673
+ </style>
674
+ ```
675
+
676
+ ### (वैकल्पिक) चरण 10: बैकएंड प्रॉक्सी जोड़ें
677
+
678
+ अपने SvelteKit एप्लिकेशन में बैकएंड प्रॉक्सी जोड़ने के लिए, आप `vite-intlayer` प्लगइन द्वारा प्रदान किया गया `intlayerProxy` फ़ंक्शन उपयोग कर सकते हैं। यह प्लगइन URL, कुकीज़, और ब्राउज़र भाषा प्राथमिकताओं के आधार पर उपयोगकर्ता के लिए सबसे अच्छा locale स्वचालित रूप से पहचान लेगा।
679
+
680
+ ```ts fileName="vite.config.ts"
681
+ import { defineConfig } from "vite";
682
+ import { intlayer, intlayerProxy } from "vite-intlayer";
683
+ import { sveltekit } from "@sveltejs/kit/vite";
684
+
685
+ // https://vitejs.dev/config/
686
+ export default defineConfig({
687
+ plugins: [intlayer(), intlayerProxy(), sveltekit()],
688
+ });
689
+ ```
690
+
691
+ ### (वैकल्पिक) चरण 11: intlayer संपादक / CMS सेट करें
692
+
693
+ intlayer संपादक सेट करने के लिए, आपको [intlayer संपादक दस्तावेज़](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_visual_editor.md) का पालन करना होगा।
694
+
695
+ intlayer CMS सेट करने के लिए, आपको [intlayer CMS दस्तावेज़](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md) का पालन करना होगा।
696
+
697
+ intlayer संपादक चयनकर्ता को विज़ुअलाइज़ करने में सक्षम होने के लिए, आपको अपने intlayer कंटेंट में component सिंटैक्स का उपयोग करना होगा।
698
+
699
+ ```svelte fileName="Component.svelte"
700
+ <script lang="ts">
701
+ import { useIntlayer } from "svelte-intlayer";
702
+
703
+ const content = useIntlayer("component"); // सामग्री को component के रूप में उपयोग करें
704
+ </script>
705
+
706
+ <div>
707
+
708
+ <!-- सामग्री को सरल सामग्री के रूप में रेंडर करें -->
709
+ <h1>{$content.title}</h1>
710
+
711
+ <!-- सामग्री को एक component के रूप में रेंडर करें (संपादक के लिए आवश्यक) -->
712
+ <svelte:component this={$content.component} />
713
+ </div>
714
+ ```
715
+
716
+ ### Git कॉन्फ़िगरेशन
717
+
718
+ यह अनुशंसित है कि Intlayer द्वारा उत्पन्न फ़ाइलों को ignore किया जाए।
719
+
720
+ ```plaintext fileName=".gitignore"
721
+ # Intlayer द्वारा उत्पन्न फ़ाइलों को ignore करें
722
+ .intlayer
723
+ ```
724
+
725
+ ---
726
+
727
+ ### आगे बढ़ें
728
+
729
+ - **विज़ुअल एडिटर**: UI से सीधे अनुवाद संपादित करने के लिए [Intlayer Visual Editor](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_visual_editor.md) को एकीकृत करें।
730
+ - **CMS**: अपनी सामग्री प्रबंधन को बाहरी बनाएं [Intlayer CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/hi/intlayer_CMS.md) का उपयोग करके।