@intlayer/docs 8.4.7 → 8.4.8

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.
@@ -0,0 +1,958 @@
1
+ ---
2
+ createdAt: 2024-08-13
3
+ updatedAt: 2026-03-20
4
+ title: Configurazione (Configuration)
5
+ description: Scopri come configurare Intlayer per la tua applicazione. Comprendi le varie impostazioni e opzioni disponibili per personalizzare Intlayer in base alle tue esigenze.
6
+ keywords:
7
+ - Configurazione
8
+ - Impostazioni
9
+ - Personalizzazione
10
+ - Intlayer
11
+ - Opzioni
12
+ slugs:
13
+ - doc
14
+ - concept
15
+ - configuration
16
+ history:
17
+ - version: 8.4.0
18
+ date: 2026-03-20
19
+ changes: Aggiunta notazione a oggetti per locale per 'compiler.output' e 'dictionary.fill'
20
+ - version: 8.3.0
21
+ date: 2026-03-11
22
+ changes: Spostato 'baseDir' dalla configurazione 'content' alla configurazione 'system'
23
+ - version: 8.2.0
24
+ date: 2026-03-09
25
+ changes: Aggiornate le opzioni del compilatore, aggiunto supporto per 'output' e 'noMetadata'
26
+ - version: 8.1.7
27
+ date: 2026-02-25
28
+ changes: Aggiornate le opzioni del compilatore
29
+ - version: 8.1.5
30
+ date: 2026-02-23
31
+ changes: Aggiunta opzione del compilatore 'build-only' e prefisso del dizionario
32
+ - version: 8.0.6
33
+ date: 2026-02-12
34
+ changes: Aggiunto supporto per i fornitori Open Router, Alibaba, Amazon, Google Vertex Bedrock, Fireworks, Groq, Hugging Face e Together.ai
35
+ - version: 8.0.5
36
+ date: 2026-02-06
37
+ changes: Aggiunto `dataSerialization` alla configurazione AI
38
+ - version: 8.0.0
39
+ date: 2026-01-24
40
+ changes: Rinominata modalità di importazione `live` in `fetch` per descrivere meglio il meccanismo sottostante.
41
+ - version: 8.0.0
42
+ date: 2026-01-22
43
+ changes: Spostata la configurazione di build `importMode` nella configurazione `dictionary`.
44
+ - version: 8.0.0
45
+ date: 2026-01-22
46
+ changes: Aggiunta l'opzione `rewrite` alla configurazione di routing
47
+ - version: 8.0.0
48
+ date: 2026-01-18
49
+ changes: Separata la configurazione di sistema dalla configurazione dei contenuti. Spostati i percorsi interni nella proprietà `system`. Aggiunto `codeDir` per separare i file di contenuto dalla trasformazione del codice.
50
+ - version: 8.0.0
51
+ date: 2026-01-18
52
+ changes: Aggiunte le opzioni del dizionario `location` e `schema`
53
+ - version: 7.5.1
54
+ date: 2026-01-10
55
+ changes: Aggiunto supporto per i formati file JSON5 e JSONC
56
+ - version: 7.5.0
57
+ date: 2025-12-17
58
+ changes: Aggiunta l'opzione `buildMode`
59
+ - version: 7.0.0
60
+ date: 2025-10-25
61
+ changes: Aggiunta configurazione `dictionary`
62
+ - version: 7.0.0
63
+ date: 2025-10-21
64
+ changes: Sostituito `middleware` con la configurazione `routing`
65
+ - version: 7.0.0
66
+ date: 2025-10-12
67
+ changes: Aggiunta l'opzione `formatCommand`
68
+ - version: 6.2.0
69
+ date: 2025-10-12
70
+ changes: Aggiornata l'opzione `excludedPath`
71
+ - version: 6.0.2
72
+ date: 2025-09-23
73
+ changes: Aggiunta l'opzione `outputFormat`
74
+ - version: 6.0.0
75
+ date: 2025-09-21
76
+ changes: Rimosso il campo `dictionaryOutput` e il campo `i18nextResourcesDir`
77
+ - version: 6.0.0
78
+ date: 2025-09-16
79
+ changes: Aggiunta modalità di importazione `live`
80
+ - version: 6.0.0
81
+ date: 2025-09-04
82
+ changes: Sostituito il campo `hotReload` con `liveSync` e aggiunti i campi `liveSyncPort` e `liveSyncURL`
83
+ - version: 5.6.1
84
+ date: 2025-07-25
85
+ changes: Sostituito `activateDynamicImport` con l'opzione `importMode`
86
+ - version: 5.6.0
87
+ date: 2025-07-13
88
+ changes: Modificato il `contentDir` predefinito da `['src']` a `['.']`
89
+ - version: 5.5.11
90
+ date: 2025-06-29
91
+ changes: Aggiunti i comandi `docs`
92
+ ---
93
+
94
+ # Documentazione della Configurazione di Intlayer
95
+
96
+ ## Panoramica
97
+
98
+ I file di configurazione di Intlayer consentono di personalizzare vari aspetti del plugin, come l'internazionalizzazione, il middleware e la gestione dei contenuti. Questo documento fornisce una descrizione dettagliata di ciascuna proprietà nella configurazione.
99
+
100
+ ---
101
+
102
+ ## Tabella dei Contenuti
103
+
104
+ <TOC/>
105
+
106
+ ---
107
+
108
+ ## Supporto dei File di Configurazione
109
+
110
+ Intlayer accetta i formati di file di configurazione JSON, JS, MJS e TS:
111
+
112
+ - `intlayer.config.ts`
113
+ - `intlayer.config.js`
114
+ - `intlayer.config.json`
115
+ - `intlayer.config.json5`
116
+ - `intlayer.config.jsonc`
117
+ - `intlayer.config.cjs`
118
+ - `intlayer.config.mjs`
119
+ - `.intlayerrc`
120
+
121
+ ---
122
+
123
+ ## Esempio di file di configurazione
124
+
125
+ ````typescript fileName="intlayer.config.ts" codeFormat="typescript"
126
+ import { Locales, type IntlayerConfig } from "intlayer";
127
+ import { nextjsRewrite } from "intlayer/routing";
128
+ import { z } from "zod";
129
+
130
+ /**
131
+ * Esempio di file di configurazione Intlayer che mostra tutte le opzioni disponibili.
132
+ */
133
+ const config: IntlayerConfig = {
134
+ /**
135
+ * Configurazione per le impostazioni di internazionalizzazione.
136
+ */
137
+ internationalization: {
138
+ /**
139
+ * Elenco dei locali supportati nell'applicazione.
140
+ * Predefinito: [Locales.ENGLISH]
141
+ */
142
+ locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH],
143
+
144
+ /**
145
+ * Elenco di locali richiesti che devono essere definiti in ogni dizionario.
146
+ * Se vuoto, tutti i locali sono richiesti in modalità `strict`.
147
+ * Predefinito: []
148
+ */
149
+ requiredLocales: [Locales.ENGLISH],
150
+
151
+ /**
152
+ * Livello di severità per il contenuto internazionalizzato.
153
+ * - "strict": Errore se manca un locale dichiarato o se non è dichiarato.
154
+ * - "inclusive": Avviso se manca un locale dichiarato.
155
+ * - "loose": Accetta qualsiasi locale esistente.
156
+ * Predefinito: "inclusive"
157
+ */
158
+ strictMode: "inclusive",
159
+
160
+ /**
161
+ * Locale predefinito utilizzato come fallback se il locale richiesto non viene trovato.
162
+ * Predefinito: Locales.ENGLISH
163
+ */
164
+ defaultLocale: Locales.ENGLISH,
165
+ },
166
+
167
+ /**
168
+ * Impostazioni che controllano le operazioni del dizionario e il comportamento di fallback.
169
+ */
170
+ dictionary: {
171
+ /**
172
+ * Controlla come vengono importati i dizionari.
173
+ * - "static": Importato staticamente al momento della build.
174
+ * - "dynamic": Importato dinamicamente utilizzando Suspense.
175
+ * - "fetch": Recuperato dinamicamente tramite l'API live sync.
176
+ * Predefinito: "static"
177
+ */
178
+ importMode: "static",
179
+
180
+ /**
181
+ * Strategia per l'auto-completamento delle traduzioni mancanti utilizzando l'IA.
182
+ * Può essere un booleano o un modello di percorso per memorizzare il contenuto riempito.
183
+ * Predefinito: true
184
+ */
185
+ fill: true,
186
+
187
+ /**
188
+ * Posizione fisica dei file del dizionario.
189
+ * - "local": Memorizzato nel file system locale.
190
+ * - "remote": Memorizzato nel CMS Intlayer.
191
+ * - "hybrid": Memorizzato nel file system locale e nel CMS Intlayer.
192
+ * - "plugin" (o qualsiasi stringa personalizzata): Fornito da un plugin o da una fonte personalizzata.
193
+ * Predefinito: "local"
194
+ */
195
+ location: "local",
196
+
197
+ /**
198
+ * Indica se trasformare automaticamente i contenuti (es. da Markdown a HTML).
199
+ * Predefinito: false
200
+ */
201
+ contentAutoTransformation: false,
202
+ },
203
+
204
+ /**
205
+ * Configurazione di routing e middleware.
206
+ */
207
+ routing: {
208
+ /**
209
+ * Strategia di routing dei locali.
210
+ * - "prefix-no-default": Prefisso per tutti tranne il locale predefinito (es. /dashboard, /fr/dashboard).
211
+ * - "prefix-all": Prefisso per tutti i locali (es. /en/dashboard, /fr/dashboard).
212
+ * - "no-prefix": Nessun locale nell'URL.
213
+ * - "search-params": Usa ?locale=...
214
+ * Predefinito: "prefix-no-default"
215
+ */
216
+ mode: "prefix-no-default",
217
+
218
+ /**
219
+ * Dove memorizzare il locale selezionato dall'utente.
220
+ * Opzioni: 'cookie', 'localStorage', 'sessionStorage', 'header', o un array di questi.
221
+ * Predefinito: ['cookie', 'header']
222
+ */
223
+ storage: ["cookie", "header"],
224
+
225
+ /**
226
+ * Percorso base per gli URL dell'applicazione.
227
+ * Predefinito: ""
228
+ */
229
+ basePath: "",
230
+
231
+ /**
232
+ * Regole di riscrittura URL personalizzate per percorsi specifici del locale.
233
+ */
234
+ rewrite: nextjsRewrite({
235
+ "/[locale]/about": {
236
+ en: "/[locale]/about",
237
+ fr: "/[locale]/a-propos",
238
+ },
239
+ }),
240
+ },
241
+
242
+ /**
243
+ * Impostazioni per trovare e processare i file di contenuto.
244
+ */
245
+ content: {
246
+ /**
247
+ * Estensioni file da scansionare per i dizionari.
248
+ * Predefinito: ['.content.ts', '.content.js', '.content.json', ecc.]
249
+ */
250
+ fileExtensions: [".content.ts", ".content.js", ".content.json"],
251
+
252
+ /**
253
+ * Directory dove si trovano i file .content.
254
+ * Predefinito: ["."]
255
+ */
256
+ contentDir: ["src"],
257
+
258
+ /**
259
+ * Directory dove si trova il codice sorgente.
260
+ * Usato per l'ottimizzazione della build e la trasformazione del codice.
261
+ * Predefinito: ["."]
262
+ */
263
+ codeDir: ["src"],
264
+
265
+ /**
266
+ * Modelli da escludere dalla scansione.
267
+ * Predefinito: ['node_modules', '.intlayer', ecc.]
268
+ */
269
+ excludedPath: ["node_modules"],
270
+
271
+ /**
272
+ * Indica se monitorare i cambiamenti e rigenerare i dizionari in fase di sviluppo.
273
+ * Predefinito: true in fase di sviluppo
274
+ */
275
+ watch: true,
276
+
277
+ /**
278
+ * Comando per formattare i file .content appena creati / aggiornati.
279
+ */
280
+ formatCommand: 'npx prettier --write "{{file}}"',
281
+ },
282
+
283
+ /**
284
+ * Configurazione del Visual Editor.
285
+ */
286
+ editor: {
287
+ /**
288
+ * Indica se il visual editor è abilitato.
289
+ * Predefinito: false
290
+ */
291
+ enabled: true,
292
+
293
+ /**
294
+ * URL della tua applicazione per la validazione dell'origine.
295
+ * Predefinito: ""
296
+ */
297
+ applicationURL: "http://localhost:3000",
298
+
299
+ /**
300
+ * Porta per il server dell'editor locale.
301
+ * Predefinito: 8000
302
+ */
303
+ port: 8000,
304
+
305
+ /**
306
+ * URL pubblico per l'editor.
307
+ * Predefinito: "http://localhost:8000"
308
+ */
309
+ editorURL: "http://localhost:8000",
310
+
311
+ /**
312
+ * URL del CMS Intlayer.
313
+ * Predefinito: "https://app.intlayer.org"
314
+ */
315
+ cmsURL: "https://app.intlayer.org",
316
+
317
+ /**
318
+ * URL del backend API.
319
+ * Predefinito: "https://back.intlayer.org"
320
+ */
321
+ backendURL: "https://back.intlayer.org",
322
+
323
+ /**
324
+ * Indica se abilitare la sincronizzazione dei contenuti in tempo reale.
325
+ * Predefinito: false
326
+ */
327
+ liveSync: true,
328
+ },
329
+
330
+ /**
331
+ * Impostazioni di traduzione e generazione tramite IA.
332
+ */
333
+ ai: {
334
+ /**
335
+ * Fornitore IA da utilizzare.
336
+ * Opzioni: 'openai', 'anthropic', 'mistral', 'deepseek', 'gemini', 'ollama', 'openrouter', 'alibaba', 'fireworks', 'groq', 'huggingface', 'bedrock', 'googlevertex', 'togetherai'
337
+ * Predefinito: 'openai'
338
+ */
339
+ provider: "openai",
340
+
341
+ /**
342
+ * Modello da utilizzare dal fornitore selezionato.
343
+ */
344
+ model: "gpt-4o",
345
+
346
+ /**
347
+ * Chiave API del fornitore.
348
+ */
349
+ apiKey: process.env.OPENAI_API_KEY,
350
+
351
+ /**
352
+ * Contesto globale per guidare l'IA nella generazione delle traduzioni.
353
+ */
354
+ applicationContext: "Questa è una applicazione di prenotazione viaggi.",
355
+
356
+ /**
357
+ * URL base per l'API IA.
358
+ */
359
+ baseURL: "http://localhost:3000",
360
+
361
+ /**
362
+ * Serializzazione dei dati
363
+ *
364
+ * Opzioni:
365
+ * - "json": Standard, affidabile; consuma più token.
366
+ * - "toon": Meno token, meno consistente di JSON.
367
+ *
368
+ * Predefinito: "json"
369
+ */
370
+ dataSerialization: "json",
371
+ },
372
+
373
+ /**
374
+ * Impostazioni di build e ottimizzazione.
375
+ */
376
+ build: {
377
+ /**
378
+ * Modalità di esecuzione della build.
379
+ * - "auto": Build automatica durante la build dell'app.
380
+ * - "manual": Richiede un comando di build esplicito.
381
+ * Predefinito: "auto"
382
+ */
383
+ mode: "auto",
384
+
385
+ /**
386
+ * Indica se ottimizzare il bundle finale rimuovendo i dizionari inutilizzati.
387
+ * Predefinito: true in produzione
388
+ */
389
+ optimize: true,
390
+
391
+ /**
392
+ * Formato di output per i file di dizionario generati.
393
+ * Predefinito: ['cjs', 'esm']
394
+ */
395
+ outputFormat: ["cjs", "esm"],
396
+
397
+ /**
398
+ * Indica se la build deve verificare i tipi TypeScript.
399
+ * Predefinito: false
400
+ */
401
+ checkTypes: false,
402
+ },
403
+
404
+ /**
405
+ * Configurazione del Logger.
406
+ */
407
+ log: {
408
+ /**
409
+ * Livello di logging.
410
+ * - "default": Logging standard.
411
+ * - "verbose": Logging di debug dettagliato.
412
+ * - "disabled": Nessun logging.
413
+ * Predefinito: "default"
414
+ */
415
+ mode: "default",
416
+
417
+ /**
418
+ * Prefisso per tutti i messaggi di log.
419
+ * Predefinito: "[intlayer]"
420
+ */
421
+ prefix: "[intlayer]",
422
+ },
423
+
424
+ /**
425
+ * Configurazione di sistema (Casi d'uso avanzati)
426
+ */
427
+ system: {
428
+ /**
429
+ * Directory per la memorizzazione dei dizionari localizzati.
430
+ */
431
+ dictionariesDir: ".intlayer/dictionary",
432
+
433
+ /**
434
+ * Directory per l'aumento dei moduli (module augmentation).
435
+ */
436
+ moduleAugmentationDir: ".intlayer/types",
437
+
438
+ /**
439
+ * Directory per la memorizzazione di dizionari non fusi.
440
+ */
441
+ unmergedDictionariesDir: ".intlayer/unmerged_dictionary",
442
+
443
+ /**
444
+ * Directory per la memorizzazione dei tipi di dizionario.
445
+ */
446
+ typesDir: ".intlayer/types",
447
+
448
+ /**
449
+ * Directory dove sono memorizzati i file principali dell'applicazione.
450
+ */
451
+ mainDir: ".intlayer/main",
452
+
453
+ /**
454
+ * Directory dove sono memorizzati i file di configurazione.
455
+ */
456
+ configDir: ".intlayer/config",
457
+
458
+ /**
459
+ * Directory dove sono memorizzati i file di cache.
460
+ */
461
+ cacheDir: ".intlayer/cache",
462
+ },
463
+
464
+ /**
465
+ * Configurazione del Compilatore (Casi d'uso avanzati)
466
+ */
467
+ compiler: {
468
+ /**
469
+ * Indica se il compilatore deve essere abilitato.
470
+ *
471
+ * - false: Disabilita il compilatore.
472
+ * - true: Abilita il compilatore.
473
+ * - "build-only": Salta il compilatore durante lo sviluppo per velocizzare i tempi di avvio.
474
+ *
475
+ * Predefinito: false
476
+ */
477
+ enabled: true,
478
+
479
+ /**
480
+ * Definisce il percorso dei file di output. Sostituisce `outputDir`.
481
+ *
482
+ * - I percorsi `./` sono risolti relativamente alla directory del componente.
483
+ * - I percorsi `/` sono risolti relativamente alla radice del progetto (`baseDir`).
484
+ *
485
+ * - L'inclusione della variabile `{{locale}}` nel percorso attiverà la generazione di dizionari separati per locale.
486
+ *
487
+ * Esempio:
488
+ * ```ts
489
+ * {
490
+ * // Crea file .content.ts multilingua vicino al componente
491
+ * output: ({ fileName, extension }) => `./${fileName}${extension}`,
492
+ *
493
+ * // output: './{{fileName}}{{extension}}', // Equivalente usando stringa di template
494
+ * }
495
+ * ```
496
+ *
497
+ * ```ts
498
+ * {
499
+ * // Crea JSON centralizzati per locale alla radice del progetto
500
+ * output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,
501
+ *
502
+ * // output: '/locales/{{locale}}/{{key}}.content.json', // Equivalente usando stringa di template
503
+ * }
504
+ * ```
505
+ *
506
+ * Elenco variabili:
507
+ * - `fileName`: Il nome del file.
508
+ * - `key`: La chiave del contenuto.
509
+ * - `locale`: Il locale del contenuto.
510
+ * - `extension`: L'estensione del file.
511
+ * - `componentFileName`: Il nome del file del componente.
512
+ * - `componentExtension`: L'estensione del file del componente.
513
+ * - `format`: Il formato del dizionario.
514
+ * - `componentFormat`: Il formato del dizionario del componente.
515
+ * - `componentDirPath`: Il percorso della directory del componente.
516
+ */
517
+ output: ({ locale, key }) => `compiler/${locale}/${key}.json`,
518
+
519
+ /**
520
+ * Indica se i componenti devono essere salvati dopo essere stati trasformati.
521
+ * In questo modo, il compilatore può essere eseguito solo una volta per trasformare l'app e poi può essere rimosso.
522
+ */
523
+ saveComponents: false,
524
+
525
+ /**
526
+ * Inserisce solo il contenuto nel file generato. Utile per output JSON i18next o ICU MessageFormat per locale.
527
+ */
528
+ noMetadata: false,
529
+
530
+ /**
531
+ * Prefisso chiave dizionario
532
+ */
533
+ dictionaryKeyPrefix: "", // Aggiungi un prefisso opzionale per le chiavi del dizionario estratte
534
+ },
535
+
536
+ /**
537
+ * Schemi personalizzati per validare il contenuto dei dizionari.
538
+ */
539
+ schemas: {
540
+ "my-schema": z.object({
541
+ title: z.string(),
542
+ }),
543
+ },
544
+
545
+ /**
546
+ * Configurazione dei plugin.
547
+ */
548
+ plugins: [],
549
+ };
550
+
551
+ export default config;
552
+ ````
553
+
554
+ ---
555
+
556
+ ## Riferimento della Configurazione
557
+
558
+ Le sezioni seguenti descrivono le varie impostazioni di configurazione disponibili per Intlayer.
559
+
560
+ ---
561
+
562
+ ### Configurazione dell'Internazionalizzazione
563
+
564
+ Definisce le impostazioni relative all'internazionalizzazione, compresi i locali disponibili e il locale predefinito per l'applicazione.
565
+
566
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
567
+ | ---------------- | --------------------------------------------------------------------------------------------------- | ---------- | ------------------- | -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
568
+ | `locales` | L'elenco dei locali supportati nell'applicazione. | `string[]` | `[Locales.ENGLISH]` | `['en', 'fr', 'es']` | |
569
+ | `requiredLocales` | L'elenco dei locali richiesti nell'applicazione. | `string[]` | `[]` | `[]` | • Se vuoto, tutti i locali sono richiesti in modalità `strict`.<br/>• Assicurati che i locali richiesti siano definiti anche nel campo `locales`. |
570
+ | `strictMode` | Garantisce implementazioni robuste dei contenuti internazionalizzati utilizzando TypeScript. | `string` | `'inclusive'` | | • Se `"strict"`: la funzione `t` richiede che ogni locale dichiarato sia definito — genera un errore se uno manca o non è dichiarato.<br/>• Se `"inclusive"`: avverte sui locali mancanti ma accetta quelli non dichiarati esistenti.<br/>• Se `"loose"`: accetta qualsiasi locale esistente. |
571
+ | `defaultLocale` | Il locale predefinito utilizzato come fallback se il locale richiesto non viene trovato. | `string` | `Locales.ENGLISH` | `'en'` | Usato per determinare il locale quando nessuno è specificato nell'URL, nel cookie o nell'header. |
572
+
573
+ ---
574
+
575
+ ### Configurazione dell'Editor
576
+
577
+ Definisce le impostazioni del visual editor integrato, inclusi la porta del server e lo stato attivo.
578
+
579
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
580
+ | ---------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
581
+ | `applicationURL` | L'URL dell'applicazione. | `string` | `undefined` | `'http://localhost:3000'` <br/> `'https://example.com'` <br/> `process.env.INTLAYER_EDITOR_URL` | • Usato per restringere l'origine dell'editor per motivi di sicurezza.<br/>• Se impostato su `'*'`, l'editor è accessibile da qualsiasi origine. |
582
+ | `port` | La porta utilizzata dal server del visual editor. | `number` | `8000` | | |
583
+ | `editorURL` | L'URL del server dell'editor. | `string` | `'http://localhost:8000'` | `'http://localhost:3000'` <br/> `'https://example.com'` <br/> `process.env.INTLAYER_EDITOR_URL` | • Usato per restringere le origini che possono interagire con l'applicazione.<br/>• Se impostato su `'*'`, accessibile da qualsiasi origine.<br/>• Deve essere impostato se la porta viene cambiata o se l'editor è ospitato su un dominio diverso. |
584
+ | `cmsURL` | L'URL del CMS Intlayer. | `string` | `'https://app.intlayer.org'` | `'https://app.intlayer.org'` | |
585
+ | `backendURL` | L'URL del server backend. | `string` | `https://back.intlayer.org` | `http://localhost:4000` | |
586
+ | `enabled` | Indica se l'applicazione interagisce con il visual editor. | `boolean` | `false` | `process.env.NODE_ENV !== 'production'` | • Se `false`, l'editor non può interagire con l'applicazione.<br/>• Disabilitare per ambienti specifici migliora la sicurezza. |
587
+ | `clientId` | Consente ai pacchetti intlayer di autenticarsi con il backend tramite oAuth2. Per ottenere un token di accesso, vai a [intlayer.org/project](https://app.intlayer.org/project). | `string` &#124; <br/> `undefined` | `undefined` | | Da mantenere segreto; memorizzare nelle variabili d'ambiente. |
588
+ | `clientSecret` | Consente ai pacchetti intlayer di autenticarsi con il backend tramite oAuth2. Per ottenere un token di accesso, vai a [intlayer.org/project](https://app.intlayer.org/project). | `string` &#124; <br/> `undefined` | `undefined` | | Da mantenere segreto; memorizzare nelle variabili d'ambiente. |
589
+ | `dictionaryPriorityStrategy` | Strategia per dare priorità ai dizionari quando sono presenti sia locali che distanti. | `string` | `'local_first'` | `'distant_first'` | • `'distant_first'`: dà priorità ai distanti rispetto ai locali.<br/>• `'local_first'`: dà priorità ai locali rispetto ai distanti. |
590
+ | `liveSync` | Indica se il server dell'app deve ricaricare i contenuti a caldo quando viene rilevata una modifica sul CMS <br/> Visual Editor <br/> Backend. | `boolean` | `true` | `true` | • Quando un dizionario viene aggiunto/aggiornato, l'app aggiorna il contenuto della pagina.<br/>• Live sync esternalizza il contenuto su un altro server, il che può influire leggermente sulle prestazioni.<br/>• Si consiglia di ospitare entrambi sulla stessa macchina. |
591
+ | `liveSyncPort` | La porta del server live sync. | `number` | `4000` | `4000` | |
592
+ | `liveSyncURL` | L'URL del server live sync. | `string` | `'http://localhost:{liveSyncPort}'` | `'https://example.com'` | Punta a localhost per impostazione predefinita; può essere modificato per un server live sync remoto. |
593
+
594
+ ---
595
+
596
+ ### Configurazione di Routing
597
+
598
+ Impostazioni che controllano il comportamento del routing, inclusa la struttura dell'URL, la memorizzazione del locale e la gestione del middleware.
599
+
600
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
601
+ | ---------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
602
+ | `mode` | Modalità di routing URL per la gestione del locale. | `'prefix-no-default'` &#124; <br/> `'prefix-all'` &#124; <br/> `'no-prefix'` &#124; <br/> `'search-params'` | `'prefix-no-default'` | `'prefix-no-default'`: `/dashboard` (en) o `/fr/dashboard` (fr). `'prefix-all'`: `/en/dashboard`. `'no-prefix'`: locale gestito con altri mezzi. `'search-params'`: `/dashboard?locale=fr` | Non influisce sulla gestione dei cookie o della memoria del locale. |
603
+ | `storage` | Configurazione per la memorizzazione del locale nel client. | `false` &#124; <br/> `'cookie'` &#124; <br/> `'localStorage'` &#124; <br/> `'sessionStorage'` &#124; <br/> `'header'` &#124; <br/> `CookiesAttributes` &#124; <br/> `StorageAttributes` &#124; <br/> `Array` | `['cookie', 'header']` | `'localStorage'` <br/> `[{ type: 'cookie', name: 'custom-locale', secure: true }]` | Vedere la tabella Opzioni di Memorizzazione di seguito. |
604
+ | `basePath` | Percorso base per gli URL dell'applicazione. | `string` | `''` | `'/my-app'` | Se l'app è su `https://example.com/my-app`, basePath è `'/my-app'` e gli URL diventano `https://example.com/my-app/en`. |
605
+ | `rewrite` | Regole di riscrittura URL personalizzate che annullano la modalità di routing predefinita per percorsi specifici. Supporta parametri dinamici `[param]`. | `Record<string, StrictModeLocaleMap<string>>` | `undefined` | Vedere l'esempio di seguito | • Le regole di riscrittura hanno la precedenza su `mode`.<br/>• Funziona con Next.js e Vite.<br/>• `getLocalizedUrl()` applica automaticamente le regole corrispondenti.<br/>• Vedere [Riscritture URL Personalizzate](https://github.com/aymericzip/intlayer/blob/main/docs/docs/en/custom_url_rewrites.md). |
606
+
607
+ **Esempio di `rewrite`**:
608
+
609
+ ```typescript
610
+ routing: {
611
+ mode: "prefix-no-default", // Strategia di fallback
612
+ rewrite: nextjsRewrite({
613
+ "/about": {
614
+ en: "/about",
615
+ fr: "/a-propos",
616
+ },
617
+ "/product/[slug]": {
618
+ en: "/product/[slug]",
619
+ fr: "/produit/[slug]",
620
+ },
621
+ "/blog/[category]/[id]": {
622
+ en: "/blog/[category]/[id]",
623
+ fr: "/journal/[category]/[id]",
624
+ },
625
+ }),
626
+ }
627
+ ```
628
+
629
+ #### Opzioni di Memorizzazione
630
+
631
+ | Valore | Nota | Descrizione |
632
+ | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
633
+ | `'cookie'` | • Per la conformità GDPR, assicurarsi di ottenere il corretto consenso dell'utente.<br/>• Personalizzabile tramite `CookiesAttributes` (`{ type: 'cookie', name: 'custom-locale', secure: true, httpOnly: false }`). | Memorizza il locale nei cookie — accessibile sia lato client che lato server. |
634
+ | `'localStorage'` | • Nessuna scadenza a meno che non venga cancellato esplicitamente.<br/>• Il proxy Intlayer non può accedervi.<br/>• Personalizzabile tramite `StorageAttributes` (`{ type: 'localStorage', name: 'custom-locale' }`). | Memorizza il locale nel browser senza scadenza — solo lato client. |
635
+ | `'sessionStorage'` | • Cancellato quando la scheda/finestra viene chiusa.<br/>• Il proxy Intlayer non può accedervi.<br/>• Personalizzabile tramite `StorageAttributes` (`{ type: 'sessionStorage', name: 'custom-locale' }`). | Memorizza il locale per la durata della sessione della pagina — solo lato client. |
636
+ | `'header'` | • Utile per le chiamate API.<br/>• Il lato client non può accedervi.<br/>• Personalizzabile tramite `StorageAttributes` (`{ type: 'header', name: 'custom-locale' }`). | Memorizza o trasmette il locale tramite header HTTP — solo lato server. |
637
+
638
+ #### Attributi dei Cookie
639
+
640
+ Quando si utilizza la memorizzazione tramite cookie, è possibile configurare attributi aggiuntivi:
641
+
642
+ | Campo | Descrizione | Tipo |
643
+ | ---------- | ------------------------------------------- | ----------------------------------------------------- |
644
+ | `name` | Nome del cookie. Predefinito: `'INTLAYER_LOCALE'` | `string` |
645
+ | `domain` | Dominio del cookie. Predefinito: `undefined` | `string` |
646
+ | `path` | Percorso del cookie. Predefinito: `undefined` | `string` |
647
+ | `secure` | Richiede HTTPS. Predefinito: `undefined` | `boolean` |
648
+ | `httpOnly` | Flag HTTP-only. Predefinito: `undefined` | `boolean` |
649
+ | `sameSite` | Politica SameSite. | `'strict'` &#124; <br/> `'lax'` &#124; <br/> `'none'` |
650
+ | `expires` | Data di scadenza o giorni. Predefinito: `undefined` | `Date` &#124; <br/> `number` |
651
+
652
+ #### Attributi di Memorizzazione Locale
653
+
654
+ Quando si utilizza localStorage o sessionStorage:
655
+
656
+ | Campo | Descrizione | Tipo |
657
+ | ------ | ---------------------------------------------- | ------------------------------------------------ |
658
+ | `type` | Tipo di memorizzazione. | `'localStorage'` &#124; <br/> `'sessionStorage'` |
659
+ | `name` | Nome chiave di memoria. Predefinito: `'INTLAYER_LOCALE'` | `string` |
660
+
661
+ #### Esempi di configurazione
662
+
663
+ Ecco alcuni esempi comuni di configurazione per la nuova struttura di routing v7:
664
+
665
+ **Configurazione Base (Predefinita)**:
666
+
667
+ ```typescript
668
+ import { Locales, type IntlayerConfig } from "intlayer";
669
+ // intlayer.config.ts
670
+ const config: IntlayerConfig = {
671
+ internationalization: {
672
+ locales: ["en", "fr", "es"],
673
+ defaultLocale: "en",
674
+ },
675
+ routing: {
676
+ mode: "prefix-no-default",
677
+ storage: "localStorage",
678
+ basePath: "",
679
+ },
680
+ };
681
+
682
+ export default config;
683
+ ```
684
+
685
+ **Configurazione Conforme al GDPR**:
686
+
687
+ ```typescript
688
+ import { Locales, type IntlayerConfig } from "intlayer";
689
+ // intlayer.config.ts
690
+ const config: IntlayerConfig = {
691
+ internationalization: {
692
+ locales: ["en", "fr", "es"],
693
+ defaultLocale: "en",
694
+ },
695
+ routing: {
696
+ mode: "prefix-no-default",
697
+ storage: [
698
+ {
699
+ type: "localStorage",
700
+ name: "user-locale",
701
+ },
702
+ {
703
+ type: "cookie",
704
+ name: "user-locale",
705
+ secure: true,
706
+ sameSite: "strict",
707
+ httpOnly: false,
708
+ },
709
+ ],
710
+ basePath: "",
711
+ },
712
+ };
713
+
714
+ export default config;
715
+ ```
716
+
717
+ **Modalità Parametri di Ricerca**:
718
+
719
+ ```typescript
720
+ import { Locales, type IntlayerConfig } from "intlayer";
721
+ // intlayer.config.ts
722
+ const config: IntlayerConfig = {
723
+ internationalization: {
724
+ locales: ["en", "fr", "es"],
725
+ defaultLocale: "en",
726
+ },
727
+ routing: {
728
+ mode: "search-params",
729
+ storage: "localStorage",
730
+ basePath: "",
731
+ },
732
+ };
733
+
734
+ export default config;
735
+ ```
736
+
737
+ **Modalità Senza Prefisso con Memorizzazione Personalizzata**:
738
+
739
+ ```typescript
740
+ import { Locales, type IntlayerConfig } from "intlayer";
741
+ // intlayer.config.ts
742
+ const config: IntlayerConfig = {
743
+ internationalization: {
744
+ locales: ["en", "fr", "es"],
745
+ defaultLocale: "en",
746
+ },
747
+ routing: {
748
+ mode: "no-prefix",
749
+ storage: {
750
+ type: "sessionStorage",
751
+ name: "app-locale",
752
+ },
753
+ basePath: "/my-app",
754
+ },
755
+ };
756
+
757
+ export default config;
758
+ ```
759
+
760
+ **Riscrittura URL Personalizzata con Percorsi Dinamici**:
761
+
762
+ ```typescript
763
+ // intlayer.config.ts
764
+ import { nextjsRewrite } from "intlayer/routing";
765
+
766
+ const config: IntlayerConfig = {
767
+ internationalization: {
768
+ locales: ["en", "fr"],
769
+ defaultLocale: "en",
770
+ },
771
+ routing: {
772
+ mode: "prefix-no-default", // Fallback per percorsi non riscritti
773
+ storage: "cookie",
774
+ rewrite: nextjsRewrite({
775
+ "/about": {
776
+ en: "/about",
777
+ fr: "/a-propos",
778
+ },
779
+ "/product/[slug]": {
780
+ en: "/product/[slug]",
781
+ fr: "/produit/[slug]",
782
+ },
783
+ "/blog/[category]/[id]": {
784
+ en: "/blog/[category]/[id]",
785
+ fr: "/journal/[category]/[id]",
786
+ },
787
+ }),
788
+ },
789
+ };
790
+
791
+ export default config;
792
+ ```
793
+
794
+ ---
795
+
796
+ ### Configurazione dei Contenuti
797
+
798
+ Impostazioni relative alla gestione dei contenuti all'interno dell'applicazione, inclusi nomi di directory, estensioni file e configurazioni derivate.
799
+
800
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
801
+ | ---------------- | ------------------------------------------------------------------------------------------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------- |
802
+ | `watch` | Indica se Intlayer deve monitorare le modifiche nei file di dichiarazione dei contenuti per rigenerare i dizionari. | `boolean` | `true` | | |
803
+ | `fileExtensions` | Estensioni file da scansionare durante la compilazione dei dizionari. | `string[]` | `['.content.ts', '.content.js', '.content.cjs', '.content.mjs', '.content.json', '.content.json5', '.content.jsonc', '.content.tsx', '.content.jsx']` | `['.data.ts', '.data.js', '.data.json']` | La personalizzazione può aiutare a evitare conflitti. |
804
+ | `contentDir` | Il percorso della directory dove sono memorizzati i file di definizione dei contenuti (`.content.*`). | `string[]` | `['.']` | `['src', '../../ui-library', require.resolve("@my-package/content")]` | Usata per monitorare i file di contenuto e rigenerare i dizionari. |
805
+ | `codeDir` | Il percorso della directory dove è memorizzato il codice, relativo alla directory base. | `string[]` | `['.']` | `['src', '../../ui-library']` | • Usata per monitorare i file di codice per la trasformazione (pruning, ottimizzazione).<br/>• Separare da `contentDir` può migliorare le prestazioni. |
806
+ | `excludedPath` | Directory escluse dalla scansione dei contenuti. | `string[]` | `['**/node_modules/**', '**/dist/**', '**/build/**', '**/.intlayer/**', '**/.next/**', '**/.nuxt/**', '**/.expo/**', '**/.vercel/**', '**/.turbo/**', '**/.tanstack/**']` | | Non ancora utilizzata; prevista per implementazioni future. |
807
+ | `formatCommand` | Comando per formattare i file di contenuto quando Intlayer li scrive localmente. | `string` | `undefined` | `'npx prettier --write "{{file}}" --log-level silent'` (Prettier), `'npx biome format "{{file}}" --write --log-level none'` (Biome), `'npx eslint --fix "{{file}}" --quiet'` (ESLint) | • `{{file}}` viene sostituito dal percorso del file.<br/>• Se non definito, Intlayer lo rileva automaticamente (prova prettier, biome, eslint). |
808
+
809
+ ---
810
+
811
+ ### Configurazione del Dizionario
812
+
813
+ Parametri che controllano le operazioni del dizionario, inclusi il comportamento di auto-fill e la generazione di contenuti.
814
+
815
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
816
+ | --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
817
+ | `fill` | Controlla come vengono generati i file di output del riempimento automatico (traduzione IA). | `boolean` &#124; <br/> `FilePathPattern` &#124; <br/> `Partial<Record<Locale, boolean &#124; FilePathPattern>>` | `true` | `{ en: '/locales/en/{{key}}.json', fr: ({ key }) => '/locales/fr/${key}.json', es: false }` | • `true`: percorso predefinito (stesso file dell'originale).<br/>• `false`: disabilita.<br/>• Modello stringa/funzione genera file per locale.<br/>• Oggetto per locale: ogni locale corrisponde al proprio modello; `false` ignora quel locale.<br/>• Includere `{{locale}}` attiva la generazione per locale.<br/>• `fill` a livello di dizionario ha sempre la priorità rispetto a questa impostazione globale. |
818
+ | `description` | Aiuta a comprendere lo scopo del dizionario nell'editor e nel CMS. Usato anche come contesto per la generazione delle traduzioni tramite IA. | `string` | `undefined` | `'Sezione profilo utente'` | |
819
+ | `locale` | Trasforma il dizionario in un formato per locale. Ogni campo dichiarato diventa un nodo di traduzione. Se assente, il dizionario è trattato come multilingua. | `LocalesValues` | `undefined` | `'en'` | Usare quando il dizionario è specifico per un singolo locale invece di contenere traduzioni per diversi. |
820
+ | `contentAutoTransformation` | Trasforma automaticamente le stringhe di contenuto in nodi tipizzati (markdown, HTML o inserimento). | `boolean` &#124; <br/> `{ markdown?: boolean; html?: boolean; insertion?: boolean }` | `false` | `true` | • Markdown : `### Title` → `md('### Title')`.<br/>• HTML : `<div>Title</div>` → `html('<div>Title</div>')`.<br/>• Inserimento : `Ciao {{name}}` → `insert('Ciao {{name}}')`. |
821
+ | `location` | Indica dove sono memorizzati i file del dizionario e come vengono sincronizzati con il CMS. | `'local'` &#124; <br/> `'remote'` &#124; <br/> `'hybrid'` &#124; <br/> `'plugin'` &#124; <br/> `string` | `'local'` | `'hybrid'` | • `'local'` : gestito solo localmente.<br/>• `'remote'` : gestito solo remotamente (CMS).<br/>• `'hybrid'` : gestito sia localmente che remotamente.<br/>• `'plugin'` o stringa personalizzata: gestito da un plugin o da una fonte personalizzata. |
822
+ | `importMode` | Controlla come vengono importati i dizionari. | `'static'` &#124; <br/> `'dynamic'` &#124; <br/> `'fetch'` | `'static'` | `'dynamic'` | • `'static'`: importato staticamente.<br/>• `'dynamic'`: importato dinamicamente tramite Suspense.<br/>• `'fetch'`: recuperato tramite API live sync; fallback su `'dynamic'` se fallisce.<br/>• Richiede i plugin `@intlayer/babel` e `@intlayer/swc`.<br/>• Le chiavi devono essere dichiarate staticamente.<br/>• Ignorato se `optimize` è disabilitato.<br/>• Non influisce su `getIntlayer`, `getDictionary`, ecc. |
823
+ | `priority` | Priorità del dizionario. I valori più alti vincono su quelli più bassi nella risoluzione dei conflitti tra dizionari. | `number` | `undefined` | `1` | |
824
+ | `live` | Deprecato — usare invece `importMode: 'fetch'`. Indicava se il contenuto del dizionario doveva essere recuperato dinamicamente tramite l'API live sync. | `boolean` | `undefined` | | Rinominato in `importMode: 'fetch'` nella v8.0.0. |
825
+ | `schema` | Generato automaticamente da Intlayer per la validazione dello schema JSON. | `'https://intlayer.org/schema.json'` | auto-generato | | Non modificare manualmente. |
826
+ | `title` | Aiuta a identificare il dizionario nell'editor e nel CMS. | `string` | `undefined` | `'Profilo Utente'` | |
827
+ | `tags` | Categorizza i dizionari e fornisce contesto o istruzioni per l'editor e l'IA. | `string[]` | `undefined` | `['utente', 'profilo']` | |
828
+ | `version` | Versione del dizionario remoto; aiuta a tracciare la versione attualmente in uso. | `string` | `undefined` | `'1.0.0'` | • Gestibile nel CMS.<br/>• Non modificare localmente. |
829
+
830
+ **Esempio di `fill`**:
831
+
832
+ ```ts
833
+ dictionary: {
834
+ fill: {
835
+ en: "/locales/en/{{key}}.content.json",
836
+ fr: ({ key }) => `/locales/fr/${key}.content.json`,
837
+ es: false,
838
+ },
839
+ };
840
+ ```
841
+
842
+ ---
843
+
844
+ ### Configurazione del Logger
845
+
846
+ Parametri per personalizzare l'output dei log di Intlayer.
847
+
848
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
849
+ | -------- | ----------------------------------------- | -------------------------------------------------------------- | ---------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------- |
850
+ | `mode` | Indica la modalità del logger. | `'default'` &#124; <br/> `'verbose'` &#124; <br/> `'disabled'` | `'default'` | `'verbose'` | • `'verbose'`: logga più informazioni per il debug.<br/>• `'disabled'`: disabilita completamente il logger. |
851
+ | `prefix` | Il prefisso per i messaggi di log. | `string` | `'[intlayer] '` | `'[mio prefisso] '` | |
852
+
853
+ ---
854
+
855
+ ### Configurazione AI
856
+
857
+ Impostazioni che controllano le funzioni AI di Intlayer, inclusi fornitore, modello e chiave API.
858
+
859
+ Questa configurazione è opzionale se sei registrato al [Dashboard Intlayer](https://app.intlayer.org/project) con una chiave di accesso. Intlayer gestirà automaticamente la soluzione AI più efficiente ed economica per le tue esigenze. L'uso delle opzioni predefinite garantisce una migliore manutenibilità a lungo termine, poiché Intlayer viene aggiornato continuamente per utilizzare i modelli più rilevanti.
860
+
861
+ Se preferisci usare la tua chiave API o un modello specifico, puoi definire la tua configurazione AI personalizzata.
862
+ Questa configurazione AI verrà utilizzata globalmente nel tuo ambiente Intlayer. I comandi CLI utilizzeranno queste impostazioni di default per comandi come `fill`, così come l'SDK, il Visual Editor e il CMS. Puoi sovrascrivere questi valori predefiniti per casi d'uso specifici tramite i parametri del comando.
863
+
864
+ Intlayer supporta molteplici fornitori AI per la massima flessibilità. I fornitori attualmente supportati sono:
865
+
866
+ - **OpenAI** (Default)
867
+ - **Anthropic Claude**
868
+ - **Mistral AI**
869
+ - **DeepSeek**
870
+ - **Google Gemini**
871
+ - **Google AI Studio**
872
+ - **Google Vertex**
873
+ - **Meta Llama**
874
+ - **Ollama**
875
+ - **OpenRouter**
876
+ - **Alibaba Cloud**
877
+ - **Fireworks**
878
+ - **Hugging Face**
879
+ - **Groq**
880
+ - **Amazon Bedrock**
881
+ - **Together.ai**
882
+
883
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
884
+ | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------- | ------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
885
+ | `provider` | Il fornitore da utilizzare per le funzioni AI di Intlayer. | `'openai'` &#124; <br/> `'anthropic'` &#124; <br/> `'mistral'` &#124; <br/> `'deepseek'` &#124; <br/> `'gemini'` &#124; <br/> `'ollama'` &#124; <br/> `'openrouter'` &#124; <br/> `'alibaba'` &#124; <br/> `'fireworks'` &#124; <br/> `'groq'` &#124; <br/> `'huggingface'` &#124; <br/> `'bedrock'` &#124; <br/> `'googleaistudio'` &#124; <br/> `'googlevertex'` &#124; <br/> `'togetherai'` | `undefined` | `'anthropic'` | Diversi fornitori richiedono diverse chiavi API e hanno prezzi differenti. |
886
+ | `model` | Il modello da utilizzare per le funzioni AI. | `string` | Nessuno | `'gpt-4o-2024-11-20'` | Il modello specifico varia a seconda del fornitore. |
887
+ | `temperature` | Controlla la casualità delle risposte AI. | `number` | Nessuno | `0.1` | Temperatura più alta = più creativo e meno prevedibile. |
888
+ | `apiKey` | La tua chiave API per il fornitore selezionato. | `string` | Nessuno | `process.env.OPENAI_API_KEY` | Da mantenere segreto; memorizzare nelle variabili d'ambiente. |
889
+ | `applicationContext` | Contesto aggiuntivo sulla tua applicazione per aiutare l'IA a generare traduzioni più accurate (dominio, audience, tono, terminologia). | `string` | Nessuno | `'Il mio contesto applicativo'` | Può essere usato per aggiungere regole (es.: `"Non devi trasformare gli URL"`). |
890
+ | `baseURL` | L'URL base per l'API AI. | `string` | Nessuno | `'https://api.openai.com/v1'` <br/> `'http://localhost:5000'` | Può puntare a un endpoint API AI locale o personalizzato. |
891
+ | `dataSerialization` | Formato di serializzazione dati per le funzioni AI. | `'json'` &#124; <br/> `'toon'` | `undefined` | `'toon'` | • `'json'`: standard, affidabile; usa più token.<br/>• `'toon'`: meno token, meno consistente.<br/>• Vengono passati parametri aggiuntivi al modello come contesto (sforzo di ragionamento, ecc.). |
892
+
893
+ ---
894
+
895
+ ### Configurazione di Build
896
+
897
+ Parametri che controllano come Intlayer ottimizza e compila l'internazionalizzazione della tua applicazione.
898
+
899
+ Le opzioni di build si applicano ai plugin `@intlayer/babel` e `@intlayer/swc`.
900
+
901
+ > In modalità sviluppo, Intlayer utilizza importazioni statiche per i dizionari per semplificare l'esperienza di sviluppo.
902
+
903
+ > Durante l'ottimizzazione, Intlayer sostituirà le chiamate ai dizionari per ottimizzare il chunking, in modo che il bundle finale importi solo i dizionari effettivamente utilizzati.
904
+
905
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
906
+ | ----------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
907
+ | `mode` | Controlla la modalità di build. | `'auto'` &#124; <br/> `'manual'` | `'auto'` | `'manual'` | • `'auto'`: build attivata automaticamente durante la build dell'app.<br/>• `'manual'`: eseguita solo quando viene lanciato esplicitamente il comando di build.<br/>• Può essere usato per disabilitare le build dei dizionari (es. per evitare l'esecuzione in ambienti Node.js). |
908
+ | `optimize` | Controlla se la build deve essere ottimizzata. | `boolean` | `undefined` | `process.env.NODE_ENV === 'production'` | • Se non definito, l'ottimizzazione viene attivata alla build del framework (Vite/Next.js).<br/>• `true` forza l'ottimizzazione anche in modalità dev.<br/>• `false` la disabilita.<br/>• Se attivo, sostituisce le chiamate ai dizionari per ottimizzare il chunking.<br/>• Richiede i plugin `@intlayer/babel` e `@intlayer/swc`. |
909
+ | `checkTypes` | Indica se la build deve verificare i tipi TypeScript e loggare eventuali errori. | `boolean` | `false` | | Può rallentare il processo di build. |
910
+ | `outputFormat` | Controlla il formato di output dei dizionari. | `('esm' &#124; 'cjs')[]` | `['esm', 'cjs']` | `['cjs']` | |
911
+ | `traversePattern` | Modelli che definiscono quali file scansionare durante l'ottimizzazione. | `string[]` | `['**/*.{tsx,ts,js,mjs,cjs,jsx,vue,svelte,svte}', '!**/node_modules/**', '!**/dist/**', '!**/.intlayer/**', '!**/*.config.*', '!**/*.test.*', '!**/*.spec.*', '!**/*.stories.*']` | `['src/**/*.{ts,tsx}', '../ui-library/**/*.{ts,tsx}', '!**/node_modules/**']` | • Limita l'ottimizzazione ai file rilevanti per migliorare le prestazioni di build.<br/>• Ignorato se `optimize` è disabilitato.<br/>• Usa pattern glob. |
912
+
913
+ ---
914
+
915
+ ### Configurazione di Sistema
916
+
917
+ Queste impostazioni sono per casi d'uso avanzati e configurazione interna di Intlayer.
918
+
919
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
920
+ | ------------------------- | --------------------------------------------------- | -------- | --------------------------------- | ------- | ---- |
921
+ | `dictionariesDir` | Directory per i dizionari compilati. | `string` | `'.intlayer/dictionary'` | | |
922
+ | `moduleAugmentationDir` | Directory per l'augmentation dei moduli TypeScript. | `string` | `'.intlayer/types'` | | |
923
+ | `unmergedDictionariesDir` | Directory per i dizionari non fusi. | `string` | `'.intlayer/unmerged_dictionary'` | | |
924
+ | `typesDir` | Directory per i tipi generati. | `string` | `'.intlayer/types'` | | |
925
+ | `mainDir` | Directory del file principale di Intlayer. | `string` | `'.intlayer/main'` | | |
926
+ | `configDir` | Directory dei file di configurazione compilati. | `string` | `'.intlayer/config'` | | |
927
+ | `cacheDir` | Directory dei file di cache. | `string` | `'.intlayer/cache'` | | |
928
+
929
+ ---
930
+
931
+ ### Configurazione del Compilatore
932
+
933
+ Impostazioni che controllano il compilatore Intlayer, che estrae i dizionari direttamente dai tuoi componenti.
934
+
935
+ | Campo | Descrizione | Tipo | Predefinito | Esempio | Nota |
936
+ | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
937
+ | `enabled` | Indica se il compilatore deve essere abilitato per l'estrazione dei dizionari. | `boolean` &#124; <br/> `'build-only'` | `true` | `'build-only'` | `'build-only'` salta il compilatore durante lo sviluppo per velocizzare le build; viene eseguito solo ai comandi di build. |
938
+ | `dictionaryKeyPrefix` | Prefisso per le chiavi dei dizionari estratte. | `string` | `''` | `'mio-prefisso-'` | Aggiunto alla chiave generata (basata sul nome file) per evitare conflitti. |
939
+ | `saveComponents` | Indica se i componenti devono essere salvati dopo essere stati trasformati. | `boolean` | `false` | | • Se `true`, sostituisce i file originali con le versioni trasformate.<br/>• Il compilatore può essere rimosso dopo un'esecuzione. |
940
+ | `output` | Definisce il percorso dei file di output. Sostituisce `outputDir`. Supporta variabili template: `{{fileName}}`, <br/> `{{key}}`, <br/> `{{locale}}`, <br/> `{{extension}}`, <br/> `{{componentFileName}}`, <br/> `{{componentExtension}}`, <br/> `{{format}}`, <br/> `{{componentFormat}}`, <br/> `{{componentDirPath}}`. | `boolean` &#124; <br/> `FilePathPattern` &#124; <br/> `Partial<Record<Locale, boolean &#124; FilePathPattern>>` | `undefined` | `'./{{fileName}}{{extension}}'` <br/> `'/locales/{{locale}}/{{key}}.json'` <br/> `{ en: ({ key }) => './locales/en/${key}.json', fr: '...', es: false }` | • I percorsi `./` sono risolti rispetto alla directory del componente.<br/>• Percorsi `/` rispetto alla radice.<br/>• `{{locale}}` attiva la generazione per locale.<br/>• Supporta notazione oggetti per locale. |
941
+ | `noMetadata` | Se `true`, il compilatore omette i metadati del dizionario (chiave, wrapper contenuto) dall'output. | `boolean` | `false` | `false` → `{"key":"mia-chiave","content":{"key":"valore"}}` <br/> `true` → `{"key":"valore"}` | • Utile per output JSON i18next o ICU MessageFormat.<br/>• Funziona bene con il plugin `loadJSON`. |
942
+ | `dictionaryKeyPrefix` | Prefisso chiave dizionario | `string` | `''` | | Aggiungi un prefisso opzionale per le chiavi del dizionario estratte |
943
+
944
+ ---
945
+
946
+ ### Schemi Personalizzati
947
+
948
+ | Campo | Descrizione | Tipo |
949
+ | --------- | --------------------------------------------------------------------------- | --------------------------- |
950
+ | `schemas` | Consente di definire schemi Zod per validare la struttura dei tuoi dizionari. | `Record<string, ZodSchema>` |
951
+
952
+ ---
953
+
954
+ ### Plugin
955
+
956
+ | Campo | Descrizione | Tipo |
957
+ | --------- | ------------------------------------ | ------------------ |
958
+ | `plugins` | Elenco dei plugin Intlayer da attivare. | `IntlayerPlugin[]` |