Parduodame vertimų infrastruktūrą. Mūsų pačių rinkodaros svetainė veikia penkiose lokalėse. Patikrinę faktiškai pateikiamą JSON, pirmiausia aptikome ne tono problemą. Tai buvo vienas neteisingas simbolis vokiškame sudurtiniame žodyje, iš pirmo žvilgsnio atrodžiusiame beveik tinkamai: kirilicos raidė ten, kur turėjo būti lotyniška. Žodis atrodė kaip žodyno įrašas, kol nepatikrinome kodo taško. Jei mūsų pačių vertimai sugadinti, kodėl kas nors turėtų pasitikėti produktu?


Penkios klaidos, kurios niekada neturėjo pasiekti produkcijos

Kirilica vokiškame sąsajos tekste. Vienoje žodyno eilutėje buvo sumaišyti rašmenys: priesaga atrodė kaip lotyniškas „ar“, bet viena raidė buvo kitokia. Gimtakalbiai tai pastebi iškart. Rašybos tikrinimo priemonė — ne.

**The string:** …"Übersetzungsglossар"… (Cyrillic "р" in the compound)
**What it should be:** "Übersetzungsglossar"
**Why it matters:** It reads as corrupted text. It signals automated output nobody proofread in the target language.

Atvirkštinis kreipinio formalumas vokiečių ir prancūzų kalbose. Svetainė skirta kūrėjams. Tonas turėtų atitikti tai, kaip inžinieriai iš tikrųjų rašo produkto sąsajoje. Visur de ir fr buvome panaudoję formalų kreipinį. Tai ne smulkmena. Tai reiškia, kad numatytasis vertimo kelias visoje sąsajoje parinko netinkamą registrą, o ne suklydo keliose pavienėse eilutėse.

**The string:** "… wie Sie …" / "vous pouvez …"
**What it should be:** informal "du" / "tu" voice for product and FAQ
**Why it matters:** Every screen sounded like enterprise procurement, not like the product we sell to vibe coders.

Išgalvota valiuta. Angliškame tekste buvo nurodyti doleriai. Vokiškame — eurai ir mėnesinis žymuo. Skirtingose šalyse netaikome skirtingų kainų. JSON sudarė įspūdį, kad taip darome.

**The string:** "20 €/Monat" (and similar) next to "$20/mo" elsewhere
**What it should be:** one USD amount, formatted per locale via code (e.g. Intl), not hand-invented symbols in JSON
**Why it matters:** Pricing trust. Mixed symbols read as either a bug or a hidden price change.

Klaidingi „coding“ atitikmenys. Trijose kalbose „coding environment“ buvo išversta žodžiu, reiškiančiu kodavimą duomenų prasme. DUK lankytojams buvo sakoma, kad jie gali likti savo „kodavimo aplinkoje“. Tai neteisinga bet kokiu produkto interpretavimo požiūriu.

**The string:** Spanish "codificación", Italian "codifica", German "Codierung" in the wrong sense
**What it should be:** development environment wording (e.g. entorno de desarrollo / ambiente di sviluppo / Entwicklungsumgebung)
**Why it matters:** It is a semantic bug. It reads like we do not understand our own domain.

„Ship“ suprastas kaip siuntų siuntimas. Vokiškose ir itališkose eilutėse pavartoti veiksmažodžiai, siejami su siuntiniais, o ne su programinės įrangos išleidimu. Tas pats angliškas šaltinis, bet netinkama leksinė sritis. Tai lėmė nepataisytos mašininio vertimo rekomendacijos, o ne sąmoningas stiliaus pasirinkimas.

**The string:** parcel-shipping verbs applied to "ship your app"
**What it should be:** release / deploy / deliver software wording
**Why it matters:** Developer trust. One wrong verb tells the reader the copy was never read by a developer in that language.

Kodėl automatiškai sugeneruoti vertimai nukrypsta

Tai nėra išpuolis prieš vertėjus. Didelė svetainės dalis niekada nebuvo žmogaus peržiūrėta eilutė po eilutės. Bendrosios paskirties modeliai pagal nutylėjimą renkasi formalų registrą, nes būtent taip atrodo didžioji dalis viešai prieinamo dvikalbio teksto. Jie taip pat supainioja panašias raides skirtinguose raštuose, kai tikslas yra „įtikinami simboliai“, o ne „teisingas raštas“. Be žodyno žodžių pasirinkimas tarp gretimų raktų ima skirtis. Be valiutos taisyklės modelis išgalvoja tikėtinus vietinius simbolius. Be srities patikrų susipainioja duomenų kodavimas ir programavimas. Tai nesėkmės scenarijus, kurį siekiame sutrumpinti. Mūsų pačių svetainė vis tiek jį išleido, kol nepatikrinome jos taip, kaip tai darytų klientas.


Ką sukūrėme po sutvarkymo

Vienkartiniai teksto pataisymai nėra sistema. Ilgalaikė dalis — nedidelis politikos failas, kurį visa komanda ir bet kuri būsima automatinio vertimo partija gali laikyti taisyklių rinkiniu, bei patikros scenarijus, kurį galime paleisti prieš suliejimą.

Politika. i18n/LOCALIZATION_POLICY.md nurodo kiekvienos lokalės registrą, tik USD kainodarą JSON faile, skolinių pasirinkimus (pavyzdžiui, vibe coders palikimą anglų kalba), coding ir encoding klaidingų atitikmenų taisykles bei įterptinių literalų tipografiją. Failas tyčia trumpas. Jei taisyklė neužrašyta, modelis jos nuosekliai nenuspės.

## Currency
- USD only in all locales. Use {monthlyPrice} and {overageRate} placeholders…
## False friends
- Coding environment is not encoding: Spanish desarrollo / Italian sviluppo / German Entwicklung…

Patikra. scripts/verify-translations.sh ieško kirilicos lotyniško rašto lokalių failuose, euro simbolių, senųjų klaidingų atitikmenų fragmentų ir kainodaros vietaženklių atitikties su messages/en.json. Pasirinktiniai patikrinimai naudoja ripgrep, jei jis įdiegtas. Scenarijus nustato minimumą, o ne maksimumą. Jis reikalingas tam, kad „sutvarkėme vieną kartą“ tyliai nesunyktų per kitą masinį redagavimą.

Kodas, o ne daugiau spėlionių JSON faile. Centralizavome rodomas USD sumas lib/pricing.ts ir prijungėme formatUsdPerMonth bei formatUsdOveragePer1k prie pagrindinio puslapio ir DUK, kad lokalės failai nebegalėtų išgalvoti skaitinių reikšmių. Problema buvo ne tik neteisingos eilutės. Problema buvo ta, kad prieš plečiant mastą neturėjome politikos ir formatuotuvo.


Ką verta perimti savo DI padedamam i18n

Jei vertimus generuojate modeliu, registras yra labiausiai kintantis parametras. Nustatykite jį kiekvienai lokalei prieš pridėdami daugiau kalbų. Valiutą apibrėžkite kode, ne tekste. Užfiksuokite prekės ženklo tokenus ir kūrėjų žargoną. Paleiskite automatines patikras, kurios sustabdo partiją, o ne planuokite „vėliau permesime akimis“. Vėliau niekada neįvyksta tokiu pačiu kokybės lygiu kaip pirmoji peržiūra.

Apie šio audito architektūrinį pagrindą skaitykite Kaip lokalizuoti DI sugeneruotą programą, o įrankių palyginimą rasite globalize.now ir Lokalise bei Crowdin. Jei savo saugykloje diegiate i18n ir norite tokių pačių apsaugų, prijunkite saugyklą prie globalize.now — konversija programoje atliekama vieną kartą; npx skills add globalize-now/globalize-skills yra mūsų dokumentuojamas įėjimo taškas įgūdžiams, diegiamiems šalia jūsų kodo. Atvirai kalbant: išbandėme savo produktą, radome nemalonių klaidų, parašėme politiką ir pridėjome vartus. Tokio lygio turėtų siekti kiekvienas daugiakalbis paleidimas.

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