@intlayer/docs 7.1.8 → 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.
- package/README.md +1 -0
- package/dist/cjs/generated/docs.entry.cjs +19 -0
- package/dist/cjs/generated/docs.entry.cjs.map +1 -1
- package/dist/esm/generated/docs.entry.mjs +19 -0
- package/dist/esm/generated/docs.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/intlayer_with_svelte_kit.md +730 -0
- package/docs/ar/intlayer_with_vite+svelte.md +288 -104
- package/docs/de/intlayer_with_svelte_kit.md +730 -0
- package/docs/de/intlayer_with_vite+svelte.md +302 -101
- package/docs/en/intlayer_with_svelte_kit.md +560 -0
- package/docs/en/intlayer_with_vite+svelte.md +153 -15
- package/docs/en/introduction.md +2 -0
- package/docs/en-GB/intlayer_with_svelte_kit.md +730 -0
- package/docs/en-GB/intlayer_with_vite+svelte.md +262 -84
- package/docs/es/intlayer_with_svelte_kit.md +730 -0
- package/docs/es/intlayer_with_vite+svelte.md +300 -107
- package/docs/fr/intlayer_with_svelte_kit.md +762 -0
- package/docs/fr/intlayer_with_vite+svelte.md +297 -101
- package/docs/hi/intlayer_with_svelte_kit.md +730 -0
- package/docs/hi/intlayer_with_vite+svelte.md +298 -108
- package/docs/id/intlayer_with_svelte_kit.md +730 -0
- package/docs/id/intlayer_with_vite+svelte.md +277 -99
- package/docs/it/intlayer_with_svelte_kit.md +762 -0
- package/docs/it/intlayer_with_vite+svelte.md +275 -99
- package/docs/ja/intlayer_with_svelte_kit.md +730 -0
- package/docs/ja/intlayer_with_vite+svelte.md +295 -110
- package/docs/ko/intlayer_with_svelte_kit.md +730 -0
- package/docs/ko/intlayer_with_vite+svelte.md +286 -199
- package/docs/pl/intlayer_with_svelte_kit.md +732 -0
- package/docs/pl/intlayer_with_vite+svelte.md +273 -101
- package/docs/pt/intlayer_with_svelte_kit.md +764 -0
- package/docs/pt/intlayer_with_vite+svelte.md +290 -96
- package/docs/ru/intlayer_with_svelte_kit.md +730 -0
- package/docs/ru/intlayer_with_vite+svelte.md +275 -99
- package/docs/tr/intlayer_with_svelte_kit.md +730 -0
- package/docs/tr/intlayer_with_vite+svelte.md +297 -119
- package/docs/vi/intlayer_with_svelte_kit.md +730 -0
- package/docs/vi/intlayer_with_vite+svelte.md +275 -102
- package/docs/zh/intlayer_with_svelte_kit.md +730 -0
- package/docs/zh/intlayer_with_vite+svelte.md +309 -107
- package/package.json +6 -6
- 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) का उपयोग करके।
|