Jei jūsų saugykloje jau sukonfigūruoti next-intl, react-i18next, i18next arba Lingui — diske yra lokalės aplankai, priklausomybės package.json, tarpinė programinė įranga ar konfigūracijos failai — jums nereikia dar vieno įrankio, apsimetančio, kad pradedate nuo nulio. globalize.now yra DI pagrįsta lokalizacijos infrastruktūra. L1 (jau internacionalizuotu) režimu produktas praleidžia destruktyvų pradinės sąrankos etapą ir lieka sinchronizavimo režime: nuskaito jūsų šaltinio kalbą, po kiekvieno push palygina kitas lokales ir atidaro pull request su užpildytais vertimais. Šiame straipsnyje paaiškinama, ką šis režimas keičia, ko jis neliečia ir ką daryti, jei aptikimas suklysta.
Kodėl dauguma i18n patarimų daro prielaidą, kad pradedate nuo nulio?
I18n įrankių rinkodaros tekstai vis dar daugiausia orientuoti į „greenfield“ scenarijų: neįdiegta biblioteka, nėra lokalės failų, neatliktas ištraukimas. Dauguma gamybinių kodų bazių tokios nėra.
Per pastarąsias kelias savaites trys nesusijusios pirmosios pažinties sesijos turėjo tą pačią eigą: komanda kartą pabandė įdiegti i18n, pasiekė pusiau veikiančią būseną ir sustojo — nes atrodė, kad išmesti viską ir pradėti iš naujo būtų blogiau nei gyventi su šia netvarka.
Jei tai jūsų situacija, šis įrašas skirtas būtent jums.
Kaip iš tikrųjų atrodo iš dalies internacionalizuota kodų bazė?
Šie modeliai kartojasi vėl ir vėl (detalės pakeistos):
- Next.js + next-intl programa, kurioje dauguma komponentų naudoja
t(), tačiau senesni maršrutai vis dar pateikia kode įrašytą anglų kalbą, nes pirmasis migracijos etapas taip ir nebuvo baigtas. - React + i18next projektas, kuriame lokalės failai egzistuoja, bet juose yra tik angliškos reikšmės — vertimas visada buvo nukeliamas į kitą ketvirtį.
messages/medis, kuriameen.jsonyra pilnas, oes.jsoniš esmės tuščias.- Į maketą integruotas kalbos perjungiklis, kuris kartais grąžina 404, nes maršrutizacija buvo migruota tik iš dalies.
Nė vienam iš šių projektų nereikia pradėti iš naujo su globalize.now. Jiems reikia jį panaudoti darbui užbaigti.
Kokių požymių globalize.now ieško pirmojo paleidimo metu?
Aptikimas vyksta dviem, o ne vienu žingsniu.
Pirmiausia nurodykite globalize.now savo saugyklą. Prijungus ją programoje, aptikimas ir vienkartinė konversija bus atlikti automatiškai. Jei norite, kad šį etapą vietoje atliktų jūsų agentas, įdiekite įgūdžius — į .claude/skills/ bus įrašyti keli veiksmų plano failai, o visa kita saugykloje liks nepakeista:
npx skills add globalize-now/globalize-skills
Tada pateikite užklausą agentui — Claude Code, Cursor arba Codex. Agentas perskaitys įdiegtus įgūdžius ir panaudos juos jūsų saugyklai nuskenuoti:
Set up localization for my project
Būtent šiame antrajame žingsnyje iš tikrųjų vykdomas aptikimas. Agentas ieško:
package.jsonpriklausomybių:next-intl,react-i18next,i18next,@lingui/core,@lingui/react,@lingui/macroarba bet kurioi18next-*papildinio.- Lokalės aplankų:
messages/saugyklos šaknyje,locales/aplanko arbasrc/i18n/su lokalėms skirtais poaplankiais. - Esamų lokalės failų:
en.json,en.po,en.yml,en.yamlarba numatytosios lokalės failo, kurio tikisi jūsų biblioteka. - Karkasui būdingos konfigūracijos:
i18n.config.ts, next-intl tarpinės programinės įrangos,lingui.config.jsarba lygiaverčių nustatymų.
Jei yra bent du iš šių požymių, projektas laikomas L1 — jau internacionalizuotu — ir sąrankos eiga nukreipiama kita šaka, užuot vykdžius visą „greenfield“ pagrindą. Daugiau informacijos rasite Pagalbos centro straipsnyje apie esamą i18n.
Ko L1 režimas atsisako keisti?
Tai dalis, kuri žmonėms svarbiausia. L1 režimu globalize.now ne:
- Nevykdo plataus eilučių ištraukimo etapo, skenuojančio komponentus ir ieškančio kode įrašytų literalų.
- Negeneruoja naujų vertimo raktų ir neperdėlioja jau jūsų įrašytos raktų struktūros.
- Nesukuria lokalės failų kalboms, kurių dar nesukonfigūravote.
- Neįterpia kalbos perjungiklio. Jei jį turite, jis lieka. Jei neturite, mes jo nepridedame.
- Neperrašo maršrutizacijos, tarpinės programinės įrangos ar karkaso konfigūracijos už jus.
Jūsų esama i18n sąranka lieka jūsų. Šiuo režimu jos nepertvarkome.
Ką L1 sinchronizavimo režimas daro po aptikimo?
L1 pirmiausia skirtas sinchronizavimui. Užbaigus aptikimą:
- Nuskaitome esamus lokalės failus, kad suprastume dabartinę raktų struktūrą ir kuri kalba yra pagrindinis šaltinis.
- Prijungiate GitHub saugyklą per globalize.now CLI arba žiniatinklio programą.
- Po kiekvieno push į pagrindinę šaką palyginame šaltinio kalbos failą su kitomis lokalėmis. Trūkstami vertimai užpildomi DI sugeneruotu tekstu, atsižvelgiant į jūsų sukonfigūruotą žodyną ir stiliaus vadovą.
- Pasirodo pull request su atnaujintais lokalės failais. Jūs jį peržiūrite ir sujungiate. Mes niekada nesujungiame už jus.
Štai ir visa eiga. Nereikia prižiūrėti vertimų valdymo skydelio. Nereikia rankinio eksporto. Nereikia kaitalioti failų formatų.
Palyginkite tai su L0 eiga straipsnyje Kaip per 15 minučių pridėti i18n prie Cursor sukurto Next.js projekto? — tas pats produktas, bet kitas pradžios kelias.
Kas nutinka, jei tik dalis naudotojo sąsajos naudoja vertimo iškvietimus?
Tai įprasta migracijos vidurio būsena: nauji ekranai naudoja t(), o senieji vis dar praleidžia literalus. Ne sinchronizavimo režimu įgūdžių procesas jau raktais susietas eilutes laiko užrakintomis: jis sutelkia dėmesį į dar nesusietus literalus ir išsaugo esamus raktus. Komandos, kas savaitę leidžiančios naujas versijas migracijos viduryje, mūsų žurnaluose yra tipiški „mišraus L1“ naudotojai.
Išsamų agento atliekamos konversijos pasakojimą sudėtingoje medžio struktūroje rasite straipsnyje Kas nutinka, kai DI agentas internacionalizuoja tikrą monorepozitoriją?.
Ką daryti, jei sąrankos eiga vis tiek sukūrė visą pagrindą?
Griežtiname aptikimo logiką, todėl netinkama šaka neturėtų būti pasirenkama. Tačiau jei npx skills add globalize-now/globalize-skills jau sugeneravo daugiau nei 100 failų pakeitimų, perrašančių jūsų lokalės aplanką, įdėjusių neprašytą perjungiklį ar pakeitusių maršrutizaciją — neįrašykite pakeitimų. Naudodami atsiliepimų valdiklį (apatiniame dešiniajame kampe) pateikite savo package.json priklausomybių sąrašą ir trumpai aprašykite lokalės aplankų struktūrą; galėsime rankiniu būdu nukreipti saugyklą į L1. Savitarnos --existing-i18n CLI vėliavėlė netrukus bus išleista.
Atkūrimas jūsų kompiuteryje atliekamas naudojant git restore . ir, jei reikia, git clean -fd. Nieko neįkėlėme; gamybinė dalis nenukentėjo; agentas keitė tik jūsų vietinę šaką. Visas paaiškinimas pateiktas straipsnyje globalize_skills atliko per daug pakeitimų — kas nutiko?.
Kodėl pasakojimas „pabandėme i18n ir sustojome“ dabar tapo įprastu?
Tai ne šūkis — tai pasikartojantis modelis. Per šešias savaites įvyko trys nepriklausomi pirmieji pokalbiai, ir kiekvienas baigėsi panašiai: „Taip, mes tai bandėme — dabar viskas veikia kreivai.“ „Chrome“ plėtinys, turintis dešimtis tūkstančių naudotojų, sulaukė staigaus srauto iš Korėjos ir išprovokavo nebaigtą migraciją į „next-intl“. Su „Lovable“ sukurta programėlė, diegiant daugiakalbystę, sugadino pati save ir buvo grąžinta į ankstesnę versiją. Vibe coding būdu sukurtame „React“ + „Vite“ saugykloje buvo prijungtas „i18next“, užpildyta maždaug trečdalis raktų — ir darbas sustojo.
Puikiai tvarkinga L0 kodų bazė, ieškanti bibliotekos, tikrai egzistuoja, tačiau ji nėra kliūtis. Kliūtis — kodų bazė, kurioje tai jau kartą buvo bandyta padaryti ir dabar niekas nenori prisiimti atsakomybės už pasekmes.
Tam kodų bazės tipui skirtas L1 režimas.
Kiek tai kainuoja?
20 € per mėnesį. Vienas planas. Įskaičiuota maždaug 16 000 žodžių (tai atitinka apie 80 įprastų programėlės ekranų). Užsiregistravus suteikiamas 5 € vertimo kreditas. Nesvarbu, ar esate L0 etape ir pradedate naują projektą, ar esate L1 etape ir tempiate trejų metų lokalės skolą — kaina ta pati. Skaičiuojame apdorojimo apimtį ir automatizavimą, o ne tai, koks netvarkingas buvo pirmasis commit.
Kuriuos įrašus ir pagalbos centro dokumentus turėčiau skaityti toliau?
- L0 sąrankos vadovas „Cursor“ skirtoje „Next.js“ programėlei
- Monorepo atvejo analizė — ką iš tikrųjų pakeitė agentas
- Kodėl klasikiniai TMS įrankiai sunkiai prisitaiko prie šiuolaikinių, su „Git“ susietų stekų
- Pagalbos centras: jau turiu i18n — ką daro globalize.now?
- Pagalbos centras: globalize_skills atliko per daug pakeitimų
Pateikite naudotojams kalbas, kurių jie jau tikisi pagal jūsų srautą — prijunkite saugyklą prie globalize.now arba sužinokite, kaip automatizavimas per Git push įsilieja į esamą komandos darbo eigą.
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