@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.
Files changed (44) hide show
  1. package/README.md +1 -0
  2. package/dist/cjs/generated/docs.entry.cjs +19 -0
  3. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  4. package/dist/esm/generated/docs.entry.mjs +19 -0
  5. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  6. package/dist/types/generated/docs.entry.d.ts +1 -0
  7. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  8. package/docs/ar/intlayer_with_svelte_kit.md +730 -0
  9. package/docs/ar/intlayer_with_vite+svelte.md +288 -104
  10. package/docs/de/intlayer_with_svelte_kit.md +730 -0
  11. package/docs/de/intlayer_with_vite+svelte.md +302 -101
  12. package/docs/en/intlayer_with_svelte_kit.md +560 -0
  13. package/docs/en/intlayer_with_vite+svelte.md +153 -15
  14. package/docs/en/introduction.md +2 -0
  15. package/docs/en-GB/intlayer_with_svelte_kit.md +730 -0
  16. package/docs/en-GB/intlayer_with_vite+svelte.md +262 -84
  17. package/docs/es/intlayer_with_svelte_kit.md +730 -0
  18. package/docs/es/intlayer_with_vite+svelte.md +300 -107
  19. package/docs/fr/intlayer_with_svelte_kit.md +762 -0
  20. package/docs/fr/intlayer_with_vite+svelte.md +297 -101
  21. package/docs/hi/intlayer_with_svelte_kit.md +730 -0
  22. package/docs/hi/intlayer_with_vite+svelte.md +298 -108
  23. package/docs/id/intlayer_with_svelte_kit.md +730 -0
  24. package/docs/id/intlayer_with_vite+svelte.md +277 -99
  25. package/docs/it/intlayer_with_svelte_kit.md +762 -0
  26. package/docs/it/intlayer_with_vite+svelte.md +275 -99
  27. package/docs/ja/intlayer_with_svelte_kit.md +730 -0
  28. package/docs/ja/intlayer_with_vite+svelte.md +295 -110
  29. package/docs/ko/intlayer_with_svelte_kit.md +730 -0
  30. package/docs/ko/intlayer_with_vite+svelte.md +286 -199
  31. package/docs/pl/intlayer_with_svelte_kit.md +732 -0
  32. package/docs/pl/intlayer_with_vite+svelte.md +273 -101
  33. package/docs/pt/intlayer_with_svelte_kit.md +764 -0
  34. package/docs/pt/intlayer_with_vite+svelte.md +290 -96
  35. package/docs/ru/intlayer_with_svelte_kit.md +730 -0
  36. package/docs/ru/intlayer_with_vite+svelte.md +275 -99
  37. package/docs/tr/intlayer_with_svelte_kit.md +730 -0
  38. package/docs/tr/intlayer_with_vite+svelte.md +297 -119
  39. package/docs/vi/intlayer_with_svelte_kit.md +730 -0
  40. package/docs/vi/intlayer_with_vite+svelte.md +275 -102
  41. package/docs/zh/intlayer_with_svelte_kit.md +730 -0
  42. package/docs/zh/intlayer_with_vite+svelte.md +309 -107
  43. package/package.json +6 -6
  44. package/src/generated/docs.entry.ts +19 -0
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  createdAt: 2025-04-18
3
- updatedAt: 2025-06-29
4
- title: Como traduzir seu Vite and Svelte – guia i18n 2025
3
+ updatedAt: 2025-11-19
4
+ title: Como traduzir sua aplicação Vite e Svelte – guia i18n 2025
5
5
  description: Descubra como tornar seu site Vite e Svelte multilíngue. Siga a documentação para internacionalizar (i18n) e traduzir.
6
6
  keywords:
7
7
  - Internacionalização
@@ -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: Atualização da documentação
19
22
  - version: 5.5.10
20
23
  date: 2025-06-29
21
- changes: Histórico inicial
24
+ changes: Histórico iniciado
22
25
  ---
23
26
 
24
- # Traduza seu Vite and Svelte com Intlayer | Internacionalização (i18n)
27
+ # Traduza seu site Vite e Svelte usando Intlayer | Internacionalização (i18n)
25
28
 
26
- > Este pacote está em desenvolvimento. Veja a [issue](https://github.com/aymericzip/intlayer/issues/114) para mais informações. Demonstre seu interesse pelo Intlayer para Svelte curtindo a issue
29
+ ## Índice
27
30
 
28
- <!-- Veja o [Modelo de Aplicação](https://github.com/aymericzip/intlayer-solid-template) no GitHub. -->
31
+ <TOC/>
29
32
 
30
33
  ## O que é o Intlayer?
31
34
 
32
- **Intlayer** é uma biblioteca inovadora e de código aberto para internacionalização (i18n) projetada para simplificar o suporte multilíngue em aplicações web modernas.
35
+ **Intlayer** é uma biblioteca inovadora e open-source de internacionalização (i18n) projetada para simplificar o suporte multilíngue em aplicações web modernas.
33
36
 
34
37
  Com o Intlayer, você pode:
35
38
 
36
39
  - **Gerenciar traduções facilmente** usando dicionários declarativos no nível do componente.
37
40
  - **Localizar dinamicamente metadados**, rotas e conteúdo.
38
41
  - **Garantir suporte ao TypeScript** com tipos gerados automaticamente, melhorando o autocompletar e a detecção de erros.
39
- - **Beneficie de recursos avançados**, como detecção dinâmica de localidade e troca de idioma.
42
+ - **Aproveitar recursos avançados**, como detecção e troca dinâmica de locale.
40
43
 
41
44
  ---
42
45
 
43
46
  ## Guia Passo a Passo para Configurar o Intlayer em uma Aplicação Vite e 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="Demo CodeSandbox - Como Internacionalizar sua aplicação usando Intlayer"
52
+ sandbox="allow-forms allow-modals allow-popups allow-presentation allow-same-origin allow-scripts"
53
+ loading="lazy"
54
+ />
55
+
56
+ Veja o [Template da Aplicação](https://github.com/aymericzip/intlayer-vite-svelte-template) no GitHub.
57
+
45
58
  ### Passo 1: Instalar Dependências
46
59
 
47
60
  Instale os pacotes necessários usando 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
- O pacote principal que fornece ferramentas de internacionalização para gerenciamento de configuração, tradução, [declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/get_started.md), transpiração e [comandos CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_cli.md).
84
+ O pacote principal que fornece ferramentas de internacionalização para gerenciamento de configuração, tradução, [declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/content_file.md), transpiração e [comandos CLI](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_cli.md).
69
85
 
70
86
  - **svelte-intlayer**
71
87
  O pacote que integra o Intlayer com a aplicação Svelte. Ele fornece provedores de contexto e hooks para internacionalização em Svelte.
72
88
 
73
89
  - **vite-intlayer**
74
- Inclui o plugin Vite para integrar o Intlayer com o [empacotador Vite](https://vite.dev/guide/why.html#why-bundle-for-production), bem como middleware para detectar a localidade preferida do usuário, gerenciar cookies e lidar com redirecionamento de URL.
90
+ Inclui o plugin Vite para integrar o Intlayer com o [bundler Vite](https://vite.dev/guide/why.html#why-bundle-for-production), assim como middleware para detectar o locale preferido do usuário, gerenciar cookies e lidar com redirecionamento de URL.
75
91
 
76
92
  ### Passo 2: Configuração do seu projeto
77
93
 
78
94
  Crie um arquivo de configuração para configurar os idiomas da sua aplicação:
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 = {
@@ -86,26 +102,7 @@ const config: IntlayerConfig = {
86
102
  Locales.ENGLISH,
87
103
  Locales.FRENCH,
88
104
  Locales.SPANISH,
89
- // Seus outros idiomas
90
- ],
91
- defaultLocale: Locales.ENGLISH,
92
- },
93
- };
94
-
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
- // Seus outros idiomas
105
+ // Seus outros locales
109
106
  ],
110
107
  defaultLocale: Locales.ENGLISH,
111
108
  },
@@ -114,32 +111,13 @@ const config = {
114
111
  export default config;
115
112
  ```
116
113
 
117
- ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
118
- const { Locales } = require("intlayer");
119
-
120
- /** @type {import('intlayer').IntlayerConfig} */
121
- const config = {
122
- internationalization: {
123
- locales: [
124
- Locales.ENGLISH,
125
- Locales.FRENCH,
126
- Locales.SPANISH,
127
- // Seus outros idiomas
128
- ],
129
- defaultLocale: Locales.ENGLISH,
130
- },
131
- };
132
-
133
- module.exports = config;
134
- ```
135
-
136
114
  > Através deste arquivo de configuração, você pode configurar URLs localizadas, redirecionamento de middleware, nomes de cookies, a localização e extensão das suas declarações de conteúdo, desabilitar logs do Intlayer no console, e muito mais. Para uma lista completa dos parâmetros disponíveis, consulte a [documentação de configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md).
137
115
 
138
- ### Passo 3: Integre o Intlayer na sua Configuração do Vite
116
+ ### Passo 3: Integre o Intlayer na sua Configuração Vite
139
117
 
140
118
  Adicione o plugin intlayer na sua configuração.
141
119
 
142
- ```typescript fileName="vite.config.ts" codeFormat="typescript"
120
+ ```typescript fileName="vite.config.ts"
143
121
  import { defineConfig } from "vite";
144
122
  import { svelte } from "@sveltejs/vite-plugin-svelte";
145
123
  import { intlayer } from "vite-intlayer";
@@ -150,29 +128,7 @@ export default defineConfig({
150
128
  });
151
129
  ```
152
130
 
153
- ```javascript fileName="vite.config.mjs" codeFormat="esm"
154
- import { defineConfig } from "vite";
155
- import { svelte } from "@sveltejs/vite-plugin-svelte";
156
- import { intlayer } from "vite-intlayer";
157
-
158
- // https://vitejs.dev/config/
159
- export default defineConfig({
160
- plugins: [svelte(), intlayer()],
161
- });
162
- ```
163
-
164
- ```javascript fileName="vite.config.cjs" codeFormat="commonjs"
165
- const { defineConfig } = require("vite");
166
- const react = require("@vitejs/plugin-react-swc");
167
- const { intlayer } = require("vite-intlayer");
168
-
169
- // https://vitejs.dev/config/
170
- module.exports = defineConfig({
171
- plugins: [react(), intlayer()],
172
- });
173
- ```
174
-
175
- > O plugin Vite `intlayer()` é usado para integrar o Intlayer com o Vite. Ele garante a construção dos arquivos de declaração de conteúdo e os monitora no modo de desenvolvimento. Define variáveis de ambiente do Intlayer dentro da aplicação Vite. Além disso, fornece aliases para otimizar o desempenho.
131
+ > O plugin `intlayer()` para Vite é usado para integrar o Intlayer com o Vite. Ele garante a construção dos arquivos de declaração de conteúdo e os monitora no modo de desenvolvimento. Define as variáveis de ambiente do Intlayer dentro da aplicação Vite. Além disso, fornece aliases para otimizar o desempenho.
176
132
 
177
133
  ### Passo 4: Declare Seu Conteúdo
178
134
 
@@ -199,6 +155,7 @@ export default appContent;
199
155
  import { t } from "intlayer";
200
156
 
201
157
  /** @type {import('intlayer').Dictionary} */
158
+ // Declaração do conteúdo da aplicação
202
159
  const appContent = {
203
160
  key: "app",
204
161
  content: {
@@ -249,48 +206,287 @@ module.exports = appContent;
249
206
  }
250
207
  ```
251
208
 
252
- > Suas declarações de conteúdo podem ser definidas em qualquer lugar da sua aplicação, desde que estejam incluídas no diretório `contentDir` (por padrão, `./src`). E correspondam à extensão do arquivo de declaração de conteúdo (por padrão, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
209
+ > Suas declarações de conteúdo podem ser definidas em qualquer lugar da sua aplicação assim que forem incluídas no diretório `contentDir` (por padrão, `./src`). E devem corresponder à extensão do arquivo de declaração de conteúdo (por padrão, `.content.{json,ts,tsx,js,jsx,mjs,mjx,cjs,cjx}`).
253
210
 
254
- > Para mais detalhes, consulte a [documentação de declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/get_started.md).
211
+ > Para mais detalhes, consulte a [documentação de declaração de conteúdo](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/dictionary/content_file.md).
255
212
 
256
213
  ### Passo 5: Utilize o Intlayer no Seu Código
257
214
 
258
- [para completar]
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
+ <!-- Renderizar conteúdo como conteúdo simples -->
226
+ <h1>{$content.title}</h1>
227
+ <!-- Para renderizar o conteúdo editável usando o editor -->
228
+ <h1><svelte:component this={$content.title} /></h1>
229
+ <!-- Para renderizar o conteúdo como uma string -->
230
+ <div aria-label={$content.title.value}></div>
231
+ ```
259
232
 
260
233
  ### (Opcional) Passo 6: Alterar o idioma do seu conteúdo
261
234
 
262
- [para completar]
235
+ ```svelte fileName="src/App.svelte"
236
+ <script lang="ts">
237
+ import { getLocaleName } from 'intlayer';
238
+ import { useLocale } from 'svelte-intlayer';
239
+
240
+ // Obter informações do locale e função setLocale
241
+ const { locale, availableLocales, setLocale } = useLocale();
242
+
243
+ // Manipular mudança de locale
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
+ ### (Opcional) Passo 7: Renderizar Markdown
263
+
264
+ O Intlayer suporta a renderização de conteúdo Markdown diretamente na sua aplicação Svelte. Por padrão, o Markdown é tratado como texto simples. Para converter Markdown em HTML enriquecido, você pode integrar `@humanspeak/svelte-markdown` ou outro parser de markdown.
265
+
266
+ > Para ver como declarar conteúdo markdown usando o pacote `intlayer`, consulte a [documentação de markdown](https://github.com/aymericzip/intlayer/tree/main/docs/docs/pt/dictionary/markdown.md).
267
+
268
+ ```svelte fileName="src/App.svelte"
269
+ <script>
270
+ import { setIntlayerMarkdown } from "svelte-intlayer";
271
+
272
+ setIntlayerMarkdown((markdown) =>
273
+ // renderizar o conteúdo markdown como uma string
274
+ return markdown;
275
+ );
276
+ </script>
277
+
278
+ <h1>{$content.markdownContent}</h1>
279
+ ```
280
+
281
+ > Você também pode acessar os dados do front-matter do seu markdown usando a propriedade `content.markdownContent.metadata.xxx`.
282
+
283
+ ### (Opcional) Passo 8: Configurar o editor / CMS do intlayer
284
+
285
+ Para configurar o editor do intlayer, você deve seguir a [documentação do editor intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md).
286
+
287
+ Para configurar o CMS do intlayer, você deve seguir a [documentação do CMS intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md).
263
288
 
264
- ### (Opcional) Passo 7: Adicionar Roteamento Localizado à sua aplicação
289
+ Em paralelo, na sua aplicação Svelte, você deve adicionar a seguinte linha em um layout, ou na raiz da sua aplicação:
265
290
 
266
- [para completar]
291
+ ```svelte fileName="src/layout.svelte"
292
+ import { useIntlayerEditor } from "svelte-intlayer";
293
+
294
+ useIntlayerEditor();
295
+ ```
296
+
297
+ ### (Opcional) Passo 7: Adicionar roteamento localizado à sua aplicação
298
+
299
+ Para lidar com roteamento localizado na sua aplicação Svelte, você pode usar o `svelte-spa-router` junto com o `localeFlatMap` do Intlayer para gerar rotas para cada localidade.
300
+
301
+ Primeiro, instale o `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
+ Então, crie um arquivo `Router.svelte` para definir suas rotas:
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
+ Atualize seu `main.ts` para montar o componente `Router` em vez do `App`:
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
+ Finalmente, atualize seu `App.svelte` para receber a prop `locale` e usá-la com `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';
367
+
368
+ export let locale: Locale;
369
+
370
+ $: content = useIntlayer('app', locale);
371
+ </script>
372
+
373
+ <main>
374
+ <div class="locale-switcher-container">
375
+ <LocaleSwitcher currentLocale={locale} />
376
+ </div>
377
+
378
+ <!-- ... resto da sua aplicação ... -->
379
+ </main>
380
+ ```
381
+
382
+ #### Configurar Roteamento no Lado do Servidor (Opcional)
383
+
384
+ Paralelamente, você também pode usar o `intlayerProxy` para adicionar roteamento do lado do servidor à sua aplicação. Este plugin detectará automaticamente o locale atual com base na URL e definirá o cookie de locale apropriado. Se nenhum locale for especificado, o plugin determinará o locale mais adequado com base nas preferências de idioma do navegador do usuário. Se nenhum locale for detectado, ele redirecionará para o locale padrão.
385
+
386
+ > Note que para usar o `intlayerProxy` em produção, você precisa mover o pacote `vite-intlayer` de `devDependencies` para `dependencies`.
387
+
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
+ plugins: [svelte(), intlayer(), intlayerProxy()],
394
+ });
395
+ ```
396
+
397
+ ```javascript {3,7} fileName="vite.config.mjs" codeFormat="esm"
398
+ import { defineConfig } from "vite";
399
+ import { svelte } from "@sveltejs/vite-plugin-svelte";
400
+ import { intlayer, intlayerProxy } from "vite-intlayer";
401
+
402
+ // https://vitejs.dev/config/
403
+ export default defineConfig({
404
+ plugins: [svelte(), intlayer(), intlayerProxy()],
405
+ });
406
+ ```
407
+
408
+ ```javascript {3,7} fileName="vite.config.cjs" codeFormat="commonjs"
409
+ const { defineConfig } = require("vite");
410
+ const { svelte } = require("@sveltejs/vite-plugin-svelte");
411
+ const { intlayer, intlayerProxy } = require("vite-intlayer");
412
+
413
+ // https://vitejs.dev/config/
414
+ module.exports = defineConfig({
415
+ plugins: [svelte(), intlayer(), intlayerProxy()],
416
+ });
417
+ ```
418
+
419
+ ### (Opcional) Passo 8: Alterar a URL quando o locale mudar
420
+
421
+ Para permitir que os usuários mudem de idioma e atualizem a URL de acordo, você pode criar um componente `LocaleSwitcher`. Este componente usará `getLocalizedUrl` do `intlayer` e `push` do `svelte-spa-router`.
422
+
423
+ ```svelte fileName="src/lib/LocaleSwitcher.svelte"
424
+ <script lang="ts">
425
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
426
+ import { useLocale } from "svelte-intlayer";
427
+ import { push } from "svelte-spa-router";
428
+
429
+ export let currentLocale: string | undefined = undefined;
430
+
431
+ // Obter informações do locale
432
+ const { locale, availableLocales } = useLocale();
433
+
434
+ // Manipular mudança de locale
435
+ const changeLocale = (event: Event) => {
436
+ plugins: [svelte(), intlayer(), intlayerProxy()],
437
+ });
438
+ ```
267
439
 
268
440
  ### (Opcional) Passo 8: Alterar a URL quando o idioma mudar
269
441
 
270
- [para completar]
442
+ Para permitir que os usuários mudem de idioma e atualizem a URL de acordo, você pode criar um componente `LocaleSwitcher`. Este componente usará `getLocalizedUrl` do `intlayer` e `push` do `svelte-spa-router`.
271
443
 
272
- ### (Opcional) Passo 9: Alterar os atributos de idioma e direção do HTML
444
+ ```svelte fileName="src/lib/LocaleSwitcher.svelte"
445
+ <script lang="ts">
446
+ import { getLocaleName, getLocalizedUrl } from "intlayer";
447
+ import { useLocale } from "svelte-intlayer";
448
+ import { push } from "svelte-spa-router";
273
449
 
274
- [para completar]
450
+ export let currentLocale: string | undefined = undefined;
275
451
 
276
- ### (Opcional) Passo 10: Criar um Componente de Link Localizado
452
+ // Obter informações do idioma
453
+ const { locale, availableLocales } = useLocale();
277
454
 
278
- [para completar]
455
+ // Lidar com a mudança de idioma
456
+ const changeLocale = (event: Event) => {
457
+ const target = event.target as HTMLSelectElement;
458
+ const newLocale = target.value;
459
+ const currentUrl = window.location.pathname;
460
+ const url = getLocalizedUrl( currentUrl, newLocale);
461
+ push(url);
462
+ };
463
+ </script>
464
+
465
+ <div class="locale-switcher">
466
+ <select value={currentLocale ?? $locale} onchange={changeLocale}>
467
+ {#each availableLocales ?? [] as loc}
468
+ <option value={loc}>
469
+ {getLocaleName(loc)}
470
+ </option>
471
+ {/each}
472
+ </select>
473
+ </div>
474
+ ```
279
475
 
280
476
  ### Configuração do Git
281
477
 
282
478
  É recomendado ignorar os arquivos gerados pelo Intlayer. Isso permite evitar que eles sejam comitados no seu repositório Git.
283
479
 
284
- Para isso, você pode adicionar as seguintes instruções ao seu arquivo `.gitignore`:
480
+ Para isso, você pode adicionar as seguintes instruções no seu arquivo `.gitignore`:
285
481
 
286
482
  ```plaintext
287
483
  # Ignorar os arquivos gerados pelo Intlayer
288
484
  .intlayer
289
485
  ```
290
486
 
291
- ### Extensão VS Code
487
+ ### Extensão para VS Code
292
488
 
293
- Para melhorar sua experiência de desenvolvimento com o Intlayer, você pode instalar a **Extensão oficial do Intlayer para VS Code**.
489
+ Para melhorar sua experiência de desenvolvimento com o Intlayer, você pode instalar a extensão oficial **Intlayer VS Code Extension**.
294
490
 
295
491
  [Instalar no VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
296
492
 
@@ -298,15 +494,13 @@ Esta extensão oferece:
298
494
 
299
495
  - **Autocompletar** para chaves de tradução.
300
496
  - **Detecção de erros em tempo real** para traduções ausentes.
301
- - **Visualizações inline** do conteúdo traduzido.
497
+ - **Pré-visualizações inline** do conteúdo traduzido.
302
498
  - **Ações rápidas** para criar e atualizar traduções facilmente.
303
499
 
304
- Para mais detalhes sobre como usar a extensão, consulte a [documentação da Extensão Intlayer para VS Code](https://intlayer.org/doc/vs-code-extension).
500
+ Para mais detalhes sobre como usar a extensão, consulte a [documentação da Intlayer VS Code Extension](https://intlayer.org/doc/vs-code-extension).
305
501
 
306
502
  ---
307
503
 
308
504
  ### Ir Além
309
505
 
310
- Para ir além, você pode implementar o [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) ou externalizar seu conteúdo usando o [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md).
311
-
312
- ---
506
+ Para ir mais longe, você pode implementar o [editor visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md) ou externalizar seu conteúdo usando o [CMS](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_CMS.md).