Integración con React Router / Remix
Lingo.dev Compiler funciona perfectamente con React Router y la última versión de Remix (que ahora es React Router v7) para proporcionar localización en tiempo de compilación.
Sigue estos pasos para añadir soporte multilingüe a tu aplicación de React Router o Remix.
O explora el proyecto de demostración de React Router / Remix para probar el Compiler en acción.
Requisitos previos
- React Router v6+ o Remix
- Vite como herramienta de construcción
- React 18+
- Node.js 18 o superior
Paso 1. Instalar el paquete
Instala el paquete lingo.dev:
npm install lingo.dev
Paso 2. Configurar Vite
Importa y configura el compilador en tu vite.config.ts
:
import { defineConfig } from "vite";
import lingoCompiler from "lingo.dev/compiler";
const viteConfig = {
// Tu configuración existente de Vite
};
export default defineConfig(() =>
lingoCompiler.vite({
sourceRoot: "app",
targetLocales: ["es", "fr", "de"],
models: {
"*:*": "groq:mistral-saba-24b",
},
})(viteConfig),
);
Paso 3. Configurar la autenticación
Lingo.dev Compiler envía tu contenido a motores de traducción de IA para localización, por lo que necesitas autenticarte primero.
Opción 1. Motor de Lingo.dev
Lingo.dev Compiler puede utilizar el Motor de Lingo.dev como tu motor de traducción de IA. Proporciona selección dinámica de modelos, enrutamiento automático, memoria de traducción y soporte de glosario. Hay opciones gratuitas y de pago disponibles.
Para autenticarte, ejecuta:
npx lingo.dev@latest login
Si tienes problemas con el flujo del navegador, puedes añadir manualmente una clave LINGODOTDEV_API_KEY
a tu archivo .env
:
# .env
LINGODOTDEV_API_KEY=...
Encontrarás el token en la Configuración de Proyecto de tu Motor Lingo.dev.
Opción 2. Proveedor LLM alternativo
Alternativamente, puedes utilizar modelos de proveedores de LLM compatibles:
Añade tu(s) clave(s) API a tu archivo .env
:
# .env
GROQ_API_KEY=gsk_...
GOOGLE_API_KEY=...
OPENROUTER_API_KEY=...
MISTRAL_API_KEY=...
Nota: Asegúrate de activar tu cuenta con el proveedor de LLM y aceptar sus términos de servicio antes de utilizarlo en Compiler.
Paso 4. Añadir proveedor
Para React Router
Importa el proveedor en tu componente raíz (app/root.tsx
):
import { LingoProvider } from "lingo.dev/react/client";
import { loadDictionary } from "lingo.dev/react/react-router";
import type { LoaderFunctionArgs } from "react-router";
import { useLoaderData } from "react-router";
// Para React Router con cargadores de datos
export async function loader(args: LoaderFunctionArgs) {
return {
lingoDictionary: await loadDictionary(args.request),
};
}
export default function Root() {
const { lingoDictionary } = useLoaderData<typeof loader>();
return (
<LingoProvider dictionary={lingoDictionary}>
<html>
<body>
<Outlet />
</body>
</html>
</LingoProvider>
);
}
Para Remix
Importa el proveedor en tu ruta raíz (app/root.tsx
):
import { LingoProvider } from "lingo.dev/react/client";
import { loadDictionary } from "lingo.dev/react/react-router";
import type { LoaderFunctionArgs } from "react-router";
import { useLoaderData } from "react-router";
export async function loader(args: LoaderFunctionArgs) {
return json({
lingoDictionary: await loadDictionary(args.request),
});
}
export default function App() {
const { lingoDictionary } = useLoaderData<typeof loader>();
return (
<LingoProvider dictionary={lingoDictionary}>
<html>
<head>
<Meta />
<Links />
</head>
<body>
<Outlet />
<ScrollRestoration />
<Scripts />
</body>
</html>
</LingoProvider>
);
}
Paso 5. Opcional: Añadir selector de idioma
Crea un componente para cambiar de idioma:
import { LocaleSwitcher } from "lingo.dev/react/client";
export function Header() {
return (
<header>
<nav>
<LocaleSwitcher locales={["en", "es", "fr", "de"]} />
</nav>
</header>
);
}
Paso 6. Compilar y probar
Inicia tu servidor de desarrollo:
npm run dev
El compilador automáticamente:
- Analizará tus componentes de React para encontrar contenido traducible
- Extraerá las claves de traducción
- Generará traducciones mediante IA
- Creará archivos de traducción optimizados en el directorio
lingo/
Visita http://localhost:5173
para ver tu aplicación multilingüe en funcionamiento.
Opciones de configuración
Puedes personalizar el comportamiento del compilador:
export default defineConfig(() =>
lingoCompiler.vite({
sourceRoot: "src",
sourceLocale: "en",
targetLocales: ["es", "fr", "de", "ja"],
lingoDir: "lingo",
debug: false,
})(viteConfig),
);
Renderizado en el servidor
El compilador funciona tanto con renderizado del lado del cliente como del servidor:
Componentes del cliente
// src/components/Welcome.tsx
export function Welcome() {
return (
<div>
<h1>Welcome to our app</h1>
<p>This content is automatically translated</p>
</div>
);
}
Componentes de ruta
// app/routes/about.tsx
export default function About() {
return (
<div>
<h1>About Us</h1>
<p>Learn more about our company</p>
</div>
);
}
Despliegue en producción
-
Compila tu aplicación:
npm run build
-
Confirma los archivos de traducción:
git add lingo/ git commit -m "Add translations"
-
Despliega usando tu plataforma preferida
Tu aplicación de React Router o Remix servirá contenido localizado automáticamente según las preferencias del usuario o los patrones de URL.
Siguientes pasos
- Configuración avanzada: Opciones de personalización
- FAQ: Preguntas frecuentes y solución de problemas
- Cómo funciona: Entendiendo el proceso de compilación