Copy drift तब होता है जब अलग-अलग surfaces और समय के साथ users को दिखने वाला text अपने स्वीकृत source से अलग होता जाता है, जबकि उससे तुलना करने के लिए कोई single source of truth मौजूद नहीं होता। String गायब नहीं है और न ही टूटी हुई है — बदले हुए शब्द हैं, किसी ने तय नहीं किया कि उन्हें बदलना चाहिए, और अब marketing page, landing page और product एक ही feature के बारे में थोड़ा-थोड़ा अलग कह रहे हैं। globalize.now localization built-in वाला code-native copy management system है, और drift वही खास failure है जिसे रोकने के लिए इसे बनाया गया है।

कॉपी ड्रिफ्ट क्या है?

Copy drift तब होता है जब अलग-अलग surfaces और समय के साथ users को दिखने वाला text अपने स्वीकृत source से अलग होता जाता है और उससे तुलना करने के लिए कोई single source of truth नहीं रहता।

इस परिभाषा के दो हिस्से असली काम करते हैं। स्वीकृत source से अलग होना यानी कभी किसी ने तय किया था कि यह string क्या कहेगी। Single source of truth का न होना यानी अब कोई ऐसा artifact नहीं बचा जिसमें वह सहमति दर्ज हो; इसलिए जाँचने योग्य अर्थ में अलग होने के लिए भी कुछ मौजूद नहीं है — और इसी वजह से कोई यह नहीं बता पाता कि इसकी शुरुआत कब हुई।

Drift असामान्य नहीं, सामान्य है। जिस product में एक से अधिक surfaces हों और उसे संपादित करने वाले एक से अधिक लोग हों, वहाँ कोई संरचनात्मक रोक न हो तो drift होना तय है।

Copy drift क्या नहीं है

तीन अलग failures को अक्सर एक ही समस्या मान लिया जाता है, जबकि इनके fixes अलग-अलग हैं। यह गलती teams को गलत समस्या के पीछे भेज देती है।

Hardcoded string वह text है जो catalog के बजाय सीधे component में लिखा जाता है। यह आपके tooling और translation—दोनों से अदृश्य रहता है, लेकिन wording बिल्कुल सही हो सकती है। यह अलग समस्या है, और हमने इसे AI coding tools hardcoded strings क्यों जोड़ते रहते हैं में समझाया है।

Out-of-sync translation files ऐसे catalogs हैं जो मौजूद तो हैं, लेकिन एक-दूसरे के साथ sync से बाहर हो गए हैं। Source ठीक है; उससे बनी copies पुरानी पड़ चुकी हैं।

Copy drift इनमें से कोई नहीं है। String की key हो सकती है, files sync में हो सकती हैं, फिर भी product एक जगह “मुफ़्त trial शुरू करें”, दूसरी जगह “मुफ़्त में आज़माएँ” और उस button पर “शुरू करें” कह सकता है जो वास्तव में वही काम करता है।

ये तीनों समस्याएँ एक साथ हो सकती हैं। इनमें से कोई भी दूसरी समस्या को ठीक नहीं करती।

Copy drift किन कारणों से होता है?

तीन mechanisms, मोटे तौर पर उनके नुकसान की मात्रा के क्रम में।

अलग-अलग लोगों के स्वामित्व वाले surfaces, जिन्हें अलग-अलग tools में edit किया जाता है। Marketing copy CMS में रहती है। Landing page सबसे तेज़ी से update होती है, क्योंकि उस पर लगातार experiments चल रहे होते हैं। Product strings components में रहती हैं। हर surface अपने भीतर consistent हो सकती है, जबकि पूरा product नहीं; और कोई एक व्यक्ति तीनों को एक साथ नहीं देखता।

छोटे edits जिन्हें कोई copy edit नहीं मानता। कोई mobile breakpoint में fit करने के लिए label छोटा कर देता है। कोई पास वाली screen से consistency के लिए heading को sentence case में बदल देता है। हर बदलाव अपने-आप में उचित लग सकता है। इनमें से कोई भी copy review जैसी प्रक्रिया से नहीं गुजरता, क्योंकि tooling की नज़र में यह JSX attribute में मौजूद string literal भर है।

Coding agents। Loading state जोड़ने को कहा गया agent file में मौजूद किसी label को भी rewrite कर सकता है — string को tidy करना उसे code को tidy करने जैसा ही लगता है। अब तक community का जवाब एक rules file रहा है: AGENTS.md, .cursorrules, या prompt में UI-copy policy block। ये मददगार हैं और इन्हें रखना चाहिए। लेकिन convention, check नहीं होती। इससे copy के rewrite होने की frequency घटती है; यह नहीं बताता कि rewrite फिर भी कब हो गया।

Copy drift को कोई पकड़ क्यों नहीं पाता?

क्योंकि कुछ भी टूटता नहीं।

बदला हुआ label compile हो जाता है। Render होता है। Type checker को valid string दिखती है और linter को valid syntax। अगर snapshot test fail भी हो, तो सामान्य प्रतिक्रिया snapshot update करना होती है—यानी drift को flag करने के बजाय दर्ज कर लिया जाता है। कोई build red नहीं होता, कोई alert नहीं आता, कोई dashboard amber नहीं होता।

Drift केवल वही चीज़ देख सकती है जिसे पता हो कि स्वीकृत wording क्या थी। अधिकांश toolchains ऐसा कोई record नहीं रखतीं, इसलिए पहला detector आम तौर पर कोई व्यक्ति होता है—support reply में UI से अलग शब्द उद्धृत होना, customer का पूछना कि “Workspace” और “Project” एक ही चीज़ हैं या नहीं, या translator का पूछना कि तीन English phrasings में से किसका अनुवाद करना है।

Copy drift की असली लागत क्या है?

ईमानदारी से कहें तो इसे किसी ने मापा नहीं है—हमने भी नहीं—और हम कोई आँकड़ा गढ़ने वाले नहीं हैं।

यह बात साफ़-साफ़ कहनी ज़रूरी है, क्योंकि इस category में ऐसे numbers भरे पड़े हैं जो अपने source से मिलाने पर टिकते नहीं—branding और revenue से जुड़े survey figures, प्रति-ticket support costs, या inconsistent documentation से जुड़े tickets के percentages। हमने इनमें से कई आँकड़े internally हटा दिए, बजाय इसके कि उन्हें दोहराएँ। इस सवाल का सचमुच जवाब देने वाली measurement—वास्तविक codebases में कितना drift है और downstream इसका क्या असर होता है—अब तक किसी ने नहीं की है।

बिना किसी number के जिस चीज़ का वर्णन किया जा सकता है, वह mechanism है—और यह mechanism बढ़ता जाता है:

  • जब तक महँगा न हो जाए, तब तक दिखाई नहीं देता। Drift को सस्ता रहते ठीक करने के दौरान कुछ भी उसे surface नहीं करता। वह तब सामने आता है जब किसी को शब्द एक जैसे चाहिए होते हैं, आम तौर पर समय के दबाव में।
  • हर surface के लिए अलग fix चाहिए। किसी phrase को बदलने का मतलब है हर उस जगह को ढूँढना जहाँ उसे दोबारा लिखा गया है—और ऐसी जगहों की कोई सूची नहीं होती।
  • Localization इसे कई गुना बढ़ा देता है। यही सबसे गंभीर हिस्सा है। एक ही विचार की तीन phrasings translation के लिए भेजें, तो हर language में तीन translations मिलेंगी। English में सीमित रही inconsistency अब आपके हर locale में दोहराई जाती है, और native speaker को ये तीन अलग features जैसी लगती हैं।

यही आख़िरी बिंदु है जिसकी वजह से copy consistency और localization अलग-अलग projects नहीं हैं। अगर आप यह नहीं बता सकते कि कौन-सी phrasing approved है, तो आप इनमें से किसी का सही अनुवाद नहीं कर सकते—translator के देखने से पहले ही source अस्पष्ट था। दोनों समस्याओं को ठीक करने वाला architecture एक ही है, जिसे हमने code-native product copy में बताया है।

Copy drift को कैसे रोकें?

Wording को एक ही जगह रखें और उसमें होने वाले बदलावों को review योग्य बनाएँ। बाकी सब अपने-आप इसके बाद आता है।

एक catalog। हर user-visible string components में inline बिखरी होने के बजाय एक ही जगह रहती है। अब consistency के लिए एक स्पष्ट reference मौजूद है।

Literals नहीं, keys। Components शब्दों को दोहराने के बजाय key को reference करते हैं। एक ही phrasing दो जगह मौजूद रहकर चुपचाप अलग नहीं हो सकती, क्योंकि वह केवल एक बार मौजूद है।

Diff में बदलाव। Copy change review में किसी भी दूसरे change की तरह दिखाई देता है। असली काम यही step करता है: consistency अब किसी के style guide याद रखने पर निर्भर नहीं रहती, बल्कि उस एक क्षण में दिखाई देती है जब कोई भरोसेमंद तरीके से उसे देख रहा होता है।

Product के बाहर के surfaces—marketing और landing pages—मुश्किल आधा हिस्सा हैं, और हम इसकी स्थिति साफ़-साफ़ बताएँगे: marketing, landing और product की copy को एक system के रूप में standardize करना वह दिशा है जिसकी ओर हम globalize.now में बढ़ रहे हैं; यह ऐसी चीज़ नहीं है जिसे आज ही switch on किया जा सके। Mechanism वही है जिसका ऊपर वर्णन किया गया है, बस app की सीमा से आगे तक विस्तारित है: अगर हर surface approved string को दोहराने के बजाय key से reference करे, तो phrase बदलना तीन अलग फैसलों के बजाय एक फैसला रह जाता है।

AI coding tools के साथ ship करने वाली teams को यह समस्या सबसे पहले दिखती है, इसलिए हम इस पर developers और AI tools के साथ बनाने वाले लोगों—दोनों के लिए लिखते हैं।

क्या style guide copy drift को ठीक कर सकती है?

नहीं—style guide और source of truth अलग समस्याएँ हल करते हैं, लेकिन teams अक्सर पहले को दूसरे की उम्मीद में खरीद लेती हैं।

Style guide बताती है कि अच्छी copy कैसी दिखती है: tone, capitalization, terminology, और कब “delete” कहना है तथा कब “remove”। यह सचमुच उपयोगी है और हर team के पास होनी चाहिए। लेकिन यह आपको नहीं बता सकती कि कोई string बदली है। इसमें पिछली wording का record नहीं होता और न ही बदलाव के क्षण से जुड़ा कोई hook; इसलिए इसे केवल वही व्यक्ति लागू कर सकता है जो संयोग से सही screen देख रहा हो।

Drift state की समस्या है, taste की नहीं। इसका fix वहीं होना चाहिए जहाँ state रहती है।

Drift उसी क्षण शुरू हो जाता है जब वही शब्द दो जगह मौजूद होते हैं। globalize.now आपके connected repository में उनका single source बनाता है और उसी एक copy से हर language तैयार करता है।

globalize.now आपके ऐप्लिकेशन की हार्डकोडेड कॉपी को अनुवाद-तैयार locale फ़ाइलों में बदल देता है और जैसे-जैसे आप नई रिलीज़ करते हैं, उन्हें अपडेट रखता है।

globalize.now को निःशुल्क आजमाएं