@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,7 +1,7 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2025-06-29
4
- title: Как перевести ваше Vite and Svelte – руководство i18n 2025
3
+ updatedAt: 2025-11-19
4
+ title: Как перевести ваше приложение на Vite и Svelte – руководство по i18n 2025
5
5
  description: Узнайте, как сделать ваш сайт на Vite и Svelte многоязычным. Следуйте документации для интернационализации (i18n) и перевода.
6
6
  keywords:
7
7
  - Интернационализация
@@ -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
24
  changes: Инициализация истории
22
25
  ---
23
26
 
24
- # Переведите ваш Vite and Svelte с Intlayer | Интернационализация (i18n)
27
+ # Перевод вашего сайта на Vite и Svelte с использованием Intlayer | Интернационализация (i18n)
25
28
 
26
- > Этот пакет находится в разработке. Подробнее смотрите в [issue](https://github.com/aymericzip/intlayer/issues/114). Покажите свой интерес к Intlayer для Svelte, поставив лайк этому issue.
29
+ ## Содержание
27
30
 
28
- <!-- Смотрите [шаблон приложения](https://github.com/aymericzip/intlayer-solid-template) на GitHub. -->
31
+ <TOC/>
29
32
 
30
33
  ## Что такое Intlayer?
31
34
 
32
- **Intlayer** - это инновационная, открытая библиотека интернационализации (i18n), разработанная для упрощения поддержки многоязычности в современных веб-приложениях.
35
+ **Intlayer** это инновационная, открытая библиотека интернационализации (i18n), созданная для упрощения поддержки многоязычности в современных веб-приложениях.
33
36
 
34
- С помощью Intlayer вы можете:
37
+ С Intlayer вы можете:
35
38
 
36
- - **Легко управлять переводами** с использованием декларативных словарей на уровне компонентов.
39
+ - **Легко управлять переводами** с помощью декларативных словарей на уровне компонентов.
37
40
  - **Динамически локализовать метаданные**, маршруты и контент.
38
- - **Обеспечить поддержку TypeScript** с помощью автогенерируемых типов, улучшая автодополнение и обнаружение ошибок.
39
- - **Воспользуйтесь расширенными возможностями**, такими как динамическое определение и переключение локали.
41
+ - **Обеспечить поддержку TypeScript** с автогенерируемыми типами, улучшая автодополнение и обнаружение ошибок.
42
+ - **Воспользоваться расширенными возможностями**, такими как динамическое определение и переключение локали.
40
43
 
41
44
  ---
42
45
 
43
46
  ## Пошаговое руководство по настройке Intlayer в приложении на Vite и Svelte
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
+ Смотрите [Шаблон приложения](https://github.com/aymericzip/intlayer-vite-svelte-template) на GitHub.
57
+
45
58
  ### Шаг 1: Установка зависимостей
46
59
 
47
60
  Установите необходимые пакеты с помощью npm:
@@ -61,23 +74,26 @@ yarn add intlayer svelte-intlayer
61
74
  yarn add vite-intlayer --save-dev
62
75
  ```
63
76
 
64
- - **intlayer**
77
+ ```bash packageManager="bun"
78
+ bun add intlayer svelte-intlayer
79
+ bun add vite-intlayer --save-dev
80
+ ```
65
81
 
66
82
  - **intlayer**
67
83
 
68
- Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, [объявления контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md), транспиляции и [CLI-команд](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_cli.md).
84
+ Основной пакет, предоставляющий инструменты интернационализации для управления конфигурацией, перевода, [объявления контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md), транспиляции и [CLI-команд](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_cli.md).
69
85
 
70
86
  - **svelte-intlayer**
71
87
  Пакет, который интегрирует Intlayer с приложением на Svelte. Он предоставляет провайдеры контекста и хуки для интернационализации в Svelte.
72
88
 
73
89
  - **vite-intlayer**
74
- Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также middleware для определения предпочтительной локали пользователя, управления куки и обработки перенаправления URL.
90
+ Включает плагин Vite для интеграции Intlayer с [сборщиком Vite](https://vite.dev/guide/why.html#why-bundle-for-production), а также middleware для определения предпочтительной локали пользователя, управления cookie и обработки перенаправления URL.
75
91
 
76
92
  ### Шаг 2: Конфигурация вашего проекта
77
93
 
78
94
  Создайте файл конфигурации для настройки языков вашего приложения:
79
95
 
80
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
96
+ ```typescript fileName="intlayer.config.ts"
81
97
  import { Locales, type IntlayerConfig } from "intlayer";
82
98
 
83
99
  const config: IntlayerConfig = {
@@ -88,25 +104,7 @@ const config: IntlayerConfig = {
88
104
  Locales.SPANISH,
89
105
  // Ваши другие локали
90
106
  ],
91
- defaultLocale: Locales.ENGLISH,
92
- },
93
- };
94
107
 
95
- export default config;
96
- ```
97
-
98
- ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
99
- import { Locales } from "intlayer";
100
-
101
- /** @type {import('intlayer').IntlayerConfig} */
102
- const config = {
103
- internationalization: {
104
- locales: [
105
- Locales.ENGLISH,
106
- Locales.FRENCH,
107
- Locales.SPANISH,
108
- // Ваши другие локали
109
- ],
110
108
  defaultLocale: Locales.ENGLISH,
111
109
  },
112
110
  };
@@ -114,44 +112,13 @@ const config = {
114
112
  export default config;
115
113
  ```
116
114
 
117
- ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
118
- const { Locales } = require("intlayer");
119
-
120
- /** @type {import('intlayer').IntlayerConfig} */
121
- // Конфигурация интернационализации
122
- const config = {
123
- internationalization: {
124
- locales: [
125
- Locales.ENGLISH,
126
- Locales.FRENCH,
127
- Locales.SPANISH,
128
- // Ваши другие локали
129
- ],
130
- defaultLocale: Locales.ENGLISH,
131
- },
132
- };
133
-
134
- module.exports = config;
135
- ```
136
-
137
- > Через этот конфигурационный файл вы можете настроить локализованные URL, перенаправление в middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
115
+ > Через этот файл конфигурации вы можете настроить локализованные URL, перенаправление в middleware, имена cookie, расположение и расширение ваших деклараций контента, отключить логи Intlayer в консоли и многое другое. Для полного списка доступных параметров обратитесь к [документации по конфигурации](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/configuration.md).
138
116
 
139
117
  ### Шаг 3: Интеграция Intlayer в вашу конфигурацию Vite
140
118
 
141
119
  Добавьте плагин intlayer в вашу конфигурацию.
142
120
 
143
- ```typescript fileName="vite.config.ts" codeFormat="typescript"
144
- import { defineConfig } from "vite";
145
- import { svelte } from "@sveltejs/vite-plugin-svelte";
146
- import { intlayer } from "vite-intlayer";
147
-
148
- // https://vitejs.dev/config/
149
- export default defineConfig({
150
- plugins: [svelte(), intlayer()],
151
- });
152
- ```
153
-
154
- ```javascript fileName="vite.config.mjs" codeFormat="esm"
121
+ ```typescript fileName="vite.config.ts"
155
122
  import { defineConfig } from "vite";
156
123
  import { svelte } from "@sveltejs/vite-plugin-svelte";
157
124
  import { intlayer } from "vite-intlayer";
@@ -162,20 +129,9 @@ export default defineConfig({
162
129
  });
163
130
  ```
164
131
 
165
- ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
166
- const { defineConfig } = require("vite");
167
- const react = require("@vitejs/plugin-react-swc");
168
- const { intlayer } = require("vite-intlayer");
169
-
170
- // https://vitejs.dev/config/
171
- module.exports = defineConfig({
172
- plugins: [react(), intlayer()],
173
- });
174
- ```
132
+ > Плагин Vite `intlayer()` используется для интеграции Intlayer с Vite. Он обеспечивает сборку файлов деклараций контента и отслеживает их в режиме разработки. Определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, предоставляет алиасы для оптимизации производительности.
175
133
 
176
- > Плагин Vite `intlayer()` используется для интеграции Intlayer с Vite. Он обеспечивает создание файлов деклараций контента и отслеживает их в режиме разработки. Он определяет переменные окружения Intlayer внутри приложения Vite. Кроме того, он предоставляет алиасы для оптимизации производительности.
177
-
178
- ### Шаг 4: Объявите Ваш Контент
134
+ ### Шаг 4: Объявите ваш контент
179
135
 
180
136
  Создайте и управляйте декларациями контента для хранения переводов:
181
137
 
@@ -200,6 +156,7 @@ export default appContent;
200
156
  import { t } from "intlayer";
201
157
 
202
158
  /** @type {import('intlayer').Dictionary} */
159
+ // Объявление словаря контента приложения
203
160
  const appContent = {
204
161
  key: "app",
205
162
  content: {
@@ -218,7 +175,7 @@ export default appContent;
218
175
  const { t } = require("intlayer");
219
176
 
220
177
  /** @type {import('intlayer').Dictionary} */
221
- // Объявление словаря контента
178
+ // Объявление словаря контента приложения
222
179
  const appContent = {
223
180
  key: "app",
224
181
  content: {
@@ -250,33 +207,254 @@ module.exports = appContent;
250
207
  }
251
208
  ```
252
209
 
253
- > Ваши декларации контента могут быть определены в любом месте вашего приложения, как только они будут включены в директорию `contentDir` (по умолчанию, `./src`). И соответствовать расширению файла декларации контента (по умолчанию, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
210
+ > Ваши объявления контента могут быть определены в любом месте вашего приложения, как только они будут включены в директорию `contentDir` (по умолчанию, `./src`). И соответствовать расширению файла объявления контента (по умолчанию, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
254
211
 
255
- > Для получения дополнительной информации обратитесь к [документации по объявлению контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/get_started.md).
212
+ > Для получения дополнительной информации обратитесь к [документации по объявлению контента](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/dictionary/content_file.md).
256
213
 
257
214
  ### Шаг 5: Использование Intlayer в вашем коде
258
215
 
259
- [заполнить]
216
+ ```svelte fileName="src/App.svelte"
217
+ <script>
218
+ import { useIntlayer } from "svelte-intlayer";
219
+
220
+ const content = useIntlayer("app");
221
+ </script>
222
+
223
+ <div>
224
+
225
+
226
+ <!-- Отобразить контент как простой контент -->
227
+ <h1>{$content.title}</h1>
228
+ <!-- Отобразить контент с возможностью редактирования через редактор -->
229
+ <h1><svelte:component this={$content.title} /></h1>
230
+ <!-- Отобразить контент как строку -->
231
+ <div aria-label={$content.title.value}></div>
232
+ ```
260
233
 
261
234
  ### (Необязательно) Шаг 6: Изменение языка вашего контента
262
235
 
263
- [заполнить]
236
+ ```svelte fileName="src/App.svelte"
237
+ <script lang="ts">
238
+ import { getLocaleName } from 'intlayer';
239
+ import { useLocale } from 'svelte-intlayer';
240
+
241
+ // Получить информацию о локали и функцию setLocale
242
+ const { locale, availableLocales, setLocale } = useLocale();
243
+
244
+ // Обработка изменения локали
245
+ const changeLocale = (event: Event) => {
246
+ const target = event.target as HTMLSelectElement;
247
+ const newLocale = target.value;
248
+ setLocale(newLocale);
249
+ };
250
+ </script>
251
+
252
+ <div>
253
+ <select value={$locale} on:change={changeLocale}>
254
+ {#each availableLocales ?? [] as loc}
255
+ <option value={loc}>
256
+ {getLocaleName(loc)}
257
+ </option>
258
+ {/each}
259
+ </select>
260
+ </div>
261
+ ```
262
+
263
+ ### (Необязательно) Шаг 7: Отображение Markdown
264
+
265
+ Intlayer поддерживает отображение контента в формате Markdown непосредственно в вашем приложении на Svelte. По умолчанию Markdown обрабатывается как простой текст. Чтобы преобразовать Markdown в насыщенный HTML, вы можете интегрировать `@humanspeak/svelte-markdown` или другой парсер Markdown.
266
+
267
+ > Чтобы узнать, как объявлять контент в формате markdown с использованием пакета `intlayer`, смотрите [документацию по markdown](https://github.com/aymericzip/intlayer/tree/main/docs/docs/ru/dictionary/markdown.md).
268
+
269
+ ```svelte fileName="src/App.svelte"
270
+ <script>
271
+ import { setIntlayerMarkdown } from "svelte-intlayer";
272
+
273
+ setIntlayerMarkdown((markdown) =>
274
+ // рендеринг содержимого markdown как строки
275
+ return markdown;
276
+ );
277
+ </script>
278
+
279
+ <h1>{$content.markdownContent}</h1>
280
+ ```
281
+
282
+ > Вы также можете получить доступ к данным front-matter вашего markdown через свойство `content.markdownContent.metadata.xxx`.
264
283
 
265
- ### (Необязательно) Шаг 7: Добавление локализованной маршрутизации в ваше приложение
284
+ ### (Необязательно) Шаг 8: Настройка редактора / CMS intlayer
266
285
 
267
- [заполнить]
286
+ Для настройки редактора intlayer необходимо следовать [документации редактора intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md).
287
+
288
+ Для настройки CMS intlayer необходимо следовать [документации CMS intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).
289
+
290
+ Параллельно, в вашем приложении на Svelte, вы должны добавить следующую строку в layout или в корень вашего приложения:
291
+
292
+ ```svelte fileName="src/layout.svelte"
293
+ import { useIntlayerEditor } from "svelte-intlayer";
294
+
295
+ useIntlayerEditor();
296
+ ```
297
+
298
+ ### (Необязательно) Шаг 7: Добавьте локализованную маршрутизацию в ваше приложение
299
+
300
+ Для обработки локализованной маршрутизации в вашем приложении на Svelte вы можете использовать `svelte-spa-router` вместе с `localeFlatMap` из Intlayer для генерации маршрутов для каждой локали.
301
+
302
+ Сначала установите `svelte-spa-router`:
303
+
304
+ ```bash packageManager="npm"
305
+ npm install svelte-spa-router
306
+ ```
307
+
308
+ ```bash packageManager="pnpm"
309
+ pnpm add svelte-spa-router
310
+ ```
311
+
312
+ ```bash packageManager="yarn"
313
+ yarn add svelte-spa-router
314
+ ```
315
+
316
+ ```bash packageManager="bun"
317
+ bun add svelte-spa-router
318
+ ```
319
+
320
+ Затем создайте файл `Router.svelte` для определения ваших маршрутов:
321
+
322
+ ```svelte fileName="src/Router.svelte"
323
+ <script lang="ts">
324
+ import { localeFlatMap } from "intlayer";
325
+ import Router from "svelte-spa-router";
326
+ import { wrap } from "svelte-spa-router/wrap";
327
+ import App from "./App.svelte";
328
+
329
+ const routes = Object.fromEntries(
330
+ localeFlatMap(({locale, urlPrefix}) => [
331
+ [
332
+ urlPrefix || '/',
333
+ wrap({
334
+ component: App as any,
335
+ props: {
336
+ locale,
337
+ },
338
+ }),
339
+ ],
340
+ ])
341
+ );
342
+ </script>
343
+
344
+ <Router {routes} />
345
+ ```
346
+
347
+ Обновите ваш `main.ts`, чтобы монтировать компонент `Router` вместо `App`:
348
+
349
+ ```typescript fileName="src/main.ts"
350
+ import { mount } from "svelte";
351
+ import Router from "./Router.svelte";
352
+
353
+ const app = mount(Router, {
354
+ target: document.getElementById("app")!,
355
+ });
356
+
357
+ export default app;
358
+ ```
359
+
360
+ Наконец, обновите ваш `App.svelte`, чтобы принимать проп `locale` и использовать его с `useIntlayer`:
361
+
362
+ ```svelte fileName="src/App.svelte"
363
+ <script lang="ts">
364
+ import type { Locale } from 'intlayer';
365
+ import { useIntlayer } from 'svelte-intlayer';
366
+ import Counter from './lib/Counter.svelte';
367
+ import LocaleSwitcher from './lib/LocaleSwitcher.svelte';
368
+
369
+ export let locale: Locale;
370
+
371
+ // Используем хук useIntlayer для получения контента на основе текущей локали
372
+ $: content = useIntlayer('app', locale);
373
+ </script>
374
+
375
+ <main>
376
+ <div class="locale-switcher-container">
377
+ <LocaleSwitcher currentLocale={locale} />
378
+ </div>
379
+
380
+ <!-- ... остальная часть вашего приложения ... -->
381
+ </main>
382
+ ```
383
+
384
+ #### Настройка маршрутизации на стороне сервера (необязательно)
385
+
386
+ Параллельно вы также можете использовать `intlayerProxy` для добавления маршрутизации на стороне сервера в ваше приложение. Этот плагин автоматически определит текущую локаль на основе URL и установит соответствующее cookie с локалью. Если локаль не указана, плагин определит наиболее подходящую локаль на основе языковых предпочтений браузера пользователя. Если локаль не будет обнаружена, произойдет перенаправление на локаль по умолчанию.
387
+
388
+ > Обратите внимание, что для использования `intlayerProxy` в продакшене необходимо перевести пакет `vite-intlayer` из `devDependencies` в `dependencies`.
389
+
390
+ ```typescript {3,7} fileName="vite.config.ts" codeFormat="typescript"
391
+ import { defineConfig } from "vite";
392
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
393
+ import { intlayer, intlayerProxy } from "vite-intlayer";
394
+
395
+ plugins: [svelte(), intlayer(), intlayerProxy()],
396
+ });
397
+ ```
398
+
399
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
400
+ import { defineConfig } from "vite";
401
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
402
+ import { intlayer, intlayerProxy } from "vite-intlayer";
403
+
404
+ // https://vitejs.dev/config/
405
+ export default defineConfig({
406
+ plugins: [svelte(), intlayer(), intlayerProxy()],
407
+ });
408
+ ```
409
+
410
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
411
+ const { defineConfig } = require("vite");
412
+ const { svelte } = require("@sveltejs/vite-plugin-svelte");
413
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
414
+
415
+ // https://vitejs.dev/config/
416
+ module.exports = defineConfig({
417
+ plugins: [svelte(), intlayer(), intlayerProxy()],
418
+ });
419
+ plugins: [svelte(), intlayer(), intlayerProxy()],
420
+ });
421
+ ```
268
422
 
269
423
  ### (Необязательно) Шаг 8: Изменение URL при смене локали
270
424
 
271
- [заполнить]
425
+ Чтобы позволить пользователям переключать языки и обновлять URL соответствующим образом, вы можете создать компонент `LocaleSwitcher`. Этот компонент будет использовать `getLocalizedUrl` из `intlayer` и `push` из `svelte-spa-router`.
272
426
 
273
- ### (Необязательно) Шаг 9: Переключение атрибутов языка и направления HTML
427
+ ```svelte fileName="src/lib/LocaleSwitcher.svelte"
428
+ <script lang="ts">
429
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
430
+ import { useLocale } from "svelte-intlayer";
431
+ import { push } from "svelte-spa-router";
274
432
 
275
- [заполнить]
433
+ export let currentLocale: string | undefined = undefined;
276
434
 
277
- ### (Необязательно) Шаг 10: Создание локализованного компонента ссылки
435
+ // Получение информации о локали
436
+ const { locale, availableLocales } = useLocale();
278
437
 
279
- [заполнить]
438
+ // Обработка изменения локали
439
+ const changeLocale = (event: Event) => {
440
+ const target = event.target as HTMLSelectElement;
441
+ const newLocale = target.value;
442
+ const currentUrl = window.location.pathname;
443
+ const url = getLocalizedUrl( currentUrl, newLocale);
444
+ push(url);
445
+ };
446
+ </script>
447
+
448
+ <div class="locale-switcher">
449
+ <select value={currentLocale ?? $locale} onchange={changeLocale}>
450
+ {#each availableLocales ?? [] as loc}
451
+ <option value={loc}>
452
+ {getLocaleName(loc)}
453
+ </option>
454
+ {/each}
455
+ </select>
456
+ </div>
457
+ ```
280
458
 
281
459
  ### Конфигурация Git
282
460
 
@@ -291,23 +469,21 @@ module.exports = appContent;
291
469
 
292
470
  ### Расширение VS Code
293
471
 
294
- Для улучшения вашего опыта разработки с Intlayer вы можете установить официальное **расширение Intlayer для VS Code**.
472
+ Чтобы улучшить ваш опыт разработки с Intlayer, вы можете установить официальное расширение **Intlayer для VS Code**.
295
473
 
296
- [Установить из магазина расширений VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
474
+ [Установить из VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
297
475
 
298
476
  Это расширение предоставляет:
299
477
 
300
- - **Автозаполнение** ключей перевода.
478
+ - **Автозаполнение** ключей переводов.
301
479
  - **Обнаружение ошибок в реальном времени** для отсутствующих переводов.
302
480
  - **Встроенный просмотр** переведенного контента.
303
481
  - **Быстрые действия** для удобного создания и обновления переводов.
304
482
 
305
- Для получения дополнительной информации о том, как использовать расширение, обратитесь к [документации по расширению Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
483
+ Для получения дополнительной информации о том, как использовать расширение, обратитесь к [документации расширения Intlayer для VS Code](https://intlayer.org/doc/vs-code-extension).
306
484
 
307
485
  ---
308
486
 
309
- ### Продвинутые возможности
487
+ ### Продвинуться дальше
310
488
 
311
- Для расширения возможностей вы можете реализовать [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) или вынести ваш контент во внешний [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).
312
-
313
- ---
489
+ Чтобы продвинуться дальше, вы можете реализовать [визуальный редактор](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_visual_editor.md) или вынести ваш контент, используя [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/ru/intlayer_CMS.md).