0Pricing
React Academy · Leçon

Sélecteur de langue et chargement différé des traductions

Créez un sélecteur de langue et chargez les ensembles de traductions à la demande pour réduire la taille initiale.

Sélecteur de langue et chargement différé des traductions est une leçon React Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage React Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours React Academy comprend 4 leçons au total.

Bienvenue

Dans cette leçon, vous créerez un composant de sélection de langue et configurerez i18next pour charger les paquets de traduction à la demande, afin de réduire le volume initial de JavaScript.

Sélecteur de langue simple

Appelez i18n.changeLanguage() lors d’un clic sur un bouton pour changer la langue active. Tous les composants qui utilisent useTranslation seront automatiquement réaffichés dans la nouvelle langue.
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>
  );
}

Conserver le choix de langue

Conservez la langue sélectionnée dans localStorage afin qu’elle soit conservée après le rechargement des pages. L’extension LanguageDetector s’en charge automatiquement avec l’ordre de détection `localStorage`.
i18n.init({
  detection: {
    order: ['localStorage', 'navigator'],
    caches: ['localStorage'],
  },
});

Pourquoi charger les traductions à la demande ?

Inclure toutes les traductions dans le paquet JavaScript augmente le temps de chargement initial. Le chargement à la demande n’envoie que la langue par défaut lors du premier chargement, puis récupère les autres langues uniquement lorsque l’utilisateur change de langue.

Configurer le serveur HTTP

L’extension i18next-http-backend récupère les fichiers de traduction à partir d’un modèle d’URL. Les traductions se trouvent dans le dossier `public/` et sont servies comme ressources statiques : aucun code côté serveur n’est nécessaire.
import Backend from 'i18next-http-backend';

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

Ajouter des fichiers de traduction

Créez un fichier JSON par langue et par espace de noms dans `public/locales/`. Le serveur HTTP les récupère automatiquement lorsque la langue ou l’espace de noms est utilisé pour la première fois.
public/locales/
  en/common.json
  en/auth.json
  tr/common.json
  tr/auth.json

Afficher un état de chargement pendant le changement de langue

Après l’appel à changeLanguage(), i18next charge de manière asynchrone les fichiers de la nouvelle langue. Abonnez-vous à l’événement `i18n.on('languageChanged')` ou vérifiez `i18n.isInitialized` pour afficher une animation de chargement.
const [switching, setSwitching] = useState(false);

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

Charger des espaces de noms à la demande

Chargez un espace de noms uniquement lorsqu’il est nécessaire pour la première fois avec `i18n.loadNamespaces(['dashboard'])`. Appelez cela dans useEffect lors du montage d’une route de tableau de bord, afin d’éviter ce chargement pour les utilisateurs non authentifiés.
useEffect(() => {
  i18n.loadNamespaces('dashboard');
}, []);

CDN pour les traductions

En production, hébergez les fichiers de traduction sur un CDN (S3 + CloudFront). Mettez à jour `loadPath` avec l’URL du CDN. Les mises à jour des traductions sont ainsi indépendantes des déploiements du code.
backend: {
  loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}

Paramètre régional dans l’URL

De nombreuses applications intègrent le paramètre régional dans l’URL (par exemple, /en/products ou /tr/products). Combinez React Router avec i18n : lisez le paramètre régional dans le paramètre d’URL, appelez changeLanguage, puis mettez à jour l’URL lorsque l’utilisateur change de langue.

Vérification rapide

Que fait l’extension i18next-http-backend ?

Récapitulatif

Créez un sélecteur de langue avec i18n.changeLanguage(). Conservez le choix avec le détecteur localStorage. Utilisez i18next-http-backend pour charger les fichiers de traduction à la demande. Affichez un état de chargement pendant le changement de langue. Hébergez les fichiers sur un CDN en production.

Cours terminé

Félicitations ! Vous avez terminé **Internationalisation (i18n) dans React**. Vous pouvez maintenant configurer react-i18next, traduire des chaînes avec des espaces de noms, gérer les pluriels et l’interpolation, et charger les fichiers de traduction à la demande.

Questions Fréquemment Posées

La leçon « Sélecteur de langue et chargement différé des traductions » est-elle gratuite ?

Oui — le texte complet de « Sélecteur de langue et chargement différé des traductions » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours React Academy, passe à CoddyKit PRO. Le cours React Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Sélecteur de langue et chargement différé des traductions » ?

Créez un sélecteur de langue et chargez les ensembles de traductions à la demande pour réduire la taille initiale. Tu pratiques React Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer React Academy ?

Aucune expérience préalable n'est requise. React Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Sélecteur de langue et chargement différé des traductions » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon React Academy ?

Oui. Chaque leçon React Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configurer react-i18next
  2. Utiliser le hook useTranslation
  3. Pluralisation et interpolation
  4. Sélecteur de langue et chargement différé des traductions
← Retour à React Academy