Autore:
    Creazione:2025-04-18Ultimo aggiornamento:2025-06-29

    Dichiarazione di Contenuto Per-Locale in Intlayer

    Intlayer supporta due modi per dichiarare contenuti multilingue:

    • Un singolo file con tutte le traduzioni
    • Un file per ogni locale (formato per-locale)

    Questa flessibilità consente:

    • Migrazione semplice da altri strumenti i18n
    • Supporto per flussi di lavoro di traduzione automatizzata
    • Organizzazione chiara delle traduzioni in file separati e specifici per locale

    Singolo File con Traduzioni Multiple

    Questo formato è ideale per:

    • Iterazioni rapide nel codice.
    • Integrazione senza soluzione di continuità con il CMS.

    Questo è l'approccio consigliato per la maggior parte dei casi d'uso. Centralizza le traduzioni, rendendo facile iterare e integrare con il CMS.

    hello-world.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      content: {
        multilingualContent: t({
          en: "Title of my component",
          es: "Título de mi componente",
        }),
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    
    Consigliato: questo formato è il migliore quando si utilizza l'editor visuale di Intlayer o si gestiscono le traduzioni direttamente nel codice.
    Nota: In entrambi i casi, il file di dichiarazione del contenuto deve seguire il pattern di denominazione *.content.{ts,tsx,js,jsx,mjs,cjs,json} per essere riconosciuto da Intlayer. Il suffisso .[locale] è opzionale e utilizzato solo come convenzione di denominazione.

    Configurazione globale per i file per-locale

    Puoi configurare la configurazione globale per i file per-locale aggiungendo quanto segue al tuo file intlayer.config.ts:

    ts
    import { Locales, type IntlayerConfig } from "intlayer";
    
    const config: IntlayerConfig = {
      dictionary: {
        locale: Locales.ENGLISH,
      },
    };
    
    export default config;
    

    Utilizzando questa configurazione, tutti i file per-locale verranno generati con la locale predefinita impostata su inglese. Include anche la generazione di file .content utilizzando il comando extract e il compilatore. (Vedere Compilatore o Extract per ulteriori informazioni.)

    Formato per Locale

    Questo formato è utile quando:

    • Vuoi versionare o sovrascrivere le traduzioni in modo indipendente.
    • Stai integrando flussi di lavoro di traduzione automatica o umana.

    Puoi anche suddividere le traduzioni in file di locale individuali specificando il campo locale:

    hello-world.es.content.ts
    import { t, Locales, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      locale: Locales.SPANISH, // Importante
      content: { multilingualContent: "Título de mi componente" },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    
    Importante: Assicurati che il campo locale sia definito. Indica a Intlayer quale lingua rappresenta il file.

    Mescolare Formati

    Puoi combinare entrambi gli approcci di dichiarazione per la stessa chiave di contenuto. Per esempio:

    • Dichiara il tuo contenuto base staticamente in un file come index.content.ts.
    • Aggiungi o sovrascrivi traduzioni specifiche in file separati come index.fr.content.ts o index.content.json.

    Questa configurazione è particolarmente utile quando:

    • Vuoi definire la struttura iniziale del contenuto nel codice.
    • Hai intenzione di arricchire o completare le traduzioni successivamente utilizzando il CMS o strumenti automatizzati.
    bash
    .
    └── Components
        └── MyComponent
            ├── index.content.ts
            ├── index.content.json
            └── index.ts
    

    Esempio

    Ecco un file di dichiarazione di contenuto multilingue:

    Components/MyComponent/index.content.ts
    import { t, type Dictionary } from "intlayer";
    
    const helloWorldContent = {
      key: "hello-world",
      locale: Locales.ENGLISH,
      content: {
        multilingualContent: "Titolo del mio componente",
        projectName: "Il mio progetto",
      },
    } satisfies Dictionary;
    
    export default helloWorldContent;
    
    Components/MyComponent/index.content.json
    {
      "$schema": "https://intlayer.org/schema.json",
      "key": "hello-world",
      "content": {
        "multilingualContent": {
          "nodeType": "translation",
          "translation": {
            "fr": "Titre de mon composant",
            "es": "Título de mi componente"
          }
        }
      }
    }
    

    Intlayer unisce automaticamente i file multilingue e per locale.

    Components/MyComponent/index.ts
    import { getIntlayer, Locales } from "intlayer";
    
    const intlayer = getIntlayer("hello-world"); // La lingua predefinita è INGLESE, quindi restituirà il contenuto in INGLESE
    
    console.log(JSON.stringify(intlayer, null, 2));
    // Risultato:
    // {
    //  "multilingualContent": "Titolo del mio componente",
    //  "projectName": "Il mio progetto"
    // }
    
    const intlayer = getIntlayer("hello-world", Locales.SPANISH);
    
    console.log(JSON.stringify(intlayer, null, 2));
    // Risultato:
    // {
    //  "multilingualContent": "Título de mi componente",
    //  "projectName": "Il mio progetto"
    // }
    
    const intlayer = getIntlayer("hello-world", Locales.FRENCH);
    
    console.log(JSON.stringify(intlayer, null, 2));
    // Risultato:
    // {
    //  "multilingualContent": "Titre de mon composant",
    //  "projectName": "Il mio progetto"
    // }
    

    Generazione Automatica delle Traduzioni

    Usa il intlayer CLI per compilare automaticamente le traduzioni mancanti basandoti sui servizi che preferisci.