0Pricing
React Academy · Lección

Configurar react-i18next

Instale y configure i18next con detección de idioma y división por namespaces.

Configurar react-i18next es una lección gratuita de React Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Bienvenido

En esta lección instalará y configurará react-i18next con detección de idioma y división en namespaces para añadir compatibilidad con varios idiomas a una aplicación de React.

Instalar dependencias

Instale i18next y react-i18next. También puede añadir i18next-browser-languagedetector para detectar automáticamente la configuración regional e i18next-http-backend para cargar traducciones mediante HTTP.
npm install i18next react-i18next
npm install i18next-browser-languagedetector i18next-http-backend

Crear i18n.js

Cree un archivo `i18n.js` que inicialice i18next. Llame a `i18n.use(...)` para añadir plugins y a `.init({...})` con su configuración.
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;

Importar i18n en main.jsx

Importe el archivo de inicialización de i18n ANTES de renderizar la aplicación. Esto garantiza que i18n esté listo antes de que cualquier componente llame a 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>
);

Namespaces

Los namespaces dividen las traducciones en grupos lógicos (por ejemplo, «common», «auth» y «dashboard»). Cada namespace es un archivo JSON independiente que se carga bajo demanda para reducir el tamaño del bundle inicial.
resources: {
  en: {
    common: { save: 'Save', cancel: 'Cancel' },
    auth: { login: 'Log in', logout: 'Log out' },
  }
}

Detección de idioma

El plugin LanguageDetector lee el idioma preferido del usuario desde el navegador (navigator.language), localStorage o la cadena de consulta de la URL. Establece automáticamente el idioma activo durante la primera carga.

Cargar traducciones desde la carpeta pública

Guarde las traducciones como archivos JSON en `public/locales/{lang}/{ns}.json`. Configure el plugin backend para cargarlas en tiempo de ejecución, de modo que añadir un idioma nuevo no requiera modificar el código.
import Backend from 'i18next-http-backend';

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

I18nextProvider (opcional)

I18nextProvider envuelve la aplicación para proporcionar la instancia de i18n mediante el contexto. Con react-i18next v11+ y el plugin initReactI18next, es opcional: el hook lee directamente la instancia global de i18n.

Comprobar la inicialización en los componentes

i18next carga las traducciones de forma asíncrona. Use la propiedad `ready` de `useTranslation` o compruebe `i18n.isInitialized` antes de renderizar texto para evitar mostrar claves de traducción.
const { t, ready } = useTranslation();
if (!ready) return null;

DevTools y gestión de claves ausentes

Establezca `saveMissing: true` durante el desarrollo para registrar en la consola las claves de traducción que falten. Esto le ayuda a encontrar rápidamente las cadenas sin traducir.
i18n.init({ saveMissing: true,
  missingKeyHandler: (lng, ns, key) => console.warn('Missing:', key) });

Comprobación rápida

¿Por qué debe importar el archivo de inicialización de i18n antes de renderizar su aplicación de React?

Resumen

Instale i18next + react-i18next, cree i18n.js con los plugins y la configuración de init, impórtelo antes de renderizar y organice las traducciones en namespaces. Use http-backend para cargar los archivos de traducción en tiempo de ejecución.

A continuación

Siguiente lección: **Uso del hook useTranslation** — reemplazará las cadenas codificadas directamente por llamadas a t() y organizará los archivos JSON de traducción.

Preguntas frecuentes

¿La lección «Configurar react-i18next» es gratis?

Sí — el texto completo de «Configurar react-i18next» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Configurar react-i18next»?

Instale y configure i18next con detección de idioma y división por namespaces. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Configurar react-i18next»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configurar react-i18next
  2. Utilizar el hook useTranslation
  3. Pluralización e interpolación
  4. Selector de idioma y carga diferida de traducciones
← Volver a React Academy