Copy drift on kasutajale nähtava teksti lahknemine oma heakskiidetud algallikast eri pindade ja aja jooksul, kusjuures ühest tõe allikat, millest lahkneda, polegi olemas. String ei ole kadunud ega katki – sõnastus ise on muutunud, ilma et keegi oleks seda otsustanud, ja nüüd ütlevad turunduslehekülg, sihtlehekülg ja toode kõik veidi erinevat asja sama funktsiooni kohta. globalize.now on koodipõhine sisuhaldussüsteem, millel on lokaliseerimine sisse ehitatud, ja triiv on täpselt see viga, mida see peab ennetama.
Mis on koopia triiv?
Copy drift on kasutajale nähtava teksti lahknemine oma heakskiidetud algallikast eri pindade ja aja jooksul, ilma ühese tõe allikata, millest lahkneda.
Selle definitsiooni kaks poolt teevadki töö ära. Lahknemine heakskiidetud allikast tähendab, et keegi kunagi leppis kokku, mida see string peaks ütlema. Ühese tõe allika puudumine tähendab, et kusagil ei ole enam olemas artefakti, mis seda kokkulepet hoiaks, mistõttu polegi millestki kontrollitavas mõttes lahkneda – ja seepärast ei suudagi keegi öelda, millal see algas.
Triiv on tavapärane, mitte erand. Iga toode, millel on rohkem kui üks pind ja rohkem kui üks seda muutev inimene, hakkab triivima, kui midagi struktuurilist seda ei peata.
Mis copy drift ei ole
Kolm erinevat viga aetakse tihti kokku, kuigi need vajavad erinevaid lahendusi. Kui see vale mõistetakse, hakkab meeskond lahendama vale probleemi.
Hardcoded string ehk kõvakodeeritud tekst on tekst, mis on kirjutatud otse komponenti, mitte kataloogi. See on nähtamatu nii teie tööriistadele kui tõlkele – kuid sõnastus võib olla täiesti korrektne. See on hoopis teine probleem ja käsitlesime seda artiklis miks AI koodigeneraatorid jätkuvalt lisavad kõvakodeeritud stringe.
Sünkroonist väljas olevad tõlkefailid on kataloogid, mis on olemas, kuid on üksteisest lahknenud. Algallikas on korras, tuletatud koopiad on aegunud.
Copy drift ei ole kumbki neist. String võib olla võtmestatud, failid võivad olla sünkroonis ning toode võib siiski ühes kohas öelda „Alusta tasuta prooviperioodi“, teises „Proovi tasuta“ ja nupul, mis tegelikult toimingu käivitab, „Alusta“.
Kõik kolm probleemi võivad esineda korraga. Need ei paranda teineteist.
Mis põhjustab copy drift'i?
Kolm mehhanismi, umbkaudses kahju tekitamise järjekorras.
Erinevate inimeste vastutusel olevad pinnad, mida muudetakse erinevates tööriistades. Turundussisu elab CMS-is. Sihtlehte uuendatakse kõige kiiremini, sest see on pideva katsetamise all. Toote stringid elavad komponentides. Iga pind võib olla sisemiselt järjepidev, samas kui toode tervikuna ei ole, ja ükski inimene ei näe kõiki kolme korraga.
Väikesed muudatused, mida keegi ei liigita sisumuudatusteks. Keegi lühendab silti, et see mahuks mobiilibreikpointi. Keegi teeb pealkirja lause-kirjatähtedeks, et see sobiks kõrvalekraaniga. Eraldi võttes on kumbki muudatus õigustatud. Ükski ei läbi midagi sisu ülevaatusele sarnast, sest tööriistade jaoks on see lihtsalt stringi literaal JSX atribuudis.
Koodiagendid. Agent, kellel palutakse lisada laadimisolek, võib faili sees olles ka silti ümber kirjutada – stringi korrastamine näeb täpselt välja nagu koodi korrastamine. Kogukonna vastus praegu on reeglifail: AGENTS.md, .cursorrules, UI-sisu poliitikablokk promptis. Need aitavad ja tasub kasutada. Aga konventsioon ei ole kontroll. See vähendab, kui sageli teie sisu ümber kirjutatakse; see ei ütle, millal see ikkagi juhtus.
Miks ei märka miski copy drift'i?
Sest miski ei lähe katki.
Muudetud silt kompileerub. See renderdub. Tüübikontroll näeb kehtivat stringi ja linter näeb kehtivat süntaksit. Kui snapshot-test ebaõnnestub, on tavaline vastus snapshot uuendada, mis fikseerib triivi, selle asemel et sellele tähelepanu juhtida. Ükski build ei lähe punaseks, ükski hoiatus ei käivitu, ükski töölaud ei muutu kollaseks.
Triiv on nähtav ainult millelegi, mis teab, milline oli heakskiidetud sõnastus. Enamik tööriistastikke ei säilita sellist infot, seega esimene avastaja on tavaliselt inimene – klienditoe vastus, mis tsiteerib teistsuguseid sõnu kui liides, klient, kes küsib, kas „Workspace“ ja „Project“ on üks ja sama asi, või tõlkija, kes küsib, millist kolmest ingliskeelsest sõnastusest tõlkida.
Kui palju copy drift tegelikult maksab?
Ausalt öeldes: keegi pole seda mõõtnud, sealhulgas meie, ja me ei hakka arvu välja mõtlema.
See väärib selget ütlemist, sest see valdkond on täis numbreid, mis ei pea vastu, kui uurida nende allikat – küsitlusandmed brändingu ja tulu kohta, kulud pileti kohta, protsendid piletitest, mis on omistatud ebajärjekindlale dokumentatsioonile. Oleme mitu sellist numbrit ise sisemiselt kõrvale heitnud, selle asemel et neid korrata. Mõõtmist, mis tegelikult sellele küsimusele vastaks – kui palju triivi päris koodihoidlates eksisteerib ja mida see allavoolu tekitab – pole keegi teinud.
Ilma numbrita saab kirjeldada mehhanismi, ja see mehhanism on kumuleeruv:
- See on nähtamatu, kuni muutub kulukaks. Miski ei too triivi esile ajal, mil seda on odav parandada. See tuleb esile siis, kui kellelgi on vaja, et sõnad oleksid samad – tavaliselt ajasurve all.
- Iga pind on eraldi parandus. Fraasi muutmine tähendab kõikide kohtade leidmist, kus see ümber sõnastati, ja sellist nimekirja pole olemas.
- Lokaliseerimine korrutab selle. See on kõige teravam koht. Saatke sama idee kolm sõnastust tõlkesse ja saate kolm tõlget, igas keeles. Ebakõla, mis oli piiratud inglise keelega, on nüüd korrutatud üle teie kõikide lokaalide, ja emakeelena kõneleja jaoks tundub see kolme erineva funktsioonina.
See viimane punkt seletab, miks sisu järjepidevus ja lokaliseerimine ei ole eraldi projektid. Kui te ei suuda öelda, milline sõnastus on heakskiidetud, ei saa te ühtki neist korrektselt tõlkida – algallikas oli mitmetähenduslik juba enne, kui tõlkija seda nägigi. Arhitektuur, mis lahendab mõlemad, on sama arhitektuur, mille kirjeldasime artiklis koodipõhine tootesisu.
Kuidas copy drift'i ennetada?
Andke sõnastusele üks kodu ja tehke selle muudatused ülevaadatavaks. Ülejäänu järgneb sellest.
Üks kataloog. Iga kasutajale nähtav string elab ühes kohas, mitte laiali komponentides. Nüüd on olemas midagi, millega järjepidev olla.
Võtmed, mitte literaalid. Komponendid viitavad võtmele, selle asemel et sõnu uuesti kirjutada. Sama sõnastus ei saa eksisteerida kahes kohas ja vaikselt lahkneda, sest see eksisteerib ainult üks kord.
Muudatused diff'is. Sisumuudatus ilmub ülevaatuses samamoodi nagu iga teine muudatus. See on samm, mis teebki tegeliku töö: järjepidevus ei sõltu enam sellest, kas keegi mäletab stiilijuhendit, vaid muutub nähtavaks just sel hetkel, mil keegi kindlalt jälgib.
Toote-välised pinnad – turundus, sihtleheküljed – on keerulisem pool, ja ütleme ausalt, kus see hetkel seisab: turundus-, sihtlehe- ja tootesisu standardiseerimine ühe süsteemina on see, mille poole me globalize.now-s liigume, mitte midagi, mida saaks juba täna sisse lülitada. Mehhanism on sama, mida eespool kirjeldasime, laiendatud üle rakenduse piiri: kui iga pind viitab heakskiidetud stringile võtme kaudu, selle asemel et seda uuesti sõnastada, muutub fraasi muutmine üheks otsuseks, mitte kolmeks.
Meeskonnad, kes arendavad AI koodigeneraatoritega, jõuavad selle probleemini kõige varem, mistõttu kirjutame sellest arendajatele ja inimestele, kes ehitavad AI tööriistadega.
Kas stiilijuhend lahendab copy drift'i?
Ei – stiilijuhend ja tõe allikas lahendavad erinevaid probleeme, ja meeskonnad ostavad regulaarselt esimest, oodates teist.
Stiilijuhend kirjeldab, milline hea sisu välja näeb: toon, suurtähtede kasutus, terminoloogia, millal öelda „kustuta“ ja millal „eemalda“. See on tõeliselt kasulik ja igal meeskonnal peaks üks olema. Mida see aga ei suuda, on öelda teile, et string on muutunud. Sellel pole varasemast sõnastusest ühtki kirjet ega ligipääsu muutuse hetkele, seega saab seda rakendada ainult inimene, kes juhtub õigele ekraanile vaatama.
Triiv on olekuprobleem, mitte maitseprobleem. Lahendus peab elama seal, kus olek elab.
Triiv algab hetkest, mil samad sõnad eksisteerivad kahes kohas. globalize.now koondab need ühte allikasse teie ühendatud hoidlas ja tuletab iga keele just sellest ühest sisust.
globalize.now muudab rakenduse koodis olevad tekstid tõlkeks valmis lokaale failideks ja hoiab neid ajakohasena, kui sa uusi versioone välja lasid.
Proovi globalize.now tasuta