@intlayer/docs 7.0.0-canary.1 → 7.0.0-canary.3

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 (43) hide show
  1. package/dist/cjs/common.cjs.map +1 -1
  2. package/dist/esm/common.mjs.map +1 -1
  3. package/dist/types/common.d.ts +5 -0
  4. package/dist/types/common.d.ts.map +1 -1
  5. package/docs/ar/intlayer_with_nextjs_16.md +1652 -0
  6. package/docs/ar/releases/v7.md +486 -0
  7. package/docs/de/intlayer_with_nextjs_16.md +1662 -0
  8. package/docs/de/releases/v7.md +503 -0
  9. package/docs/en/intlayer_with_nextjs_15.md +5 -2
  10. package/docs/en/intlayer_with_nextjs_16.md +4 -4
  11. package/docs/en-GB/intlayer_with_nextjs_16.md +1642 -0
  12. package/docs/en-GB/releases/v7.md +486 -0
  13. package/docs/es/intlayer_with_nextjs_16.md +1670 -0
  14. package/docs/es/releases/v7.md +503 -0
  15. package/docs/fr/intlayer_with_nextjs_16.md +1692 -0
  16. package/docs/fr/releases/v7.md +504 -0
  17. package/docs/hi/intlayer_with_nextjs_16.md +1618 -0
  18. package/docs/hi/releases/v7.md +486 -0
  19. package/docs/id/intlayer_with_nextjs_16.md +1604 -0
  20. package/docs/id/releases/v7.md +503 -0
  21. package/docs/it/intlayer_with_nextjs_16.md +1600 -0
  22. package/docs/it/releases/v7.md +505 -0
  23. package/docs/ja/intlayer_CMS.md +0 -9
  24. package/docs/ja/intlayer_with_nextjs_16.md +1788 -0
  25. package/docs/ja/releases/v7.md +504 -0
  26. package/docs/ko/intlayer_with_nextjs_16.md +1641 -0
  27. package/docs/ko/releases/v7.md +504 -0
  28. package/docs/pl/intlayer_with_nextjs_16.md +1645 -0
  29. package/docs/pl/releases/v7.md +486 -0
  30. package/docs/pt/intlayer_with_nextjs_16.md +1646 -0
  31. package/docs/pt/introduction.md +0 -15
  32. package/docs/pt/releases/v7.md +486 -0
  33. package/docs/ru/intlayer_with_nextjs_16.md +1610 -0
  34. package/docs/ru/releases/v7.md +486 -0
  35. package/docs/tr/intlayer_with_nextjs_16.md +1599 -0
  36. package/docs/tr/releases/v7.md +486 -0
  37. package/docs/vi/intlayer_with_nextjs_16.md +1597 -0
  38. package/docs/vi/releases/v7.md +486 -0
  39. package/docs/zh/intlayer_CMS.md +0 -23
  40. package/docs/zh/intlayer_with_nextjs_16.md +1628 -0
  41. package/docs/zh/releases/v7.md +487 -0
  42. package/package.json +14 -14
  43. package/src/common.ts +5 -0
@@ -144,19 +144,6 @@ const MyComponent = () => {
144
144
 
145
145
  ## Principais Funcionalidades
146
146
 
147
- Intlayer oferece uma variedade de funcionalidades adaptadas para atender às necessidades do desenvolvimento web moderno. Abaixo estão as principais funcionalidades, com links para documentação detalhada de cada uma:
148
-
149
- - **Suporte à Internacionalização**: Amplie o alcance global da sua aplicação com suporte integrado para internacionalização.
150
- - **Editor Visual**: Melhore seu fluxo de desenvolvimento com plugins de editor projetados para Intlayer. Confira o [Guia do Editor Visual](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_visual_editor.md).
151
- const { myTranslatedContent } = useIntlayer("component-key");
152
-
153
- return <span>{myTranslatedContent}</span>;
154
- };
155
-
156
- ```
157
-
158
- ## Principais Funcionalidades
159
-
160
147
  O Intlayer oferece uma variedade de funcionalidades adaptadas para atender às necessidades do desenvolvimento web moderno. Abaixo estão as principais funcionalidades, com links para documentação detalhada de cada uma:
161
148
 
162
149
  - **Suporte à Internacionalização**: Amplie o alcance global da sua aplicação com suporte integrado para internacionalização.
@@ -217,5 +204,3 @@ Cada guia de integração inclui as melhores práticas para usar os recursos do
217
204
  Valorizamos o poder do código aberto e do desenvolvimento orientado pela comunidade. Se desejar propor melhorias, adicionar um novo guia ou corrigir quaisquer problemas em nossa documentação, sinta-se à vontade para enviar um Pull Request ou abrir uma issue em nosso [repositório GitHub](https://github.com/aymericzip/intlayer/blob/main/docs/docs).
218
205
 
219
206
  **Pronto para traduzir sua aplicação de forma mais rápida e eficiente?** Mergulhe em nossa documentação para começar a usar o Intlayer hoje mesmo. Experimente uma abordagem robusta e simplificada para internacionalização que mantém seu conteúdo organizado e sua equipe mais produtiva.
220
-
221
- ---
@@ -0,0 +1,486 @@
1
+ ---
2
+ createdAt: 2025-09-22
3
+ updatedAt: 2025-09-23
4
+ title: Nova Intlayer v7 - O que há de novo?
5
+ description: Descubra as novidades da Intlayer v7. Grandes melhorias em desempenho, experiência do desenvolvedor e novos recursos para aprimorar seu fluxo de trabalho de internacionalização.
6
+ keywords:
7
+ - Intlayer
8
+ - Localização
9
+ - Desenvolvimento
10
+ - Desempenho
11
+ - Experiência do Desenvolvedor
12
+ - Recursos
13
+ - React
14
+ - Next.js
15
+ - JavaScript
16
+ - TypeScript
17
+ slugs:
18
+ - doc
19
+ - releases
20
+ - v7
21
+ ---
22
+
23
+ # Nova Intlayer v7 - O que há de novo?
24
+
25
+ Bem-vindo à Intlayer v7! Esta grande versão traz melhorias significativas em desempenho, segurança de tipos e experiência do desenvolvedor. Abaixo estão os destaques, com notas de migração e exemplos práticos.
26
+
27
+ ## Destaques
28
+
29
+ - Estratégia de cache para builds mais rápidos
30
+ - Geração aprimorada de tipos TypeScript com tipos específicos por localidade
31
+ - Otimização do pacote: Localidades como strings em vez de enum
32
+ - Novos modos de roteamento: `prefix-no-default`, `prefix-all`, `no-prefix`, `search-params`
33
+ - Armazenamento de localidade compatível com GDPR usando localStorage como padrão
34
+ - Configuração flexível de armazenamento: cookies, localStorage, sessionStorage ou múltiplos
35
+ - Pacote do Visual Editor 30% menor
36
+ - Opções aprimoradas de configuração de middleware
37
+ - Comportamento atualizado do comando fill para melhor gerenciamento de conteúdo
38
+ - Estabilidade aprimorada com atualizações completas dos arquivos de declaração de conteúdo
39
+ - Gerenciamento inteligente de tentativas para maior precisão na tradução
40
+ - Paralelização para processamento de tradução mais rápido
41
+ - Divisão inteligente para lidar com arquivos grandes dentro dos limites de contexto da IA
42
+
43
+ ---
44
+
45
+ ## Desempenho: Cache para builds mais rápidos
46
+
47
+ Em vez de reconstruir as declarações de conteúdo com esbuild a cada build, a versão 7 implementa uma estratégia de cache que acelera o processo de build.
48
+
49
+ ```bash
50
+ npx intlayer build
51
+ ```
52
+
53
+ O novo sistema de cache:
54
+
55
+ - Armazena declarações de conteúdo compiladas para evitar processamento redundante
56
+ - Detecta alterações e reconstrói apenas os arquivos modificados
57
+ - Reduz significativamente o tempo de build em projetos grandes
58
+
59
+ ---
60
+
61
+ ## TypeScript: Geração de tipos específicos por localidade
62
+
63
+ Os tipos TypeScript agora são gerados por localidade, proporcionando tipagem mais forte e eliminando tipos união entre todas as localidades.
64
+
65
+ **Comportamento na v6:**
66
+
67
+ ```tsx
68
+ const content = getIntlayer("my-title-content", "en");
69
+ // typeof content = { title: "My title" } | { title: "Mon titre" } | { title: "Mi título" }
70
+ ```
71
+
72
+ **Comportamento na v7:**
73
+
74
+ ```tsx
75
+ const content = getIntlayer("my-title-content", "en");
76
+ // typeof content = { title: "Meu título" }
77
+ ```
78
+
79
+ Benefícios:
80
+
81
+ - Autocompletar mais preciso no seu IDE
82
+ - Melhor segurança de tipos sem poluição entre localidades
83
+ - Desempenho aprimorado ao reduzir a complexidade dos tipos
84
+
85
+ ---
86
+
87
+ ## Otimização do bundle: Locales como strings
88
+
89
+ O tipo `Locales` não é mais um enum, o que significa que agora é totalmente tree-shakeable e não vai inflar seu bundle com milhares de registros de localidades não usados.
90
+
91
+ **v6:**
92
+
93
+ ```typescript
94
+ import { Locales } from "intlayer";
95
+ // Enum incluindo todas as localidades -> não é tree-shakeable
96
+
97
+ const locale: Locales = Locales.ENGLISH;
98
+ ```
99
+
100
+ **v7:**
101
+
102
+ ```typescript
103
+ import { Locales, Locale } from "intlayer";
104
+ // Tipo string -> totalmente tree-shakeable
105
+
106
+ const locale: Locale = Locales.ENGLISH;
107
+ ```
108
+
109
+ > Como `Locales` não é mais um enum, você terá que mudar o tipo de `Locales` para `Locale` para obter a localidade como um tipo.
110
+
111
+ Veja os [detalhes da implementação](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts) para mais informações.
112
+
113
+ ---
114
+
115
+ ## Novos modos de roteamento para maior flexibilidade
116
+
117
+ A versão 7 introduz uma configuração unificada `routing.mode` que substitui as opções anteriores `prefixDefault` e `noPrefix`, oferecendo um controle mais granular sobre a estrutura da URL.
118
+
119
+ ### Modos de roteamento disponíveis
120
+
121
+ - **`prefix-no-default`** (padrão): A localidade padrão não tem prefixo, as outras localidades têm
122
+ - `/dashboard` (en) ou `/fr/dashboard` (fr)
123
+ - **`prefix-all`**: Todas as localidades têm prefixo
124
+ - `/en/dashboard` (en) ou `/fr/dashboard` (fr)
125
+ - **`no-prefix`**: Sem prefixos de localidade nas URLs (localidade gerenciada via armazenamento/cabeçalhos)
126
+ - `/dashboard` para todas as localidades
127
+ - **`search-params`**: Localidade passada como parâmetro de consulta
128
+ - `/dashboard?locale=en` ou `/dashboard?locale=fr`
129
+
130
+ ### Configuração básica
131
+
132
+ ```typescript
133
+ // intlayer.config.ts
134
+ export default {
135
+ internationalization: {
136
+ locales: ["en", "fr", "es"],
137
+ defaultLocale: "en",
138
+ },
139
+ routing: {
140
+ mode: "prefix-no-default", // padrão
141
+ },
142
+ };
143
+ ```
144
+
145
+ ---
146
+
147
+ ## Conformidade com GDPR: armazenamento localStorage / cookies
148
+
149
+ A versão 7 prioriza a privacidade do usuário utilizando `localStorage` como mecanismo de armazenamento padrão em vez de cookies. Essa mudança ajuda na conformidade com o GDPR ao evitar a necessidade de consentimento para cookies relacionados às preferências de localidade.
150
+
151
+ ### Opções de configuração de armazenamento
152
+
153
+ O novo campo `routing.storage` também está disponível além das opções anteriores `middleware.cookieName` e `middleware.serverSetCookie`, oferecendo configurações flexíveis de armazenamento:
154
+
155
+ ```typescript
156
+ // Desabilitar armazenamento
157
+ storage: false
158
+
159
+ // Tipos simples de armazenamento
160
+ storage: 'cookie'
161
+ storage: 'localStorage'
162
+ storage: 'sessionStorage'
163
+
164
+ // Cookie com atributos personalizados
165
+ storage: {
166
+ type: 'cookie',
167
+ name: 'custom-locale',
168
+ domain: '.example.com',
169
+ secure: true,
170
+ sameSite: 'strict'
171
+ }
172
+
173
+ // localStorage com chave personalizada
174
+ storage: {
175
+ type: 'localStorage',
176
+ name: 'custom-locale'
177
+ }
178
+
179
+ // Múltiplos tipos de armazenamento para redundância
180
+ storage: ['cookie', 'localStorage']
181
+ ```
182
+
183
+ ### Exemplo de configuração compatível com GDPR
184
+
185
+ Para aplicações em produção que precisam equilibrar funcionalidade com conformidade GDPR:
186
+
187
+ ```typescript
188
+ // intlayer.config.ts
189
+ export default {
190
+ internationalization: {
191
+ locales: ["en", "fr", "es"],
192
+ defaultLocale: "en",
193
+ },
194
+ routing: {
195
+ mode: "prefix-no-default",
196
+ storage: [
197
+ {
198
+ type: "localStorage", // Armazenamento principal (não requer consentimento)
199
+ name: "user-locale",
200
+ },
201
+ {
202
+ type: "cookie", // Armazenamento opcional em cookie (requer consentimento)
203
+ name: "user-locale",
204
+ secure: true,
205
+ sameSite: "strict",
206
+ httpOnly: false,
207
+ },
208
+ ],
209
+ },
210
+ };
211
+ ```
212
+
213
+ ### Ativar / desativar o armazenamento em cookie
214
+
215
+ Exemplo usando React / Next.js:
216
+
217
+ Pode ser definido globalmente:
218
+
219
+ ```typescript
220
+ <IntlayerProvider isCookieEnabled={false}>
221
+ <App />
222
+ </IntlayerProvider>
223
+ ```
224
+
225
+ Pode ser sobrescrito localmente para cada hook:
226
+
227
+ ```ts
228
+ const { setLocale } = useLocale({ isCookieEnabled: false });
229
+
230
+ setLocale("en");
231
+ ```
232
+
233
+ **Nota:** Os cookies estão ativados por padrão.
234
+ **Nota:** Verifique os [requisitos de cookies do GDPR](https://gdpr.eu/cookies/) para o seu caso específico.
235
+
236
+ ---
237
+
238
+ ## Editor Visual: pacote 30% menor
239
+
240
+ O pacote do Editor Visual foi otimizado para ser 30% menor que a versão anterior, graças a:
241
+
242
+ - Melhorias no desempenho do editor de código
243
+ - Remoção de dependências desnecessárias dos pacotes principais do Intlayer
244
+ - Melhor tree-shaking e empacotamento de módulos
245
+
246
+ Isso resulta em tempos de download mais rápidos e melhor desempenho em tempo de execução para sua aplicação.
247
+
248
+ ---
249
+
250
+ ## Comando fill: comportamento atualizado para melhor gerenciamento de conteúdo
251
+
252
+ A versão 7 introduz um comportamento aprimorado para o comando `fill`, proporcionando um gerenciamento de conteúdo mais previsível e flexível:
253
+
254
+ ### Novo comportamento do fill
255
+
256
+ - **`fill: true`** - Reescreve o arquivo atual com o conteúdo preenchido para todos os idiomas
257
+ - **`fill: "path/to/file"`** - Preenche o arquivo especificado sem modificar o arquivo atual
258
+ - **`fill: false`** - Desativa completamente o auto-fill
259
+
260
+ ### Suporte aprimorado para estruturas de conteúdo complexas
261
+
262
+ O comando fill agora suporta estruturas complexas de declaração de conteúdo, incluindo:
263
+
264
+ - **Objetos compostos**: Declarações de conteúdo que referenciam outros objetos
265
+ - **Conteúdo desestruturado**: Conteúdo que usa padrões de desestruturação
266
+ - **Referências aninhadas**: Objetos que se chamam mutuamente em hierarquias complexas
267
+ - **Estruturas de conteúdo dinâmicas**: Conteúdo com propriedades condicionais ou computadas
268
+
269
+ ### Benefícios
270
+
271
+ - **Intenção mais clara**: O comportamento agora é mais explícito sobre o que é modificado
272
+ - **Melhor separação**: Os arquivos de conteúdo podem ser mantidos separados das traduções preenchidas
273
+ - **Fluxo de trabalho aprimorado**: Os desenvolvedores têm mais controle sobre onde as traduções são armazenadas
274
+ - **Suporte a estruturas complexas**: Lida com arquiteturas de conteúdo sofisticadas com múltiplos objetos interconectados
275
+
276
+ ### Exemplo de uso
277
+
278
+ ```typescript
279
+ // Reescreve o arquivo atual com todos os idiomas
280
+ const content = {
281
+ key: "example",
282
+ fill: true, // Reescreve este arquivo
283
+ content: {
284
+ title: "Hello World",
285
+ },
286
+ };
287
+
288
+ // Preenche arquivo separado sem modificar o arquivo atual
289
+ const content = {
290
+ key: "example",
291
+ fill: "./translations.json", // Cria/atualiza translations.json
292
+ content: {
293
+ title: "Hello World",
294
+ },
295
+ };
296
+
297
+ // Desabilita o preenchimento automático
298
+ const content = {
299
+ key: "example",
300
+ fill: false, // Sem preenchimento automático
301
+ content: {
302
+ title: "Hello World",
303
+ },
304
+ };
305
+
306
+ // Estrutura complexa de conteúdo com objetos compostos
307
+ const sharedContent = {
308
+ buttons: {
309
+ save: "Salvar",
310
+ cancel: "Cancelar",
311
+ },
312
+ };
313
+
314
+ const content = {
315
+ key: "complex-example",
316
+ fill: true,
317
+ content: {
318
+ // Referências a outros objetos
319
+ sharedContent,
320
+
321
+ // Conteúdo desestruturado
322
+ ...sharedContent,
323
+
324
+ // Referências aninhadas
325
+ sections: [
326
+ {
327
+ ...sharedContent.buttons,
328
+ header: "Seção 1",
329
+ },
330
+ ],
331
+ },
332
+ };
333
+ ```
334
+
335
+ ---
336
+
337
+ ## Estabilidade aprimorada e gerenciamento de tradução
338
+
339
+ A versão 7 introduz várias melhorias para tornar a tradução de conteúdo mais confiável e eficiente:
340
+
341
+ ### Atualizações completas dos arquivos de declaração de conteúdo
342
+
343
+ O sistema agora atualiza arquivos `.content.{ts,js,cjs,mjs}` em vez de atualizações parciais, garantindo:
344
+
345
+ - **Integridade dos dados**: Reescritas completas dos arquivos evitam atualizações parciais que poderiam corromper o conteúdo
346
+ - **Consistência**: Todos os locais são atualizados de forma atômica, mantendo a sincronização
347
+ - **Confiabilidade**: Reduz o risco de arquivos de conteúdo incompletos ou malformados
348
+
349
+ ### Gerenciamento inteligente de tentativas
350
+
351
+ Novos mecanismos de retentativa evitam o envio de conteúdo em formatos incorretos e impedem que todo o processo de preenchimento seja interrompido se uma requisição falhar.
352
+
353
+ ### Paralelização para processamento mais rápido
354
+
355
+ As operações de tradução agora são executadas em uma fila para rodar em paralelo. Isso acelera significativamente o processo.
356
+
357
+ ### Divisão inteligente para arquivos grandes
358
+
359
+ Estratégias avançadas de divisão lidam com arquivos de conteúdo grandes sem exceder as janelas de contexto da IA:
360
+
361
+ ### Exemplo de fluxo de trabalho
362
+
363
+ ```typescript
364
+ // Arquivo de conteúdo grande é automaticamente dividido
365
+ const content = {
366
+ key: "large-documentation",
367
+ fill: true,
368
+ content: {
369
+ // Conteúdo grande automaticamente dividido para processamento pela IA
370
+ introduction: "..." // mais de 5000 caracteres
371
+ sections: [
372
+ // Múltiplas seções grandes
373
+ ]
374
+ }
375
+ };
376
+ ```
377
+
378
+ O sistema automaticamente:
379
+
380
+ 1. Analisa o tamanho e a estrutura do conteúdo
381
+ 2. Divide o conteúdo apropriadamente
382
+ 3. Processa os pedaços em paralelo
383
+ 4. Valida e tenta novamente se necessário
384
+ 5. Reconstrói o arquivo completo
385
+
386
+ ---
387
+
388
+ ## Notas de migração da versão 6
389
+
390
+ ### Configurações removidas
391
+
392
+ - **`middleware.cookieName`**: Substituído por `routing.storage`
393
+ - **`middleware.serverSetCookie`**: Substituído por `routing.storage`
394
+ - **`middleware.prefixDefault`**: Substituído por `routing.mode`
395
+ - **`middleware.noPrefix`**: Substituído por `routing.mode`
396
+
397
+ ### Mapeamento de migração
398
+
399
+ #### Mapeamento de configuração
400
+
401
+ | Configuração v6 | Configuração v7 |
402
+ | -------------------------- | -------------------------------------------------------------- |
403
+ | `autoFill: xxx` | `fill: xxx` |
404
+ | `prefixDefault: false` | `mode: 'prefix-no-default'` |
405
+ | `prefixDefault: true` | `mode: 'prefix-all'` |
406
+ | `noPrefix: true` | `mode: 'no-prefix'` |
407
+ | `cookieName: 'my-locale'` | `storage: { type: 'cookie', name: 'my-locale' }` |
408
+ | `serverSetCookie: 'never'` | `storage: false` ou remover o cookie do array de armazenamento |
409
+
410
+ #### Exemplo de migração
411
+
412
+ **Antes (v6):**
413
+
414
+ ```typescript
415
+ export default {
416
+ middleware: {
417
+ headerName: "x-intlayer-locale",
418
+ cookieName: "intlayer-locale",
419
+ prefixDefault: false,
420
+ basePath: "",
421
+ serverSetCookie: "always",
422
+ noPrefix: false,
423
+ },
424
+ };
425
+ ```
426
+
427
+ **Depois (v7):**
428
+
429
+ ```typescript
430
+ export default {
431
+ routing: {
432
+ mode: "prefix-no-default",
433
+ storage: "localStorage", // ou 'cookie' se precisar de armazenamento via cookie
434
+ headerName: "x-intlayer-locale",
435
+ basePath: "",
436
+ detectLocaleOnPrefetchNoPrefix: false,
437
+ },
438
+ };
439
+ ```
440
+
441
+ #### Mapeamento do conteúdo do dicionário
442
+
443
+ | Conteúdo do dicionário v6 | Conteúdo do dicionário v7 |
444
+ | ------------------------- | ------------------------- |
445
+ | `autoFill: xxx` | `fill: xxx` |
446
+
447
+ #### Exemplo de migração
448
+
449
+ **Antes (v6):**
450
+
451
+ ```typescript
452
+ const content = {
453
+ key: "example",
454
+ autoFill: true, // Reescreve este arquivo
455
+ content: {
456
+ title: "Olá Mundo",
457
+ },
458
+ };
459
+ ```
460
+
461
+ **Depois (v7):**
462
+
463
+ ```typescript
464
+ const content = {
465
+ key: "example",
466
+ fill: true, // Reescreve este arquivo
467
+ content: {
468
+ title: "Olá Mundo",
469
+ },
470
+ };
471
+ ```
472
+
473
+ ---
474
+
475
+ ## Notas de migração do v5 para o v6
476
+
477
+ Consulte as [notas de migração do v5 para o v6](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/releases/v6.md) para mais informações.
478
+
479
+ ---
480
+
481
+ ## Links úteis
482
+
483
+ - [Referência de Configuração](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/configuration.md)
484
+ - [Documentação do Middleware](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/packages/next-intlayer/index.md)
485
+ - [Tipos TypeScript](https://github.com/aymericzip/intlayer/blob/main/packages/%40intlayer/types/src/index.ts)
486
+ - [Diretrizes de Cookies GDPR](https://gdpr.eu/cookies/)