Jis aptiko 28 galimas UI eilutes, perrašė 41 vertimo įrašą keliuose failuose, sukonfigūravo tarpinę programinę įrangą ir maršrutizavimą bei sugeneravo lokalės failus 5 tikslinėms kalboms. Sąranka, konversija ir vertimas nuo pradžios iki pabaigos užtruko apie 90 minučių. globalize.now yra AI grindžiama lokalizacijos infrastruktūra, todėl išbandėme ją gamybinėje monorepozitorijoje, kad pamatytume, kas iš tikrųjų nutiks. Jokios specialiai paruoštos demonstracijos. Jokio apsauginio tinklo. Tik tikra kodų bazė su tikru sudėtingumu.
Kodas priklausė lokalizacijos industrijos veteranui, daugiau nei dešimtmetį dirbusiam architektu vienoje iš pirmaujančių vertimų valdymo platformų.
Kas buvo monorepozitorijoje?
Tai nebuvo mokomasis projektas. Monorepozitorijoje buvo Next.js žiniatinklio programėlė, Android programėlė, MCP serveriai ir trečiosios šalies paslaugos generuojama dokumentacija. Kūrėjas kasdien naudoja Claude Code, visą kūrimo procesą grindžia AI įrankiais ir visą steką buvo surinkęs per tris mėnesius.
Tikslas buvo Next.js frontend dalis. Android programėlės, MCP serverių ir su Mintlify sukurtos dokumentacijos svetainės liesti nereikėjo. Klausimas buvo, ar AI agentas tai supras be aiškaus nurodymo.
Suprato. Agentas nuskenavo visą saugyklą ir sutelkė dėmesį į Next.js programėlę. Praktiškai rankiniu būdu apibrėžti apimties neprireikė, nors kūrėjas pažymėjo, kad dėl ramybės būtų pravertusi galimybė pasakyti „konvertuokite tik /apps/web“. Tai pagrįsta pastaba, kurią verta įgyvendinti. Tačiau konversijos ji nesustabdė.
Kaip vyko konfigūravimas?
Kūrėjas pasirinko valdomąjį režimą, kad suprastų procesą. Konfigūruojant reikėjo priimti penkis sprendimus: paketų tvarkyklė (NPM, nors saugykloje taip pat buvo senas PNPM lock failas), katalogo formatas (PO/GetText, rekomenduojamas dėl komentarų palaikymo), sąrankos režimas (valdomasis), šaltinio kalba (anglų) ir tikslinės kalbos (ispanų, italų, vengrų, čekų, slovakų).
Verta paminėti vieną pastebėjimą: katalogo formato klausimas sukėlė abejonių net žmogui, turinčiam didelę lokalizacijos patirtį. Jo reakcija buvo tiesi. Jis nemanė, kad šis pasirinkimas pakankamai svarbus, kad apie jį reikėtų klausti naudotojo. Automatizuokite.
Maršrutizavimo strategija buvo paremta kelio segmentais. Domenais paremtas maršrutizavimas nebuvo pasirinktas, nes kūrėjas neturėjo papildomų domenų. Programėlėje naudojamas OAuth pagrindu veikiantis autentifikavimas, todėl prisijungimo procesai sąmoningai liko anglų kalba. Agentas tai atliko teisingai.
Ką iš tikrųjų atlieka konversijos etapas?
Tai svarbiausia dalis. Agentas Next.js programoje aptiko 28 galimus vartotojo sąsajos tekstus ir apdorojo 41 vertimo įrašą. Jis pertvarkė failus, atnaujino tarpinę programinę įrangą, pakeitė komponentų importus ir sugeneravo PO lokalės failus visoms 5 tikslinėms kalboms.
Vien konvertavimo etapas užtruko maždaug 30 minučių. Pridėjus ankstesnį parengimą ir konfigūravimą bei laiką, kurio kūrėjui savarankiškai prireikė vėliau užbaigti vertimo integraciją, visas procesas nuo pradžios iki pabaigos truko beveik 90 minučių. Tai nėra akimirksniu. Palyginimui, paprasta programa su keliais puslapiais visą procesą užbaigia greičiau nei per 15 minučių. Sudėtingai programai, turinčiai dešimtis verčiamų vietų, reikia daugiau laiko. Trukmė priklauso nuo eilučių skaičiaus, o ne nuo saugyklos dydžio.
Kūrėjas stebėjo, kaip vykdomas konvertavimo etapas, ir pasakė štai ką: eilučių išskyrimas ir kodo perrašymas yra didžiausias darbo krūvis. Būtent šio darbo kūrėjai labiausiai nenori imtis. Ankstesnėje jo įmonėje, naudojusioje pirmaujantį TMS, saugykloje esantys vertimo failai buvo tik ledkalnio viršūnė. Tikrasis vargas buvo parengimo ir internacionalizavimo darbai. O AI agentas atliko būtent šią dalį.
Tai sutampa su tuo, ką girdime iš kiekvieno kūrėjo, kuris i18n diegė rankiniu būdu. Niekas nesiskundžia pačiais vertimais. Jie skundžiasi tuo, kad reikia paliesti 40 failų, apgaubti eilutes t() iškvietimais, sugeneruoti prasmingus raktus, pertvarkyti importus ir sukonfigūruoti tarpinę programinę įrangą. Būtent šį darbą globalize.now automatizuoja.
Ar visas procesas iš tikrųjų veikė nuo pradžios iki pabaigos?
Taip. Pasibaigus tiesioginei sesijai, kūrėjas savarankiškai atliko likusius veiksmus. Jis paskelbė globalize.now Git šaką, prijungė programą prie žiniatinklio platformos, stebėjimui pasirinko globalize.now šaką ir patvirtino, kad failai buvo įkelti bei tinkamai išversti.
Jo vertinimas apie vertimo į čekų kalbą kokybę: beveik nepriekaištinga. Tai žmogaus, kuris visą karjerą profesionaliai vertino lokalizavimo rezultatus, nuomonė. Tai ne bendras pritarimas. Tai srities eksperto patvirtinimas, kad net ir nepaprastos kalbų poros rezultatas tinkamas naudoti produkcijoje.
Savarankiškai užbaigęs procesą, jis žiniatinklio programoje nurodė dvi problemas. Pirma, pakartotinai nuskaičius saugyklą buvo rodoma „i18n failų neaptikta“, nors vertimo užduotis iš tikrųjų veikė fone. Tai klaidinanti vartotojo sąsajos būsena, o ne tikras gedimas. Antra, vertimo užduotis pradėta be aiškaus sutikimo. Bet kokiam veiksmui, kuris kainuoja kreditų, turi reikėti patvirtinimo. Abi problemos yra pagrįstos UX pastabos ir šiuo metu sprendžiamos.
Kas nepavyko?
Kai kas sugedo. Tai buvo tikras testas, todėl apie tai kalbėsime atvirai.
Diegimo komanda (npx skills add globalize-now/globalize-skills) nepavyko „Windows PowerShell“. Tai buvo pirmas kartas, kai įrankis testuotas sistemoje „Windows“. Įgūdžius teko išsiųsti ZIP failu per „Swiss Transfer“, nes „Google“ užblokavo el. laiško priedą. Bendras pasirengimo trukdis: apie 15 minučių iki prasidedant tikrajam procesui.
Konvertavimo viduryje išryškėjo ES modulių ir CommonJS konfliktas. Projekte naudojamas CommonJS, tačiau vienoje vietoje agento sugeneruotas kodas numatė ES modulius. Tai nebuvo blokatorius, bet tokią situaciją reikėtų aptikti parengimo metu ir iš anksto išspręsti.
Sesijos pabaigoje, jungiant „GitHub“ saugyklą globalize.now žiniatinklio programoje, buvo parodytas tuščias puslapis. Kūrėjas naudojo „Opera“. Nebuvo nei prisijungimo lango, nei klaidos, nei turinio. Sesija baigėsi problemos neišsprendus.
Trys klaidos. Visos tikros. Visos ištaisytos arba šiuo metu taisomos.
Kodėl tikrasis stabdis yra eilučių išskyrimas?
Daugumoje i18n turinio daugiausia dėmesio skiriama vertimo kokybei, karkaso konfigūravimui arba TMS funkcijų palyginimams. Taip nepastebima vietos, kur kūrėjai iš tikrųjų praranda daugiausia laiko.
Pridėti internacionalizavimą prie esamos kodų bazės reiškia peržiūrėti kiekvieną komponentą ir rasti jame įrašytas eilutes, nuspręsti, kurias eilutes galima versti, sugeneruoti prasmingus vertimo raktus, kiekvieną eilutę apgaubti tinkamu t() arba <Trans> iškvietimu, atnaujinti importus visame failų medyje, sukurti pradinius lokalės failus ir sukonfigūruoti maršrutizavimo tarpinę programinę įrangą. Monorepozitorijoje dar reikia nustatyti, kurioms kodų bazės dalims apskritai reikia i18n.
Tai monotoniškas, klaidoms imlus darbas — būtent tokio tipo užduotims AI agentai ypač tinka. Kūrėjas, stebėjęs šį procesą, tai apibūdino aiškiai: kūrėjo požiūriu, tai yra didžiausias darbo krūvis. Tai didelis palengvėjimas. Vibe coding kūrėjai, kuriantys su AI įrankiais, dabar gali visiškai praleisti sunkiausią pasirengimo tarptautinei rinkai dalį.
Ką sužinojome apie monorepozitorijos apimties nustatymą?
Agentas monorepozitorijos apimtį nustatė netiesiogiai. Jis sutelkė dėmesį į Next.js žiniatinklio programą ir, nors jam to nenurodėme, ignoravo „Android“ kodą, MCP serverius bei „Mintlify“ dokumentaciją. Daugeliu atvejų tai yra tinkamas elgesys.
Tačiau netiesioginis apimties nustatymas nėra tas pats, kas aiškus apimties nurodymas. Kūrėjas norėjo galėti konfigūruojant pasakyti: „Konvertuok tik mano Next.js programą.“ Monorepozitorijoje, kurioje yra kelios žiniatinklio sąsajos, pavyzdžiui, klientams skirta programa ir administravimo skydelis, norėtumėte tiksliai valdyti, kuri sąsaja pirmiausia bus internacionalizuota.
Tai produkto spraga, kurią šaliname. Kol kas agentas praktiškai parenka tinkamą apimtį. Aiškus apimties nurodymas turėtų būti konfigūravimo etapas, ypač kai konvertuojama dešimtys failų.
Kaip tai atrodo, palyginti su rankiniu i18n diegimu?
Tokio sudėtingumo kodų bazėje rankinis i18n diegimas užtrunka kelias dienas. Ne todėl, kad kuris nors atskiras veiksmas būtų sudėtingas, o todėl, kad jų yra dešimtys ir kiekvienam reikia dėmesio. Praleiskite vieną eilutę — išleisite iš dalies išverstą puslapį. Neteisingai pavadinkite raktą — sukursite pasikartojančius įrašus, kurie persekios jus ištisus mėnesius. Pamirškite atnaujinti tarpinę programinę įrangą — lokalės maršrutizavimas tyliai nustos veikti.
AI agentas lygiavertį darbą nuo pradžios iki pabaigos atliko maždaug per 90 minučių. Kūrėjas, profesionaliai matęs tūkstančius i18n diegimų, tai pavadino elegantišku sprendimu.
Kūrėjams, kuriantiems su AI įrankiais, tai keičia požiūrį į tai, kada verta pridėti naujas kalbas. Jei i18n diegimas užtrunka savaitę, jį atidedate, kol įrodote produkto ir rinkos atitiktį. Jei tai trunka 90 minučių, daugiakalbę programą galite išleisti nuo pirmos dienos.
globalize.now tuo pasirūpina. Prijunkite savo saugyklą, ir konvertavimas vieną kartą įvykdomas programoje; npx skills add globalize-now/globalize-skills įgūdžiai pasirūpina tolesniais veiksmais jūsų redaktoriuje. Sužinokite, kaip tai veikia, adresu globalize.now.
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