@intlayer/docs 5.7.8 → 5.8.0-canary.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 (130) hide show
  1. package/blog/ar/intlayer_with_next-i18next.md +3 -4
  2. package/blog/ar/intlayer_with_next-intl.md +3 -4
  3. package/blog/ar/intlayer_with_react-i18next.md +1 -1
  4. package/blog/ar/intlayer_with_react-intl.md +1 -1
  5. package/blog/de/intlayer_with_next-i18next.md +3 -4
  6. package/blog/de/intlayer_with_react-intl.md +1 -1
  7. package/blog/en/intlayer_with_next-i18next.md +3 -4
  8. package/blog/en/intlayer_with_next-intl.md +3 -4
  9. package/blog/en/intlayer_with_react-i18next.md +1 -1
  10. package/blog/en/intlayer_with_react-intl.md +1 -1
  11. package/blog/en-GB/intlayer_with_next-i18next.md +3 -4
  12. package/blog/en-GB/intlayer_with_next-intl.md +3 -4
  13. package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
  14. package/blog/en-GB/intlayer_with_react-intl.md +1 -1
  15. package/blog/es/intlayer_with_next-i18next.md +3 -4
  16. package/blog/es/intlayer_with_next-intl.md +3 -4
  17. package/blog/es/intlayer_with_react-i18next.md +1 -1
  18. package/blog/es/intlayer_with_react-intl.md +1 -1
  19. package/blog/fr/intlayer_with_next-i18next.md +3 -4
  20. package/blog/fr/intlayer_with_next-intl.md +3 -4
  21. package/blog/fr/intlayer_with_react-i18next.md +1 -1
  22. package/blog/fr/intlayer_with_react-intl.md +1 -1
  23. package/blog/hi/intlayer_with_next-i18next.md +3 -4
  24. package/blog/hi/intlayer_with_next-intl.md +3 -4
  25. package/blog/hi/intlayer_with_react-i18next.md +1 -1
  26. package/blog/hi/intlayer_with_react-intl.md +1 -1
  27. package/blog/it/intlayer_with_next-i18next.md +3 -4
  28. package/blog/it/intlayer_with_next-intl.md +3 -4
  29. package/blog/it/intlayer_with_react-i18next.md +1 -1
  30. package/blog/it/intlayer_with_react-intl.md +1 -1
  31. package/blog/ja/intlayer_with_next-i18next.md +3 -4
  32. package/blog/ja/intlayer_with_next-intl.md +3 -4
  33. package/blog/ja/intlayer_with_react-intl.md +1 -1
  34. package/blog/ko/intlayer_with_next-i18next.md +3 -4
  35. package/blog/ko/intlayer_with_next-intl.md +3 -4
  36. package/blog/ko/intlayer_with_react-intl.md +1 -1
  37. package/blog/pt/intlayer_with_next-i18next.md +3 -4
  38. package/blog/pt/intlayer_with_next-intl.md +3 -4
  39. package/blog/pt/intlayer_with_react-intl.md +1 -1
  40. package/blog/ru/intlayer_with_next-i18next.md +3 -4
  41. package/blog/ru/intlayer_with_next-intl.md +3 -4
  42. package/blog/ru/intlayer_with_react-i18next.md +1 -1
  43. package/blog/ru/intlayer_with_react-intl.md +1 -1
  44. package/blog/zh/intlayer_with_next-i18next.md +3 -4
  45. package/blog/zh/intlayer_with_next-intl.md +3 -4
  46. package/blog/zh/intlayer_with_react-i18next.md +1 -1
  47. package/blog/zh/intlayer_with_react-intl.md +1 -1
  48. package/dist/cjs/generated/docs.entry.cjs +41 -0
  49. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  50. package/dist/esm/generated/docs.entry.mjs +41 -0
  51. package/dist/esm/generated/docs.entry.mjs.map +1 -1
  52. package/dist/types/generated/docs.entry.d.ts +1 -0
  53. package/dist/types/generated/docs.entry.d.ts.map +1 -1
  54. package/docs/ar/formatters.md +239 -0
  55. package/docs/ar/interest_of_intlayer.md +162 -49
  56. package/docs/ar/introduction.md +3 -3
  57. package/docs/ar/packages/intlayer/index.md +3 -3
  58. package/docs/ar/packages/next-intlayer/index.md +3 -3
  59. package/docs/de/formatters.md +239 -0
  60. package/docs/de/interest_of_intlayer.md +161 -47
  61. package/docs/de/introduction.md +3 -3
  62. package/docs/de/packages/intlayer/index.md +3 -3
  63. package/docs/de/packages/next-intlayer/index.md +3 -3
  64. package/docs/de/packages/react-intlayer/index.md +3 -3
  65. package/docs/en/formatters.md +250 -0
  66. package/docs/en/interest_of_intlayer.md +159 -46
  67. package/docs/en/introduction.md +3 -3
  68. package/docs/en/packages/intlayer/index.md +3 -3
  69. package/docs/en/packages/next-intlayer/index.md +3 -3
  70. package/docs/en/packages/react-intlayer/index.md +3 -3
  71. package/docs/en-GB/formatters.md +239 -0
  72. package/docs/en-GB/interest_of_intlayer.md +160 -53
  73. package/docs/en-GB/packages/intlayer/index.md +3 -3
  74. package/docs/en-GB/packages/next-intlayer/index.md +3 -3
  75. package/docs/en-GB/packages/react-intlayer/index.md +3 -3
  76. package/docs/es/formatters.md +239 -0
  77. package/docs/es/interest_of_intlayer.md +159 -47
  78. package/docs/es/introduction.md +3 -3
  79. package/docs/es/packages/intlayer/index.md +3 -3
  80. package/docs/es/packages/next-intlayer/index.md +3 -3
  81. package/docs/fr/formatters.md +239 -0
  82. package/docs/fr/interest_of_intlayer.md +160 -46
  83. package/docs/fr/introduction.md +3 -3
  84. package/docs/fr/packages/intlayer/index.md +3 -3
  85. package/docs/fr/packages/next-intlayer/index.md +3 -3
  86. package/docs/fr/packages/react-intlayer/index.md +3 -3
  87. package/docs/hi/formatters.md +239 -0
  88. package/docs/hi/interest_of_intlayer.md +158 -42
  89. package/docs/hi/introduction.md +3 -3
  90. package/docs/hi/packages/intlayer/index.md +3 -3
  91. package/docs/hi/packages/next-intlayer/index.md +3 -3
  92. package/docs/hi/packages/react-intlayer/index.md +3 -3
  93. package/docs/it/formatters.md +239 -0
  94. package/docs/it/interest_of_intlayer.md +160 -46
  95. package/docs/it/introduction.md +3 -3
  96. package/docs/it/packages/intlayer/index.md +3 -3
  97. package/docs/it/packages/next-intlayer/index.md +3 -3
  98. package/docs/it/packages/react-intlayer/index.md +3 -3
  99. package/docs/ja/formatters.md +261 -0
  100. package/docs/ja/interest_of_intlayer.md +157 -48
  101. package/docs/ja/introduction.md +3 -3
  102. package/docs/ja/packages/intlayer/index.md +3 -3
  103. package/docs/ja/packages/next-intlayer/index.md +3 -3
  104. package/docs/ja/packages/react-intlayer/index.md +3 -3
  105. package/docs/ko/formatters.md +258 -0
  106. package/docs/ko/interest_of_intlayer.md +160 -48
  107. package/docs/ko/introduction.md +3 -3
  108. package/docs/ko/packages/intlayer/index.md +3 -3
  109. package/docs/ko/packages/next-intlayer/index.md +3 -3
  110. package/docs/ko/packages/react-intlayer/index.md +3 -3
  111. package/docs/pt/formatters.md +239 -0
  112. package/docs/pt/interest_of_intlayer.md +162 -47
  113. package/docs/pt/introduction.md +3 -3
  114. package/docs/pt/packages/intlayer/index.md +3 -3
  115. package/docs/pt/packages/next-intlayer/index.md +3 -3
  116. package/docs/pt/packages/react-intlayer/index.md +3 -3
  117. package/docs/ru/formatters.md +239 -0
  118. package/docs/ru/interest_of_intlayer.md +168 -50
  119. package/docs/ru/introduction.md +3 -3
  120. package/docs/ru/packages/intlayer/index.md +3 -3
  121. package/docs/ru/packages/next-intlayer/index.md +3 -3
  122. package/docs/ru/packages/react-intlayer/index.md +3 -3
  123. package/docs/zh/formatters.md +239 -0
  124. package/docs/zh/interest_of_intlayer.md +158 -48
  125. package/docs/zh/introduction.md +3 -3
  126. package/docs/zh/packages/intlayer/index.md +3 -3
  127. package/docs/zh/packages/next-intlayer/index.md +3 -3
  128. package/docs/zh/packages/react-intlayer/index.md +3 -3
  129. package/package.json +12 -12
  130. package/src/generated/docs.entry.ts +41 -0
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  createdAt: 2024-08-14
3
- updatedAt: 2025-06-29
3
+ updatedAt: 2025-08-20
4
4
  title: Interesse do Intlayer
5
5
  description: Descubra os benefícios e vantagens de usar o Intlayer em seus projetos. Entenda por que o Intlayer se destaca entre outros frameworks.
6
6
  keywords:
@@ -11,41 +11,104 @@ keywords:
11
11
  - Comparação
12
12
  slugs:
13
13
  - doc
14
- - concept
15
- - interest
14
+ - why
16
15
  ---
17
16
 
18
- # Intlayer: Uma forma personalizada de traduzir seu site
17
+ # Por que você deve considerar o Intlayer?
19
18
 
20
- **Intlayer** é uma biblioteca de internacionalização projetada especificamente para desenvolvedores JavaScript. Ela permite a declaração do seu conteúdo em qualquer lugar do seu código. Converte declarações de conteúdo multilíngue em dicionários estruturados para integrar facilmente no seu código. Usando TypeScript, **Intlayer** torna seu desenvolvimento mais robusto e eficiente.
19
+ ## O que é o Intlayer?
21
20
 
22
- ## Exemplo de uso
21
+ **Intlayer** é uma biblioteca de internacionalização projetada especificamente para desenvolvedores JavaScript. Ela permite a declaração do seu conteúdo em qualquer lugar do seu código. Converte declarações de conteúdo multilíngue em dicionários estruturados para integrar facilmente no seu código. Usando TypeScript, o **Intlayer** torna seu desenvolvimento mais robusto e eficiente.
22
+
23
+ ## Por que o Intlayer foi criado?
24
+
25
+ O Intlayer foi criado para resolver um problema comum que afeta todas as bibliotecas i18n comuns, como `next-intl`, `react-i18next`, `react-intl`, `next-i18next`, `react-intl` e `vue-i18n`.
26
+
27
+ Todas essas soluções adotam uma abordagem centralizada para listar e gerenciar seu conteúdo. Por exemplo:
28
+
29
+ ```bash
30
+ .
31
+ ├── locales
32
+ │ ├── en.json
33
+ │ ├── fr.json
34
+ │ └── es.json
35
+ ├── i18n.ts
36
+ └── src
37
+ └── components
38
+ └── MyComponent
39
+ └── index.tsx
40
+ ```
41
+
42
+ Ou aqui usando namespaces:
43
+
44
+ ```bash
45
+ .
46
+ ├── locales
47
+ │ ├── en
48
+ │ │ ├── footer.json
49
+ │ │ └── navbar.json
50
+ │ ├── fr
51
+ │ │ ├── footer.json
52
+ │ │ └── navbar.json
53
+ │ └── es
54
+ │ ├── footer.json
55
+ │ └── navbar.json
56
+ ├── i18n.ts
57
+ └── src
58
+ └── components
59
+ └── MyComponent
60
+ └── index.tsx
61
+ ```
62
+
63
+ Esse tipo de arquitetura desacelera o processo de desenvolvimento e torna a base de código mais complexa de manter por várias razões:
64
+
65
+ 1. **Para qualquer novo componente criado, você deve:**
66
+ - Criar o novo recurso/namespace na pasta `locales`
67
+ - Lembrar de importar o novo namespace na sua página
68
+ - Traduzir seu conteúdo (frequentemente feito manualmente por copiar/colar de provedores de IA)
69
+
70
+ 2. **Para qualquer alteração feita nos seus componentes, você deve:**
71
+ - Procurar o recurso/namespace relacionado (longe do componente)
72
+ - Traduzir seu conteúdo
73
+ - Garantir que seu conteúdo esteja atualizado para qualquer localidade
74
+ - Verificar se seu namespace não inclui chaves/valores não usados
75
+ - Garantir que a estrutura dos seus arquivos JSON seja a mesma para todas as localidades
76
+
77
+ Em projetos profissionais que utilizam essas soluções, plataformas de localização são frequentemente usadas para ajudar a gerenciar a tradução do seu conteúdo. No entanto, isso pode rapidamente se tornar caro para projetos grandes.
78
+
79
+ Para resolver esse problema, o Intlayer adota uma abordagem que delimita seu conteúdo por componente e mantém seu conteúdo próximo ao seu componente, assim como frequentemente fazemos com CSS (`styled-components`), tipos, documentação (`storybook`) ou testes unitários (`jest`).
23
80
 
24
81
  ```bash codeFormat="typescript"
25
82
  .
26
- └── Components
83
+ └── components
27
84
  └── MyComponent
28
85
  ├── index.content.ts
86
+ ├── index.test.tsx
87
+ ├── index.stories.tsx
29
88
  └── index.tsx
30
89
  ```
31
90
 
32
91
  ```bash codeFormat="commonjs"
33
92
  .
34
- └── Components
93
+ └── components
35
94
  └── MyComponent
36
95
  ├── index.content.cjs
37
- └── index.mjs
96
+ ├── index.test.mjs
97
+ ├── index.stories.mjs
98
+ └── index.tsx
38
99
  ```
39
100
 
40
101
  ```bash codeFormat="esm"
41
102
  .
42
- └── Components
103
+ └── components
43
104
  └── MyComponent
44
105
  ├── index.content.mjs
45
- └── index.js
106
+ ├── index.test.mjs
107
+ ├── index.stories.mjs
108
+ └── index.tsx
46
109
  ```
47
110
 
48
- ```tsx fileName="./Components/MyComponent/index.content.ts" codeFormat="typescript"
111
+ ```tsx fileName="./components/MyComponent/index.content.ts" codeFormat="typescript"
49
112
  import { t, type Dictionary } from "intlayer";
50
113
 
51
114
  const componentExampleContent = {
@@ -53,8 +116,8 @@ const componentExampleContent = {
53
116
  content: {
54
117
  myTranslatedContent: t({
55
118
  en: "Hello World",
56
- fr: "Bonjour le monde",
57
119
  es: "Hola Mundo",
120
+ fr: "Bonjour le monde",
58
121
  }),
59
122
  },
60
123
  } satisfies Dictionary;
@@ -62,18 +125,18 @@ const componentExampleContent = {
62
125
  export default componentExampleContent;
63
126
  ```
64
127
 
65
- ```jsx fileName="./Components/MyComponent/index.mjx" codeFormat="esm"
128
+ ```jsx fileName="./components/MyComponent/index.mjx" codeFormat="esm"
66
129
  import { t } from "intlayer";
67
130
 
68
131
  /** @type {import('intlayer').Dictionary} */
69
- // Conteúdo de exemplo do componente com traduções multilíngues
70
132
  const componentExampleContent = {
71
133
  key: "component-example",
72
134
  content: {
73
135
  myTranslatedContent: t({
136
+ pt: "Olá Mundo",
74
137
  en: "Hello World",
75
- fr: "Bonjour le monde",
76
138
  es: "Hola Mundo",
139
+ fr: "Bonjour le monde",
77
140
  }),
78
141
  },
79
142
  };
@@ -81,18 +144,18 @@ const componentExampleContent = {
81
144
  export default componentExampleContent;
82
145
  ```
83
146
 
84
- ```jsx fileName="./Components/MyComponent/index.csx" codeFormat="commonjs"
147
+ ```jsx fileName="./components/MyComponent/index.csx" codeFormat="commonjs"
85
148
  const { t } = require("intlayer");
86
149
 
87
150
  /** @type {import('intlayer').Dictionary} */
88
- // Conteúdo de exemplo do componente com traduções multilíngues
89
151
  const componentExampleContent = {
90
152
  key: "component-example",
91
153
  content: {
92
154
  myTranslatedContent: t({
155
+ pt: "Olá Mundo",
93
156
  en: "Hello World",
94
- fr: "Bonjour le monde",
95
157
  es: "Hola Mundo",
158
+ fr: "Bonjour le monde",
96
159
  }),
97
160
  },
98
161
  };
@@ -100,7 +163,7 @@ const componentExampleContent = {
100
163
  module.exports = componentExampleContent;
101
164
  ```
102
165
 
103
- ```tsx fileName="./Components/MyComponent/index.tsx" codeFormat="typescript"
166
+ ```tsx fileName="./components/MyComponent/index.tsx" codeFormat="typescript"
104
167
  import { useIntlayer } from "react-intlayer";
105
168
 
106
169
  export const ComponentExample = () => {
@@ -110,7 +173,7 @@ export const ComponentExample = () => {
110
173
  };
111
174
  ```
112
175
 
113
- ```jsx fileName="./Components/MyComponent/index.mjx" codeFormat="esm"
176
+ ```jsx fileName="./components/MyComponent/index.mjx" codeFormat="esm"
114
177
  import { useIntlayer } from "react-intlayer";
115
178
 
116
179
  const ComponentExample = () => {
@@ -120,8 +183,8 @@ const ComponentExample = () => {
120
183
  };
121
184
  ```
122
185
 
123
- ```jsx fileName="./Components/MyComponent/index.csx" codeFormat="commonjs"
124
- const { useIntlayer } = require("react-intlayer");
186
+ ```jsx fileName="./components/MyComponent/index.csx" codeFormat="commonjs"
187
+ const { useIntlayer } = require("react-layer");
125
188
 
126
189
  const ComponentExample = () => {
127
190
  const { myTranslatedContent } = useIntlayer("component-example");
@@ -130,27 +193,79 @@ const ComponentExample = () => {
130
193
  };
131
194
  ```
132
195
 
133
- ## Por que escolher o Intlayer?
134
-
135
- | Recurso | Descrição |
136
- | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
137
- | **Gestão de Conteúdo com JavaScript** | Aproveite a flexibilidade do JavaScript para definir e gerenciar seu conteúdo de forma eficiente. |
138
- | **Ambiente com Tipagem Segura** | Aproveite o TypeScript para garantir que todas as suas definições de conteúdo sejam precisas e livres de erros. |
139
- | **Arquivos de Conteúdo Integrados** | Mantenha suas traduções próximas aos seus respectivos componentes, melhorando a manutenção e a clareza. |
140
- | **Configuração Simplificada** | Comece rapidamente com configuração mínima, especialmente otimizada para projetos Next.js. |
141
- | **Suporte a Componentes de Servidor** | Perfeitamente adequado para componentes de servidor Next.js, garantindo uma renderização do lado do servidor suave. |
142
- | **Roteamento Aprimorado** | Suporte completo para roteamento de aplicativos Next.js, adaptando-se perfeitamente a estruturas complexas de aplicação. |
143
- | **Código Organizado** | Mantenha seu código mais organizado: 1 componente = 1 dicionário na mesma pasta. |
144
- | **Tradução Automática no CI** | Preencha automaticamente suas traduções no seu CI usando sua própria chave de API do OpenAI, eliminando a necessidade de uma plataforma de L10n. |
145
- | **Integração do Servidor MCP** | Fornece um servidor MCP (Model Context Protocol) para automação em IDE, permitindo fluxos de trabalho contínuos de gerenciamento de conteúdo e i18n diretamente no seu ambiente de desenvolvimento. [Saiba mais](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/mcp_server.md). |
146
- | **Suporte a Markdown** | Importar e interpretar arquivos markdown para conteúdo multilíngue, como políticas de privacidade. |
147
- | **Editor Visual Gratuito & CMS** | Um editor visual gratuito e CMS estão disponíveis se você precisar trabalhar com redatores de conteúdo para suas traduções, eliminando novamente a necessidade de uma plataforma de localização e permitindo a externalização do conteúdo fora da base de código. |
148
- | **Recuperação Simplificada de Conteúdo** | Não é necessário chamar sua função `t` para cada pedaço de conteúdo; recupere todo o seu conteúdo diretamente usando um único hook. |
149
- | **Implementação Consistente** | A mesma implementação para componentes cliente e servidor, sem necessidade de passar sua função `t` por cada componente servidor. |
150
- | **Conteúdo Tree-shakable** | O conteúdo é tree-shakable, o que alivia o pacote final. |
151
- | **Renderização Estática Não Bloqueante** | O Intlayer não bloqueia a Renderização Estática como o `next-intl` faz. |
152
- | **Interoperabilidade** | Permite interoperabilidade com [react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_with_react-i18next.md), [next-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_with_next-i18next.md), [next-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_with_next-intl.md), e [react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/intlayer_with_react-intl.md). |
153
-
154
- ## Histórico da Documentação
155
-
156
- - 5.5.10 - 2025-06-29: Histórico inicial
196
+ Esta abordagem permite que você:
197
+
198
+ 1. **Aumente a velocidade de desenvolvimento**
199
+ - Arquivos `.content.{{ts|mjs|cjs|json}}` podem ser criados usando uma extensão do VSCode
200
+ - Ferramentas de autocompletar com IA no seu IDE (como o GitHub Copilot) podem ajudar a declarar seu conteúdo, reduzindo copiar/colar
201
+
202
+ 2. **Reduzir a complexidade da sua base de código**
203
+
204
+ 3. **Aumentar a manutenibilidade da sua base de código**
205
+
206
+ 4. **Duplicar seus componentes e seus conteúdos relacionados com mais facilidade (Exemplo: componentes de login/registro, etc.)**
207
+ - Limitando o risco de impactar o conteúdo de outros componentes
208
+ - Copiando/colando seu conteúdo de uma aplicação para outra sem dependências externas
209
+
210
+ 5. **Evitar poluir sua base de código com chaves/valores não usados para componentes não utilizados**
211
+ - Se você não usa um componente, não precisa importar seu conteúdo
212
+ - Se você excluir um componente, será mais fácil lembrar de remover seu conteúdo relacionado, pois estará presente na mesma pasta
213
+
214
+ 6. **Reduzir o custo de raciocínio para agentes de IA declararem seu conteúdo multilíngue**
215
+ - O agente de IA não precisará escanear toda a sua base de código para saber onde implementar seu conteúdo
216
+ - As traduções podem ser facilmente feitas por ferramentas de autocompletar com IA no seu IDE (como o GitHub Copilot)
217
+
218
+ 7. **Otimizar o desempenho de carregamento**
219
+ - Se um componente for carregado de forma preguiçosa (lazy-loaded), seu conteúdo relacionado será carregado ao mesmo tempo
220
+
221
+ ## Recursos adicionais do Intlayer
222
+
223
+ | Recurso | Descrição |
224
+ | ------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
225
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **Suporte Multiplataformas**<br><br>O Intlayer é compatível com todos os principais frameworks e bibliotecas, incluindo Next.js, React, Vite, Vue.js, Nuxt, Preact, Express, e mais. |
226
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.png?raw=true) | **Gestão de Conteúdo com JavaScript**<br><br>Aproveite a flexibilidade do JavaScript para definir e gerir o seu conteúdo de forma eficiente. <br><br> - [Declaração de conteúdo](https://intlayer.org/doc/concept/content) |
227
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **Ficheiro de Declaração de Conteúdo por Localidade**<br><br>Acelere o seu desenvolvimento declarando o seu conteúdo uma vez, antes da geração automática.<br><br> - [Ficheiro de Declaração de Conteúdo por Localidade](https://intlayer.org/doc/concept/per-locale-file) |
228
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **Ambiente com Tipagem Segura**<br><br>Aproveite o TypeScript para garantir que suas definições de conteúdo e código estejam livres de erros, além de beneficiar-se do autocompletar do IDE.<br><br> - [Configuração do TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
229
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **Configuração Simplificada**<br><br>Comece rapidamente com configuração mínima. Ajuste facilmente as configurações para internacionalização, roteamento, IA, build e gerenciamento de conteúdo.<br><br> - [Explore a integração com Next.js](https://intlayer.org/doc/environment/nextjs) |
230
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **Recuperação de Conteúdo Simplificada**<br><br>Não é necessário chamar sua função `t` para cada pedaço de conteúdo. Recupere todo o seu conteúdo diretamente usando um único hook.<br><br> - [Integração com React](https://intlayer.org/doc/environment/create-react-app) |
231
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **Implementação Consistente de Componentes no Servidor**<br><br>Perfeitamente adequado para componentes de servidor Next.js, use a mesma implementação para componentes cliente e servidor, sem necessidade de passar sua função `t` por cada componente de servidor. <br><br> - [Componentes de Servidor](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
232
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **Base de Código Organizada**<br><br>Mantenha sua base de código mais organizada: 1 componente = 1 dicionário na mesma pasta. Traduções próximas aos seus respectivos componentes aumentam a manutenibilidade e clareza. <br><br> - [Como o Intlayer funciona](https://intlayer.org/doc/concept/how-works-intlayer) |
233
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **Roteamento Aprimorado**<br><br>Suporte completo ao roteamento de aplicativos, adaptando-se perfeitamente a estruturas complexas de aplicações, para Next.js, React, Vite, Vue.js, etc.<br><br> - [Explore a integração com Next.js](https://intlayer.org/doc/environment/nextjs) |
234
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **Suporte a Markdown**<br><br>Importe e interprete arquivos de localidade e Markdown remoto para conteúdo multilíngue, como políticas de privacidade, documentação, etc. Interprete e torne os metadados do Markdown acessíveis no seu código.<br><br> - [Arquivos de conteúdo](https://intlayer.org/doc/concept/content/file) |
235
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **Editor Visual e CMS Gratuitos**<br><br>Um editor visual gratuito e CMS estão disponíveis para escritores de conteúdo, eliminando a necessidade de uma plataforma de localização. Mantenha seu conteúdo sincronizado usando Git, ou externalize-o total ou parcialmente com o CMS.<br><br> - [Editor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
236
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **Conteúdo Tree-shakable**<br><br>Conteúdo tree-shakable, reduzindo o tamanho do pacote final. Carrega o conteúdo por componente, excluindo qualquer conteúdo não utilizado do seu pacote. Suporta carregamento preguiçoso para melhorar a eficiência do carregamento do aplicativo. <br><br> - [Otimização da construção do aplicativo](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
237
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **Renderização Estática**<br><br>Não bloqueia a Renderização Estática. <br><br> - [Integração Next.js](https://intlayer.org/doc/environment/nextjs) |
238
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **Tradução com IA**<br><br>Transforme seu site em 231 idiomas com apenas um clique usando as avançadas ferramentas de tradução com IA da Intlayer, utilizando seu próprio provedor de IA/chave API. <br><br> - [Integração CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Preenchimento automático](https://intlayer.org/doc/concept/auto-fill) |
239
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **Integração do Servidor MCP**<br><br>Fornece um servidor MCP (Model Context Protocol) para automação de IDE, permitindo um gerenciamento de conteúdo e fluxos de trabalho i18n contínuos diretamente no seu ambiente de desenvolvimento. <br><br> - [Servidor MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/pt/mcp_server.md) |
240
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **Extensão VSCode**<br><br>O Intlayer fornece uma extensão para VSCode para ajudar você a gerenciar seu conteúdo e traduções, construir seus dicionários, traduzir seu conteúdo e muito mais. <br><br> - [Extensão VSCode](https://intlayer.org/doc/vs-code-extension) |
241
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **Interoperabilidade**<br><br>Permite interoperabilidade com react-i18next, next-i18next, next-intl e react-intl. <br><br> - [Intlayer e react-intl](https://intlayer.org/blog/intlayer-with-react-intl) <br> - [Intlayer e next-intl](https://intlayer.org/blog/intlayer-with-next-intl) <br> - [Intlayer e next-i18next](https://intlayer.org/blog/intlayer-with-next-i18next) |
242
+
243
+ ## Comparação do Intlayer com outras soluções
244
+
245
+ | Funcionalidade | Intlayer | React-i18next / i18next | React-Intl (FormatJS) | LinguiJS | next-intl | next-i18next | vue-i18n |
246
+ | -------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | -------------------------------------------------------- | ---------------------------------------------------------------- |
247
+ | **Traduções Próximas aos Componentes** | Sim, conteúdo colocalizado com cada componente | Não | Não | Não | Não | Não | Sim - usando `Componentes de Arquivo Único` (SFCs) |
248
+ | **Integração com TypeScript** | Avançada, tipos estritos gerados automaticamente | Básica; configuração extra para segurança | Boa, mas menos estrita | Tipagens, necessita configuração | Boa | Básica | Boa (tipos disponíveis; segurança de chaves requer configuração) |
249
+ | **Detecção de Tradução Ausente** | Erro/aviso em tempo de compilação | Principalmente strings de fallback em tempo de execução | Strings de fallback | Requer configuração extra | Fallback em tempo de execução | Fallback em tempo de execução | Fallback/avisos em tempo de execução (configurável) |
250
+ | **Conteúdo Rico (JSX/Markdown/componentes)** | Suporte direto, até mesmo para nós React | Limitado / apenas interpolação | Sintaxe ICU, não JSX real | Limitado | Não projetado para nós ricos | Limitado | Limitado (componentes via `<i18n-t>`, Markdown via plugins) |
251
+ | **Tradução com IA** | Sim, suporta múltiplos provedores de IA. Usável com suas próprias chaves de API. Considera o contexto da sua aplicação e o escopo do conteúdo | Não | Não | Não | Não | Não | Não |
252
+ | **Editor Visual** | Sim, Editor Visual local + CMS opcional; pode externalizar conteúdo da base de código; incorporável | Não / disponível via plataformas externas de localização | Não / disponível via plataformas externas de localização | Não / disponível via plataformas externas de localização | Não / disponível via plataformas externas de localização | Não / disponível via plataformas externas de localização | Não / disponível via plataformas externas de localização |
253
+ | **Roteamento Localizado** | Integrado, suporte a middleware | Plugins ou configuração manual | Não integrado | Plugin/configuração manual | Integrado | Integrado | Manual via Vue Router (Nuxt i18n gerencia isso) |
254
+ | **Geração Dinâmica de Rotas** | Sim | Plugin/ecossistema ou configuração manual | Não fornecido | Plugin/manual | Sim | Sim | Não fornecido (Nuxt i18n fornece) |
255
+ | **Pluralização** | Padrões baseados em enumeração; veja a documentação | Configurável (plugins como i18next-icu) | Avançado (ICU) | Avançado (ICU/messageformat) | Bom | Bom | Avançado (regras de plural embutidas) |
256
+ | **Formatação (datas, números, moedas)** | Formatadores otimizados (Intl por baixo dos panos) | Via plugins ou uso customizado do Intl | Formatadores avançados ICU | Helpers ICU/CLI | Bom (helpers Intl) | Bom (helpers Intl) | Formatadores embutidos de data/número (Intl) |
257
+ | **Formato de Conteúdo** | .tsx, .ts, .js, .json, .md, .txt | .json | .json, .js | .po, .json | .json, .js, .ts | .json | .json, .js |
258
+ | **Suporte ICU** | Em desenvolvimento (ICU nativo) | Via plugin (i18next-icu) | Sim | Sim | Sim | Via plugin (i18next-icu) | Via formatador/compilador personalizado |
259
+ | **Ajuda para SEO (hreflang, sitemap)** | Ferramentas embutidas: helpers para sitemap, **robots.txt**, metadados | Plugins da comunidade/manual | Não é núcleo | Não é núcleo | Bom | Bom | Não é núcleo (Nuxt i18n fornece helpers) |
260
+ | **Ecossistema / Comunidade** | Menor, mas crescendo rápido e reativa | Maior e mais madura | Grande, empresarial | Em crescimento, menor | Médio porte, focado em Next.js | Médio porte, focado em Next.js | Grande no ecossistema Vue |
261
+ | **Renderização do lado do servidor & Componentes de Servidor** | Sim, otimizado para SSR / Componentes de Servidor React | Suportado, alguma configuração necessária | Suportado no Next.js | Suportado | Suporte completo | Suporte completo | SSR via Nuxt/Vue SSR (sem RSC) |
262
+ | **Tree-shaking (carregar apenas o conteúdo usado)** | Sim, por componente em tempo de build via plugins Babel/SWC | Geralmente carrega tudo (pode ser melhorado com namespaces/divisão de código) | Geralmente carrega tudo | Não é padrão | Parcial | Parcial | Parcial (com divisão de código/configuração manual) |
263
+ | **Carregamento preguiçoso (Lazy loading)** | Sim, por localidade/por componente | Sim (ex: backends/namespaces sob demanda) | Sim (divisão de pacotes por localidade) | Sim (importações dinâmicas de catálogos) | Sim (por rota/por localidade) | Sim (por rota/por localidade) | Sim (mensagens de localidade assíncronas) |
264
+ | **Gestão de Grandes Projetos** | Incentiva modularidade, adequado para design-system | Requer boa disciplina de arquivos | Catálogos centrais podem ficar grandes | Pode se tornar complexo | Modular com configuração | Modular com configuração | Modular com Vue Router/Nuxt i18n setup |
265
+
266
+ ## Histórico do Documento
267
+
268
+ | Versão | Data | Alterações |
269
+ | ------ | ---------- | --------------------------------- |
270
+ | 5.8.0 | 2025-08-19 | Atualização da tabela comparativa |
271
+ | 5.5.10 | 2025-06-29 | Histórico inicial |
@@ -44,8 +44,8 @@ const componentContent = {
44
44
  content: {
45
45
  myTranslatedContent: t({
46
46
  en: "Hello World",
47
- fr: "Bonjour le monde",
48
47
  es: "Hola Mundo",
48
+ fr: "Bonjour le monde",
49
49
  }),
50
50
  },
51
51
  } satisfies Dictionary;
@@ -63,8 +63,8 @@ const componentContent = {
63
63
  content: {
64
64
  myTranslatedContent: t({
65
65
  en: "Hello World",
66
- fr: "Bonjour le monde",
67
66
  es: "Hola Mundo",
67
+ fr: "Bonjour le monde",
68
68
  }),
69
69
  },
70
70
  };
@@ -81,8 +81,8 @@ const componentContent = {
81
81
  content: {
82
82
  myTranslatedContent: t({
83
83
  en: "Hello World",
84
- fr: "Bonjour le monde",
85
84
  es: "Hola Mundo",
85
+ fr: "Bonjour le monde",
86
86
  }),
87
87
  },
88
88
  };
@@ -149,8 +149,8 @@ const clientComponentContent = {
149
149
  content: {
150
150
  myTranslatedContent: t({
151
151
  en: "Hello World",
152
- fr: "Bonjour le monde",
153
152
  es: "Hola Mundo",
153
+ fr: "Bonjour le monde",
154
154
  }),
155
155
  numberOfCar: enu({
156
156
  "<-1": "Less than minus one car",
@@ -175,8 +175,8 @@ const clientComponentContent = {
175
175
  content: {
176
176
  myTranslatedContent: t({
177
177
  en: "Hello World",
178
- fr: "Bonjour le monde",
179
178
  es: "Hola Mundo",
179
+ fr: "Bonjour le monde",
180
180
  }),
181
181
  numberOfCar: enu({
182
182
  "<-1": "Menos que menos um carro",
@@ -201,8 +201,8 @@ const clientComponentContent = {
201
201
  content: {
202
202
  myTranslatedContent: t({
203
203
  en: "Hello World",
204
- fr: "Bonjour le monde",
205
204
  es: "Hola Mundo",
205
+ fr: "Bonjour le monde",
206
206
  }),
207
207
  numberOfCar: enu({
208
208
  "<-1": "Menos que menos um carro",
@@ -110,8 +110,8 @@ const clientComponentContent = {
110
110
  content: {
111
111
  myTranslatedContent: t({
112
112
  en: "Hello World",
113
- fr: "Bonjour le monde",
114
113
  es: "Hola Mundo",
114
+ fr: "Bonjour le monde",
115
115
  }),
116
116
  numberOfCar: enu({
117
117
  "<-1": "Less than minus one car",
@@ -136,8 +136,8 @@ const clientComponentContent = {
136
136
  content: {
137
137
  myTranslatedContent: t({
138
138
  en: "Hello World",
139
- fr: "Bonjour le monde",
140
139
  es: "Hola Mundo",
140
+ fr: "Bonjour le monde",
141
141
  }),
142
142
  numberOfCar: enu({
143
143
  "<-1": "Menos que menos um carro",
@@ -162,8 +162,8 @@ const clientComponentContent = {
162
162
  content: {
163
163
  myTranslatedContent: t({
164
164
  en: "Hello World",
165
- fr: "Bonjour le monde",
166
165
  es: "Hola Mundo",
166
+ fr: "Bonjour le monde",
167
167
  }),
168
168
  numberOfCar: enu({
169
169
  "<-1": "Menos que menos um carro",
@@ -110,8 +110,8 @@ const component1Content = {
110
110
  content: {
111
111
  myTranslatedContent: t({
112
112
  en: "Hello World",
113
- fr: "Bonjour le monde",
114
113
  es: "Hola Mundo",
114
+ fr: "Bonjour le monde",
115
115
  }),
116
116
  numberOfCar: enu({
117
117
  "<-1": "Menos que menos um carro",
@@ -136,8 +136,8 @@ const component1Content = {
136
136
  content: {
137
137
  myTranslatedContent: t({
138
138
  en: "Hello World",
139
- fr: "Bonjour le monde",
140
139
  es: "Hola Mundo",
140
+ fr: "Bonjour le monde",
141
141
  }),
142
142
  numberOfCar: enu({
143
143
  "<-1": "Menos que menos um carro",
@@ -162,8 +162,8 @@ const component1Content = {
162
162
  content: {
163
163
  myTranslatedContent: t({
164
164
  en: "Hello World",
165
- fr: "Bonjour le monde",
166
165
  es: "Hola Mundo",
166
+ fr: "Bonjour le monde",
167
167
  }),
168
168
  numberOfCar: enu({
169
169
  "<-1": "Menos que menos um carro",