0Pricing
React Academy · Lezione

Selettore della lingua e lazy loading delle traduzioni

Crei un selettore della locale e carichi i bundle di traduzione su richiesta per ridurre le dimensioni iniziali.

Selettore della lingua e lazy loading delle traduzioni è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento React Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso React Academy include 4 lezioni in totale.

Benvenuto

In questa lezione creerà un componente per il cambio della lingua e configurerà i18next per caricare i bundle delle traduzioni su richiesta, riducendo la quantità iniziale di JavaScript.

Selettore della lingua semplice

Chiami i18n.changeLanguage() al clic su un pulsante per cambiare la lingua attiva. Tutti i componenti che usano useTranslation verranno automaticamente renderizzati nuovamente nella nuova lingua.
function LanguageSwitcher() {
  const { i18n } = useTranslation();
  return (
    <div>
      {['en', 'tr', 'fr'].map(lng => (
        <button
          key={lng}
          onClick={() => i18n.changeLanguage(lng)}
          style={{ fontWeight: i18n.language === lng ? 'bold' : 'normal' }}
        >
          {lng.toUpperCase()}
        </button>
      ))}
    </div>
  );
}

Persistenza della selezione della lingua

Salvi la lingua selezionata in localStorage, così verrà mantenuta dopo il ricaricamento della pagina. Il plugin LanguageDetector gestisce automaticamente questo comportamento con l’ordine dei detector che include `localStorage`.
i18n.init({
  detection: {
    order: ['localStorage', 'navigator'],
    caches: ['localStorage'],
  },
});

Perché usare il lazy loading delle traduzioni?

Includere tutte le traduzioni nel bundle JavaScript aumenta il tempo di caricamento iniziale. Il lazy loading invia solo la lingua predefinita al primo caricamento e recupera le altre lingue soltanto quando l’utente cambia lingua.

Configurazione del backend HTTP

Il plugin i18next-http-backend recupera i file di traduzione da un pattern di URL. Le traduzioni si trovano nella cartella `public/` e vengono servite come risorse statiche: non è necessario alcun codice lato server.
import Backend from 'i18next-http-backend';

i18n.use(Backend).init({
  backend: {
    loadPath: '/locales/{{lng}}/{{ns}}.json',
  },
  ns: ['common', 'auth'],
  defaultNS: 'common',
});

Aggiunta dei file di traduzione

Crei un file JSON per ogni lingua e namespace in `public/locales/`. Il backend HTTP li recupera automaticamente quando la lingua o il namespace viene utilizzato per la prima volta.
public/locales/
  en/common.json
  en/auth.json
  tr/common.json
  tr/auth.json

Visualizzazione dello stato di caricamento durante il cambio di lingua

Dopo aver chiamato changeLanguage(), i18next carica in modo asincrono i file della nuova lingua. Si iscriva all’evento `i18n.on('languageChanged')` oppure controlli `i18n.isInitialized` per visualizzare uno spinner di caricamento.
const [switching, setSwitching] = useState(false);

const change = async (lng) => {
  setSwitching(true);
  await i18n.changeLanguage(lng);
  setSwitching(false);
};

Lazy loading di namespace specifici

Carichi un namespace solo quando viene utilizzato per la prima volta, usando `i18n.loadNamespaces(['dashboard'])`. Chiami questa funzione in useEffect quando viene montata una route dashboard, evitando di caricarla per gli utenti non autenticati.
useEffect(() => {
  i18n.loadNamespaces('dashboard');
}, []);

CDN per le traduzioni

In produzione, ospiti i file di traduzione su un CDN (S3 + CloudFront). Aggiorni `loadPath` con l’URL del CDN. In questo modo gli aggiornamenti delle traduzioni sono separati dai deployment del codice.
backend: {
  loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}

Locale nell’URL

Molte app inseriscono la locale nell’URL, ad esempio /en/products o /tr/products. Combini React Router con i18n: legga la locale dal parametro dell’URL, chiami changeLanguage e aggiorni l’URL quando l’utente cambia lingua.

Verifica rapida

Che cosa fa il plugin i18next-http-backend?

Riepilogo

Crei un selettore della lingua con i18n.changeLanguage(). Renda persistente la selezione usando il detector localStorage. Utilizzi i18next-http-backend per caricare lazy i file di traduzione. Mostri uno stato di caricamento durante il cambio di lingua. In produzione, ospiti i file su un CDN.

Corso completato

Congratulazioni! Ha completato **Internazionalizzazione (i18n) in React**. Ora sa configurare react-i18next, tradurre stringhe con i namespace, gestire plurali e interpolazione e caricare lazy i file di traduzione.

Domande Frequenti

La lezione «Selettore della lingua e lazy loading delle traduzioni» è gratuita?

Sì — il testo completo di «Selettore della lingua e lazy loading delle traduzioni» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso React Academy, passa a CoddyKit PRO. Il corso React Academy include 4 lezioni in totale.

Cosa imparerò in «Selettore della lingua e lazy loading delle traduzioni»?

Crei un selettore della locale e carichi i bundle di traduzione su richiesta per ridurre le dimensioni iniziali. Eserciti React Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare React Academy?

Non è richiesta alcuna esperienza precedente. React Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Selettore della lingua e lazy loading delle traduzioni»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione React Academy?

Sì. Ogni lezione React Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione di react-i18next
  2. Utilizzo dell'hook useTranslation
  3. Pluralizzazione e interpolazione
  4. Selettore della lingua e lazy loading delle traduzioni
← Torna a React Academy