0Pricing
React Academy · Lección

Selector de idioma y carga diferida de traducciones

Cree un selector de locale y cargue los paquetes de traducción bajo demanda para reducir el tamaño inicial.

Selector de idioma y carga diferida de traducciones es una lección gratuita de React Academy en CoddyKit. Esta es la lección 4 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.

Bienvenida

En esta lección creará un componente selector de idioma y configurará i18next para cargar los paquetes de traducción bajo demanda, reduciendo el tamaño inicial de la carga de JavaScript.

Selector de idioma sencillo

Llame a i18n.changeLanguage() al hacer clic en un botón para cambiar el idioma activo. Todos los componentes que utilizan useTranslation se volverán a renderizar automáticamente con el nuevo idioma.
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>
  );
}

Persistencia de la selección de idioma

Guarde el idioma seleccionado en localStorage para que se conserve al volver a cargar las páginas. El complemento LanguageDetector lo gestiona automáticamente con el orden de detección `localStorage`.
i18n.init({
  detection: {
    order: ['localStorage', 'navigator'],
    caches: ['localStorage'],
  },
});

¿Por qué cargar las traducciones de forma diferida?

Incluir todas las traducciones en el paquete de JavaScript aumenta el tiempo de carga inicial. La carga diferida envía solo el idioma predeterminado durante la primera carga y obtiene los demás idiomas únicamente cuando el usuario cambia de idioma.

Configuración del backend HTTP

El complemento i18next-http-backend obtiene los archivos de traducción a partir de un patrón de URL. Las traducciones se encuentran en la carpeta `public/` y se sirven como recursos estáticos; no se necesita código del servidor.
import Backend from 'i18next-http-backend';

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

Adición de archivos de traducción

Cree un archivo JSON por idioma y por espacio de nombres en `public/locales/`. El backend HTTP los obtiene automáticamente cuando el idioma o el espacio de nombres se necesita por primera vez.
public/locales/
  en/common.json
  en/auth.json
  tr/common.json
  tr/auth.json

Mostrar un estado de carga durante el cambio de idioma

Después de llamar a changeLanguage(), i18next carga de forma asíncrona los archivos del nuevo idioma. Suscríbase al evento `i18n.on('languageChanged')` o compruebe `i18n.isInitialized` para mostrar un indicador de carga.
const [switching, setSwitching] = useState(false);

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

Carga diferida de espacios de nombres específicos

Cargue un espacio de nombres solo cuando se necesite por primera vez mediante `i18n.loadNamespaces(['dashboard'])`. Llame a esto en useEffect cuando se monte una ruta de dashboard, para evitar cargarlo para usuarios no autenticados.
useEffect(() => {
  i18n.loadNamespaces('dashboard');
}, []);

CDN para las traducciones

En producción, aloje los archivos de traducción en una CDN (S3 + CloudFront). Actualice `loadPath` con la URL de la CDN. Así separará las actualizaciones de las traducciones de las implementaciones del código.
backend: {
  loadPath: 'https://cdn.example.com/locales/{{lng}}/{{ns}}.json',
}

Configuración regional en la URL

Muchas aplicaciones incluyen la configuración regional en la URL (por ejemplo, /en/products, /tr/products). Combine React Router con i18n: lea la configuración regional del parámetro de la URL, llame a changeLanguage y actualice la URL cuando el usuario cambie de idioma.

Comprobación rápida

¿Qué hace el complemento i18next-http-backend?

Resumen

Cree un selector de idioma con i18n.changeLanguage(). Guarde la selección mediante el detector localStorage. Utilice i18next-http-backend para cargar de forma diferida los archivos de traducción. Muestre un estado de carga durante el cambio de idioma. Aloje los archivos en una CDN en producción.

Curso completado

¡Enhorabuena! Ha terminado **Internacionalización (i18n) en React**. Ahora puede configurar react-i18next, traducir cadenas con espacios de nombres, gestionar plurales e interpolación y cargar archivos de traducción de forma diferida.

Preguntas frecuentes

¿La lección «Selector de idioma y carga diferida de traducciones» es gratis?

Sí — el texto completo de «Selector de idioma y carga diferida de traducciones» 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 «Selector de idioma y carga diferida de traducciones»?

Cree un selector de locale y cargue los paquetes de traducción bajo demanda para reducir el tamaño inicial. 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 4 de 4.

¿Cuánto tiempo toma la lección «Selector de idioma y carga diferida de traducciones»?

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