@intlayer/docs 5.7.7 → 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 (142) 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/CI_CD.md +67 -41
  55. package/docs/ar/formatters.md +239 -0
  56. package/docs/ar/interest_of_intlayer.md +162 -49
  57. package/docs/ar/introduction.md +3 -3
  58. package/docs/ar/packages/intlayer/index.md +3 -3
  59. package/docs/ar/packages/next-intlayer/index.md +3 -3
  60. package/docs/de/CI_CD.md +63 -37
  61. package/docs/de/formatters.md +239 -0
  62. package/docs/de/interest_of_intlayer.md +161 -47
  63. package/docs/de/introduction.md +3 -3
  64. package/docs/de/packages/intlayer/index.md +3 -3
  65. package/docs/de/packages/next-intlayer/index.md +3 -3
  66. package/docs/de/packages/react-intlayer/index.md +3 -3
  67. package/docs/en/CI_CD.md +51 -27
  68. package/docs/en/formatters.md +250 -0
  69. package/docs/en/interest_of_intlayer.md +159 -46
  70. package/docs/en/introduction.md +3 -3
  71. package/docs/en/packages/intlayer/index.md +3 -3
  72. package/docs/en/packages/next-intlayer/index.md +3 -3
  73. package/docs/en/packages/react-intlayer/index.md +3 -3
  74. package/docs/en-GB/CI_CD.md +58 -32
  75. package/docs/en-GB/formatters.md +239 -0
  76. package/docs/en-GB/interest_of_intlayer.md +160 -53
  77. package/docs/en-GB/packages/intlayer/index.md +3 -3
  78. package/docs/en-GB/packages/next-intlayer/index.md +3 -3
  79. package/docs/en-GB/packages/react-intlayer/index.md +3 -3
  80. package/docs/es/CI_CD.md +68 -42
  81. package/docs/es/formatters.md +239 -0
  82. package/docs/es/interest_of_intlayer.md +159 -47
  83. package/docs/es/introduction.md +3 -3
  84. package/docs/es/packages/intlayer/index.md +3 -3
  85. package/docs/es/packages/next-intlayer/index.md +3 -3
  86. package/docs/fr/formatters.md +239 -0
  87. package/docs/fr/interest_of_intlayer.md +160 -46
  88. package/docs/fr/introduction.md +3 -3
  89. package/docs/fr/packages/intlayer/index.md +3 -3
  90. package/docs/fr/packages/next-intlayer/index.md +3 -3
  91. package/docs/fr/packages/react-intlayer/index.md +3 -3
  92. package/docs/hi/CI_CD.md +69 -44
  93. package/docs/hi/formatters.md +239 -0
  94. package/docs/hi/interest_of_intlayer.md +158 -42
  95. package/docs/hi/introduction.md +3 -3
  96. package/docs/hi/packages/intlayer/index.md +3 -3
  97. package/docs/hi/packages/next-intlayer/index.md +3 -3
  98. package/docs/hi/packages/react-intlayer/index.md +3 -3
  99. package/docs/it/CI_CD.md +67 -41
  100. package/docs/it/formatters.md +239 -0
  101. package/docs/it/interest_of_intlayer.md +160 -46
  102. package/docs/it/introduction.md +3 -3
  103. package/docs/it/packages/intlayer/index.md +3 -3
  104. package/docs/it/packages/next-intlayer/index.md +3 -3
  105. package/docs/it/packages/react-intlayer/index.md +3 -3
  106. package/docs/ja/CI_CD.md +67 -41
  107. package/docs/ja/formatters.md +261 -0
  108. package/docs/ja/interest_of_intlayer.md +157 -48
  109. package/docs/ja/introduction.md +3 -3
  110. package/docs/ja/packages/intlayer/index.md +3 -3
  111. package/docs/ja/packages/next-intlayer/index.md +3 -3
  112. package/docs/ja/packages/react-intlayer/index.md +3 -3
  113. package/docs/ko/CI_CD.md +63 -37
  114. package/docs/ko/formatters.md +258 -0
  115. package/docs/ko/interest_of_intlayer.md +160 -48
  116. package/docs/ko/introduction.md +3 -3
  117. package/docs/ko/packages/intlayer/index.md +3 -3
  118. package/docs/ko/packages/next-intlayer/index.md +3 -3
  119. package/docs/ko/packages/react-intlayer/index.md +3 -3
  120. package/docs/pt/CI_CD.md +67 -41
  121. package/docs/pt/formatters.md +239 -0
  122. package/docs/pt/interest_of_intlayer.md +162 -47
  123. package/docs/pt/introduction.md +3 -3
  124. package/docs/pt/packages/intlayer/index.md +3 -3
  125. package/docs/pt/packages/next-intlayer/index.md +3 -3
  126. package/docs/pt/packages/react-intlayer/index.md +3 -3
  127. package/docs/ru/CI_CD.md +70 -44
  128. package/docs/ru/formatters.md +239 -0
  129. package/docs/ru/interest_of_intlayer.md +168 -50
  130. package/docs/ru/introduction.md +3 -3
  131. package/docs/ru/packages/intlayer/index.md +3 -3
  132. package/docs/ru/packages/next-intlayer/index.md +3 -3
  133. package/docs/ru/packages/react-intlayer/index.md +3 -3
  134. package/docs/zh/CI_CD.md +62 -36
  135. package/docs/zh/formatters.md +239 -0
  136. package/docs/zh/interest_of_intlayer.md +158 -48
  137. package/docs/zh/introduction.md +3 -3
  138. package/docs/zh/packages/intlayer/index.md +3 -3
  139. package/docs/zh/packages/next-intlayer/index.md +3 -3
  140. package/docs/zh/packages/react-intlayer/index.md +3 -3
  141. package/package.json +12 -12
  142. 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 di Intlayer
5
5
  description: Scopri i benefici e i vantaggi dell'utilizzo di Intlayer nei tuoi progetti. Comprendi perché Intlayer si distingue tra gli altri framework.
6
6
  keywords:
@@ -11,41 +11,104 @@ keywords:
11
11
  - Confronto
12
12
  slugs:
13
13
  - doc
14
- - concept
15
- - interest
14
+ - why
16
15
  ---
17
16
 
18
- # Intlayer: Un modo su misura per tradurre il tuo sito web
17
+ # Perché dovresti considerare Intlayer?
19
18
 
20
- **Intlayer** è una libreria di internazionalizzazione progettata specificamente per sviluppatori JavaScript. Permette la dichiarazione dei tuoi contenuti ovunque nel codice. Converte la dichiarazione di contenuti multilingue in dizionari strutturati per integrarsi facilmente nel tuo codice. Utilizzando TypeScript, **Intlayer** rende il tuo sviluppo più solido ed efficiente.
19
+ ## Cos'è Intlayer?
21
20
 
22
- ## Esempio di utilizzo
21
+ **Intlayer** è una libreria di internazionalizzazione progettata specificamente per sviluppatori JavaScript. Permette la dichiarazione del tuo contenuto ovunque nel tuo codice. Converte le dichiarazioni di contenuti multilingue in dizionari strutturati per integrarsi facilmente nel tuo codice. Utilizzando TypeScript, **Intlayer** rende il tuo sviluppo più solido ed efficiente.
22
+
23
+ ## Perché è stato creato Intlayer?
24
+
25
+ Intlayer è stato creato per risolvere un problema comune che interessa tutte le librerie i18n più diffuse come `next-intl`, `react-i18next`, `react-intl`, `next-i18next`, `react-intl` e `vue-i18n`.
26
+
27
+ Tutte queste soluzioni adottano un approccio centralizzato per elencare e gestire i tuoi contenuti. Per esempio:
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
+ Oppure qui usando i namespace:
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
+ Questo tipo di architettura rallenta il processo di sviluppo e rende la codebase più complessa da mantenere per diversi motivi:
64
+
65
+ 1. **Per ogni nuovo componente creato, dovresti:**
66
+ - Creare la nuova risorsa/namespace nella cartella `locales`
67
+ - Ricordarti di importare il nuovo namespace nella tua pagina
68
+ - Tradurre i tuoi contenuti (spesso fatto manualmente tramite copia/incolla da fornitori AI)
69
+
70
+ 2. **Per ogni modifica apportata ai tuoi componenti, dovresti:**
71
+ - Cercare la risorsa/namespace correlata (lontano dal componente)
72
+ - Tradurre i tuoi contenuti
73
+ - Assicurarti che i tuoi contenuti siano aggiornati per ogni locale
74
+ - Verificare che il tuo namespace non includa chiavi/valori inutilizzati
75
+ - Assicurarti che la struttura dei tuoi file JSON sia la stessa per tutti i locali
76
+
77
+ Nei progetti professionali che utilizzano queste soluzioni, spesso si ricorre a piattaforme di localizzazione per aiutare a gestire la traduzione dei contenuti. Tuttavia, questo può diventare rapidamente costoso per progetti di grandi dimensioni.
78
+
79
+ Per risolvere questo problema, Intlayer adotta un approccio che delimita i contenuti per componente e mantiene i contenuti vicini al componente stesso, come spesso facciamo con il CSS (`styled-components`), i tipi, la documentazione (`storybook`) o i test unitari (`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,17 @@ 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
- // Dizionario di esempio per il componente
70
132
  const componentExampleContent = {
71
133
  key: "component-example",
72
134
  content: {
73
135
  myTranslatedContent: t({
74
136
  en: "Hello World",
75
- fr: "Bonjour le monde",
76
137
  es: "Hola Mundo",
138
+ fr: "Bonjour le monde",
77
139
  }),
78
140
  },
79
141
  };
@@ -81,18 +143,18 @@ const componentExampleContent = {
81
143
  export default componentExampleContent;
82
144
  ```
83
145
 
84
- ```jsx fileName="./Components/MyComponent/index.csx" codeFormat="commonjs"
146
+ ```jsx fileName="./components/MyComponent/index.csx" codeFormat="commonjs"
85
147
  const { t } = require("intlayer");
86
148
 
87
149
  /** @type {import('intlayer').Dictionary} */
88
- // Dizionario di esempio per il componente
150
+ // Dizionario dei contenuti tradotti per il componente
89
151
  const componentExampleContent = {
90
152
  key: "component-example",
91
153
  content: {
92
154
  myTranslatedContent: t({
93
155
  en: "Hello World",
94
- fr: "Bonjour le monde",
95
156
  es: "Hola Mundo",
157
+ fr: "Bonjour le monde",
96
158
  }),
97
159
  },
98
160
  };
@@ -100,7 +162,7 @@ const componentExampleContent = {
100
162
  module.exports = componentExampleContent;
101
163
  ```
102
164
 
103
- ```tsx fileName="./Components/MyComponent/index.tsx" codeFormat="typescript"
165
+ ```tsx fileName="./components/MyComponent/index.tsx" codeFormat="typescript"
104
166
  import { useIntlayer } from "react-intlayer";
105
167
 
106
168
  export const ComponentExample = () => {
@@ -110,7 +172,7 @@ export const ComponentExample = () => {
110
172
  };
111
173
  ```
112
174
 
113
- ```jsx fileName="./Components/MyComponent/index.mjx" codeFormat="esm"
175
+ ```jsx fileName="./components/MyComponent/index.mjx" codeFormat="esm"
114
176
  import { useIntlayer } from "react-intlayer";
115
177
 
116
178
  const ComponentExample = () => {
@@ -120,7 +182,7 @@ const ComponentExample = () => {
120
182
  };
121
183
  ```
122
184
 
123
- ```jsx fileName="./Components/MyComponent/index.csx" codeFormat="commonjs"
185
+ ```jsx fileName="./components/MyComponent/index.csx" codeFormat="commonjs"
124
186
  const { useIntlayer } = require("react-intlayer");
125
187
 
126
188
  const ComponentExample = () => {
@@ -130,27 +192,79 @@ const ComponentExample = () => {
130
192
  };
131
193
  ```
132
194
 
133
- ## Perché scegliere Intlayer?
134
-
135
- | Funzionalità | Descrizione |
136
- | ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
137
- | **Gestione dei Contenuti con JavaScript** | Sfrutta la flessibilità di JavaScript per definire e gestire i tuoi contenuti in modo efficiente. |
138
- | **Ambiente Type-Safe** | Sfrutta TypeScript per garantire che tutte le tue definizioni di contenuto siano precise e prive di errori. |
139
- | **File di Contenuto Integrati** | Mantieni le tue traduzioni vicine ai rispettivi componenti, migliorando la manutenibilità e la chiarezza. |
140
- | **Configurazione Semplificata** | Avvia rapidamente con una configurazione minima, ottimizzata specialmente per progetti Next.js. |
141
- | **Supporto per Componenti Server** | Perfettamente adatto per i componenti server di Next.js, garantendo un rendering lato server fluido. |
142
- | **Routing migliorato** | Supporto completo per il routing delle app Next.js, adattandosi perfettamente a strutture applicative complesse. |
143
- | **Codice Organizzato** | Mantieni il tuo codice più organizzato: 1 componente = 1 dizionario nella stessa cartella. |
144
- | **Traduzione automatica CI** | Compila automaticamente le tue traduzioni nella CI utilizzando la tua chiave API OpenAI, eliminando la necessità di una piattaforma L10n. |
145
- | **Integrazione Server MCP** | Fornisce un server MCP (Model Context Protocol) per l'automazione IDE, consentendo una gestione dei contenuti e flussi di lavoro i18n senza interruzioni direttamente all'interno del tuo ambiente di sviluppo. [Scopri di più](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/mcp_server.md). |
146
- | **Supporto Markdown** | Importa e interpreta file markdown per contenuti multilingue come le politiche sulla privacy. |
147
- | **Editor Visivo Gratuito & CMS** | Un editor visivo gratuito e un CMS sono disponibili se hai bisogno di lavorare con i redattori di contenuti per le tue traduzioni, eliminando nuovamente la necessità di una piattaforma di localizzazione e permettendo l'esternalizzazione dei contenuti dal codice. |
148
- | **Recupero Contenuti Semplificato** | Non è necessario chiamare la funzione `t` per ogni contenuto; recupera tutti i tuoi contenuti direttamente utilizzando un singolo hook. |
149
- | **Implementazione Coerente** | La stessa implementazione sia per i componenti client che server, senza bisogno di passare la funzione `t` attraverso ogni componente server. |
150
- | **Contenuto Tree-shakable** | Il contenuto è tree-shakable, il che alleggerisce il bundle finale. |
151
- | **Rendering Statico Non Bloccante** | Intlayer non blocca il Rendering Statico come fa `next-intl`. |
152
- | **Interoperabilità** | Consente l'interoperabilità con [react-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_react-i18next.md), [next-i18next](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_next-i18next.md), [next-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_next-intl.md), e [react-intl](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_react-intl.md). |
153
-
154
- ## Cronologia del Documento
155
-
156
- - 5.5.10 - 2025-06-29: Inizio cronologia
195
+ Questo approccio ti permette di:
196
+
197
+ 1. **Aumentare la velocità di sviluppo**
198
+ - I file `.content.{{ts|mjs|cjs|json}}` possono essere creati utilizzando un'estensione di VSCode
199
+ - Gli strumenti di completamento automatico basati su AI nel tuo IDE (come GitHub Copilot) possono aiutarti a dichiarare il tuo contenuto, riducendo il copia/incolla
200
+
201
+ 2. **Ridurre la complessità della tua codebase**
202
+
203
+ 3. **Aumentare la manutenibilità della tua codebase**
204
+
205
+ 4. **Duplicare i tuoi componenti e i loro contenuti correlati più facilmente (esempio: componenti di login/registrazione, ecc.)**
206
+ - Limitando il rischio di impattare il contenuto di altri componenti
207
+ - Copiando/incollando il tuo contenuto da un'applicazione all'altra senza dipendenze esterne
208
+
209
+ 5. **Evitare di inquinare la tua codebase con chiavi/valori inutilizzati per componenti non usati**
210
+ - Se non usi un componente, non devi importarne il contenuto
211
+ - Se elimini un componente, ti sarà più facile ricordarti di rimuovere il suo contenuto correlato poiché sarà presente nella stessa cartella
212
+
213
+ 6. **Ridurre il costo di ragionamento per gli agenti AI nella dichiarazione del tuo contenuto multilingue**
214
+ - L'agente AI non dovrà scansionare l'intera codebase per sapere dove implementare il tuo contenuto
215
+ - Le traduzioni possono essere facilmente effettuate dagli strumenti di completamento automatico basati su AI nel tuo IDE (come GitHub Copilot)
216
+
217
+ 7. **Ottimizzare le prestazioni di caricamento**
218
+ - Se un componente viene caricato in modo lazy, il suo contenuto correlato sarà caricato contemporaneamente
219
+
220
+ ## Funzionalità aggiuntive di Intlayer
221
+
222
+ | Funzionalità | Descrizione |
223
+ | ------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
224
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/frameworks.png?raw=true) | **Supporto Cross-Framework**<br><br>Intlayer è compatibile con tutti i principali framework e librerie, inclusi Next.js, React, Vite, Vue.js, Nuxt, Preact, Express e altri ancora. |
225
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/javascript_content_management.png?raw=true) | **Gestione dei Contenuti con JavaScript**<br><br>Sfrutta la flessibilità di JavaScript per definire e gestire i tuoi contenuti in modo efficiente. <br><br> - [Dichiarazione dei contenuti](https://intlayer.org/doc/concept/content) |
226
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/per_locale_content_declaration_file.png?raw=true) | **File di Dichiarazione del Contenuto per Locale**<br><br>Accelera il tuo sviluppo dichiarando il contenuto una sola volta, prima della generazione automatica.<br><br> - [File di Dichiarazione del Contenuto per Locale](https://intlayer.org/doc/concept/per-locale-file) |
227
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/autocompletion.png?raw=true) | **Ambiente Type-Safe**<br><br>Sfrutta TypeScript per garantire che le tue definizioni di contenuto e il codice siano privi di errori, beneficiando anche dell'autocompletamento nell'IDE.<br><br> - [Configurazione di TypeScript](https://intlayer.org/doc/environment/vite-and-react#configure-typescript) |
228
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/config_file.png?raw=true) | **Configurazione Semplificata**<br><br>Inizia rapidamente con una configurazione minima. Regola facilmente le impostazioni per l'internazionalizzazione, il routing, l'IA, la build e la gestione dei contenuti.<br><br> - [Esplora l'integrazione con Next.js](https://intlayer.org/doc/environment/nextjs) |
229
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/content_retrieval.png?raw=true) | **Recupero Contenuti Semplificato**<br><br>Non è necessario chiamare la tua funzione `t` per ogni singolo contenuto. Recupera tutto il tuo contenuto direttamente usando un singolo hook.<br><br> - [Integrazione React](https://intlayer.org/doc/environment/create-react-app) |
230
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/server_component.png?raw=true) | **Implementazione Coerente dei Componenti Server**<br><br>Perfettamente adatto per i componenti server di Next.js, utilizza la stessa implementazione sia per i componenti client che per quelli server, senza bisogno di passare la tua funzione `t` attraverso ogni componente server. <br><br> - [Componenti Server](https://intlayer.org/doc/environment/nextjs#step-7-utilize-content-in-your-code) |
231
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/file_tree.png?raw=true) | **Codebase Organizzato**<br><br>Tieni il tuo codice più organizzato: 1 componente = 1 dizionario nella stessa cartella. Le traduzioni vicine ai rispettivi componenti migliorano la manutenibilità e la chiarezza. <br><br> - [Come funziona Intlayer](https://intlayer.org/doc/concept/how-works-intlayer) |
232
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/url_routing.png?raw=true) | **Routing Avanzato**<br><br>Pieno supporto al routing dell'app, adattandosi perfettamente a strutture applicative complesse, per Next.js, React, Vite, Vue.js, ecc.<br><br> - [Esplora l'integrazione con Next.js](https://intlayer.org/doc/environment/nextjs) |
233
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/markdown.png?raw=true) | **Supporto Markdown**<br><br>Importa e interpreta file di localizzazione e Markdown remoto per contenuti multilingue come politiche sulla privacy, documentazione, ecc. Interpreta e rendi accessibili i metadati Markdown nel tuo codice.<br><br> - [File di contenuto](https://intlayer.org/doc/concept/content/file) |
234
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/visual_editor.png?raw=true) | **Editor Visivo e CMS Gratuiti**<br><br>Un editor visivo gratuito e un CMS sono disponibili per i content writer, eliminando la necessità di una piattaforma di localizzazione. Mantieni il tuo contenuto sincronizzato usando Git, oppure esternalizzalo totalmente o parzialmente con il CMS.<br><br> - [Editor Intlayer](https://intlayer.org/doc/concept/editor) <br> - [CMS Intlayer](https://intlayer.org/doc/concept/cms) |
235
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/bundle.png?raw=true) | **Contenuto Tree-shakable**<br><br>Contenuto tree-shakable, che riduce la dimensione del bundle finale. Carica il contenuto per componente, escludendo qualsiasi contenuto non utilizzato dal tuo bundle. Supporta il lazy loading per migliorare l'efficienza del caricamento dell'app. <br><br> - [Ottimizzazione della build dell'app](https://intlayer.org/doc/concept/how-works-intlayer#app-build-optimization) |
236
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/static_rendering.png?raw=true) | **Rendering Statico**<br><br>Non blocca il Rendering Statico. <br><br> - [Integrazione Next.js](https://intlayer.org/doc/environment/nextjs) |
237
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/AI_translation.png?raw=true) | **Traduzione Potenziata dall'IA**<br><br>Trasforma il tuo sito web in 231 lingue con un solo clic utilizzando gli avanzati strumenti di traduzione potenziati dall'IA di Intlayer, sfruttando il tuo provider IA/chiave API personale. <br><br> - [Integrazione CI/CD](https://intlayer.org/doc/concept/ci-cd) <br> - [CLI di Intlayer](https://intlayer.org/doc/concept/cli) <br> - [Compilazione automatica](https://intlayer.org/doc/concept/auto-fill) |
238
+ | ![Funzionalità](https://github.com/aymericzip/intlayer/blob/main/docs/assets/mcp.png?raw=true) | **Integrazione Server MCP**<br><br>Fornisce un server MCP (Model Context Protocol) per l'automazione dell'IDE, consentendo una gestione dei contenuti e flussi di lavoro i18n senza interruzioni direttamente all'interno del tuo ambiente di sviluppo. <br><br> - [Server MCP](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/mcp_server.md) |
239
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/vscode_extension.png?raw=true) | **Estensione VSCode**<br><br>Intlayer fornisce un'estensione per VSCode per aiutarti a gestire i tuoi contenuti e traduzioni, costruire i tuoi dizionari, tradurre i tuoi contenuti e altro ancora. <br><br> - [Estensione VSCode](https://intlayer.org/doc/vs-code-extension) |
240
+ | ![Feature](https://github.com/aymericzip/intlayer/blob/main/docs/assets/interoperability.png?raw=true) | **Interoperabilità**<br><br>Consente l'interoperabilità con 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) |
241
+
242
+ ## Confronto di Intlayer con altre soluzioni
243
+
244
+ | Funzionalità | Intlayer | React-i18next / i18next | React-Intl (FormatJS) | LinguiJS | next-intl | next-i18next | vue-i18n |
245
+ | ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------- |
246
+ | **Traduzioni Vicino ai Componenti** | Sì, contenuto collocato con ogni componente | No | No | No | No | No | Sì - usando `Single File Components` (SFCs) |
247
+ | **Integrazione TypeScript** | Avanzata, tipi rigorosi generati automaticamente | Base; configurazione extra per sicurezza | Buona, ma meno rigorosa | Tipizzazioni, necessita configurazione | Buona | Base | Buona (tipi disponibili; sicurezza delle chiavi necessita configurazione) |
248
+ | **Rilevamento Traduzioni Mancanti** | Errore/avviso in fase di compilazione | Principalmente stringhe di fallback a runtime | Stringhe di fallback | Richiede configurazione aggiuntiva | Fallback a runtime | Fallback a runtime | Fallback/avvisi a runtime (configurabile) |
249
+ | **Contenuti Ricchi (JSX/Markdown/componenti)** | Supporto diretto, anche per nodi React | Limitato / solo interpolazione | Sintassi ICU, non vero JSX | Limitato | Non progettato per nodi ricchi | Limitato | Limitato (componenti tramite `<i18n-t>`, Markdown tramite plugin) |
250
+ | **Traduzione basata su AI** | Sì, supporta più provider AI. Utilizzabile con le proprie chiavi API. Considera il contesto della tua applicazione e l'ambito del contenuto | No | No | No | No | No | No |
251
+ | **Editor Visivo** | Sì, Editor Visivo locale + CMS opzionale; può esternalizzare il contenuto del codice; integrabile | No / disponibile tramite piattaforme di localizzazione esterne | No / disponibile tramite piattaforme di localizzazione esterne | No / disponibile tramite piattaforme di localizzazione esterne | No / disponibile tramite piattaforme di localizzazione esterne | No / disponibile tramite piattaforme di localizzazione esterne | No / disponibile tramite piattaforme di localizzazione esterne |
252
+ | **Routing Localizzato** | Integrato, supporto middleware | Plugin o configurazione manuale | Non integrato | Plugin/configurazione manuale | Integrato | Integrato | Manuale tramite Vue Router (gestito da Nuxt i18n) |
253
+ | **Generazione Dinamica delle Rotte** | Sì | Plugin/ecosistema o configurazione manuale | Non fornito | Plugin/manuale | Sì | Sì | Non fornito (fornito da Nuxt i18n) |
254
+ | **Pluralizzazione** | Modelli basati su enumerazione; vedere la documentazione | Configurabile (plugin come i18next-icu) | Avanzato (ICU) | Avanzato (ICU/messageformat) | Buono | Buono | Avanzato (regole di plurale integrate) |
255
+ | **Formattazione (date, numeri, valute)** | Formatter ottimizzati (Intl sotto il cofano) | Tramite plugin o uso personalizzato di Intl | Formatter ICU avanzati | Helper ICU/CLI | Buono (helper Intl) | Buono (helper Intl) | Formatter integrati per date/numeri (Intl) |
256
+ | **Formato del Contenuto** | .tsx, .ts, .js, .json, .md, .txt | .json | .json, .js | .po, .json | .json, .js, .ts | .json | .json, .js |
257
+ | **Supporto ICU** | In lavorazione (ICU nativo) | Tramite plugin (i18next-icu) | Sì | Sì | Sì | Tramite plugin (i18next-icu) | Tramite formatter/compiler personalizzato |
258
+ | **Helper SEO (hreflang, sitemap)** | Strumenti integrati: helper per sitemap, **robots.txt**, metadata | Plugin della community/manuale | Non core | Non core | Buono | Buono | Non core (Nuxt i18n fornisce helper) |
259
+ | **Ecosistema / Comunità** | Più piccolo ma in rapida crescita e reattivo | Il più grande e maturo | Grande, enterprise | In crescita, più piccolo | Di medie dimensioni, focalizzato su Next.js | Di medie dimensioni, focalizzato su Next.js | Grande nell'ecosistema Vue |
260
+ | **Rendering lato server e Componenti Server** | Sì, ottimizzato per SSR / Componenti Server di React | Supportato, necessita di qualche configurazione | Supportato in Next.js | Supportato | Supporto completo | Supporto completo | SSR tramite Nuxt/Vue SSR (senza RSC) |
261
+ | **Tree-shaking (caricamento solo del contenuto utilizzato)** | Sì, per componente al momento della build tramite plugin Babel/SWC | Di solito carica tutto (può essere migliorato con namespace/code-splitting) | Di solito carica tutto | Non di default | Parziale | Parziale | Parziale (con code-splitting/configurazione manuale) |
262
+ | **Caricamento lazy** | Sì, per locale/per componente | Sì (es. backend/namespace su richiesta) | Sì (bundle di locale suddivisi) | Sì (import dinamico del catalogo) | Sì (per rotta/per locale) | Sì (per rotta/per locale) | Sì (messaggi di locale asincroni) |
263
+ | **Gestione di Grandi Progetti** | Incoraggia la modularità, adatto per design-system | Richiede una buona disciplina dei file | I cataloghi centrali possono diventare grandi | Può diventare complesso | Modulare con configurazione | Modulare con configurazione | Modulare con configurazione Vue Router/Nuxt i18n |
264
+
265
+ ## Storia del Documento
266
+
267
+ | Versione | Data | Modifiche |
268
+ | -------- | ---------- | --------------------------------- |
269
+ | 5.8.0 | 2025-08-19 | Aggiornamento tabella comparativa |
270
+ | 5.5.10 | 2025-06-29 | Inizializzazione della storia |
@@ -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
  };
@@ -82,8 +82,8 @@ const componentContent = {
82
82
  content: {
83
83
  myTranslatedContent: t({
84
84
  en: "Hello World",
85
- fr: "Bonjour le monde",
86
85
  es: "Hola Mundo",
86
+ fr: "Bonjour le monde",
87
87
  }),
88
88
  },
89
89
  };
@@ -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": "Meno di meno una macchina",
@@ -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": "Meno di meno una macchina", // Meno di meno una macchina
@@ -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": "Meno di meno una macchina",
@@ -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": "Meno di meno una macchina", // meno di meno una macchina
@@ -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": "Meno di meno una macchina",
@@ -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": "Meno di meno una macchina",
@@ -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": "Meno di meno una macchina",