|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

Pluralización automática

Alpha

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

El Compiler de Lingo.dev detecta las formas de plural en tu texto JSX y las convierte automáticamente a ICU MessageFormat. En lugar de escribir a mano las reglas de plural de cada idioma, escribe texto natural con valores numéricos y el compilador generará las formas correctas con ayuda de un LLM.

Cómo funciona#

1

El Compiler detecta patrones numéricos

Durante el análisis del AST, el compilador identifica nodos de texto que contienen números interpolados junto a palabras que dependen de la cantidad. Por ejemplo, You have {count} items contiene una variable numérica junto a una palabra que cambia en función de la cantidad.

2

El LLM clasifica las formas de plural

Un LLM pequeño y rápido (configurable mediante pluralization.model) analiza el texto y determina qué palabras necesitan flexión de plural. Genera las categorías de plural de CLDR adecuadas para cada idioma de destino.

3

Se genera ICU MessageFormat

El compilador genera una cadena en ICU MessageFormat que cubre todas las categorías de plural requeridas por el idioma de destino.

Ejemplo#

JSX de origen:

tsx
<p>You have {count} items in your cart</p>

Salida generada para inglés:

text
{count, plural, one {You have 1 item in your cart} other {You have # items in your cart}}

Salida generada para ruso (que tiene cuatro categorías de plural):

text
{count, plural, one {У вас # товар в корзине} few {У вас # товара в корзине} many {У вас # товаров в корзине} other {У вас # товаров в корзине}}

Categorías de plural de CLDR#

Cada idioma utiliza un subconjunto distinto de las seis categorías de plural de CLDR. El compilador genera solo las categorías necesarias para cada idioma de destino:

CategoríaDescripciónIdiomas de ejemplo
zeroCantidad ceroÁrabe, letón
oneSingularInglés, francés, alemán, español
twoDualÁrabe, hebreo, esloveno
fewPaucal / cantidad reducidaRuso, checo, polaco
manyCantidad grandeRuso, árabe, polaco
otherGeneral / por defecto (siempre obligatoria)Todos los idiomas

El inglés usa one y other. El ruso usa one, few, many y other. El árabe usa las seis categorías. El compilador lo gestiona automáticamente según el idioma.

Configuración#

La pluralización está activada por defecto. Puedes configurarla en las opciones del compilador:

ts
{
  pluralization: {
    enabled: true,
    model: "groq:llama-3.1-8b-instant",
  },
}
OpciónTipoPor defectoDescripción
pluralization.enabledbooleantrueActiva o desactiva la detección automática de plurales.
pluralization.modelstring"groq:llama-3.1-8b-instant"Modelo LLM para detectar formas de plural. Un modelo más pequeño es suficiente, ya que esta detección es más sencilla que la traducción.

Para desactivar por completo la pluralización:

ts
{
  pluralization: {
    enabled: false,
  },
}

Desactivar la pluralización significa que el compilador traducirá como cadenas simples los textos que contengan números. Puede que la salida traducida no sea gramaticalmente correcta para todas las cantidades en idiomas con reglas de plural complejas.

Cuándo se aplica la pluralización#

El compilador detecta patrones de plural en estos casos:

  • Texto con variables numéricas interpoladas: {count} items, {n} messages
  • Texto con literales numéricos: You have 5 items (menos habitual en interfaces dinámicas)

El compilador no pluraliza:

  • Texto sin referencia numérica: Items in cart (no hay ningún número a partir del que ramificar)
  • Texto en el que el número no está directamente relacionado con una palabra que depende de la cantidad

Escribe texto natural en tu JSX. El compilador y su LLM se encargan de detectar los plurales y aplicar el formato ICU; no necesitas aprender la sintaxis de ICU MessageFormat.

Siguientes pasos#

Referencia de configuración
Todas las opciones de pluralización
Proveedores de traducción
Configura el LLM que se usa para traducir
Ajustes manuales
Sobrescribe traducciones concretas cuando lo necesites
Buenas prácticas
Cuándo conviene activar o desactivar la pluralización

¿Te ha resultado útil esta página?

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