Jei jūsų Lovable programa atvaizduojama anglų kalba, nesvarbu, kokią kalbą pridėtumėte, priežastis yra steko pokytis: nuo 2026 m. gegužės vidurio nauji Lovable projektai veikia su TanStack Start ir serverio pusės atvaizdavimu, o ne su sena React ir Vite vieno puslapio programa. globalize.now yra dirbtiniu intelektu paremta lokalizacijos infrastruktūra, pritaikyta šiam stekui: ji ištraukia jūsų eilutes į į saugyklą įtrauktus Lingui PO katalogus, todėl tinkama kalba atvaizduojama serveryje, o ne pakeičiama naršyklėje. Sprendimas nėra dar vienas valdiklis. Reikia perkelti vertimus į savo saugyklą, kur serveris gali juos atvaizduoti, o paieškos sistemos — indeksuoti.


Kodėl staiga tapo sunkiau lokalizuoti Lovable programą?

Nes pasikeitė pagrindas, kuriuo rėmėsi senosios rekomendacijos. Dauguma vadovų „kaip išversti Lovable programą“ daro prielaidą, kad naudojama kliento pusėje atvaizduojama vieno puslapio programa, kurioje valdiklis gali po įkėlimo perrašyti DOM ir niekas to nepastebi. Naujuose projektuose ši prielaida nebegalioja.

Lovable perėjo prie TanStack Start su SSR, kad tikrintuvai pirmosios užklausos metu gautų visiškai atvaizduotą HTML ir nereikėtų vykdyti JavaScript. Tai realus SEO pranašumas, tačiau jis pakeičia vertimo veikimo principą. Kai pirmasis atsakymas jau atvaizduotas, versti jį vėliau naršyklėje yra per vėlu.

Jei programą sukūrėte per pastaruosius kelis mėnesius ir įdiegėte vykdymo metu veikiantį vertimo valdiklį, matote simptomą: pirmiausia blyksi angliškas tekstas, tada jis pakeičiamas. Lovable integracija su globalize.now sukurta būtent tam, kad tai būtų sprendžiama tinkamame sluoksnyje.


Kas iš tikrųjų pasikeitė Lovable pereinant prie TanStack Start?

Atvaizdavimo modelis pasikeitė iš kliento pusės į serverio pusę. Anksčiau Lovable generuodavo vieno puslapio programas su React ir Vite, diegiamas kaip statiniai failai ir visiškai atvaizduojamas naršyklėje. Dabar pagrindas yra TanStack Start — viso steko React sistema su kiekvieno maršruto SSR, SSG ir CSR bei kartu su komponentais laikomomis serverio funkcijomis.

Lokalizacijai svarbūs trys dalykai. Pirma, HTML sukuriamas serveryje prieš pasiekiant naršyklę, todėl kalba parenkama serveryje. Antra, maršrutizavimas dabar palaiko tikrus atskirų lokalių URL. Trečia, viskas, kas priklauso nuo tik naršyklėje pasiekiamų API kalbai parinkti, įvyksta serveriui jau pasirinkus vieną kalbą.

Būtent dėl trečiojo punkto sugenda dauguma konfigūracijų. localStorage išsaugota lokalė serveriui nematoma, todėl serveris atvaizduoja numatytąją kalbą, o klientas ją pataiso po akimirkos.


Kodėl vykdymo metu veikiantys vertimo valdikliai SSR režimu pirmiausia parodo anglišką tekstą?

Nes jie verčia tik serveriui jau išsiuntus anglišką turinį. Naujajame steke seka tokia: serveris atvaizduoja HTML numatytąja kalba, naršyklė jį parodo, tada įkeliamas valdiklio JavaScript ir perrašo tekstą. Tarpas tarp atvaizdavimo ir perrašymo yra angliško teksto blyksnis, o dabar tai yra struktūrinė problema, ne derinimo klausimas.

SEO kaina dar didesnė nei pats blyksnis. Tikrintuvas perskaito pirmąjį atsakymą ir pereina toliau. Jei išverstas tekstas atsiranda tik paleidus kliento pusės JavaScript, tikrintuvas indeksuoja anglų kalbą visoms lokalėms, todėl negaunate atskirų kalbų puslapių, galinčių konkuruoti paieškoje. Visa priežastis, dėl kurios Lovable perėjo prie SSR ir indeksuojamo HTML, panaikinama verčiant naršyklėje.

Į saugyklą įtraukti katalogai šios problemos išvengia iš esmės. Kai vertimo eilutės saugomos jūsų saugykloje, TanStack Start serverio pusėje pateikia prašomą lokalę, todėl pirmasis atsakymas jau būna teisingas. Tai esminis skirtumas tarp infrastruktūros, esančios jūsų kodų bazėje, ir valdiklio, veikiančio virš jos — todėl vykdymo metu veikiantys įrankiai, tokie kaip Weglot, geriau tiko senajam SPA modeliui nei naujajam. Išsamesnį sinchronizavimo problemos paaiškinimą rasite straipsnyje kodėl Lovable vertimai lūžta po kiekvieno įkėlimo.


Kaip sukurti daugiakalbę TanStack Start Lovable programėlę?

Perkelkite vertimą į serverį, o katalogus laikykite savo saugykloje. Naujojoje steko versijoje tai reiškia keturis konkrečius veiksmus, ir nė vienam iš jų nereikia rankiniu būdu redaguoti lokalės failų.

  1. Pridėkite lovable-i18n įgūdį ir leiskite Lovable sukonfigūruoti i18n. Savo Lovable darbo srityje pridėkite lovable-i18n įgūdį, tada paprašykite Lovable nustatyti internacionalizaciją. Jis įdiegs Lingui, išskirs jūsų kode esančias UI eilutes į pranešimų katalogus ir sukonfigūruos teikėją. Už redaktoriaus ribų tą pačią sąranką įdiegsite naudodami npx skills add globalize-now/globalize-skills (pridėkite --all, jei norite įdiegti visiems agentams).
  2. Nukreipkite lokales naudodami pasirenkamą TanStack kelio parametrą. TanStack Router pasirenkamiems kelio parametrams naudoja {-$locale}, todėl maršrutas, apibrėžtas kaip /{-$locale}/about, atitiks ir /about numatytajai kalbai, ir /es/about ispanų kalbai. Taip kiekviena kalba gauna atskirą, paieškos sistemoms pasiekiamą URL, o ne vieną URL, kurio tekstas pakeičiamas naršyklėje.
  3. Nustatykite lokalę serveryje, o ne localStorage. Aktyvią kalbą saugokite slapuke, kad SSR apdorotuvas galėtų ją perskaityti iš užklausos. Naudojant Lingui, serveris prieš sukurdamas maršrutizatorių iškviečia setupLocaleFromRequest(), o kliento hidratacija prieš atvaizdavimą iškviečia dynamicActivate() su serverio perduota locale. Ta pati reikšmė abiejose pusėse reiškia, kad nebus hidratacijos neatitikties ir kalbos mirgėjimo.
  4. Laikykite katalogus savo saugykloje ir sinchronizuokite po kiekvieno įkėlimo. PO katalogai yra į saugyklą įtraukti failai, o ne tiekėjo vykdymo metu teikiama paslauga. Toliau kurdami programėlę Lovable ir atsirandant naujoms eilutėms, turėsite jas vėl išskirti ir išversti — būtent ši dalis, atliekama rankiniu būdu, ilgainiui pasensta. Tai darbas, kurį globalize.now atlieka automatiškai, todėl katalogai išlieka aktualūs be rankinio eksporto.
// server: resolve locale before the router exists
const locale = getLocaleFromCookie(request) ?? "en";
await setupLocaleFromRequest(locale);

// client: activate the SAME locale before first render
await dynamicActivate(serverLocale);

Kadangi tai tikra nuosekli procedūra su į saugyklą įtraukiamu rezultatu, ji veikia kaip įprastas versijuojamas kodas: ją galima peržiūrėti pull request'e, palyginti pakeitimus ir perkelti, jei kada nors atsisakytumėte Lovable.


Kur globalize.now vieta TanStack Start i18n steke?

Jis yra vienu sluoksniu žemiau vykdymo bibliotekos ir vienu sluoksniu aukščiau vertimo variklio. TanStack Start ir Lingui pateikia vertimus vykdymo metu, o DeepL arba LLM sukuria pačius vertimus. globalize.now yra tarpinė infrastruktūra: ji sugeneruoja raktus ir PO katalogus bei palaiko jų sinchronizavimą, todėl vykdymo aplinka visada turi ką nors teisingo atvaizduoti.

Praktiškai Lovable kūrėjui tai reiškia, kad nebereikia nuolat prižiūrėti lokalės failų. Įdiegiate įgūdį, vieną kartą pateikiate užklausą Lovable, o kiekvienas vėlesnis įkėlimas išskiria naujas eilutes, užpildo katalogus ir pateikia pakeitimą kaip įprastą PR. Jokio grįžimo į valdymo skydą, pakartotinio eksporto ar neatitikimo tarp to, ką rodo programėlė, ir to, kas yra kataloguose.

Kainodara paprasta — vienas planas: 20 € per mėnesį vienai darbo sričiai, įskaitant 20 € vertimo kreditą (apie 200 000 žodžių) per mėnesį, o vėliau taikomas žetonais pagrįstas naudojimas pagal tą patį simbolio tarifą. Nėra mokesčių už naudotojų vietas ar kalbas, o registruojantis suteikiamas 5 € kreditas ir nereikia kortelės. Įprasta Lovable programėlė su penkiomis lokalėmis į šį limitą telpa be problemų. Jei reikia daugiau techninių detalių kūrėjams, skaitykite puslapius globalize.now kūrėjams ir vibe koduotojams, o likusią steko dalį apžvelgia produkto apžvalga.


Jūsų Lovable programėlė lieka anglų kalba, nes vertimas vyksta ne ten, kur reikia — naršyklėje, po to, kai serveris jau pasirinko kalbą. Perkelkite vertimus į savo saugyklą, ir serveris pirmosios užklausos metu pateiks tinkamą kalbą. globalize.now pasirūpina išskyrimu ir sinchronizavimu, todėl sąranką atliekate vieną kartą, o po kiekvieno įkėlimo ji išlieka aktuali.

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