@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
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2025-06-29
4
- title: 如何翻译您的Vite and Svelte应用 – i18n指南 2025
5
- description: 了解如何使您的 Vite 和 Svelte 网站支持多语言。按照文档进行国际化(i18n)和翻译。
3
+ updatedAt: 2025-11-19
4
+ title: 如何翻译您的 Vite Svelte 应用 – 2025 年国际化 (i18n) 指南
5
+ description: 了解如何使您的 Vite 和 Svelte 网站支持多语言。按照文档进行国际化 (i18n) 和翻译。
6
6
  keywords:
7
7
  - 国际化
8
8
  - 文档
@@ -14,34 +14,47 @@ slugs:
14
14
  - doc
15
15
  - environment
16
16
  - vite-and-svelte
17
- # applicationTemplate: https://github.com/aymericzip/intlayer-vite-solid-template
17
+ applicationTemplate: https://github.com/aymericzip/intlayer-vite-svelte-template
18
18
  history:
19
+ - version: 5.5.11
20
+ date: 2025-11-19
21
+ changes: 更新文档
19
22
  - version: 5.5.10
20
23
  date: 2025-06-29
21
- changes: 初始化历史
24
+ changes: 初始化历史记录
22
25
  ---
23
26
 
24
- # 使用Intlayer翻译您的Vite and Svelte | 国际化(i18n)
27
+ # 使用 Intlayer 翻译您的 Vite Svelte 网站 | 国际化 (i18n)
25
28
 
26
- > 该包正在开发中。有关更多信息,请参见[问题](https://github.com/aymericzip/intlayer/issues/114)。通过点赞该问题,表达您对 Svelte 版 Intlayer 的兴趣。
29
+ ## 目录
27
30
 
28
- <!-- 请参阅 GitHub 上的[应用模板](https://github.com/aymericzip/intlayer-solid-template)。 -->
31
+ <TOC/>
29
32
 
30
33
  ## 什么是 Intlayer?
31
34
 
32
- **Intlayer** 是一个创新的开源国际化(i18n)库,旨在简化现代 Web 应用中的多语言支持。
35
+ **Intlayer** 是一个创新的开源国际化 (i18n) 库,旨在简化现代 Web 应用的多语言支持。
33
36
 
34
37
  使用 Intlayer,您可以:
35
38
 
36
39
  - **通过组件级声明式字典轻松管理翻译**。
37
40
  - **动态本地化元数据、路由和内容**。
38
- - **通过自动生成类型确保 TypeScript 支持,提升自动补全和错误检测**。
39
- - **受益于高级功能**,如动态语言环境检测和切换。
41
+ - **确保 TypeScript 支持**,通过自动生成类型提升自动补全和错误检测。
42
+ - **享受高级功能**,如动态语言环境检测和切换。
40
43
 
41
44
  ---
42
45
 
43
46
  ## 在 Vite 和 Svelte 应用中设置 Intlayer 的分步指南
44
47
 
48
+ <iframe
49
+ src="https://stackblitz.com/github/aymericzip/intlayer-vite-react-template?embed=1&ctl=1&file=intlayer.config.ts"
50
+ className="m-auto overflow-hidden rounded-lg border-0 max-md:size-full max-md:h-[700px] md:aspect-16/9 md:w-full"
51
+ title="演示 CodeSandbox - 如何使用 Intlayer 实现应用国际化"
52
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
53
+ loading="lazy"
54
+ />
55
+
56
+ 请参阅 GitHub 上的[应用模板](https://github.com/aymericzip/intlayer-vite-svelte-template)。
57
+
45
58
  ### 第一步:安装依赖
46
59
 
47
60
  使用 npm 安装必要的包:
@@ -61,22 +74,26 @@ yarn add intlayer svelte-intlayer
61
74
  yarn add vite-intlayer --save-dev
62
75
  ```
63
76
 
77
+ ```bash packageManager="bun"
78
+ bun add intlayer svelte-intlayer
79
+ bun add vite-intlayer --save-dev
80
+ ```
81
+
64
82
  - **intlayer**
65
83
 
66
- - **intlayer**
67
- 提供国际化工具的核心包,用于配置管理、翻译、[内容声明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/get_started.md)、转译以及[命令行工具](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_cli.md)。
84
+ 核心包,提供国际化工具,用于配置管理、翻译、[内容声明](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)、转译以及[CLI 命令](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_cli.md)。
68
85
 
69
- - **svelte-intlayer**
70
- 将 Intlayer 集成到 Svelte 应用中的包。它提供了用于 Svelte 国际化的上下文提供者和钩子。
86
+ - **svelte-intlayer**
87
+ 将 Intlayer Svelte 应用程序集成的包。它提供了用于 Svelte 国际化的上下文提供者和钩子。
71
88
 
72
- - **vite-intlayer**
73
- 包含用于将 Intlayer 集成到[Vite 打包工具](https://vite.dev/guide/why.html#why-bundle-for-production)的 Vite 插件,以及用于检测用户首选语言、管理 Cookie 和处理 URL 重定向的中间件。
89
+ - **vite-intlayer**
90
+ 包含用于将 Intlayer 集成到 [Vite 打包工具](https://vite.dev/guide/why.html#why-bundle-for-production) 的 Vite 插件,以及用于检测用户首选语言环境、管理 Cookie 和处理 URL 重定向的中间件。
74
91
 
75
- ### 第2步:配置您的项目
92
+ ### 第 2 步:配置您的项目
76
93
 
77
- 创建一个配置文件来配置您应用程序的语言:
94
+ 创建一个配置文件来配置您的应用程序语言:
78
95
 
79
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
96
+ ```typescript fileName="intlayer.config.ts"
80
97
  import { Locales, type IntlayerConfig } from "intlayer";
81
98
 
82
99
  const config: IntlayerConfig = {
@@ -85,26 +102,7 @@ const config: IntlayerConfig = {
85
102
  Locales.ENGLISH,
86
103
  Locales.FRENCH,
87
104
  Locales.SPANISH,
88
- // 您的其他语言
89
- ],
90
- defaultLocale: Locales.ENGLISH,
91
- },
92
- };
93
-
94
- export default config;
95
- ```
96
-
97
- ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
98
- import { Locales } from "intlayer";
99
-
100
- /** @type {import('intlayer').IntlayerConfig} */
101
- const config = {
102
- internationalization: {
103
- locales: [
104
- Locales.ENGLISH,
105
- Locales.FRENCH,
106
- Locales.SPANISH,
107
- // 您的其他语言
105
+ // 您的其他语言环境
108
106
  ],
109
107
  defaultLocale: Locales.ENGLISH,
110
108
  },
@@ -113,32 +111,13 @@ const config = {
113
111
  export default config;
114
112
  ```
115
113
 
116
- ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
117
- const { Locales } = require("intlayer");
118
-
119
- /** @type {import('intlayer').IntlayerConfig} */
120
- const config = {
121
- internationalization: {
122
- locales: [
123
- Locales.ENGLISH,
124
- Locales.FRENCH,
125
- Locales.SPANISH,
126
- // 你的其他语言环境
127
- ],
128
- defaultLocale: Locales.ENGLISH,
129
- },
130
- };
131
-
132
- module.exports = config;
133
- ```
134
-
135
- > 通过此配置文件,您可以设置本地化的 URL、中间件重定向、cookie 名称、内容声明的位置和扩展名、禁用控制台中的 Intlayer 日志等。有关可用参数的完整列表,请参阅[配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
114
+ > 通过此配置文件,您可以设置本地化 URL、中间件重定向、cookie 名称、内容声明的位置和扩展名,禁用控制台中的 Intlayer 日志等。有关可用参数的完整列表,请参阅[配置文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/configuration.md)。
136
115
 
137
116
  ### 第三步:在您的 Vite 配置中集成 Intlayer
138
117
 
139
118
  将 intlayer 插件添加到您的配置中。
140
119
 
141
- ```typescript fileName="vite.config.ts" codeFormat="typescript"
120
+ ```typescript fileName="vite.config.ts"
142
121
  import { defineConfig } from "vite";
143
122
  import { svelte } from "@sveltejs/vite-plugin-svelte";
144
123
  import { intlayer } from "vite-intlayer";
@@ -149,31 +128,9 @@ export default defineConfig({
149
128
  });
150
129
  ```
151
130
 
152
- ```javascript fileName="vite.config.mjs" codeFormat="esm"
153
- import { defineConfig } from "vite";
154
- import { svelte } from "@sveltejs/vite-plugin-svelte";
155
- import { intlayer } from "vite-intlayer";
131
+ > `intlayer()` Vite 插件用于将 Intlayer 集成到 Vite 中。它确保内容声明文件的构建,并在开发模式下监控这些文件。它在 Vite 应用中定义了 Intlayer 的环境变量。此外,它还提供别名以优化性能。
156
132
 
157
- // https://vitejs.dev/config/
158
- export default defineConfig({
159
- plugins: [svelte(), intlayer()],
160
- });
161
- ```
162
-
163
- ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
164
- const { defineConfig } = require("vite");
165
- const react = require("@vitejs/plugin-react-swc");
166
- const { intlayer } = require("vite-intlayer");
167
-
168
- // https://vitejs.dev/config/
169
- module.exports = defineConfig({
170
- plugins: [react(), intlayer()],
171
- });
172
- ```
173
-
174
- > `intlayer()` Vite 插件用于将 Intlayer 集成到 Vite 中。它确保内容声明文件的构建,并在开发模式下监视这些文件。它在 Vite 应用程序中定义了 Intlayer 环境变量。此外,它还提供别名以优化性能。
175
-
176
- ### 第4步:声明您的内容
133
+ ### 第四步:声明您的内容
177
134
 
178
135
  创建并管理您的内容声明以存储翻译:
179
136
 
@@ -198,6 +155,7 @@ export default appContent;
198
155
  import { t } from "intlayer";
199
156
 
200
157
  /** @type {import('intlayer').Dictionary} */
158
+ // 定义应用内容字典
201
159
  const appContent = {
202
160
  key: "app",
203
161
  content: {
@@ -216,7 +174,7 @@ export default appContent;
216
174
  const { t } = require("intlayer");
217
175
 
218
176
  /** @type {import('intlayer').Dictionary} */
219
- // 应用内容声明
177
+ // 定义应用内容字典
220
178
  const appContent = {
221
179
  key: "app",
222
180
  content: {
@@ -250,37 +208,283 @@ module.exports = appContent;
250
208
 
251
209
  > 您的内容声明可以定义在应用程序中的任何位置,只要它们被包含在 `contentDir` 目录中(默认是 `./src`),并且文件扩展名符合内容声明文件扩展名(默认是 `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`)。
252
210
 
253
- > 有关更多详细信息,请参阅[内容声明文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/get_started.md)。
211
+ > 更多详情,请参阅[内容声明文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/dictionary/content_file.md)。
254
212
 
255
213
  ### 第5步:在代码中使用 Intlayer
256
214
 
257
- [待完成]
215
+ ```svelte fileName="src/App.svelte"
216
+ <script>
217
+ import { useIntlayer } from "svelte-intlayer";
218
+
219
+ const content = useIntlayer("app");
220
+ </script>
221
+
222
+ <div>
223
+
224
+
225
+ <!-- 以简单内容渲染内容 -->
226
+ <h1>{$content.title}</h1>
227
+ <!-- 使用编辑器渲染可编辑内容 -->
228
+ <h1><svelte:component this={$content.title} /></h1>
229
+ <!-- 以字符串形式渲染内容 -->
230
+ <div aria-label={$content.title.value}></div>
231
+ ```
232
+
233
+ ### (可选)步骤6:更改内容语言
234
+
235
+ ```svelte fileName="src/App.svelte"
236
+ <script lang="ts">
237
+ import { getLocaleName } from 'intlayer';
238
+ import { useLocale } from 'svelte-intlayer';
239
+
240
+ // 获取语言信息和 setLocale 函数
241
+ const { locale, availableLocales, setLocale } = useLocale();
242
+
243
+ // 处理语言切换
244
+ const changeLocale = (event: Event) => {
245
+ const target = event.target as HTMLSelectElement;
246
+ const newLocale = target.value;
247
+ setLocale(newLocale);
248
+ };
249
+ </script>
250
+
251
+ <div>
252
+ <select value={$locale} on:change={changeLocale}>
253
+ {#each availableLocales ?? [] as loc}
254
+ <option value={loc}>
255
+ {getLocaleName(loc)}
256
+ </option>
257
+ {/each}
258
+ </select>
259
+ </div>
260
+ ```
261
+
262
+ ### (可选)步骤7:渲染Markdown
263
+
264
+ Intlayer支持在您的Svelte应用中直接渲染Markdown内容。默认情况下,Markdown被视为纯文本。要将Markdown转换为丰富的HTML,您可以集成`@humanspeak/svelte-markdown`或其他markdown解析器。
265
+
266
+ > 要了解如何使用`intlayer`包声明markdown内容,请参阅[markdown文档](https://github.com/aymericzip/intlayer/tree/main/docs/zh/dictionary/markdown.md)。
267
+
268
+ ```svelte fileName="src/App.svelte"
269
+ <script>
270
+ import { setIntlayerMarkdown } from "svelte-intlayer";
271
+
272
+ setIntlayerMarkdown((markdown) =>
273
+ // 将 markdown 内容渲染为字符串
274
+ return markdown;
275
+ );
276
+ </script>
277
+
278
+ <h1>{$content.markdownContent}</h1>
279
+ ```
280
+
281
+ > 你也可以通过 `content.markdownContent.metadata.xxx` 属性访问你的 markdown front-matter 数据。
282
+
283
+ ### (可选)步骤 8:设置 intlayer 编辑器 / CMS
284
+
285
+ 要设置 intlayer 编辑器,你必须遵循 [intlayer 编辑器文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)。
286
+
287
+ 要设置 intlayer CMS,你必须遵循 [intlayer CMS 文档](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)。
288
+
289
+ 在你的 Svelte 应用程序中,同时你必须在布局文件或应用程序的根目录中添加以下代码行:
258
290
 
259
- ### (可选)第6步:更改内容语言
291
+ ```svelte fileName="src/layout.svelte"
292
+ import { useIntlayerEditor } from "svelte-intlayer";
260
293
 
261
- [待完成]
294
+ useIntlayerEditor();
295
+ ```
296
+
297
+ ### (可选)步骤 7:为你的应用程序添加本地化路由
298
+
299
+ 为了在你的 Svelte 应用程序中处理本地化路由,你可以使用 `svelte-spa-router`,并结合 Intlayer 的 `localeFlatMap` 来为每个语言环境生成路由。
300
+
301
+ 首先,安装 `svelte-spa-router`:
302
+
303
+ ```bash packageManager="npm"
304
+ npm install svelte-spa-router
305
+ ```
306
+
307
+ ```bash packageManager="pnpm"
308
+ pnpm add svelte-spa-router
309
+ ```
310
+
311
+ ```bash packageManager="yarn"
312
+ yarn add svelte-spa-router
313
+ ```
314
+
315
+ ```bash packageManager="bun"
316
+ bun add svelte-spa-router
317
+ ```
318
+
319
+ 然后,创建一个 `Router.svelte` 文件来定义你的路由:
320
+
321
+ ```svelte fileName="src/Router.svelte"
322
+ <script lang="ts">
323
+ import { localeFlatMap } from "intlayer";
324
+ import Router from "svelte-spa-router";
325
+ import { wrap } from "svelte-spa-router/wrap";
326
+ import App from "./App.svelte";
327
+
328
+ const routes = Object.fromEntries(
329
+ localeFlatMap(({locale, urlPrefix}) => [
330
+ [
331
+ urlPrefix || '/',
332
+ wrap({
333
+ component: App as any,
334
+ props: {
335
+ locale,
336
+ },
337
+ }),
338
+ ],
339
+ ])
340
+ );
341
+ </script>
342
+
343
+ <Router {routes} />
344
+ ```
345
+
346
+ 更新你的 `main.ts`,将挂载的组件从 `App` 改为 `Router`:
347
+
348
+ ```typescript fileName="src/main.ts"
349
+ import { mount } from "svelte";
350
+ import Router from "./Router.svelte";
351
+
352
+ const app = mount(Router, {
353
+ target: document.getElementById("app")!,
354
+ });
355
+
356
+ export default app;
357
+ ```
358
+
359
+ 最后,更新你的 `App.svelte` 以接收 `locale` 属性并使用 `useIntlayer`:
360
+
361
+ ```svelte fileName="src/App.svelte"
362
+ <script lang="ts">
363
+ import type { Locale } from 'intlayer';
364
+ import { useIntlayer } from 'svelte-intlayer';
365
+ import Counter from './lib/Counter.svelte';
366
+ import LocaleSwitcher from './lib/LocaleSwitcher.svelte';
262
367
 
263
- ### (可选)第7步:为您的应用添加本地化路由
368
+ export let locale: Locale;
264
369
 
265
- [待完成]
370
+ $: content = useIntlayer('app', locale);
371
+ </script>
266
372
 
267
- ### (可选)第8步:在语言环境更改时更改 URL
373
+ <main>
374
+ <div class="locale-switcher-container">
375
+ <LocaleSwitcher currentLocale={locale} />
376
+ </div>
268
377
 
269
- [待完成]
378
+ <!-- ... 你的应用其余部分 ... -->
379
+ </main>
380
+ ```
270
381
 
271
- ### (可选)第9步:切换 HTML 的语言和方向属性
382
+ #### 配置服务器端路由(可选)
272
383
 
273
- [待完成]
384
+ 同时,您还可以使用 `intlayerProxy` 为您的应用程序添加服务器端路由。该插件会根据 URL 自动检测当前的语言环境,并设置相应的语言环境 cookie。如果未指定语言环境,插件将根据用户浏览器的语言偏好确定最合适的语言环境。如果未检测到任何语言环境,它将重定向到默认语言环境。
274
385
 
275
- ### (可选)第10步:创建本地化链接组件
386
+ > 注意,要在生产环境中使用 `intlayerProxy`,您需要将 `vite-intlayer` 包从 `devDependencies` 切换到 `dependencies`。
276
387
 
277
- [待完成]
388
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
389
+ import { defineConfig } from "vite";
390
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
391
+ import { intlayer, intlayerProxy } from "vite-intlayer";
392
+
393
+ typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
394
+ import { defineConfig } from "vite";
395
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
396
+ import { intlayer, intlayerProxy } from "vite-intlayer";
397
+
398
+ // https://vitejs.dev/config/
399
+ export default defineConfig({
400
+ plugins: [svelte(), intlayer(), intlayerProxy()],
401
+ });
402
+ ```
403
+
404
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
405
+ import { defineConfig } from "vite";
406
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
407
+ import { intlayer, intlayerProxy } from "vite-intlayer";
408
+
409
+ // https://vitejs.dev/config/
410
+ export default defineConfig({
411
+ plugins: [svelte(), intlayer(), intlayerProxy()],
412
+ });
413
+ ```
414
+
415
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
416
+ const { defineConfig } = require("vite");
417
+ const { svelte } = require("@sveltejs/vite-plugin-svelte");
418
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
419
+
420
+ // https://vitejs.dev/config/
421
+ module.exports = defineConfig({
422
+ plugins: [svelte(), intlayer(), intlayerProxy()],
423
+ });
424
+ ```
425
+
426
+ ### (可选)步骤 8:当语言环境改变时更改 URL
427
+
428
+ 为了允许用户切换语言并相应地更新 URL,您可以创建一个 `LocaleSwitcher` 组件。该组件将使用 `intlayer` 中的 `getLocalizedUrl` 和 `svelte-spa-router` 中的 `push`。
429
+
430
+ ```svelte fileName="src/lib/LocaleSwitcher.svelte"
431
+ <script lang="ts">
432
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
433
+ import { useLocale } from "svelte-intlayer";
434
+ import { push } from "svelte-spa-router";
435
+
436
+ export let currentLocale: string | undefined = undefined;
437
+
438
+ // 获取语言环境信息
439
+ const { locale, availableLocales } = useLocale();
440
+
441
+ // 处理语言环境变化
442
+ const changeLocale = (event: Event) => {
443
+ plugins: [svelte(), intlayer(), intlayerProxy()],
444
+ });
445
+ ```
446
+
447
+ ### (可选)步骤 8:当语言环境变化时更改 URL
448
+
449
+ 为了允许用户切换语言并相应地更新 URL,您可以创建一个 `LocaleSwitcher` 组件。该组件将使用来自 `intlayer` 的 `getLocalizedUrl` 和来自 `svelte-spa-router` 的 `push`。
450
+
451
+ ```svelte fileName="src/lib/LocaleSwitcher.svelte"
452
+ <script lang="ts">
453
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
454
+ import { useLocale } from "svelte-intlayer";
455
+ import { push } from "svelte-spa-router";
456
+
457
+ export let currentLocale: string | undefined = undefined;
458
+
459
+ // 获取语言环境信息
460
+ const { locale, availableLocales } = useLocale();
461
+
462
+ // 处理语言环境变化
463
+ const changeLocale = (event: Event) => {
464
+ const target = event.target as HTMLSelectElement;
465
+ const newLocale = target.value;
466
+ const currentUrl = window.location.pathname;
467
+ const url = getLocalizedUrl( currentUrl, newLocale);
468
+ push(url);
469
+ };
470
+ </script>
471
+
472
+ <div class="locale-switcher">
473
+ <select value={currentLocale ?? $locale} onchange={changeLocale}>
474
+ {#each availableLocales ?? [] as loc}
475
+ <option value={loc}>
476
+ {getLocaleName(loc)}
477
+ </option>
478
+ {/each}
479
+ </select>
480
+ </div>
481
+ ```
278
482
 
279
483
  ### Git 配置
280
484
 
281
485
  建议忽略 Intlayer 生成的文件。这样可以避免将它们提交到您的 Git 仓库中。
282
486
 
283
- 要做到这一点,您可以将以下指令添加到您的 `.gitignore` 文件中:
487
+ 为此,您可以在 `.gitignore` 文件中添加以下指令:
284
488
 
285
489
  ```plaintext
286
490
  # 忽略 Intlayer 生成的文件
@@ -295,17 +499,15 @@ module.exports = appContent;
295
499
 
296
500
  该扩展提供:
297
501
 
298
- - 翻译键的**自动补全**。
299
- - 缺失翻译的**实时错误检测**。
300
- - 翻译内容的**内联预览**。
301
- - 轻松创建和更新翻译的**快速操作**。
502
+ - 翻译键的 **自动补全**。
503
+ - 缺失翻译的 **实时错误检测**。
504
+ - 翻译内容的 **内联预览**。
505
+ - 轻松创建和更新翻译的 **快速操作**。
302
506
 
303
507
  有关如何使用该扩展的更多详细信息,请参阅 [Intlayer VS Code 扩展文档](https://intlayer.org/doc/vs-code-extension)。
304
508
 
305
509
  ---
306
510
 
307
- ### 深入探索
511
+ ### 深入了解
308
512
 
309
- 要进一步使用,您可以实现[可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)或使用[内容管理系统(CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)将内容外部化。
310
-
311
- ---
513
+ 要进一步提升,您可以实现[可视化编辑器](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_visual_editor.md)或使用[CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/zh/intlayer_CMS.md)将内容外部化。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@intlayer/docs",
3
- "version": "7.1.9",
3
+ "version": "7.2.2",
4
4
  "private": false,
5
5
  "description": "Intlayer documentation",
6
6
  "keywords": [
@@ -72,23 +72,23 @@
72
72
  "watch": "webpack --config ./webpack.config.ts --watch"
73
73
  },
74
74
  "dependencies": {
75
- "@intlayer/config": "7.1.9",
76
- "@intlayer/core": "7.1.9",
77
- "@intlayer/types": "7.1.9"
75
+ "@intlayer/config": "7.2.2",
76
+ "@intlayer/core": "7.2.1",
77
+ "@intlayer/types": "7.2.2"
78
78
  },
79
79
  "devDependencies": {
80
- "@intlayer/api": "7.1.9",
81
- "@intlayer/cli": "7.1.9",
80
+ "@intlayer/api": "7.2.2",
81
+ "@intlayer/cli": "7.2.2",
82
82
  "@types/node": "24.10.1",
83
83
  "@utils/ts-config": "1.0.4",
84
84
  "@utils/ts-config-types": "1.0.4",
85
85
  "@utils/tsdown-config": "1.0.4",
86
86
  "fast-glob": "3.3.3",
87
- "rimraf": "6.1.0",
88
- "tsdown": "0.16.5",
87
+ "rimraf": "6.1.2",
88
+ "tsdown": "0.16.6",
89
89
  "tsx": "^4.20.6",
90
90
  "typescript": "5.9.3",
91
- "vitest": "4.0.10"
91
+ "vitest": "4.0.12"
92
92
  },
93
93
  "engines": {
94
94
  "node": ">=14.18"
@@ -737,6 +737,25 @@ export const docsEntry = {
737
737
  id: readLocale('intlayer_with_react_router_v7.md', 'id'),
738
738
  vi: readLocale('intlayer_with_react_router_v7.md', 'vi'),
739
739
  } as unknown as Record<LocalesValues, Promise<string>>,
740
+ './docs/en/intlayer_with_svelte_kit.md': {
741
+ en: readLocale('intlayer_with_svelte_kit.md', 'en'),
742
+ ru: readLocale('intlayer_with_svelte_kit.md', 'ru'),
743
+ ja: readLocale('intlayer_with_svelte_kit.md', 'ja'),
744
+ fr: readLocale('intlayer_with_svelte_kit.md', 'fr'),
745
+ ko: readLocale('intlayer_with_svelte_kit.md', 'ko'),
746
+ zh: readLocale('intlayer_with_svelte_kit.md', 'zh'),
747
+ es: readLocale('intlayer_with_svelte_kit.md', 'es'),
748
+ de: readLocale('intlayer_with_svelte_kit.md', 'de'),
749
+ ar: readLocale('intlayer_with_svelte_kit.md', 'ar'),
750
+ it: readLocale('intlayer_with_svelte_kit.md', 'it'),
751
+ 'en-GB': readLocale('intlayer_with_svelte_kit.md', 'en-GB'),
752
+ pt: readLocale('intlayer_with_svelte_kit.md', 'pt'),
753
+ hi: readLocale('intlayer_with_svelte_kit.md', 'hi'),
754
+ tr: readLocale('intlayer_with_svelte_kit.md', 'tr'),
755
+ pl: readLocale('intlayer_with_svelte_kit.md', 'pl'),
756
+ id: readLocale('intlayer_with_svelte_kit.md', 'id'),
757
+ vi: readLocale('intlayer_with_svelte_kit.md', 'vi'),
758
+ } as unknown as Record<LocalesValues, Promise<string>>,
740
759
  './docs/en/intlayer_with_tanstack.md': {
741
760
  en: readLocale('intlayer_with_tanstack.md', 'en'),
742
761
  ru: readLocale('intlayer_with_tanstack.md', 'ru'),