Next.js App Router projekte naudokite next-intl. React SPA ar projektui, kuris gali išaugti už vienos sistemos ribų, rinkitės react-i18next. Jei ištraukimas kompiliavimo metu ir mažesni paketai jums svarbesni už ekosistemos dydį, rinkitės Lingui. Visos trys yra vykdymo laiko i18n bibliotekos: jos pateikia vertimus jūsų komponentams, tačiau nė viena pati nesukuria raktų ar lokalės failų. globalize.now yra su AI veikianti lokalizavimo infrastruktūra, kuri iš jūsų kodų bazės sugeneruoja šiuos raktus ir katalogus bei veikia su visomis trimis bibliotekomis.
Ką iš tikrųjų daro šios trys bibliotekos?
Visos jos sprendžia tą pačią vykdymo laiko problemą: gavus raktą ir lokalę, grąžinti tinkamą eilutę, teisingai pritaikant daugiskaitą ir formatavimą. Tai apima interpoliaciją, datų ir skaičių formatavimą bei daugiskaitos taisykles naudojant ICU stiliaus pranešimus.
Nė viena iš jų nesugeneruoja vertimų. Vykdymo laiko biblioteka naudoja jau egzistuojantį katalogą. Kažkas vis tiek turi rasti kiekvieną naudotojui matomą eilutę komponentuose, pakeisti ją raktu ir kiekvienai kalbai užpildyti lokalės failą. Tai atskiras steko sluoksnis, o aiškus šių dviejų sluoksnių atskyrimas yra greičiausias būdas suprasti šį palyginimą: pasirinksite lygiai vieną vykdymo laiko biblioteką, ir ji nekonkuruoja su įrankiais, pildančiais jos katalogus. Mūsų kūrėjams skirta dokumentacija šį atskyrimą paaiškina išsamiau.
Kada verta naudoti next-intl?
Kai naudojate Next.js su App Router. next-intl yra vienintelė iš šių trijų bibliotekų, sukurta aplink App Router primityvus: asinchroninius Server Components, lokalėms pritaikytą navigaciją ir maršrutizavimo pagalbinius įrankius bei metaduomenų API. 2026 m. rugsėjį ji yra 4 versijos ir per savaitę sulaukia maždaug penkių milijonų npm atsisiuntimų, todėl praktiškai, o ne tik teoriškai, yra numatytasis pasirinkimas naujiems Next.js projektams.
Pranešimai naudoja ICU MessageFormat, todėl daugiskaita, giminė ir interpoliacija atitinka tą patį pramonėje taikomą standartą. Jei ICU sintaksė jums nauja, parengėme paprastai parašytą ICU MessageFormat vadovą. Kompromisas — susiejimas su konkrečia sistema: next-intl yra Next.js biblioteka. Jei paliksite Next.js, kartu turėsite perkelti ir i18n sluoksnį.
Kada verta naudoti react-i18next?
Kai nenaudojate Next.js arba norite didžiausios ekosistemos palaikymo. react-i18next yra React susiejimas su i18next, o maždaug keturiolika milijonų npm atsisiuntimų per savaitę daro ją neabejotinai dažniausiai naudojama React i18n biblioteka. i18next branduolys prižiūrimas daugiau nei dešimtmetį ir turi papildinių beveik viskam: katalogus per HTTP įkeliantiems backendams, kalbos aptikimo įrankiams, spartinančiojo kaupimo sluoksniams ir kitų nei React sistemų susiejimams.
Būtent šią biblioteką dauguma AI kodavimo įrankių renkasi pagal numatytuosius nustatymus. Paprašykite Cursor ar Lovable „pridėti vertimus“ prie Vite + React programėlės ir beveik visada gausite i18next nustatymą. Toks numatytasis pasirinkimas pagrįstas: biblioteka veikia visur, o jos JSON katalogo formatas yra artimiausias bendrai ekosistemos kalbai. Kompromisas — ji sukurta dar prieš Server Components, todėl App Router aplinkoje reikia daugiau papildomo sujungimo, o didžioji dalis vertimo darbo vyksta kliente, nebent pasirūpinate kitaip.
Kada Lingui yra tinkamas pasirinkimas?
Kai svarbiausia paketo dydis ir patogi darbo su šaltiniu patirtis. 2026 m. rugsėjį Lingui yra 6 pagrindinės versijos ir taiko į kompiliatorių orientuotą metodą: pranešimus rašote tiesiogiai naudodami makrokomandas, o CLI juos ištraukia į katalogus kūrimo metu. Sukompiliuoti katalogai pateikiami be vykdymo metu reikalingo analizavimo, todėl i18n sąnaudos jūsų pakete išlieka mažos.
Lingui taip pat naudoja gettext PO failus kaip katalogo formatą — su jais profesionalūs vertėjai dirba jau dešimtmečius. Per savaitę atliekama apie pusantro milijono atsisiuntimų, t. y. eilės tvarka mažiau nei react-i18next, todėl tikėkitės mažiau atsakymų „Stack Overflow“ ir mažiau trečiųjų šalių papildinių. Ji apskritai veikia su React, ne tik su Next.js, tačiau, kaip ir react-i18next, nėra sukurta aplink App Router primityvus taip, kaip next-intl.
Kaip jos atrodo palyginus iš pirmo žvilgsnio?
| Klausimas | next-intl | react-i18next | Lingui |
|---|---|---|---|
| Geriausiai tinka | Next.js App Router | Bet kuriai React programėlei, SPA | React programėlėms, kurioms svarbus paketo dydis |
| Server Components palaikymas | Integruotas iš karto | Reikia papildomo sujungimo | Reikia papildomo sujungimo |
| Pranešimų sintaksė | ICU MessageFormat | i18next JSON (ICU per papildinį) | ICU per makrokomandas |
| Katalogo formatas | JSON | JSON | PO (gettext) |
| Savaitiniai npm atsisiuntimai (2026 m. rugsėjį) | ~5 mln. | ~14 mln. | ~1,5 mln. |
| Dabartinė pagrindinė versija | v4 | v17 (i18next v26) | v6 |
Ką pasirinkti AI sugeneruotai kodų bazei?
Rinkitės pagal naudojamą sistemą, kaip aprašyta pirmiau, tačiau žinokite: būtent bibliotekos pasirinkimas nėra ta vieta, kur AI sukurtos programėlės dažniausiai susiduria su problemomis. Cursor, Claude Code ir Lovable pagal numatytuosius nustatymus generuoja į kodą įrašytas angliškas eilutes, nesvarbu, kokia i18n biblioteka įdiegta, o agentas, redaguodamas komponentą, ir toliau jas pridės net ir nustačius biblioteką.
Todėl tikroji seka tokia: pasirinkite vykdymo laiko biblioteką, kurios reikia jūsų sistemai, o ištraukimą ir katalogų priežiūrą spręskite kaip atskirą problemą. Next.js atvejui visą nustatymą aprašėme straipsnyje kaip pridėti i18n prie Cursor sukurto Next.js projekto, o Next.js integracijos puslapyje paaiškinta, kaip globalize.now paruošia next-intl skirtus raktus ir lokalės failus dar prieš bet kokį vykdymo laiko sujungimą.
Ar naudojant vykdymo laiko biblioteką vis dar reikia lokalizavimo infrastruktūros?
Taip, nes biblioteka tik skaito katalogus — daugiausia laiko atima jų kūrimas ir priežiūra. globalize.now veikia šiame sluoksnyje: prijungiate savo saugyklą, o jis vieną kartą konvertuoja kodų bazę, pakeisdamas į kodą įrašytas eilutes raktais ir sugeneruodamas lokalės failus. Po šios vienkartinės konversijos push užduotys išverčia naujus katalogo įrašus, kuriuos įveda jūsų commitai.
Išvestis yra JSON arba PO — JSON next-intl ir i18next nustatymams, PO — Lingui gimtajam formatui, todėl katalogai pateikiami tokia forma, kokią jūsų vykdymo laiko biblioteka jau naudoja. Jei jūsų programėlėje jau yra dalinis i18n nustatymas, tai taip pat suderinama: globalize.now veikia su esamu i18n, o ne jį pakeičia. Planus ir naudojimo įkainius rasite kainų puslapyje.
Nė viena iš šių trijų bibliotekų nėra neteisingas pasirinkimas. next-intl, jei naudojate App Router; react-i18next, jei norite didžiausios ekosistemos; Lingui, jei norite ištraukimo kompiliavimo metu ir PO katalogų. Pasirinkite vieną, nelaikykite eilučių komponentuose ir leiskite katalogų sluoksniui pasirūpinti likusiu darbu.
globalize.now paverčia užkoduotą programos tekstą į vertimui paruoštus lokalės failus ir juos atnaujina, kai jūs diegiate naujus pakeitimus.
Išbandyti globalize.now nemokamai