@intlayer/docs 7.0.4-canary.0 → 7.0.5

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 (107) hide show
  1. package/blog/ar/intlayer_with_i18next.md +68 -106
  2. package/blog/ar/intlayer_with_next-i18next.md +84 -288
  3. package/blog/ar/intlayer_with_next-intl.md +58 -337
  4. package/blog/ar/intlayer_with_react-i18next.md +68 -290
  5. package/blog/ar/intlayer_with_react-intl.md +63 -266
  6. package/blog/de/intlayer_with_i18next.md +77 -97
  7. package/blog/de/intlayer_with_next-i18next.md +69 -296
  8. package/blog/de/intlayer_with_next-intl.md +59 -340
  9. package/blog/de/intlayer_with_react-i18next.md +68 -290
  10. package/blog/de/intlayer_with_react-intl.md +62 -264
  11. package/blog/en/intlayer_with_i18next.md +36 -1638
  12. package/blog/en/intlayer_with_next-i18next.md +22 -847
  13. package/blog/en/intlayer_with_next-intl.md +32 -1053
  14. package/blog/en/intlayer_with_react-i18next.md +38 -764
  15. package/blog/en/intlayer_with_react-intl.md +42 -1018
  16. package/blog/en-GB/intlayer_with_i18next.md +67 -103
  17. package/blog/en-GB/intlayer_with_next-i18next.md +71 -292
  18. package/blog/en-GB/intlayer_with_next-intl.md +58 -337
  19. package/blog/en-GB/intlayer_with_react-i18next.md +67 -289
  20. package/blog/en-GB/intlayer_with_react-intl.md +61 -264
  21. package/blog/es/intlayer_with_i18next.md +67 -103
  22. package/blog/es/intlayer_with_next-i18next.md +71 -296
  23. package/blog/es/intlayer_with_next-intl.md +57 -338
  24. package/blog/es/intlayer_with_react-i18next.md +68 -290
  25. package/blog/es/intlayer_with_react-intl.md +62 -265
  26. package/blog/fr/intlayer_with_i18next.md +66 -104
  27. package/blog/fr/intlayer_with_next-i18next.md +82 -285
  28. package/blog/fr/intlayer_with_next-intl.md +57 -338
  29. package/blog/fr/intlayer_with_react-i18next.md +67 -289
  30. package/blog/fr/intlayer_with_react-intl.md +61 -264
  31. package/blog/hi/intlayer_with_i18next.md +68 -104
  32. package/blog/hi/intlayer_with_next-i18next.md +74 -299
  33. package/blog/hi/intlayer_with_next-intl.md +57 -239
  34. package/blog/hi/intlayer_with_react-i18next.md +69 -291
  35. package/blog/hi/intlayer_with_react-intl.md +65 -268
  36. package/blog/id/intlayer_with_i18next.md +126 -0
  37. package/blog/id/intlayer_with_next-i18next.md +142 -0
  38. package/blog/id/intlayer_with_next-intl.md +113 -0
  39. package/blog/id/intlayer_with_react-i18next.md +124 -0
  40. package/blog/id/intlayer_with_react-intl.md +122 -0
  41. package/blog/it/intlayer_with_i18next.md +67 -103
  42. package/blog/it/intlayer_with_next-i18next.md +71 -296
  43. package/blog/it/intlayer_with_next-intl.md +57 -338
  44. package/blog/it/intlayer_with_react-i18next.md +68 -290
  45. package/blog/it/intlayer_with_react-intl.md +62 -265
  46. package/blog/ja/intlayer_with_i18next.md +68 -103
  47. package/blog/ja/intlayer_with_next-i18next.md +85 -283
  48. package/blog/ja/intlayer_with_next-intl.md +58 -336
  49. package/blog/ja/intlayer_with_react-i18next.md +68 -290
  50. package/blog/ja/intlayer_with_react-intl.md +62 -264
  51. package/blog/ko/intlayer_with_i18next.md +80 -96
  52. package/blog/ko/intlayer_with_next-i18next.md +85 -287
  53. package/blog/ko/intlayer_with_next-intl.md +68 -327
  54. package/blog/ko/intlayer_with_react-i18next.md +68 -290
  55. package/blog/ko/intlayer_with_react-intl.md +64 -266
  56. package/blog/pl/intlayer_with_i18next.md +126 -0
  57. package/blog/pl/intlayer_with_next-i18next.md +142 -0
  58. package/blog/pl/intlayer_with_next-intl.md +111 -0
  59. package/blog/pl/intlayer_with_react-i18next.md +124 -0
  60. package/blog/pl/intlayer_with_react-intl.md +122 -0
  61. package/blog/pt/intlayer_with_i18next.md +67 -103
  62. package/blog/pt/intlayer_with_next-i18next.md +72 -293
  63. package/blog/pt/intlayer_with_next-intl.md +57 -256
  64. package/blog/pt/intlayer_with_react-i18next.md +104 -78
  65. package/blog/pt/intlayer_with_react-intl.md +62 -266
  66. package/blog/ru/intlayer_with_i18next.md +66 -104
  67. package/blog/ru/intlayer_with_next-i18next.md +71 -296
  68. package/blog/ru/intlayer_with_next-intl.md +58 -337
  69. package/blog/ru/intlayer_with_react-i18next.md +68 -290
  70. package/blog/ru/intlayer_with_react-intl.md +62 -265
  71. package/blog/tr/intlayer_with_i18next.md +71 -107
  72. package/blog/tr/intlayer_with_next-i18next.md +72 -297
  73. package/blog/tr/intlayer_with_next-intl.md +58 -339
  74. package/blog/tr/intlayer_with_react-i18next.md +69 -291
  75. package/blog/tr/intlayer_with_react-intl.md +63 -285
  76. package/blog/vi/intlayer_with_i18next.md +126 -0
  77. package/blog/vi/intlayer_with_next-i18next.md +142 -0
  78. package/blog/vi/intlayer_with_next-intl.md +111 -0
  79. package/blog/vi/intlayer_with_react-i18next.md +124 -0
  80. package/blog/vi/intlayer_with_react-intl.md +122 -0
  81. package/blog/zh/intlayer_with_i18next.md +67 -102
  82. package/blog/zh/intlayer_with_next-i18next.md +72 -296
  83. package/blog/zh/intlayer_with_next-intl.md +58 -336
  84. package/blog/zh/intlayer_with_react-i18next.md +68 -290
  85. package/blog/zh/intlayer_with_react-intl.md +63 -106
  86. package/docs/ar/plugins/sync-json.md +244 -0
  87. package/docs/de/plugins/sync-json.md +244 -0
  88. package/docs/en/intlayer_cli.md +25 -0
  89. package/docs/en/intlayer_with_nextjs_14.md +2 -0
  90. package/docs/en/intlayer_with_nextjs_15.md +2 -0
  91. package/docs/en/intlayer_with_nextjs_16.md +2 -0
  92. package/docs/en/plugins/sync-json.md +1 -1
  93. package/docs/en-GB/plugins/sync-json.md +244 -0
  94. package/docs/es/plugins/sync-json.md +244 -0
  95. package/docs/fr/plugins/sync-json.md +244 -0
  96. package/docs/hi/plugins/sync-json.md +244 -0
  97. package/docs/id/plugins/sync-json.md +244 -0
  98. package/docs/it/plugins/sync-json.md +244 -0
  99. package/docs/ja/plugins/sync-json.md +244 -0
  100. package/docs/ko/plugins/sync-json.md +244 -0
  101. package/docs/pl/plugins/sync-json.md +244 -0
  102. package/docs/pt/plugins/sync-json.md +244 -0
  103. package/docs/ru/plugins/sync-json.md +244 -0
  104. package/docs/tr/plugins/sync-json.md +245 -0
  105. package/docs/vi/plugins/sync-json.md +244 -0
  106. package/docs/zh/plugins/sync-json.md +244 -0
  107. package/package.json +14 -14
@@ -1,8 +1,8 @@
1
1
  ---
2
2
  createdAt: 2024-12-24
3
- updatedAt: 2025-06-29
4
- title: Intlayer e i18next
5
- description: Integra Intlayer con i18next per un'internazionalizzazione ottimale. Confronta i due framework e impara come configurarli insieme.
3
+ updatedAt: 2025-10-29
4
+ title: Come automatizzare le tue traduzioni JSON di i18next usando Intlayer
5
+ description: Automatizza le tue traduzioni JSON con Intlayer e i18next per una migliore internazionalizzazione nelle applicazioni JavaScript.
6
6
  keywords:
7
7
  - Intlayer
8
8
  - i18next
@@ -14,149 +14,113 @@ keywords:
14
14
  - Next.js
15
15
  - JavaScript
16
16
  - TypeScript
17
+ - Migrazione
18
+ - Integrazione
17
19
  slugs:
18
20
  - blog
19
21
  - intlayer-with-i18next
22
+ history:
23
+ - version: 7.0.0
24
+ date: 2025-10-29
25
+ changes: Modifica al plugin syncJSON
20
26
  ---
21
27
 
22
- # Internazionalizzazione con Intlayer e i18next
28
+ # Come automatizzare le tue traduzioni JSON di i18next usando Intlayer
23
29
 
24
- i18next è un framework open-source di internazionalizzazione (i18n) progettato per applicazioni JavaScript. È ampiamente utilizzato per gestire traduzioni, localizzazione e cambio di lingua in progetti software. Tuttavia, presenta alcune limitazioni che possono complicare la scalabilità e lo sviluppo.
30
+ ## Cos'è Intlayer?
25
31
 
26
- Intlayer è un altro framework di internazionalizzazione che affronta queste limitazioni, offrendo un approccio più flessibile alla dichiarazione e gestione dei contenuti. Esploriamo alcune differenze chiave tra i18next e Intlayer, e come configurare entrambi per un'internazionalizzazione ottimale.
32
+ **Intlayer** è una libreria di internazionalizzazione innovativa e open-source progettata per superare le limitazioni delle soluzioni i18n tradizionali. Offre un approccio moderno alla gestione dei contenuti nelle applicazioni JavaScript.
27
33
 
28
- ## Intlayer vs. i18next: Differenze Chiave
34
+ Consulta un confronto concreto con i18next nel nostro post sul blog [next-i18next vs. next-intl vs. Intlayer](https://github.com/aymericzip/intlayer/blob/main/docs/blog/it/next-i18next_vs_next-intl_vs_intlayer.md).
29
35
 
30
- ### 1. Dichiarazione dei Contenuti
36
+ ## Perché combinare Intlayer con i18next?
31
37
 
32
- Con i18next, i dizionari di traduzione devono essere dichiarati in una cartella specifica, il che può complicare la scalabilità dell'applicazione. Al contrario, Intlayer consente di dichiarare i contenuti all'interno della stessa directory del tuo componente. Questo ha diversi vantaggi:
38
+ Sebbene Intlayer offra una soluzione i18n autonoma eccellente (vedi la nostra [guida all'integrazione con Next.js](https://github.com/aymericzip/intlayer/blob/main/docs/docs/it/intlayer_with_nextjs_16.md)), potresti volerlo combinare con i18next per diversi motivi:
33
39
 
34
- - **Modifica dei Contenuti Semplificata**: Gli utenti non devono cercare il dizionario corretto da modificare, riducendo la possibilità di errori.
35
- - **Adattamento Automatico**: Se un componente cambia posizione o viene rimosso, Intlayer lo rileva e si adatta automaticamente.
40
+ 1. **Codice esistente**: Hai un'implementazione consolidata di i18next e desideri migrare gradualmente alla migliore esperienza sviluppatore offerta da Intlayer.
41
+ 2. **Requisiti legacy**: Il tuo progetto richiede compatibilità con plugin o flussi di lavoro i18next esistenti.
42
+ 3. **Familiarità del team**: Il tuo team è abituato a i18next ma desidera una migliore gestione dei contenuti.
36
43
 
37
- ### 2. Complessità della Configurazione
44
+ **Per questo, Intlayer può essere implementato come un adattatore per i18next per aiutarti ad automatizzare le traduzioni JSON nella CLI o nelle pipeline CI/CD, testare le tue traduzioni e altro ancora.**
38
45
 
39
- Configurare i18next può essere complesso, soprattutto quando si integra con componenti lato server o si configurano middleware per framework come Next.js. Intlayer semplifica questo processo, offrendo una configurazione più diretta.
46
+ Questa guida ti mostra come sfruttare il sistema superiore di dichiarazione dei contenuti di Intlayer mantenendo la compatibilità con i18next.
40
47
 
41
- ### 3. Coerenza dei Dizionari di Traduzione
48
+ ## Indice
42
49
 
43
- Garantire che i dizionari di traduzione siano coerenti tra le diverse lingue può essere una sfida con i18next. Questa incoerenza può portare a crash dell'applicazione se non gestita correttamente. Intlayer affronta questo problema imponendo vincoli sui contenuti tradotti, garantendo che nessuna traduzione venga tralasciata e che i contenuti tradotti siano accurati.
50
+ <TOC/>
44
51
 
45
- ### 4. Integrazione con TypeScript
52
+ ## Guida passo-passo per configurare Intlayer con i18next
46
53
 
47
- Intlayer offre una migliore integrazione con TypeScript, consentendo suggerimenti automatici dei contenuti nel tuo codice, migliorando così l'efficienza dello sviluppo.
54
+ ### Passo 1: Installa le dipendenze
48
55
 
49
- ### 5. Condivisione dei Contenuti Tra Applicazioni
56
+ Installa i pacchetti necessari:
50
57
 
51
- Intlayer facilita la condivisione dei file di dichiarazione dei contenuti tra più applicazioni e librerie condivise. Questa funzionalità rende più semplice mantenere traduzioni coerenti su un codicebase più grande.
52
-
53
- ## Come Generare Dizionari i18next con Intlayer
58
+ ```bash packageManager="npm"
59
+ npm install intlayer @intlayer/sync-json-plugin
60
+ ```
54
61
 
55
- ### Configurare Intlayer per Esportare Dizionari i18next
62
+ ```bash packageManager="pnpm"
63
+ pnpm add intlayer @intlayer/sync-json-plugin
64
+ ```
56
65
 
57
- > Note Importanti
66
+ ```bash packageManager="yarn"
67
+ yarn add intlayer @intlayer/sync-json-plugin
68
+ ```
58
69
 
59
- > L'esportazione dei dizionari i18next è attualmente in beta e non garantisce una compatibilità 1:1 con altri framework. Si consiglia di attenersi a una configurazione basata su Intlayer per ridurre i problemi.
70
+ **Descrizione dei pacchetti:**
60
71
 
61
- Per esportare i dizionari i18next, è necessario configurare Intlayer in modo appropriato. Di seguito è riportato un esempio di come impostare Intlayer per esportare sia i dizionari Intlayer che quelli i18next.
72
+ - **intlayer**: Libreria core per la gestione dell'internazionalizzazione, dichiarazione dei contenuti e build
73
+ - **@intlayer/sync-json-plugin**: Plugin per esportare le dichiarazioni di contenuto di Intlayer in formato JSON compatibile con i18next
62
74
 
63
- ```typescript fileName="intlayer.config.ts" codeFormat="typescript"
64
- import { Locales, type IntlayerConfig } from "intlayer";
75
+ ### Passo 2: Implementa il plugin Intlayer per incapsulare il JSON
65
76
 
66
- const config: IntlayerConfig = {
67
- content: {
68
- // Indica che Intlayer esporterà sia i dizionari Intlayer che i dizionari i18next
69
- dictionaryOutput: ["intlayer", "i18next"],
70
- // Percorso relativo dalla radice del progetto alla directory in cui i dizionari i18n saranno esportati
71
- i18nextResourcesDir: "./i18next/dictionaries",
72
- },
73
- };
77
+ Crea un file di configurazione Intlayer per definire le tue localizzazioni supportate:
74
78
 
75
- export default config;
76
- ```
79
+ **Se vuoi anche esportare dizionari JSON per i18next**, aggiungi il plugin `syncJSON`:
77
80
 
78
- ```javascript fileName="intlayer.config.mjs" codeFormat="esm"
79
- import { Locales } from "intlayer";
81
+ ```typescript fileName="intlayer.config.ts"
82
+ import { Locales, type IntlayerConfig } from "intlayer";
83
+ import { syncJSON } from "@intlayer/sync-json-plugin";
80
84
 
81
- /** @type {import('intlayer').IntlayerConfig} */
82
- const config = {
83
- content: {
84
- // Indica che Intlayer esporterà sia i dizionari Intlayer che i dizionari i18next
85
- dictionaryOutput: ["intlayer", "i18next"],
86
- // Percorso relativo dalla radice del progetto alla directory in cui i dizionari i18n saranno esportati
87
- i18nextResourcesDir: "./i18next/dictionaries",
85
+ const config: IntlayerConfig = {
86
+ internationalization: {
87
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
88
+ defaultLocale: Locales.ENGLISH,
88
89
  },
90
+ plugins: [
91
+ syncJSON({
92
+ source: ({ key, locale }) => `./intl/messages/${locale}/${key}.json`,
93
+ }),
94
+ ],
89
95
  };
90
96
 
91
97
  export default config;
92
98
  ```
93
99
 
94
- ```javascript fileName="intlayer.config.cjs" codeFormat="commonjs"
95
- const { Locales } = require("intlayer");
96
-
97
- /** @type {import('intlayer').IntlayerConfig} */
98
- const config = {
99
- content: {
100
- // Indica che Intlayer esporterà sia i dizionari Intlayer che i dizionari i18next
101
- dictionaryOutput: ["intlayer", "i18next"],
102
- // Percorso relativo dalla radice del progetto alla directory in cui i dizionari i18n saranno esportati
103
- i18nextResourcesDir: "./i18next/dictionaries",
104
- },
105
- };
106
-
107
- module.exports = config;
108
- ```
100
+ Il plugin `syncJSON` incapsulerà automaticamente il JSON. Leggerà e scriverà i file JSON senza modificare l'architettura del contenuto.
109
101
 
110
- Includendo 'i18next' nella configurazione, Intlayer genera dizionari dedicati di i18next oltre ai dizionari di Intlayer. Nota che rimuovere 'intlayer' dalla configurazione potrebbe interrompere la compatibilità con React-Intlayer o Next-Intlayer.
102
+ Se vuoi far coesistere quel JSON con i file di dichiarazione dei contenuti di intlayer (file `.content`), Intlayer procederà in questo modo:
111
103
 
112
- ### Importare i Dizionari nella Tua Configurazione i18next
104
+ 1. caricherà sia i file JSON che i file di dichiarazione dei contenuti e li trasformerà in un dizionario intlayer.
105
+ 2. se ci sono conflitti tra il JSON e i file di dichiarazione del contenuto, Intlayer procederà alla fusione di tutti questi dizionari. A seconda della priorità dei plugin e di quella del file di dichiarazione del contenuto (tutti configurabili).
113
106
 
114
- Per importare i dizionari generati nella tua configurazione i18next, puoi utilizzare 'i18next-resources-to-backend'. Ecco un esempio di come importare i tuoi dizionari i18next:
107
+ Se vengono effettuate modifiche utilizzando la CLI per tradurre il JSON, o utilizzando il CMS, Intlayer aggiornerà il file JSON con le nuove traduzioni.
115
108
 
116
- ```typescript fileName="i18n/client.ts" codeFormat="typescript"
117
- // i18n/client.ts
109
+ ## Configurazione Git
118
110
 
119
- import i18next from "i18next";
120
- import resourcesToBackend from "i18next-resources-to-backend";
111
+ Si consiglia di ignorare i file Intlayer generati automaticamente:
121
112
 
122
- i18next
123
- // La tua configurazione i18next
124
- .use(
125
- resourcesToBackend(
126
- (language: string, namespace: string) =>
127
- import(`../i18next/dictionaries/${language}/${namespace}.json`)
128
- )
129
- );
113
+ ```plaintext fileName=".gitignore"
114
+ # Ignora i file generati da Intlayer
115
+ .intlayer
130
116
  ```
131
117
 
132
- ```javascript fileName="i18n/client.mjs" codeFormat="esm"
133
- // i18n/client.mjs
118
+ Questi file possono essere rigenerati durante il processo di build e non è necessario includerli nel controllo di versione.
134
119
 
135
- import i18next from "i18next";
136
- import resourcesToBackend from "i18next-resources-to-backend";
120
+ ### Estensione VS Code
137
121
 
138
- i18next
139
- // La tua configurazione i18next
140
- .use(
141
- resourcesToBackend(
142
- (language, namespace) =>
143
- import(`../i18next/dictionaries/${language}/${namespace}.json`)
144
- )
145
- );
146
- ```
122
+ Per migliorare l'esperienza dello sviluppatore, installa l'**Estensione ufficiale Intlayer per VS Code**:
147
123
 
148
- ```javascript fileName="i18n/client.cjs" codeFormat="commonjs"
149
- // i18n/client.cjs
124
+ [Installa dal Marketplace di VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)
150
125
 
151
- const i18next = require("i18next");
152
- const resourcesToBackend = require("i18next-resources-to-backend");
153
-
154
- i18next
155
- // La tua configurazione i18next
156
- .use(
157
- resourcesToBackend(
158
- (language, namespace) =>
159
- import(`../i18next/dictionaries/${language}/${namespace}.json`)
160
- )
161
- );
162
- ```
126
+ [Installa dal Marketplace di VS Code](https://marketplace.visualstudio.com/items?itemName=intlayer.intlayer-vs-code-extension)