वह निर्देश जिसने गलत छब्बीस भाषाएं मिटा दीं

मैंने अपनी ही साइट के ऑटोमेशन को कहा कि ब्लॉग को सिमटाकर चार भाषाओं तक ले आए। दो दिन बाद पता चला कि उसने चुपचाप होमपेज से भी छब्बीस भाषाएं गायब कर दी थीं, और न मुझे इसकी भनक लगी, न किसी विज़िटर को।
TL;DR
- ब्लॉग सेक्शन के लिए दिया गया एक निर्देश पूरी साइट पर लागू हो गया।
- होमपेज, सीवी पेज और नेविगेशन की हर स्ट्रिंग से 30 में से 26 भाषाएं गायब हो गईं।
- कुछ भी क्रैश नहीं हुआ, कोई 404 भी नहीं आया, इसलिए दो दिन तक किसी को कुछ पता ही नहीं चला।
- फिक्स Git हिस्ट्री से निकला, इस याद्दाश्त से नहीं कि साइट पहले कैसी दिखती थी।
- असली सबक यह है: कोई भी ऑटोमेटेड बदलाव चलाने से पहले, यह साफ-साफ बताएं कि वह ठीक-ठीक किन फाइलों को छूने वाला है, फिर कुछ भी डिलीट होने से पहले वह लिस्ट पढ़ें।
पहले तो मैं भाषाएं कम क्यों करना चाहता था
कुछ ही महीनों में मेरी साइट तीस भाषाओं तक पहुंच गई थी: होमपेज, सीवी पेज, और एक ब्लॉग जिसे मैं लगभग हर कुछ दिनों में अपडेट करता हूं। इस बारे में मैं पहले भी लिख चुका हूं कि यह कितना खतरनाक हो सकता है: मशीन ट्रांसलेशन इतनी रवां होती है कि ठीक लगे, और इतनी गलत कि आपको उस भाषा में शर्मिंदा कर दे जिसे आप खुद जांच नहीं सकते। होमपेज और सीवी में मुश्किल से कोई बदलाव होता है, इसलिए वहां यह जोखिम मुझे मंजूर था। ब्लॉग की कहानी अलग थी। नई पोस्ट्स अक्सर पब्लिश होती हैं, और मैं ईमानदारी से यह गारंटी नहीं दे सकता कि पब्लिश होने के उसी दिन एस्टोनियाई भाषा में किसी नए आर्टिकल का ट्रांसलेशन कितना सही है।
इसलिए मैंने तय किया कि ब्लॉग के लिए ट्रांसलेट होने वाली भाषाओं की संख्या घटाकर उन चार तक ले आऊं जिन्हें मैं खुद ठीक से जांच सकता हूं: अंग्रेज़ी, रूसी, जर्मन, चेक। बाकी सब भाषाएं तब तक ब्लॉग से बाहर रहेंगी जब तक मेरे पास इन्हें वेरिफाई करने का बेहतर तरीका नहीं आ जाता। प्लान का यह हिस्सा बिल्कुल ठीक था। गड़बड़ इसमें हुई कि मैंने इसे मांगा कैसे।
एक वाक्य, गलत दायरा
मैंने एक ही निर्देश दिया: ब्लॉग को चार भाषाओं तक सीमित रखो। छोटा, सटीक, कम से कम मुझे तो यही लगा था। लेकिन जो असल में चला, उसने एक साथ तीन अलग-अलग चीज़ों को छुआ। उसने ब्लॉग के अपने कंटेंट फोल्डर्स को सही तरीके से सिमटाकर उन चार भाषाओं तक ला दिया जो मैं चाहता था। साथ ही उसने साइट की मास्टर लैंग्वेज लिस्ट भी फिर से लिख दी, वह कॉन्फ़िग फाइल जो बताती है कि साइट पर कुल कितनी भाषाएं मौजूद हैं, और बाकी छब्बीस भाषाओं के लिए होमपेज का कंटेंट और नेविगेशन स्ट्रिंग्स डिलीट कर दीं।
असल दिक्कत यह है कि “ब्लॉग” और “पूरी साइट की भाषाओं की लिस्ट” दोनों एक ही कॉन्फ़िग फाइल में रहते हैं। उस फाइल में ऐसा कुछ नहीं है जो यह अलग बताए कि ब्लॉग किन भाषाओं को सपोर्ट करता है और साइट किन भाषाओं को। उस लिस्ट से एक भाषा हटाओ, और हर वह सेक्शन जो उसे वहां से पढ़ता है, होमपेज समेत, उसे एक झटके में खो देता है। मेरे निर्देश ने एक सेक्शन का नाम लिया था। जो बदलाव असल में हुआ, उसका दायरा पूरी साइट जितना बड़ा था।
जो चीज़ इसे सिर्फ गलत होने से आगे बढ़ाकर खतरनाक बनाती है, वह यह है: कुछ भी जोर से नहीं टूटा। न कोई एरर, न 404, न बिल्ड फेल्योर। साइट बस चुपचाप छब्बीस भाषाओं के लिए होमपेज और सीवी पेज जेनरेट करना बंद कर गई, और लैंग्वेज स्विचर ने भी उन्हें दिखाना बंद कर दिया। जो विज़िटर पहले साइट को पुर्तगाली में पढ़ता था, वह अब चुपचाप अंग्रेज़ी पर पहुंच जाता। डिलीट होने की वजह से गायब होना बिल्कुल वैसा ही दिखता है जैसे वह भाषा कभी थी ही नहीं, और इन दोनों में से कोई भी एरर नहीं देता।
मुझे यह पकड़ने में दो दिन लग गए, और वह भी महज संयोग से, एक बिल्कुल अलग फिक्स के बीच में, जब एक भाषा के नेविगेशन में “Blog” लिंक कहीं अजीब जगह जा रहा था, जबकि मुझे लगता था कि वह भाषा अभी भी लाइव है। पूरी समस्या तक वापस पहुंचने का इकलौता दिखने वाला सूत्र वही एक टूटा हुआ लिंक था।
डिफ ने असल में क्या दिखाया
यहां असली गलती दायरे की चूक नहीं है। असली गलती यह है कि बदलाव चलाने देने से पहले मैंने कभी उन फाइलों की लिस्ट चेक ही नहीं की जिन्हें वह असल में छूने वाला था। मैंने बस एक लाइन का विवरण पढ़ा कि उसे क्या करना है, और मान लिया कि यही बताता है कि उसने क्या किया। ऐसा नहीं था।
इसे ठीक करने की शुरुआत एक सवाल से हुई: क्या बदला, और कहां। मैंने लाइव साइट को उस आखिरी कमिट के मुकाबले डिफ किया जो “ब्लॉग सिमटाओ” वाले निर्देश से पहले की थी, और जवाब तुरंत और बिल्कुल साफ था: मास्टर लैंग्वेज कॉन्फ़िग, होमपेज का कंटेंट फोल्डर, और छब्बीस पर-लैंग्वेज स्ट्रिंग फाइलें, इनमें से कोई भी ब्लॉग डायरेक्टरी के आसपास तक नहीं थी। Git में ये सारी फाइलें बिल्कुल वैसी ही मौजूद थीं जैसी पहले थीं। असल में कुछ खोया नहीं था, बस ऊपर से डिप्लॉय कर दिया गया था।
मैंने उसी हिस्ट्री से सभी तीस भाषाओं के लिए होमपेज, सीवी और नेविगेशन स्ट्रिंग्स रिस्टोर कर दीं, और ब्लॉग फोल्डर को ठीक उतना ही सिमटा हुआ रहने दिया जितना मैं चाहता था: चार भाषाएं, जानबूझकर। एक ढीला सिरा अब भी बचा था। किसी रिस्टोर हुई भाषा में “Blog” वाला नेविगेशन लिंक उस भाषा के ब्लॉग एडिशन की ओर जाता था जो अब मौजूद ही नहीं था। सिर्फ उस एक लिंक को भरने के लिए चार पोस्ट्स को छब्बीस और भाषाओं में डुप्लिकेट करना इसके लायक नहीं था, इसलिए मैंने टेम्पलेट को इस तरह सेट किया कि वह इसकी जगह अंग्रेज़ी ब्लॉग पर रीडायरेक्ट करे, और इसे वहीं छोड़ दिया।

अगली बार मैं क्या अलग तरीके से जांचूंगा
अब किसी भी ऑटोमेटेड बदलाव को लाइव, मल्टी-सेक्शन साइट पर छूने देने से पहले, मैं एक अतिरिक्त सवाल जोर से पूछता हूं: बताओ यह ठीक-ठीक किन फाइलों को छूने वाला है, न कि वह फीचर जिसे यह ठीक करने वाला है। अगर जवाब धुंधला हो, तो यही इशारा है कि रुककर जांच करो, चलाकर देखने का नहीं। और कुछ भी डिलीट होने से पहले, मुझे असल फाइल लिस्ट अपने सामने चाहिए, न कि यह एक लाइन का सारांश कि निर्देश का मतलब क्या माना गया था। किसी निर्देश में आया दायरे वाला शब्द, “ब्लॉग,” “यह टीम,” “बस फ्रंटएंड,” अपने आप उस बदलाव के दायरे के बराबर नहीं हो जाता जो वह निर्देश शुरू करता है, और ये दोनों तभी मेल खाते हैं जब किसी ने असल में जांच लिया हो कि वे मेल खाते हैं: और यही वह सवाल है जो मैं आपसे पूछना चाहूंगा। हाल ही में आपने सबसे छोटा, सबसे भरोसे से तय किया हुआ कौन सा निर्देश दिया था, जिसे कभी यह जांचकर नहीं देखा गया कि वह असल में क्या छू गया?
Need something like this for your own business? See how I can help →
Get the AI Audit Kickoff Checklist
Fifteen questions to ask about your own processes before you spend a cent on AI. The same first hour I run in a real audit, as a one-page PDF. Drop your email and you get it right away, plus the occasional note when I write something worth your time. No spam, unsubscribe in one click.