|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

Referencia de configuración

Alfa

Lingo.dev Compiler está en fase alfa. Es inestable, no se recomienda para entornos de 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 React durante la compilación. Esta página documenta todas las opciones disponibles, con tipos, valores por defecto y ejemplos de uso.

Opciones principales#

OpciónTipoPor defectoDescripció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[]obligatorioArray 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 de sourceRoot.
modelsstring | object"lingo.dev"Configuración del proveedor de traducción. Una cadena establece el valor por defecto para todos los pares de idiomas. Un objeto asigna proveedores concretos a pares de idiomas específicos.
promptstringundefinedPrompt de sistema personalizado para el LLM de traducción. Admite los marcadores {SOURCE_LOCALE} y {TARGET_LOCALE}.
buildMode"translate" | "cache-only""translate"Controla si el Compiler genera nuevas traducciones o si usa solo las traducciones almacenadas en caché.

Opciones de desarrollo#

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

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

Persistencia del idioma#

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

OpciónTipoPor defectoDescripción
localePersistence.typestring"cookie"Mecanismo de persistencia. Actualmente admite "cookie".
localePersistence.config.namestring"locale"Nombre de la cookie que se usa para almacenar el idioma.
localePersistence.config.maxAgenumber31536000Tiempo máximo de vida de la cookie en segundos (por defecto, 1 año).

Para la 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 la generación automáticas de formas plurales:

OpciónTipoPor defectoDescripción
pluralization.enabledbooleantrueActiva o desactiva la detección automática de pluralización.
pluralization.modelstring"groq:llama-3.1-8b-instant"Modelo 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 la detección es una tarea más sencilla que la traducción.

Consulta Automatic Pluralization para ver en detalle cómo funciona la detección de plurales.

Variables de entorno#

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

VariableCuándo es obligatoriaDescripción
LINGO_BUILD_MODEOpcionalSobrescribe la opción de configuración buildMode. Establécela en "translate" o "cache-only".
LINGODOTDEV_API_KEYAl usar modelos "lingo.dev"Clave de API del motor de localización de Lingo.dev. Consíguela a través de 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",
    },
  });
}

Siguientes pasos#

Translation Providers
Todos los proveedores de LLM compatibles y la asignación por pares de idiomas
Build Modes
Flujos de trabajo de desarrollo, CI y producción
Custom Locale Resolvers
Implementa una detección de idioma personalizada
Best Practices
Patrones recomendados para producción

¿Te ha resultado útil esta página?

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