|Labs
Reservar una demoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI antiguo (v0)
Obsoleto

Lingo.dev Compiler

  • Cómo funciona
  • Primeros pasos
  • Primeros pasos con Compiler

Frameworks

  • Integración con Next.js
  • Vite + React

Guías

  • Cambio de idioma
  • Pluralización automática
  • Sobrescrituras manuales
  • Modos de compilación
  • Estructura del proyecto
  • Proveedores de traducción
  • Resolvers de idioma personalizados
  • Herramientas de desarrollo

Referencia

  • Buenas prácticas
  • Referencia de configuración
  • Solución de problemas
  • Guía de migración
  • Optimización
  • Formatos de salida

Cambio de idioma

Alfa

El Compiler de Lingo.dev está en fase alfa. Es inestable, no se recomienda para entornos de producción y las API pueden cambiar entre versiones.

El Compiler de Lingo.dev proporciona el hook useLingoContext() para consultar y cambiar el idioma activo en tiempo de ejecución. Úsalo para crear selectores de idioma, componentes adaptados al idioma o cualquier interfaz que responda a la preferencia de idioma del usuario.

Hook useLingoContext()#

El hook devuelve un objeto con el idioma actual y una función para cambiarlo:

tsx
import { useLingoContext } from "@lingo.dev/compiler/react";

const { locale, setLocale } = useLingoContext();
PropiedadTipoDescripción
localestringEl código del idioma activo (p. ej., "en", "es").
setLocale(locale: string) => voidEstablece el nuevo idioma. Por defecto, activa la persistencia y recarga la página.

Ejemplo de selector de idioma#

Un componente de selector de idioma con menú desplegable:

tsx
"use client"; // Required for Next.js App Router

import { useLingoContext } from "@lingo.dev/compiler/react";

const localeLabels: Record<string, string> = {
  en: "English",
  es: "Espanol",
  de: "Deutsch",
  fr: "Francais",
  ja: "日本語",
};

export function LanguageSwitcher() {
  const { locale, setLocale } = useLingoContext();

  return (
    <select value={locale} onChange={(e) => setLocale(e.target.value)}>
      {Object.entries(localeLabels).map(([code, label]) => (
        <option key={code} value={code}>
          {label}
        </option>
      ))}
    </select>
  );
}

En Next.js, el selector de idioma debe ser un Client Component ("use client") porque utiliza un hook de React.

Qué ocurre cuando se llama a setLocale#

1

El idioma se guarda

Por defecto, el nuevo idioma se guarda en una cookie llamada locale con una duración máxima de 1 año. Esto garantiza que la preferencia se conserve tras recargar la página y reiniciar el navegador.

2

La página se recarga

La página se recarga para volver a renderizar todos los componentes con el nuevo idioma. Los Server Components obtienen las traducciones del nuevo idioma en el servidor y los Client Components reciben el diccionario actualizado.

3

Las solicitudes posteriores usan el nuevo idioma

En la siguiente carga de página, el Compiler lee el idioma guardado y sirve las traducciones correspondientes.

Opciones de persistencia#

El mecanismo de persistencia predeterminado se basa en cookies y se configura mediante localePersistence:

ts
{
  localePersistence: {
    type: "cookie",
    config: {
      name: "locale",       // Cookie name
      maxAge: 31536000,     // 1 year in seconds
    },
  },
}
OpciónPredeterminadoDescripción
type"cookie"Mecanismo de persistencia.
config.name"locale"Nombre de la cookie.
config.maxAge31536000Duración de la cookie en segundos.

Persistencia personalizada#

Para el enrutado de idioma basado en URL, localStorage o la detección personalizada mediante cabeceras, crea resolvedores de idioma personalizados. La exportación persistLocale en tu resolvedor de cliente controla lo que ocurre cuando se llama a setLocale:

ts
// .lingo/locale-resolver.client.ts
export function resolveLocale(): string {
  return localStorage.getItem("locale") || "en";
}

export function persistLocale(locale: string): void {
  localStorage.setItem("locale", locale);
  window.location.reload();
}

Consulta Custom Locale Resolvers para ver ejemplos completos de patrones basados en URL, cookies y cabeceras.

Leer el idioma sin cambiarlo#

Si necesitas el idioma actual para mostrarlo o para renderizado condicional sin ofrecer un selector, usa el mismo hook:

tsx
"use client";

import { useLingoContext } from "@lingo.dev/compiler/react";

export function LocaleBadge() {
  const { locale } = useLingoContext();
  return <span>{locale.toUpperCase()}</span>;
}

Siguientes pasos#

Custom Locale Resolvers
Persistencia basada en URL, localStorage y cabeceras
Referencia de configuración
Opciones de localePersistence
Integración con Next.js
Comportamiento de Server Components y Client Components
Vite + React
Cambio de idioma en el cliente

¿Te ha resultado útil esta página?

Max PrilutskiyMax Prilutskiy·Actualizado hace 4 meses·3 min de lectura