@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.
- 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 +738 -0
- package/docs/ar/intlayer_with_vite+svelte.md +288 -104
- package/docs/de/intlayer_with_svelte_kit.md +738 -0
- package/docs/de/intlayer_with_vite+svelte.md +302 -101
- package/docs/en/intlayer_with_nextjs_16.md +10 -2
- package/docs/en/intlayer_with_svelte_kit.md +570 -0
- package/docs/en/intlayer_with_vite+svelte.md +22 -6
- package/docs/en/introduction.md +2 -0
- package/docs/en-GB/intlayer_with_svelte_kit.md +738 -0
- package/docs/en-GB/intlayer_with_vite+svelte.md +262 -84
- package/docs/es/intlayer_with_svelte_kit.md +738 -0
- package/docs/es/intlayer_with_vite+svelte.md +300 -107
- package/docs/fr/intlayer_with_svelte_kit.md +770 -0
- package/docs/fr/intlayer_with_vite+svelte.md +297 -101
- package/docs/hi/intlayer_with_svelte_kit.md +738 -0
- package/docs/hi/intlayer_with_vite+svelte.md +298 -108
- package/docs/id/intlayer_with_svelte_kit.md +738 -0
- package/docs/id/intlayer_with_vite+svelte.md +277 -99
- package/docs/it/intlayer_with_svelte_kit.md +770 -0
- package/docs/it/intlayer_with_vite+svelte.md +275 -99
- package/docs/ja/intlayer_with_svelte_kit.md +738 -0
- package/docs/ja/intlayer_with_vite+svelte.md +295 -110
- package/docs/ko/intlayer_with_svelte_kit.md +738 -0
- package/docs/ko/intlayer_with_vite+svelte.md +286 -199
- package/docs/pl/intlayer_with_svelte_kit.md +740 -0
- package/docs/pl/intlayer_with_vite+svelte.md +273 -101
- package/docs/pt/intlayer_with_svelte_kit.md +772 -0
- package/docs/pt/intlayer_with_vite+svelte.md +290 -96
- package/docs/ru/intlayer_with_svelte_kit.md +738 -0
- package/docs/ru/intlayer_with_vite+svelte.md +275 -99
- package/docs/tr/intlayer_with_svelte_kit.md +738 -0
- package/docs/tr/intlayer_with_vite+svelte.md +297 -119
- package/docs/vi/intlayer_with_svelte_kit.md +738 -0
- package/docs/vi/intlayer_with_vite+svelte.md +275 -102
- package/docs/zh/intlayer_with_svelte_kit.md +738 -0
- package/docs/zh/intlayer_with_vite+svelte.md +309 -107
- package/package.json +9 -9
- package/src/generated/docs.entry.ts +19 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
createdAt: 2025-04-18
|
|
3
|
-
updatedAt: 2025-
|
|
4
|
-
title: Como traduzir
|
|
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
|
-
|
|
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
|
|
24
|
+
changes: Histórico iniciado
|
|
22
25
|
---
|
|
23
26
|
|
|
24
|
-
# Traduza seu Vite
|
|
27
|
+
# Traduza seu site Vite e Svelte usando Intlayer | Internacionalização (i18n)
|
|
25
28
|
|
|
26
|
-
|
|
29
|
+
## Índice
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
<TOC/>
|
|
29
32
|
|
|
30
33
|
## O que é o Intlayer?
|
|
31
34
|
|
|
32
|
-
**Intlayer** é uma biblioteca inovadora e de
|
|
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
|
-
- **
|
|
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
|
-
|
|
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/
|
|
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 [
|
|
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"
|
|
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
|
|
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
|
|
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"
|
|
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
|
-
|
|
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
|
|
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/
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
450
|
+
export let currentLocale: string | undefined = undefined;
|
|
275
451
|
|
|
276
|
-
|
|
452
|
+
// Obter informações do idioma
|
|
453
|
+
const { locale, availableLocales } = useLocale();
|
|
277
454
|
|
|
278
|
-
|
|
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
|
|
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
|
|
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
|
-
- **
|
|
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
|
|
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
|
|
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).
|