Alfa
Lingo.dev Compiler je ve fázi alfa. Je nestabilní, nedoporučujeme ho pro produkční nasazení a API se mohou mezi jednotlivými verzemi měnit.
Lingo.dev Compiler rozpozná tvary množného čísla v textu JSX a automaticky je převede do ICU MessageFormat. Místo ručního psaní pravidel pro množné číslo pro každý jazyk stačí psát přirozený text s číselnými hodnotami a Compiler pomocí LLM vygeneruje správné tvary.
Jak to funguje#
Compiler rozpozná číselné vzory
Při analýze AST Compiler identifikuje textové uzly, které obsahují interpolovaná čísla spolu se slovy závislými na počtu. Například You have {count} items obsahuje číselnou proměnnou vedle slova, jehož tvar se mění podle množství.
LLM určí tvary množného čísla
Malý a rychlý LLM (konfigurovatelný přes pluralization.model) analyzuje text a určí, která slova je potřeba skloňovat podle množného čísla. Pro každý cílový jazyk pak vygeneruje odpovídající kategorie množného čísla CLDR.
Vygeneruje se ICU MessageFormat
Compiler vytvoří řetězec ICU MessageFormat, který pokrývá všechny kategorie množného čísla vyžadované cílovým jazykem.
Příklad#
Zdrojové JSX:
<p>You have {count} items in your cart</p>Vygenerovaný výstup pro angličtinu:
{count, plural, one {You have 1 item in your cart} other {You have # items in your cart}}Vygenerovaný výstup pro ruštinu (která má čtyři kategorie množného čísla):
{count, plural, one {У вас # товар в корзине} few {У вас # товара в корзине} many {У вас # товаров в корзине} other {У вас # товаров в корзине}}Kategorie množného čísla CLDR#
Různé jazyky používají různé podmnožiny šesti kategorií množného čísla CLDR. Compiler generuje jen ty kategorie, které jsou pro každý cílový jazyk potřeba:
| Kategorie | Popis | Příklady jazyků |
|---|---|---|
zero | Nulové množství | Arabština, lotyština |
one | Jednotné číslo | Angličtina, francouzština, němčina, španělština |
two | Duál | Arabština, hebrejština, slovinština |
few | Paukal / malé množství | Ruština, čeština, polština |
many | Velké množství | Ruština, arabština, polština |
other | Obecná / výchozí (vždy povinná) | Všechny jazyky |
Angličtina používá one a other. Ruština používá one, few, many a other. Arabština používá všech šest kategorií. Compiler to automaticky řeší podle jazyka.
Konfigurace#
Pluralizace je ve výchozím nastavení aktivní. Nastavíte ji v možnostech Compileru:
{
pluralization: {
enabled: true,
model: "groq:llama-3.1-8b-instant",
},
}| Možnost | Typ | Výchozí hodnota | Popis |
|---|---|---|---|
pluralization.enabled | boolean | true | Zapne nebo vypne automatické rozpoznávání množného čísla. |
pluralization.model | string | "groq:llama-3.1-8b-instant" | LLM model pro rozpoznávání tvarů množného čísla. Menší model stačí, protože rozpoznávání je jednodušší než překlad. |
Jak pluralizaci úplně vypnout:
{
pluralization: {
enabled: false,
},
}Když pluralizaci vypnete, Compiler bude texty obsahující čísla překládat jako obyčejné řetězce. V jazycích se složitými pravidly pro množné číslo pak nemusí být přeložený výstup pro všechny hodnoty gramaticky správně.
Kdy se pluralizace použije#
Compiler rozpozná vzory pro množné číslo v těchto případech:
- Text s interpolovanými číselnými proměnnými:
{count} items,{n} messages - Text s číselnými literály:
You have 5 items(méně běžné v dynamickém UI)
Compiler nepluralizuje:
- Text bez číselného odkazu:
Items in cart(není podle čeho větvit) - Text, kde číslo přímo nesouvisí se slovem závislým na počtu
Pište v JSX přirozený text. Compiler a jeho LLM se postarají o rozpoznání množného čísla i formátování do ICU — syntaxi ICU MessageFormat se učit nemusíte.
