Ja jūsu Lovable lietotne tiek renderēta angļu valodā neatkarīgi no tā, kādu valodu pievienojat, iemesls ir izmaiņas stekā: kopš 2026. gada maija vidus jaunie Lovable projekti tiek veidoti uz TanStack Start bāzes ar servera puses renderēšanu, nevis vecās React un Vite vienas lapas lietotnes formā. globalize.now ir mākslīgā intelekta darbināma lokalizācijas infrastruktūra, kas iekļaujas šajā jaunajā stekā, ekstraktējot jūsu tekstus iesūtītos (committed) Lingui PO katalogos, lai serverī tiktu renderēta pareizā valoda, nevis tā tiktu nomainīta pārlūkprogrammā. Risinājums nav vēl viens rīks. Risinājums ir tulkošanas pārcelšana jūsu repozitorijā, kur serveris to var renderēt un meklētājprogrammas — indeksēt.


Kāpēc jūsu Lovable lietotnes lokalizēšana pēkšņi kļuva grūtāka?

Tāpēc, ka mainījās pamats, uz kura balstījās vecie ieteikumi. Vairums "iztulko savu Lovable lietotni" ceļvežu pieņem, ka runa ir par klientpusē renderētu vienas lapas lietotni, kurā rīks var pārrakstīt DOM pēc ielādes, un neviens to nepamana. Jauniem projektiem šis pieņēmums tagad vairs neattiecas.

Lovable pārcēla jaunos projektus uz TanStack Start ar SSR, lai rāpotāji saņemtu pilnībā renderētu HTML jau pirmajā pieprasījumā, bez nepieciešamības izpildīt JavaScript. Tas ir reāls ieguvums SEO ziņā, taču tas apgriež otrādi to, kā tulkošanai jādarbojas. Kad pirmā atbilde jau ir renderēta, to tulkot pēc tam pārlūkprogrammā ir par vēlu.

Ja lietotni izveidojāt pēdējo pāris mēnešu laikā un pievienojāt izpildlaika tulkošanas rīku, jūs redzat tieši šo simptomu: uz mirkli parādās angļu teksts, tad notiek nomaiņa. Lovable integrācija ar globalize.now pastāv tieši tāpēc, lai to risinātu tajā slānī, kur tas pieder.


Kas patiesībā mainījās, kad Lovable pārgāja uz TanStack Start?

Renderēšanas modelis mainījās no klientpuses uz servera pusi. Iepriekš Lovable ģenerēja vienas lapas lietotnes, kas veidotas ar React un Vite, izvietotas kā statiski faili un pilnībā renderētas pārlūkprogrammā. Tagad pamatā ir TanStack Start — pilna steka React ietvars ar SSR, SSG un CSR katram maršrutam atsevišķi, kā arī servera funkcijas, kas atrodas kopā ar komponentēm.

Lokalizācijai svarīgas ir trīs lietas. Pirmkārt, HTML tiek radīts serverī, pirms tas nonāk pārlūkprogrammā, tāpēc valoda tiek izlemta servera pusē. Otrkārt, maršrutēšana tagad atbalsta īstas, katrai lokālei paredzētas URL adreses. Treškārt, viss, kas paļaujas tikai uz pārlūkprogrammas API, lai izvēlētos valodu, izpildās pēc tam, kad serveris jau ir izlēmis, kāda tā būs.

Tieši trešais punkts ir tas, kur mēdz slēpties vairums nepareizu iestatījumu. Lokāle, kas saglabāta localStorage, serverim nav redzama, tāpēc serveris renderē noklusējuma valodu, un klients to izlabo tikai mirkli vēlāk.


Kāpēc izpildlaika tulkošanas rīki uz mirkli parāda angļu valodu SSR režīmā?

Tāpēc, ka tie tulko tikai pēc tam, kad serveris jau ir nosūtījis angļu valodas versiju. Jaunajā stekā secība ir šāda: serveris renderē HTML noklusējuma valodā, pārlūkprogramma to attēlo, un tikai tad ielādējas rīka JavaScript un pārraksta tekstu. Atstarpe starp attēlošanu un pārrakstīšanu arī ir tas mirklis, kad redzams angļu teksts, un tagad tā ir strukturāla, nevis vienkārši precizēšanas problēma.

SEO izmaksas ir sliktākas nekā šī īslaicīgā parādīšanās. Rāpotājs nolasa pirmo atbildi un dodas tālāk. Ja iztulkotais teksts parādās tikai pēc klientpuses JavaScript izpildes, rāpotājs indeksē angļu valodu katrai lokālei, un jūs nesaņemat nevienu lapu, kas varētu ierindoties attiecīgajā valodā. Viss iemesls, kāpēc Lovable pārgāja uz SSR, — indeksējamu HTML — tiek anulēts, ja tulkošana notiek pārlūkprogrammā.

Iesūtīti (committed) katalogi šo problēmu novērš pēc būtības. Kad tulkojamie teksti atrodas jūsu repozitorijā, TanStack Start renderē pieprasīto lokāli serverī, tāpēc pirmā atbilde jau ir pareiza. Tieši šī ir noturīga atšķirība starp infrastruktūru, kas dzīvo jūsu kodā, un rīku, kas darbojas virs tā, un tieši tāpēc izpildlaika rīki, piemēram, Weglot, labāk iederas vecajā SPA modelī, nevis jaunajā. Sīkāku analīzi par sinhronizācijas problēmu skatiet rakstā kāpēc Lovable tulkojumi salūst pēc katra push.


Kā padarīt TanStack Start bāzētu Lovable lietotni daudzvalodīgu?

Pārceliet tulkošanu uz serveri un turiet katalogus savā repozitorijā. Konkrēti, jaunajā stekā tie ir četri soļi, un nevienam no tiem nav nepieciešams manuāli rediģēt lokalizācijas failus.

  1. Pievienojiet lovable-i18n prasmi (skill) un ļaujiet Lovable pašam sakonfigurēt i18n. Savā Lovable darbvietā pievienojiet lovable-i18n prasmi, pēc tam lūdziet Lovable iestatīt internacionalizāciju. Tas instalē Lingui, ekstraktē jūsu burtiski rakstītos UI tekstus ziņojumu katalogos un konfigurē nodrošinātāju (provider). Ārpus redaktora tas pats iestatījums tiek instalēts ar npx skills add globalize-now/globalize-skills (pievienojiet --all, lai instalētu visiem aģentiem).
  2. Maršrutējiet lokāles ar TanStack izvēles ceļa parametru. TanStack Router izmanto {-$locale} neobligātiem ceļa parametriem, tāpēc maršruts, kas definēts kā /{-$locale}/about, atbilst gan /about jūsu noklusējuma valodai, gan /es/about spāņu valodai. Tas nodrošina, ka katrai valodai ir sava, atsevišķa, rāpotājiem indeksējama URL adrese, nevis viena URL adrese, kuras teksts mainās pārlūkprogrammā.
  3. Noskaidrojiet lokāli serverī, nevis localStorage. Saglabājiet aktīvo valodu sīkdatnē, lai SSR apstrādātājs to varētu nolasīt no pieprasījuma. Ar Lingui serveris izsauc setupLocaleFromRequest() pirms maršrutētāja izveides, un klienta hidratācija izsauc dynamicActivate() ar servera nodrošināto lokāli pirms renderēšanas. Vienāda vērtība abās pusēs nozīmē — nav hidratācijas neatbilstības un nav īslaicīgas angļu teksta parādīšanās.
  4. Turiet katalogus savā repozitorijā, sinhronizētus pie katra push. PO katalogi ir iesūtīti (committed) faili, nevis pakalpojuma sniedzēja izpildlaika sistēma. Kamēr turpināt attīstīt lietotni Lovable un parādās jauni teksti, tie atkal jāekstraktē un jāiztulko, un tieši šī daļa, ja to dara manuāli, ātri vien sabojājas. Tieši šo darbu automātiski veic globalize.now, tāpēc katalogi paliek aktuāli bez manuālas eksportēšanas.
// 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);

Tā kā šī ir īsta, soli pa solim izpildāma procedūra ar iesūtītu rezultātu, tā uzvedas kā jebkurš cits versiju kontrolē esošs kods: to var izskatīt pull request veidā, salīdzināt izmaiņas un pārnest, ja kādreiz nolemsiet pamest Lovable.


Kur globalize.now iekļaujas TanStack Start i18n stekā?

Tas atrodas vienu slāni zem izpildlaika bibliotēkas un virs tulkošanas dzinēja. TanStack Start un Lingui nodrošina tulkojumus izpildlaikā; DeepL vai LLM ģenerē pašus tulkojumus. globalize.now ir infrastruktūra, kas atrodas pa vidu: tas ģenerē atslēgas un PO katalogus un uztur tos sinhronizētus, lai izpildlaikā vienmēr būtu kaut kas pareizs, ko renderēt.

Praktiskais ieguvums Lovable lietotņu veidotājam ir tāds, ka jums vairs nav manuāli jāuzrauga lokalizācijas faili. Jūs instalējat prasmi, vienreiz uzdodat lūgumu Lovable, un ikkatrs turpmākais push ekstraktē jaunos tekstus, aizpilda katalogus un atver izmaiņas kā parastu pull request. Nav jāķeras pie kāda paneļa, nav atkārtotas eksportēšanas, nav neatbilstības starp to, ko saka jūsu lietotne, un to, kas ir jūsu katalogos.

Ir viens cenu plāns: 20 €/mēnesī par darbvietu, ieskaitot 20 € tulkošanas kredīta (aptuveni 200 000 vārdu) mēnesī, pēc tam lietošana tiek uzskaitīta pēc marķieriem (token) ar to pašu cenu par rakstzīmi. Nav nedz maksas par lietotāju, nedz par valodu, un reģistrējoties saņemsiet 5 € kredīta bez kartes nepieciešamības. Tipiska Lovable lietotne piecās lokālēs bez problēmām iekļaujas šajā limitā. Ja vēlaties detalizētāku, izstrādātājiem paredzētu informāciju, lapas globalize.now izstrādātājiem un vibe kodētājiem sniedz vairāk, bet produkta pārskats aptver pārējo steku.


Jūsu Lovable lietotne ir iesprūdusi angļu valodā tāpēc, ka tulkošana notiek nepareizā vietā — pārlūkprogrammā, pēc tam, kad serveris jau ir izlēmis par valodu. Pārceliet to uz savu repozitoriju, un serveris jau pirmajā pieprasījumā renderēs pareizo valodu. globalize.now nodrošina ekstrakciju un sinhronizāciju, tāpēc jūs to iestatāt vienreiz, un tas paliek aktuāls pie katra push.

globalize.now pārvērš burtiski ierakstītus lietotnes tekstus tulkošanai gatavos lokalizācijas failos un pastāvīgi tos atjaunina līdz ar katru jauno versiju.

Izmēģiniet globalize.now bez maksas