Jūs instalējat vienu CLI, nosūtāt Cursor vienu pieprasījumu, un jūsu Next.js projekts no tikai angļu valodas JSX pārvēršas darboties spējīgā daudzvalodu lietotnē ar [locale] maršrutēšanu, ģenerētām atslēgām un automātisku sinhronizāciju pēc katras izmaiņu nosūtīšanas. globalize.now ir MI darbināma lokalizācijas infrastruktūra, kas paveic to i18n darbu, ko Cursor nepaveic: izgūst burtiski ierakstītus tekstus, ģenerē next-intl atslēgas un lokalizācijas failus un uztur tulkojumus sinhronizētus pēc katras Git izmaiņu nosūtīšanas. Tālāk aprakstītā procedūra pieņem, ka runa ir par standarta App Router projektu. Kopējais laiks mūsu testa repozitorijā: 13 minūtes 40 sekundes.

Kas patiesībā ir salauzts, kad Cursor izveido jūsu Next.js lietotāja saskarni?

Cursor ir optimizēts darboties spējīgai lietotāja saskarnei, nevis arhitektūrai. Tas izveido kodu no dabiskās valodas instrukcijām un atjaunina koda daļas ar pieprasījumu palīdzību, kas nozīmē, ka JSX tiek rakstīts tā, kā to rakstītu cilvēks, veidojot ātru prototipu: teksts iekļauts tieši kodā, bez atslēgām, bez lokalizācijas failiem, bez [locale] segmenta.

Tipiska ar Cursor izveidota Next.js lapa izskatās šādi:

// app/page.tsx
export default function Home() {
  return (
    <main>
      <h1>Welcome to Acme</h1>
      <p>Get started in seconds.</p>
      <button>Sign up</button>
    </main>
  )
}

Trīs burtiski ierakstīti teksti vienā lapā. Reālā lietotnē to ir simtiem, izkliedētu pa desmitiem komponentu. Pages Router agrāk iekļāva iebūvētu i18n konfigurāciju, taču tā tika izņemta, kad App Router kļuva par noklusējuma iestatījumu, atstājot izstrādātājiem pašiem uzdevumu sasaistīt starpprogrammatūru (middleware), dinamiskos maršruta segmentus un ārēju bibliotēku, piemēram, next-intl. Nekas Cursor noklusējuma darbībā to jūsu vietā nedara.

Rezultāts ir tas pats modelis, ko aprakstījām rakstā Kāpēc jūsu Lovable lietotnes tulkojumi salūst katru reizi, kad izlaižat jaunu versiju: kods aug, burtiski ierakstīti teksti uzkrājas, un „pievienot spāņu valodu nākammēnes“ pārvēršas par vairāku nedēļu pārstrādi.

Kā es iestatu globalize.now Cursor projektā?

Pieslēdziet savu repozitoriju vietnē globalize.now. Pirmā konvertēšana notiek vienreiz, lietotnē pašā: tā nolasa repozitoriju, aizstāj burtiski ierakstītos tekstus ar atslēgām un atver pieprasījumu apvienošanai (pull request), ko jūs pārskatāt. Katra nākamā izmaiņu nosūtīšana pēc tam iztulko visu jauno.

Lai šo pirmo soli vadītu no Cursor puses, instalējiet prasmes (skills) no projekta saknes direktorijas:

npx skills add globalize-now/globalize-skills

CLI nosaka jūsu tehnoloģiju kopu, izvēlas piemērotāko iestatījumu kopu Cursor un instalē aģenta noteikumus jūsu projektā. Next.js 16 App Router projektā rezultāts izskatās šādi:

✓ Stack detected: Next.js 16 (App Router)
✓ Editor detected: Cursor
✓ Preset selected: globalize-guide + next-intl
✓ Installed 4 skill files to .cursor/rules/
Done in 1.2s

Prasmju faili atrodas kopā ar jūsu esošajiem Cursor noteikumiem. Tie norāda Cursor aģentam, kā apstrādāt tekstu izgūšanu, kā ģenerēt atslēgas atbilstoši next-intl konvencijām un kā sasaistīt [locale] maršruta segmentu. Nekas neatstāj jūsu datoru. Jūsu kods netiek augšupielādēts.

Ja Cursor vietā izmantojat Claude Code vai Codex, CLI instalē līdzvērtīgus prasmju failus šiem rīkiem. Tālākā procedūra ir identiska.

Kā aģents izgūst burtiski ierakstītus tekstus no Cursor koda bāzes?

Atveriet Cursor aģenta paneli un nosūtiet vienu pieprasījumu:

Set up i18n for this project. Use English, Spanish, German, and Arabic.

Aģents ielādē instalētos noteikumus, skenē app/ un components/ direktorijas un sniedz atskaiti. 12 lapu mārketinga vietnē atskaite parasti izskatās šādi:

Detected Next.js 16 with App Router.
Found 47 hardcoded strings across 12 components.
Best fit: next-intl. RTL required for Arabic.

Plan:
- Install next-intl
- Move app/* into app/[locale]/*
- Generate i18n/request.ts and middleware.ts
- Extract 47 strings to messages/en.json
- Convert JSX to useTranslations / getTranslations calls

Proceed? (y/n)

Aģents veic to, ko next-intl dokumentācija sauc par vissarežģītāko daļu: starpprogrammatūras, dinamisko maršruta segmentu, pieprasījumu konfigurācijas iestatīšanu un komponenšu pa vienam pārveidošanu tulkošanas āķu (hooks) izmantošanai. Jūs pārskatāt plānu un apstiprināt to. Aģents veic izmaiņas kā vienu vairāku failu rediģējumu, ko varat pieņemt vai noraidīt Cursor izmaiņu skata (diff view) logā.

Kā tas ģenerē next-intl atslēgas un lokalizācijas failus?

Pēc plāna apstiprināšanas aģents ģenerē standarta next-intl struktūru. Repozitorijā parādās četras jaunas lietas:

i18n/
  request.ts
  routing.ts
middleware.ts
messages/
  en.json
  es.json
  de.json
  ar.json
app/
  [locale]/
    layout.tsx
    page.tsx
    ...

messages/en.json iekšienē 47 izgūtie teksti kļūst par nosaukumtelpām sadalītām atslēgām, sagrupētām pēc komponentes vai maršruta:

{
  "Home": {
    "heading": "Welcome to Acme",
    "lede": "Get started in seconds.",
    "signupCta": "Sign up"
  }
}

Sākotnējais page.tsx tiek pārrakstīts, lai izmantotu useTranslations klienta komponentēm un getTranslations servera komponentēm. Sadalījums notiek automātiski. Aģents nolasa, kurām komponentēm ir "use client" direktīva, un izvēlas atbilstošo āķi (hook).

Spāņu, vācu un arābu JSON faili tiek izveidoti ar sākotnējiem tulkojumiem, kas atbilst glosārijam, ko aģents izveido no jūsu komponenšu un rekvizītu (props) nosaukumiem. Zīmola termini paliek angļu valodā. Labā-uz-kreiso-lasīšanas virziena (RTL) atbalsts ir iestrādāts izkārtojumā: dir atribūts tiek iestatīts atbilstoši lokalei, un CSS loģiskās īpašības aizstāj fiksētos kreisā/labā puses utilītus tur, kur aģents to spēj noteikt.

Tas ir tas pats process no sākuma līdz beigām, ko izmantojām reālā produkcijas monorepozitorijā rakstā Kas notiek, kad MI aģents internacionalizē reālu monorepozitoriju?. Procedūras formāts ir tāds pats, atšķiras tikai ievaddati.

Kā darbojas sinhronizācija pēc Git izmaiņu nosūtīšanas, kad pirmā palaišana ir pabeigta?

Pirmā palaišana notiek vienreiz. Sinhronizācija turpinās pastāvīgi.

Kad aģents ir pabeidzis darbu, jūs pieslēdzat repozitoriju globalize.now informācijas panelī. No šī brīža:

Push to main
   ↓
globalize.now diffs against last synced state
   ↓
New hardcoded strings get extracted + keyed
   ↓
Translations generated for every configured locale
   ↓
PR opened with locale file updates

Cursor nav jābūt atvērtam. Claude Code nav jādarbojas. Sinhronizācija notiek Git līmenī, tāpēc tā strādā neatkarīgi no tā, kurš rīks izveidoja nākamo lietotāja saskarnes daļu. Kad nākamnedēļ Cursor no jauna izveido komponenti un pievieno trīs jaunas pogas, šīs pogas nonāk nākamajā pieprasījumā apvienošanai (PR) jau iztulkotas.

Nav nepieciešama manuāla eksportēšana. Nav pārskatīšanas rindas. Nav CSV faila apmaiņas turp un atpakaļ. Solījums ir tas pats, ko aprakstījām rakstā Kā globalizēt savu lietotni ar globalize.now: iestatiet vienreiz, un turpmāk viss sinhronizējas automātiski pēc katras izmaiņu nosūtīšanas.

Kas notiek, ja jums jau ir ar roku izveidots next-intl iestatījums?

Aģents to vispirms nolasa.

Ja i18n/request.ts jau pastāv, aģents pieņem jūsu konfigurāciju, nevis to pārraksta. Ja messages/en.json jau ir Pricing.heading, aģents izmanto šo esošo atslēgu, nevis ģenerē jaunu. Ja jūsu nosaukumtelpu konvencija ir pricing.heading (mazie burti, ar punktiem) nevis Pricing.heading (PascalCase, ligzdota), aģents pielāgojas tai.

Vienīgā lieta, ko aģents nekad nedarīs, ir klusi pārrakstīt esošu lokalizācijas failu. Ja rodas atslēgu konflikts, tas apstājas un jautā. Šī uzvedība ir iekodēta prasmju noteikumos, kurus instalē npx skills add globalize-now/globalize-skills — jums tas nav jākonfigurē pašiem.

globalize.now to visu paveic jūsu vietā. Pieslēdziet savu Next.js repozitoriju, un konvertēšana notiek vienreiz, lietotnē pašā; npx skills add globalize-now/globalize-skills prasmes sedz turpmāko darbu jūsu redaktorā. Uzziniet, kā tas strādā, vietnē globalize.now.

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