Referencia de configuración

Referencia completa de todas las opciones de configuración de @lingo.dev/compiler.

Opciones principales

OpciónTipoPredeterminadoDescripción
sourceRootstring"src"Directorio raíz que contiene el código fuente a traducir
lingoDirstring".lingo"Directorio para metadatos de traducción y caché
sourceLocalestring(requerido)Código de idioma de origen (p. ej., "en", "en-US")
targetLocalesstring[](requerido)Array de códigos de idioma de destino a los que traducir
useDirectivebooleanfalseSi se requiere la directiva 'use i18n' para traducción opcional
modelsstring | object"lingo.dev"Configuración del proveedor de traducción (ver Proveedores de traducción)
promptstringundefinedPlantilla de prompt de traducción personalizada
buildMode"translate" | "cache-only""translate"Modo de compilación (ver Modos de compilación)

Ejemplo

{
  sourceRoot: "./app",
  lingoDir: ".lingo",
  sourceLocale: "en",
  targetLocales: ["es", "de", "fr", "ja"],
  useDirective: false,
  models: "lingo.dev",
  buildMode: "translate",
}

Opciones de desarrollo

Configura el comportamiento específico de desarrollo mediante el objeto dev:

OpciónTipoPredeterminadoDescripción
dev.usePseudotranslatorbooleanfalseUsa traducciones falsas en lugar de IA real (recomendado para desarrollo)
dev.translationServerStartPortnumber60000Puerto inicial para el servidor de traducción (busca automáticamente 60000-60099)
dev.translationServerUrlstringundefinedURL personalizada del servidor de traducción (uso avanzado)

Ejemplo

{
  dev: {
    usePseudotranslator: true, // Fast fake translations
    translationServerStartPort: 60000, // Default port range
  }
}

¿Por qué pseudotranslator? Es instantáneo (sin llamadas a API), muestra exactamente qué se traduce y prueba tu interfaz con longitudes de texto variables, todo sin costes de API.

Persistencia de idioma

Configura cómo se persisten los cambios de idioma:

OpciónTipoPredeterminadoDescripción
localePersistence.type"cookie""cookie"Actualmente solo se admite persistencia basada en cookies
localePersistence.config.namestring"locale"Nombre de la cookie
localePersistence.config.maxAgenumber31536000Edad máxima de la cookie en segundos (predeterminado: 1 año)

Ejemplo

{
  localePersistence: {
    type: "cookie",
    config: {
      name: "user-locale",
      maxAge: 31536000, // 1 year
    },
  },
}

¿Persistencia personalizada? Implementa resolvedores de configuración regional personalizados para usar localStorage, parámetros de URL o persistencia en base de datos.

Pluralización

Configura la detección automática de pluralización:

OpciónTipoPredeterminadoDescripción
pluralization.enabledbooleantrueHabilita la detección automática de ICU MessageFormat
pluralization.modelstring"groq:llama-3.1-8b-instant"Modelo LLM a usar para la detección de formas plurales

Ejemplo

{
  pluralization: {
    enabled: true,
    model: "groq:llama-3.1-8b-instant", // Fast model for plural detection
  },
}

Cómo funciona: El compilador detecta formas plurales en tu texto (por ejemplo, "Tienes 5 elementos") y las convierte a ICU MessageFormat ({count, plural, one {1 item} other {# items}}).

Deshabilita para mejorar el rendimiento: Si no usas formas plurales, deshabilita esto para omitir las llamadas LLM para pluralización.

Proveedores de traducción

La opción models configura qué proveedor(es) LLM usar para las traducciones.

Configuración simple

Usa un único proveedor para todas las traducciones:

{
  models: "lingo.dev" // Recommended: Lingo.dev Engine
}

Configuración avanzada

Usa mapeo de pares de configuraciones regionales para control granular:

{
  models: {
    "en:es": "groq:llama-3.3-70b-versatile", // English to Spanish
    "en:de": "google:gemini-2.0-flash",      // English to German
    "*:fr": "openai:gpt-4o",                 // Any locale to French
    "*:*": "anthropic:claude-3-5-sonnet",    // Fallback for all others
  }
}

Patrones:

  • "source:target": Par de configuraciones regionales específico (por ejemplo, "en:es")
  • "*:target": Cualquier origen a destino específico (por ejemplo, "*:de")
  • "source:*": Origen específico a cualquier destino (por ejemplo, "en:*")
  • "*:*": Respaldo para todos los pares

Consulta proveedores de traducción para la sintaxis de proveedores y configuración de claves API.

Prompts de traducción personalizados

Personaliza el prompt de traducción usando marcadores de posición:

{
  prompt: `Translate from {SOURCE_LOCALE} to {TARGET_LOCALE}.
Use a formal tone and preserve all technical terms.
Do not translate brand names or product names.`
}

Marcadores de posición disponibles:

  • {SOURCE_LOCALE}: Código de configuración regional de origen (por ejemplo, "en")
  • {TARGET_LOCALE}: Código de configuración regional de destino (por ejemplo, "es")

El compilador añade contexto sobre el texto que se está traduciendo (ubicación del componente, elementos circundantes) a tu prompt personalizado.

Anulación mediante variable de entorno

Anula la configuración mediante variables de entorno:

# Override build mode
LINGO_BUILD_MODE=cache-only npm run build

# Set API key
LINGODOTDEV_API_KEY=your_key_here
GROQ_API_KEY=gsk_...
GOOGLE_API_KEY=...
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
MISTRAL_API_KEY=...
OPENROUTER_API_KEY=...

Ejemplo completo

// 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, {
    // Core
    sourceRoot: "./app",
    lingoDir: ".lingo",
    sourceLocale: "en",
    targetLocales: ["es", "de", "fr", "ja"],
    useDirective: false,

    // Build mode
    buildMode: process.env.NODE_ENV === "production" ? "cache-only" : "translate",

    // Models
    models: {
      "en:es": "groq:llama-3.3-70b-versatile",
      "*:*": "lingo.dev",
    },

    // Custom prompt
    prompt: "Translate from {SOURCE_LOCALE} to {TARGET_LOCALE}. Use a professional tone.",

    // Development
    dev: {
      usePseudotranslator: true,
      translationServerStartPort: 60000,
    },

    // Locale persistence
    localePersistence: {
      type: "cookie",
      config: {
        name: "locale",
        maxAge: 31536000,
      },
    },

    // Pluralization
    pluralization: {
      enabled: true,
      model: "groq:llama-3.1-8b-instant",
    },
  });
}

Tipos de TypeScript

Importa los tipos de configuración para seguridad de tipos:

import type { LingoConfig } from "@lingo.dev/compiler";

const config: LingoConfig = {
  // ...config
};

Preguntas frecuentes

¿Necesito configurar todas las opciones? No. Solo sourceLocale y targetLocales son obligatorios. Todos los demás tienen valores predeterminados razonables.

¿Cuál es la diferencia entre sourceRoot y lingoDir? sourceRoot es donde se encuentra tu código fuente (por ejemplo, ./app, src). lingoDir es donde se almacenan los metadatos de traducción (predeterminado: .lingo).

¿Puedo usar diferentes modelos por locale? Sí. Usa el mapeo de pares de locales en la opción models. Consulta Proveedores de traducción.

¿Debo hacer commit de .lingo/ en git? Sí. El directorio .lingo/ contiene metadatos de traducción y caché. Debe estar bajo control de versiones junto con tu código.

¿Cómo desactivo la pluralización? Establece pluralization.enabled: false. Esto omite la detección de formas plurales y reduce las llamadas al LLM.

Próximos pasos