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