|Labs
Agenda una demoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI anterior (v0)
Obsoleto

Lingo.dev Compiler

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

Frameworks

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

Guías

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

Referencia

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

Referencia de configuración

Alfa

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

El objeto de configuración de Lingo.dev Compiler controla cómo se traduce tu aplicación de React durante la compilación. En esta página se documentan todas las opciones disponibles, con tipos, valores predeterminados y ejemplos de uso.

Opciones principales#

OpciónTipoPredeterminadoDescripción
sourceRootstring"src"Directorio que contiene los componentes traducibles. Relativo a la raíz del proyecto.
lingoDirstring".lingo"Directorio para los metadatos de traducción y los archivos de caché.
sourceLocalestringobligatorioCódigo de idioma del contenido de origen (p. ej., "en").
targetLocalesstring[]obligatorioArreglo de códigos de idioma de destino (p. ej., ["es", "de", "fr"]).
useDirectivebooleanfalseCuando es true, solo se traducen los archivos con la directiva 'use i18n'. Cuando es false, se traducen todos los archivos dentro de sourceRoot.
modelsstring | object"lingo.dev"Configuración del proveedor de traducción. Una cadena establece el valor predeterminado para todos los pares de idiomas. Un objeto asigna proveedores específicos a pares de idiomas concretos.
promptstringundefinedPrompt del sistema personalizado para el LLM de traducción. Admite los placeholders {SOURCE_LOCALE} y {TARGET_LOCALE}.
buildMode"translate" | "cache-only""translate"Controla si el compilador genera traducciones nuevas o si usa únicamente las traducciones en caché.

Opciones de desarrollo#

Las opciones dentro de la clave dev controlan el comportamiento durante el desarrollo:

OpciónTipoPredeterminadoDescripción
dev.usePseudotranslatorbooleanfalseGenera al instante traducciones simuladas (p. ej., [!!! Welcome !!!]) en lugar de llamar a un LLM. No necesitas una clave de API.
dev.translationServerStartPortnumber60000Puerto inicial para el servidor local de traducción. El compilador encuentra automáticamente un puerto disponible dentro del rango 60000-60099.
dev.translationServerUrlstringundefinedSobrescribe la URL del servidor de traducción. Útil para configuraciones personalizadas o servidores de traducción remotos.

Persistencia de idioma#

Las opciones dentro de localePersistence controlan cómo se guarda y recupera el idioma seleccionado por el usuario:

OpciónTipoPredeterminadoDescripción
localePersistence.typestring"cookie"Mecanismo de persistencia. Actualmente admite "cookie".
localePersistence.config.namestring"locale"Nombre de la cookie que se usa para guardar el idioma.
localePersistence.config.maxAgenumber31536000Tiempo máximo de vida de la cookie en segundos (el valor predeterminado es 1 año).

Para implementar una lógica de persistencia personalizada (localStorage, basada en URL o encabezados), consulta Custom Locale Resolvers.

Pluralización#

Las opciones dentro de pluralization controlan la detección y generación automáticas de formas plurales:

OpciónTipoPredeterminadoDescripción
pluralization.enabledbooleantrueActiva o desactiva la detección automática de pluralización.
pluralization.modelstring"groq:llama-3.1-8b-instant"Modelo de LLM que se usa para detectar formas plurales en el texto de origen. Se recomienda un modelo más pequeño y rápido, ya que detectar es una tarea más simple que traducir.

Consulta Automatic Pluralization para conocer cómo funciona la detección de plurales.

Variables de entorno#

Las variables de entorno sobrescriben o complementan la configuración:

VariableCuándo se requiereDescripción
LINGO_BUILD_MODEOpcionalSobrescribe la opción de configuración buildMode. Configúrala como "translate" o "cache-only".
LINGODOTDEV_API_KEYAl usar modelos "lingo.dev"Clave de API para el motor de localización de Lingo.dev. Obtenla en npx lingo.dev@latest login.
OPENAI_API_KEYAl usar modelos "openai:*"Clave de API de OpenAI.
ANTHROPIC_API_KEYAl usar modelos "anthropic:*"Clave de API de Anthropic.
GOOGLE_API_KEYAl usar modelos "google:*"Clave de API de Google AI.
GROQ_API_KEYAl usar modelos "groq:*"Clave de API de Groq.
MISTRAL_API_KEYAl usar modelos "mistral:*"Clave de API de Mistral.
OPENROUTER_API_KEYAl usar modelos "openrouter:*"Clave de API de OpenRouter.

Ejemplo completo#

ts
// next.config.ts
import type { NextConfig } from "next";
import { withLingo } from "@lingo.dev/compiler/next";

const nextConfig: NextConfig = {};

export default async function (): Promise<NextConfig> {
  return await withLingo(nextConfig, {
    sourceRoot: "./app",
    lingoDir: ".lingo",
    sourceLocale: "en",
    targetLocales: ["es", "de", "fr", "ja"],
    useDirective: false,
    models: {
      "*:*": "lingo.dev",
      "*:ja": "anthropic:claude-3-5-sonnet",
    },
    prompt: "Translate UI text from {SOURCE_LOCALE} to {TARGET_LOCALE}. Keep it concise.",
    buildMode: "translate",
    dev: {
      usePseudotranslator: true,
      translationServerStartPort: 60000,
    },
    localePersistence: {
      type: "cookie",
      config: {
        name: "locale",
        maxAge: 31536000,
      },
    },
    pluralization: {
      enabled: true,
      model: "groq:llama-3.1-8b-instant",
    },
  });
}

Próximos pasos#

Proveedores de traducción
Todos los proveedores de LLM compatibles y el mapeo por pares de idiomas
Modos de compilación
Flujos de trabajo de desarrollo, CI y producción
Custom Locale Resolvers
Implementa una detección de idioma personalizada
Mejores prácticas
Patrones recomendados para producción

¿Te resultó útil esta página?

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