|Labs
Marcar uma demonstraçãoPlataforma
React (Lingo Compiler)
Alpha
React (MCP)React (i18n)CLI antiga (v0)
Descontinuado

Lingo.dev Compiler

  • Como funciona
  • Configuração
  • Introdução rápida ao Compiler

Frameworks

  • Integração com Next.js
  • Vite + React

Guias

  • Alternância de idioma
  • Pluralização automática
  • Substituições manuais
  • Modos de build
  • Estrutura do Projeto
  • Fornecedores de Tradução
  • Resolvers personalizados de idioma
  • Ferramentas de desenvolvimento

Referência

  • Boas práticas
  • Referência de Configuração
  • Resolução de problemas
  • Guia de migração
  • Otimização
  • Formatos de Saída

Pluralização automática

Alpha

O Lingo.dev Compiler está em alpha. É instável, não é recomendado para uso em produção e as APIs podem mudar entre versões.

O Lingo.dev Compiler deteta formas de plural no seu texto JSX e converte-as automaticamente em ICU MessageFormat. Em vez de escrever manualmente regras de plural para cada idioma, basta escrever texto natural com valores numéricos e o Compiler gera as formas de plural corretas com recurso a um LLM.

Como funciona#

1

O Compiler deteta padrões numéricos

Durante a análise da AST, o Compiler identifica nós de texto que contêm números interpolados juntamente com palavras que dependem da contagem. Por exemplo, You have {count} items contém uma variável numérica ao lado de uma palavra que muda consoante a quantidade.

2

O LLM classifica as formas de plural

Um LLM pequeno e rápido (configurável através de pluralization.model) analisa o texto e determina que palavras precisam de flexão no plural. Gera depois as categorias de plural do CLDR adequadas para cada idioma de destino.

3

É gerado ICU MessageFormat

O Compiler gera uma string em ICU MessageFormat que cobre todas as categorias de plural exigidas pelo idioma de destino.

Exemplo#

JSX de origem:

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

Resultado gerado para inglês:

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

Resultado gerado para russo (que tem quatro categorias de plural):

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

Categorias de plural do CLDR#

Idiomas diferentes usam subconjuntos distintos das seis categorias de plural do CLDR. O Compiler gera apenas as categorias exigidas por cada idioma de destino:

CategoriaDescriçãoIdiomas de exemplo
zeroQuantidade zeroÁrabe, letão
oneSingularInglês, francês, alemão, espanhol
twoDualÁrabe, hebraico, esloveno
fewPaucal / pequena quantidadeRusso, checo, polaco
manyGrande quantidadeRusso, árabe, polaco
otherGeral / predefinido (sempre obrigatório)Todos os idiomas

O inglês usa one e other. O russo usa one, few, many e other. O árabe usa as seis categorias. O Compiler trata disto automaticamente para cada idioma.

Configuração#

A pluralização está ativada por predefinição. Pode configurá-la nas opções do Compiler:

ts
{
  pluralization: {
    enabled: true,
    model: "groq:llama-3.1-8b-instant",
  },
}
OpçãoTipoPredefiniçãoDescrição
pluralization.enabledbooleantrueAtiva ou desativa a deteção automática de plural.
pluralization.modelstring"groq:llama-3.1-8b-instant"Modelo de LLM para deteção de formas de plural. Um modelo mais pequeno é suficiente, já que a deteção é mais simples do que a tradução.

Para desativar completamente a pluralização:

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

Desativar a pluralização significa que o Compiler traduz texto com números como strings simples. O resultado traduzido pode não estar gramaticalmente correto para todas as quantidades em idiomas com regras de plural complexas.

Quando a pluralização se aplica#

O Compiler deteta padrões de plural nestes casos:

  • Texto com variáveis numéricas interpoladas: {count} items, {n} messages
  • Texto com literais numéricos: You have 5 items (menos comum em interfaces dinâmicas)

O Compiler não pluraliza:

  • Texto sem referência numérica: Items in cart (não há nenhum número que permita ramificar)
  • Texto em que o número não está diretamente relacionado com uma palavra dependente da contagem

Escreva texto natural no seu JSX. O Compiler e o respetivo LLM tratam da deteção de plural e da formatação em ICU — não precisa de aprender a sintaxe do ICU MessageFormat.

Próximos passos#

Referência de configuração
Todas as opções de pluralização
Providers de tradução
Configure o LLM usado na tradução
Substituições manuais
Substitua traduções específicas quando necessário
Boas práticas
Quando ativar ou desativar a pluralização

Esta página foi útil?

Max PrilutskiyMax Prilutskiy·Atualizado há 4 meses·3 min de leitura