Pārbaudiet septiņas lietas, pirms izlaižat lietotni, ko Codex, Claude Code vai Cursor iztulkoja ar vienu promptu: vai garie teksti ietilpst, vai daudzskaitļa formas atbilst katrai valodai, vai mainīgie ir saglabājušies, vai termini ir konsekventi, vai tonis dzimtās valodas runātājam skan pareizi, vai katra atslēga pastāv katrā lokalizācijā un vai nākamā funkcija vispār tiks iztulkota. globalize.now ir ar mākslīgo intelektu darbināma lokalizācijas infrastruktūra, un lielākā daļa no tā, kas, pēc mūsu pieredzes, noiet greizi pēc vienreizēja tulkojuma, ir mehāniskas dabas, kas ir laba ziņa: mehāniskas problēmas var pārbaudīt.
Pirmais gājiens reti ir problēma. Mūsdienu aģenti ātri izveido lasāmus tulkojumus. Taču viens prompts neietver nevienu soli, kas pārbaudītu rezultātu, un šīs pārbaudes ir tieši tas solis.
Vai teksts pēc tulkošanas ietilpst?
Bieži vien nē, un pirmās cieš pogas. W3C norādījumos par teksta apjomu tulkojumā atzīmēts: jo īsāks pirmteksta ziņojums, jo lielāka iespējamā izplešanās, tāpēc divu vārdu pogas uzraksts proporcionāli izaug vairāk nekā rindkopa. Tur arī norādīts, ka salikteņi tādās valodās kā vācu var neiet jaunā rindā un ka dažām rakstu sistēmām nepieciešams vairāk vietas horizontāli vai vertikāli nekā latīņu burtiem.
Aģents, kas tulko tekstus JSON failā, nekad neredz ekrānu, tāpēc nevar zināt, ka "Save changes" tagad aizpilda pogu no malas līdz malai. Palaidiet lietotni garākajā lokalizācijā, ko izlaižat, izejiet cauri galvenajām plūsmām un meklējiet nogrieztu tekstu, salauztas pogas un saīsinātas tabulu galvenes. Ja atbalstāt valodas ar rakstību no labās uz kreiso, veiciet tādu pašu pārbaudi vienā no tām; arābu valodas un RTL ceļvedis Lovable lietotnēm aplūko virzienu, ko vien pārpildīšanās pārbaudes neatklās.
Ilgtspējīgs risinājums ir izkārtojums, nevis īsāki tulkojumi: ļaujiet konteineriem augt, nelietojiet fiksētus platumus tekstam un nesaīsiniet vārdus, lai tie ietilptu. Šo daļu lieciet paveikt savam aģentam, jo tas ir kods.
Vai daudzskaitļa formas atbilst mērķvalodai?
Pārbaudiet to savlaicīgi, jo kļūda izpaužas klusi. Unicode CLDR definē sešas daudzskaitļa kategorijas: zero, one, two, few, many un other. Angļu valodā tiek lietotas tikai one un other. Krievu valodā — one, few, many un other. Velsiešu valodā — visas sešas, un i18next dokumentācija arī arābu valodai parāda visas sešas daudzskaitļa atslēgas.
Aģents, kas angļu valodas pāri nokopē krievu vai arābu valodas failā, izveido katalogu, kas tiek nolasīts un attēlots, taču katram skaitlim, kuram vajadzīga failā trūkstoša kategorija, parāda nepareizu formu. Kļūdas paziņojuma nebūs. Lietojot i18next, atcerieties, ka mainīgajam jābūt nosauktam tieši count, un dokumentācijā norādīts, ka, ja tā nav, atkāpšanās uz vienkāršo atslēgu nenotiek. Tas pats aģents, rakstot count === 1 ? 'item' : 'items' komponentē, rada to pašu kļūdu jau pirms tulkošanas sākuma; kas ir ICU MessageFormat un kāpēc tas sagādā problēmas AI ģenerētām lietotnēm aplūko sintakses pusi.
Pārbaude ir mehāniska: katrai lokalizācijai salīdziniet daudzskaitļa atslēgas ar kategorijām, ko prasa attiecīgā valoda.
Vai interpolācijas mainīgie ir saglabājušies?
Ne vienmēr, un jautājumu atrisina skripts. Interpolācijas mainīgajiem, piemēram, {{name}} vai {count}, katrā tulkojumā jāparādās tieši tā, kā rakstīts. Aģenti, tulkojot garu failu, dažkārt pārfrāzē mainīgo, izlaiž to, ja teikums bez tā skan labāk, vai iztulko taga saturu. Rezultāts tiek attēlots kā tukšums, burtiska iekavu zīme vai avārija.
Salīdziniet mainīgo kopu katrā iztulkotajā tekstā ar tā pirmtekstu. Šis īsais Node skripts to dara un arī ziņo par atslēgām, kas pastāv angļu valodā, bet nepastāv citā lokalizācijā:
import fs from "node:fs";
const [src, ...targets] = process.argv.slice(2);
const read = (f) => JSON.parse(fs.readFileSync(f, "utf8"));
const vars = (s) =>
[...String(s).matchAll(/\{\{?\s*[\w.]+\s*\}?\}/g)].map((m) => m[0]).sort().join(",");
const base = read(src);
let problems = 0;
for (const file of targets) {
const loc = read(file);
for (const [key, text] of Object.entries(base)) {
if (!(key in loc)) { console.log(file, "missing", key); problems++; continue; }
if (typeof text === "string" && vars(text) !== vars(loc[key])) {
console.log(file, "variable mismatch", key); problems++;
}
}
}
process.exit(problems ? 1 : 0);
Palaidiet to kā node check-locales.mjs locales/en.json locales/de.json locales/ru.json CI vidē. Tas pieņem viena līmeņa atslēgu failus; ja jūsu katalogs ir ieligzdots, pielāgojiet ciklu.
Vai terminoloģija ir konsekventa?
Vienas atbildes ietvaros — jā, bet starp vairākām tā novirzās. Ja lielas lietotnes tulkojums ir sadalīts pa failiem, sesijām vai partijām, nekas nenodrošina, ka "workspace", "project" un jūsu produkta nosaukums katru reizi tiek tulkoti vienādi. Beigās ir poga, kas saka vienu, un palīdzības lapa, kas saka citu.
Pierakstiet terminus vienreiz: glosārijs ar produktu nosaukumiem, funkciju nosaukumiem un vārdiem, kurus nedrīkst tulkot, un panāciet, ka tulkošanas solis to nolasa. globalize.now ģenerē kopīgu glosāriju, kad kodu bāze tiek konvertēta, tāpēc termini pastāv kā dati jau pirms jebkāda tulkojuma. Bez rīka minimums ir īss glosārija fails, uz kuru atsaucas jūsu aģenta instrukcijas; raksts par AGENTS.md noteikumiem parāda, kur šīs instrukcijas atrodas.
Vai tas skan pareizi dzimtās valodas runātājam?
Šo vienīgo pārbaudi skripts nevar veikt. Reģistrs, formalitāte un burtu lielums ir tas, kur vienreizēji tulkojumi izklausās mašīnveidoti: nepareizs formālās uzrunas līmenis, pavēles izteiksmes pogas, kas skan kā komandas, virsraksts lielajiem burtiem valodā, kurā tas izklausās pēc kliegšanas.
Nepārskatiet katru virkni. Izvēlieties vienu valodu no katras valodu saimes, kurā izlaižat produktu, un lūdziet dzimtās valodas runātājam izlasīt pirmās palaišanas ekrānus, norēķināšanās vai reģistrēšanās plūsmu un kļūdu ziņojumus. Tieši šajos ekrānos nepareizs tonis jums zaudē lietotājus. Ierakstiet viņu labojumus glosārijā, lai nākamā palaišana sāktos no tiem.
Vai katra atslēga eksistē un vai katra virkne ir nokļuvusi katalogā?
Divas dažādas nepilnības ekrānā izskatās vienādi. Atslēga var pastāvēt angļu valodā, bet trūkt lokalizācijā, ko atklāj iepriekš minētais skripts. Vai arī virkne var būt tieši iekodēta komponentē un nekad nenonākt katalogā, tāpēc neviens tulkojums to nevarētu aptvert. Aģenti otro veidu biežāk atstāj atribūtos, paziņojumos un kļūdu ziņojumos nekā redzamajā tekstā; rakstā kāpēc aģenti turpina pievienot tieši iekodētas virknes aplūkots šis likumsakarīgums un lint noteikums, kas to atklāj.
Pārslēdziet lietotni uz kādu citu lokalizāciju, nevis angļu, un pārbaudiet to, izejot cauri visiem ekrāniem. Jebkurš palikušais angļu teksts ir vai nu trūkstoša atslēga, vai virkne, kas nekad nav nonākusi sistēmā, un labojums katrā gadījumā ir atšķirīgs.
Vai nākamā funkcija tiks iztulkota?
Tikai tad, ja tulkošana ir daļa no koda izlaišanas procesa, un šo pārbaudi vienas uzvednes palaišana nespēj nokārtot. Uzvedne iztulkoja lietotni tādu, kāda tā bija tajā pēcpusdienā. Nākamā funkcija, ko izveidos jūsu aģents, parādīsies angļu valodā tajos pašos failos, un lokalizācijas atpaliks ar katru jaunu funkciju. Rakstā kāpēc tulkošanas faili zaudē sinhronizāciju aprakstīts, kā šī atšķirība uzkrājas.
Šeit vienreizējā pieeja un konveijers atšķiras. Rakstā lokalizācija pārceļas agrāk izstrādes ciklā izklāstīts pamatojums; praktiski tas nozīmē, ka konvertēšana notiek vienreiz, bet vēlākās izmaiņas tiek tulkotas tur, kur tās tiek veiktas. Ar globalize.now jūs savienojat repozitoriju lietotnē, kodu bāze tiek konvertēta vienreiz, un pēc tam push uzdevumi iztulko jaunās kataloga vienības, piegādājot rezultātus kā izmaiņas, ko jūs pārskatāt un sapludināt. Izpildlaika bibliotēka un kataloga formāts paliek jūsu rokās. Komandas, kurām jau ir cilvēks tulkotājs, saglabā šo pārskatīšanas soli; tas vienkārši vairs nav vienīgais šķērslis starp tikai angļu valodā rakstītu kodu un izlaidumu.
Ja vēlaties visu paturēt savos skriptos, minimums ir iepriekš minētais skripts, kas darbojas CI, un noteikums, ka jaunās virknes tiek ievadītas caur katalogu. Rakstā kā lokalizēt lietotni, ko ģenerējis AI soli pa solim aprakstīts viss ceļš, bet Claude Code ceļvedis aplūko tieši šo aģentu.
Ar ko sākt?
Palaidiet skriptu uz saviem pašreizējiem lokalizācijas failiem jau šodien; tas aizņem minūti un parāda, vai struktūra ir kārtībā. Pēc tam atveriet lietotni savā garākajā lokalizācijā un izejiet cauri pirmās palaišanas plūsmai. Ja esat izlaidis ar AI veidotu lietotni un vēlaties, lai konvertēšanu, tulkošanu un vēlākos atjauninājumus nodrošina rīks, nevis jūs uzturat tos ar rokām, vibe coders lapa ir pārskats, izstrādātāju atsauce aptver aģentu iestatījumus, bet cenas atrodas savā lapā.
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