0Pricing
React Academy · Lezione

Configurazione di react-i18next

Installi e configuri i18next con rilevamento della lingua e suddivisione dei namespace.

Configurazione di react-i18next è una lezione React Academy gratuita su CoddyKit. Questa è la lezione 1 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 installerà e configurerà react-i18next con il rilevamento della lingua e la suddivisione in namespace per aggiungere il supporto multilingue a un'app React.

Installare le dipendenze

Installi i18next e react-i18next. Facoltativamente, aggiunga i18next-browser-languagedetector per il rilevamento automatico della lingua e i18next-http-backend per caricare le traduzioni tramite HTTP.
npm install i18next react-i18next
npm install i18next-browser-languagedetector i18next-http-backend

Creare i18n.js

Crei un file `i18n.js` che inizializzi i18next. Chiami `i18n.use(...)` per aggiungere i plugin e `.init({...})` con la configurazione.
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';

i18n
  .use(LanguageDetector)
  .use(initReactI18next)
  .init({
    fallbackLng: 'en',
    resources: { en: { translation: {} }, tr: { translation: {} } },
    interpolation: { escapeValue: false },
  });

export default i18n;

Importare i18n in main.jsx

Importi il file di inizializzazione di i18n PRIMA di eseguire il rendering dell'app. In questo modo i18n sarà pronto prima che un componente chiami useTranslation.
import './i18n'; // must be before App
import { StrictMode } from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';

createRoot(document.getElementById('root')).render(
  <StrictMode><App /></StrictMode>
);

Namespace

I namespace suddividono le traduzioni in gruppi logici (ad esempio 'common', 'auth', 'dashboard'). Ogni namespace è un file JSON separato, caricato su richiesta per ridurre le dimensioni del bundle iniziale.
resources: {
  en: {
    common: { save: 'Save', cancel: 'Cancel' },
    auth: { login: 'Log in', logout: 'Log out' },
  }
}

Rilevamento della lingua

Il plugin LanguageDetector legge la lingua preferita dell'utente dal browser (navigator.language), da localStorage o dalla stringa di query dell'URL. Imposta automaticamente la lingua attiva al primo caricamento.

Caricare le traduzioni dalla cartella public

Salvi le traduzioni come file JSON in `public/locales/{lang}/{ns}.json`. Configuri il plugin backend per caricarle a runtime, così per aggiungere una nuova lingua non sarà necessaria alcuna modifica al codice.
import Backend from 'i18next-http-backend';

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

I18nextProvider (facoltativo)

I18nextProvider avvolge l'app per fornire l'istanza i18n tramite context. Con react-i18next v11+ e il plugin initReactI18next, è facoltativo: l'hook legge direttamente l'istanza globale di i18n.

Verificare l'inizializzazione nei componenti

i18next carica le traduzioni in modo asincrono. Usi la proprietà `ready` di useTranslation oppure verifichi `i18n.isInitialized` prima di eseguire il rendering del testo, per evitare di mostrare le chiavi di traduzione.
const { t, ready } = useTranslation();
if (!ready) return null;

DevTools e gestione delle chiavi mancanti

Imposti `saveMissing: true` in fase di sviluppo per registrare nella console le chiavi di traduzione mancanti. Questo aiuta a trovare rapidamente le stringhe non tradotte.
i18n.init({ saveMissing: true,
  missingKeyHandler: (lng, ns, key) => console.warn('Missing:', key) });

Verifica rapida

Perché è necessario importare il file di inizializzazione di i18n prima di eseguire il rendering dell'app React?

Riepilogo

Installi i18next e react-i18next, crei i18n.js con i plugin e la configurazione di init, lo importi prima di eseguire il rendering e organizzi le traduzioni nei namespace. Usi http-backend per caricare i file di traduzione a runtime.

Prossimo

Prossima lezione: **Utilizzo dell’hook useTranslation** — sostituirà le stringhe hardcoded con chiamate a t() e organizzerà i file JSON delle traduzioni.

Domande Frequenti

La lezione «Configurazione di react-i18next» è gratuita?

Sì — il testo completo di «Configurazione di react-i18next» è 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 «Configurazione di react-i18next»?

Installi e configuri i18next con rilevamento della lingua e suddivisione dei namespace. 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 1 di 4.

Quanto tempo richiede la lezione «Configurazione di react-i18next»?

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