|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

Pluralización automática

Alfa

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

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

Cómo funciona#

1

El Compiler detecta patrones numéricos

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

2

El LLM clasifica las formas plurales

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 plurales de CLDR adecuadas para cada idioma de destino.

3

Se genera ICU MessageFormat

El Compiler genera una cadena en ICU MessageFormat que cubre todas las categorías plurales 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 plurales):

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

Categorías plurales de CLDR#

Los distintos idiomas usan diferentes subconjuntos de las seis categorías plurales de CLDR. El Compiler genera solo las categorías requeridas por 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 / predeterminada (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 Compiler se encarga de esto automáticamente según el idioma.

Configuración#

La pluralización está habilitada de forma predeterminada. Configúrala en las opciones del Compiler:

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

Para desactivar por completo la pluralización:

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

Desactivar la pluralización significa que el Compiler traduce como cadenas simples los textos que contienen números. Es posible 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 Compiler 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 común en interfaces dinámicas)

El Compiler no pluraliza:

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

Escribe texto natural en tu JSX. El Compiler y su LLM se encargan de detectar los plurales y darles 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 la traducción
Anulaciones manuales
Sobrescribe traducciones específicas cuando sea necesario
Mejores prácticas
Cuándo activar o desactivar la pluralización

¿Te resultó útil esta página?

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