Pose una domanda e ottieni un riassunto del documento facendo riferimento a questa pagina e al provider AI di tua scelta
Il contenuto di questa pagina è stato tradotto con un'IA.
Vedi l'ultima versione del contenuto originale in ingleseSe hai un’idea per migliorare questa documentazione, non esitare a contribuire inviando una pull request su GitHub.
Collegamento GitHub alla documentazioneCopia il Markdown del documento nella porta-documenti
Nuovo Intlayer v7 - Novità
Benvenuto in Intlayer v7! Questa versione principale introduce miglioramenti significativi nelle prestazioni, nella sicurezza dei tipi e nell'esperienza dello sviluppatore. Di seguito i punti salienti, con note di migrazione ed esempi pratici.
Indice
Punti salienti
- Strategia di caching per build più veloci
- Generazione migliorata dei tipi TypeScript con tipi specifici per locale
- Ottimizzazione del bundle: Locali come stringhe invece che enum
- Nuove modalità di routing:
prefix-no-default,prefix-all,no-prefix,search-params - Archiviazione locale conforme al GDPR con localStorage come predefinito
- Configurazione flessibile dello storage: cookie, localStorage, sessionStorage o multipli
- Dimensione del bundle Visual Editor ridotta del 30%
- Opzioni di configurazione middleware migliorate
- Comportamento aggiornato del comando fill per una migliore gestione dei contenuti
- Stabilità migliorata con aggiornamenti completi dei file di dichiarazione dei contenuti
- Gestione intelligente dei retry per una maggiore accuratezza delle traduzioni
- Parallelizzazione per un'elaborazione delle traduzioni più veloce
- Suddivisione intelligente per gestire file di grandi dimensioni entro i limiti del contesto AI
Prestazioni: Caching per build più veloci
Invece di ricostruire le dichiarazioni di contenuto con esbuild a ogni build, la versione 7 implementa una strategia di caching che accelera il processo di build.
Copiare il codice nella clipboard
Il nuovo sistema di caching:
- Memorizza le dichiarazioni di contenuto compilate per evitare elaborazioni ridondanti
- Rileva le modifiche e ricostruisce solo i file modificati
- Riduce significativamente i tempi di build per progetti di grandi dimensioni
TypeScript: Generazione di tipi specifici per locale
I tipi TypeScript ora vengono generati per ogni locale, offrendo un typing più forte ed eliminando i tipi unione tra tutti i locali.
Comportamento v6:
Copiare il codice nella clipboard
Comportamento v7:
Copiare il codice nella clipboard
Vantaggi:
- Completamento automatico più preciso nel tuo IDE
- Maggiore sicurezza dei tipi senza inquinamento tra tipi di diverse localizzazioni
- Prestazioni migliorate riducendo la complessità dei tipi
Ottimizzazione del bundle: Locali come stringhe
Il tipo Locales non è più un enum, il che significa che ora è completamente tree-shakeable e non appesantirà il tuo bundle con migliaia di record di localizzazione inutilizzati.
v6:
Copiare il codice nella clipboard
v7:
Copiare il codice nella clipboard
PoichéLocalesnon è più un enum, dovrai cambiare il tipo daLocalesaLocaleper ottenere la localizzazione come tipo.
Consulta i dettagli di implementazione per maggiori informazioni.
Nuove modalità di routing per una maggiore flessibilità
La versione 7 introduce una configurazione unificata routing.mode che sostituisce le precedenti opzioni prefixDefault e noPrefix, offrendo un controllo più granulare sulla struttura degli URL.
Modalità di routing disponibili
prefix-no-default(predefinita): la localizzazione predefinita non ha prefisso, le altre localizzazioni sì/dashboard(en) o/fr/dashboard(fr)
prefix-all: tutte le localizzazioni hanno un prefisso/en/dashboard(en) o/fr/dashboard(fr)
no-prefix: Nessun prefisso di localizzazione negli URL (la localizzazione è gestita tramite storage/header)/dashboardper tutte le localizzazioni
search-params: La localizzazione viene passata come parametro di query/dashboard?locale=eno/dashboard?locale=fr
Configurazione di base
Copiare il codice nella clipboard
Conformità GDPR: storage in localStorage / cookie
La versione 7 dà priorità alla privacy dell'utente utilizzando localStorage come meccanismo di storage predefinito invece dei cookie. Questo cambiamento aiuta a rispettare il GDPR evitando la necessità del consenso per i cookie relativi alle preferenze di localizzazione.
Opzioni di configurazione dello storage
Il nuovo campo routing.storage è disponibile in aggiunta alle precedenti opzioni middleware.cookieName e middleware.serverSetCookie, offrendo configurazioni di storage flessibili:
Copiare il codice nella clipboard
Esempio di configurazione conforme al GDPR
Per applicazioni in produzione che devono bilanciare funzionalità e conformità al GDPR:
Copiare il codice nella clipboard
Abilitare / disabilitare l'archiviazione tramite cookie
Esempio con React / Next.js:
Può essere definito globalmente:
Copiare il codice nella clipboard
Può essere sovrascritto localmente per ogni hook:
Copiare il codice nella clipboard
Nota: I cookie sono abilitati di default. Nota: Controlla i requisiti GDPR per i cookie per il tuo caso specifico.
Visual Editor: pacchetto ridotto del 30%
Il pacchetto Visual Editor è stato ottimizzato per essere il 30% più piccolo rispetto alla versione precedente, grazie a:
- Miglioramenti delle prestazioni dell'editor di codice
- Rimozione di dipendenze non necessarie dai pacchetti core di Intlayer
- Migliore tree-shaking e bundling dei moduli
Questo si traduce in tempi di download più rapidi e prestazioni di runtime migliorate per la tua applicazione.
Formattazione automatica del codice: configurazione formatCommand
v7 introduce l'opzione formatCommand nella configurazione dell'editor, permettendoti di formattare automaticamente i file di contenuto quando vengono scritti da Intlayer. Questo assicura uno stile di codice e una formattazione coerenti nei tuoi file di dichiarazione di contenuto.
Se non impostato, Intlayer tenterà di rilevare il comando di formattazione automaticamente. Provando a risolvere i seguenti comandi: prettier, biome, eslint.
Configurazione
L'opzione formatCommand accetta un template di stringa dove {{file}} verrà sostituito con il percorso file effettivo:
Copiare il codice nella clipboard
Formatter supportati
Puoi utilizzare qualsiasi code formatter che accetta percorsi di file come argomenti:
Usando Biome:
Copiare il codice nella clipboard
Usando Prettier:
Copiare il codice nella clipboard
Usando ESLint:
Copiare il codice nella clipboard
Usando il formatter built-in di Bun:
Copiare il codice nella clipboard
Vantaggi
- Formattazione coerente: Tutti i file di contenuto vengono formattati automaticamente secondo le linee guida di stile del tuo progetto
- Esperienza dello sviluppatore: Non è necessario formattare manualmente i file dopo che Intlayer li scrive
- Coerenza del team: Garantisce che tutti i membri del team abbiano la stessa formattazione applicata ai file di contenuto
- Integrazione CI/CD: I file di contenuto mantengono una formattazione coerente nei flussi di lavoro automatizzati
Come funziona
Quando Intlayer scrive o aggiorna un file di dichiarazione del contenuto (.content.ts, .content.js, ecc.), esegue automaticamente il comando di formattazione specificato sul file. Il placeholder {{file}} viene sostituito con il percorso file effettivo e il comando viene eseguito nella directory base del progetto.
Configurazione del dizionario: Migliore organizzazione e struttura
v7 introduce una nuova sezione di configurazione dedicata dictionary che fornisce una migliore organizzazione per le impostazioni relative al dizionario e una gestione dei contenuti migliorata.
Nuova struttura di configurazione del dizionario
La proprietà fill è stata spostata dalla sezione content a una nuova sezione dictionary, fornendo una separazione più chiara delle responsabilità:
Configurazione v6:
Copiare il codice nella clipboard
Configurazione v7:
Copiare il codice nella clipboard
Vantaggi della nuova struttura
- Organizzazione più chiara: Le impostazioni specifiche del dizionario sono ora raggruppate insieme
- Migliore separazione delle responsabilità: La scoperta dei contenuti rispetto alle operazioni del dizionario sono chiaramente separate
- Manutenibilità migliorata: Più facile da comprendere e modificare le configurazioni relative al dizionario
- Estensibilità futura: La sezione del dizionario può contenere impostazioni specifiche del dizionario aggiuntive
- Gestione dizionario completa: Include proprietà come
title,live,priority,tags,versionedescriptionper creare e gestire nuovi dizionari
Utilizzo della configurazione
La configurazione del dizionario serve a due scopi principali:
- Valori predefiniti: Definire i valori predefiniti durante la creazione di file di dichiarazione del contenuto
- Comportamento di fallback: Fornire valori di fallback quando campi specifici non sono definiti, consentendoti di definire il comportamento dell'operazione del dizionario globalmente
La sezione del dizionario include proprietà complete per la gestione del dizionario:
fill: Comportamento di riempimento automatico per la generazione del contenutotitle: Titolo predefinito per i nuovi dizionarilive: Configurazione di sincronizzazione live per gli aggiornamenti in tempo realepriority: Impostazioni di priorità per la risoluzione del dizionariotags: Tag predefiniti per l'organizzazione del contenutoversion: Gestione della versione per gli aggiornamenti del dizionariodescription: Descrizione predefinita per i nuovi contenuti
Per ulteriori informazioni sui file di dichiarazione del contenuto e su come vengono applicate le impostazioni di configurazione, consulta la Documentazione del file di contenuto.
Comando Fill: comportamento aggiornato per una migliore gestione dei contenuti
La versione 7 introduce un comportamento migliorato per il comando fill, offrendo una gestione dei contenuti più prevedibile e flessibile:
Nuovo comportamento di fill
fill: true- Riscrive il file corrente con il contenuto compilato per tutte le localizzazionifill: "path/to/file"- Compila il file specificato senza modificare il file correntefill: false- Disabilita completamente l'auto-fill
Supporto migliorato per strutture di contenuto complesse
Il comando fill ora supporta strutture complesse di dichiarazione del contenuto, inclusi:
- Oggetti composti: Dichiarazioni di contenuto che fanno riferimento ad altri oggetti
- Contenuto destrutturato: Contenuto che utilizza pattern di destrutturazione
- Riferimenti annidati: Oggetti che si richiamano a vicenda in gerarchie complesse
- Strutture di contenuto dinamiche: Contenuto con proprietà condizionali o calcolate
Vantaggi
- Intento più chiaro: Il comportamento è ora più esplicito su cosa viene modificato
- Migliore separazione: I file di contenuto possono essere mantenuti separati dalle traduzioni compilate
- Flusso di lavoro migliorato: Gli sviluppatori hanno un maggiore controllo su dove vengono memorizzate le traduzioni
- Supporto per strutture complesse: Gestione di architetture di contenuto sofisticate con molteplici oggetti interconnessi
Esempio di utilizzo
Copiare il codice nella clipboard
Maggiore stabilità e gestione delle traduzioni
La versione 7 introduce diversi miglioramenti per rendere la traduzione dei contenuti più affidabile ed efficiente:
Aggiornamenti completi dei file di dichiarazione dei contenuti
Il sistema ora aggiorna i file .content.{ts,js,cjs,mjs} invece di aggiornamenti parziali, garantendo:
- Integrità dei dati: La riscrittura completa dei file previene aggiornamenti parziali che potrebbero corrompere il contenuto
- Coerenza: Tutte le localizzazioni vengono aggiornate in modo atomico, mantenendo la sincronizzazione
- Affidabilità: Riduce il rischio di file di contenuto incompleti o malformati
Gestione intelligente dei tentativi di ripetizione
I nuovi meccanismi di retry impediscono di inviare contenuti in formati errati e evitano che l'intero processo di fill si interrompa se una richiesta fallisce.
Parallelizzazione per un'elaborazione più veloce
Le operazioni di traduzione ora vengono eseguite in coda per poter essere processate in parallelo. Questo accelera significativamente il processo.
Suddivisione intelligente per file di grandi dimensioni
Strategie avanzate di chunking gestiscono file di contenuto di grandi dimensioni senza superare i limiti del contesto AI:
Esempio di flusso di lavoro
Copiare il codice nella clipboard
Il sistema automaticamente:
- Analizza la dimensione e la struttura del contenuto
- Suddivide il contenuto in chunk appropriati
- Elabora i chunk in parallelo
- Valida e ritenta se necessario
- Ricostruisce il file completo
Note di migrazione dalla versione v6
Configurazioni rimosse
middleware.cookieName: Sostituito darouting.storagemiddleware.serverSetCookie: Sostituito darouting.storagemiddleware.prefixDefault: Sostituito darouting.modemiddleware.noPrefix: Sostituito darouting.mode
Nuove configurazioni
editor.formatCommand: Nuova opzione per la formattazione automatica del codice dei file di contenuto
Mappatura della migrazione
Mappatura della configurazione
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Configurazione v6 | Configurazione v7 |
|---|---|
autoFill: xxx | fill: xxx |
prefixDefault: false | mode: 'prefix-no-default' |
prefixDefault: true | mode: 'prefix-all' |
noPrefix: true | mode: 'no-prefix' |
cookieName: 'my-locale' | storage: { type: 'cookie', name: 'my-locale' } |
serverSetCookie: 'never' | storage: false o rimuovere il cookie dall'array di storage` |
Esempio di migrazione
Prima (v6):
Copiare il codice nella clipboard
Dopo (v7):
Copiare il codice nella clipboard
Mappatura del contenuto del dizionario
Apri la tabella in una finestra modale per visualizzare tutti i dati in modo chiaro
| Contenuto dizionario v6 | Contenuto dizionario v7 |
|---|---|
autoFill: xxx | fill: xxx |
Esempio di migrazione
Prima (v6):
Copiare il codice nella clipboard
Dopo (v7):
Copiare il codice nella clipboard
Note di migrazione da v5 a v6
Consulta le note di migrazione da v5 a v6 per maggiori informazioni.
