दोनों ऐप स्टोर पर लोकलाइज़्ड स्क्रीनशॉट का बल्क अपलोड
deliver/supply)। Mokbi हर लोकेल × डिवाइस को रेंडर करता है और सेट को आपके लिए दोनों स्टोर पर पब्लिश करता है — Play Developer API के ज़रिए सीधे Google Play पर भेजकर, और App Store Connect में आपके अंतिम सबमिट के लिए तैयार स्टेज करके।आप रिलीज़ के बीचोबीच हैं। स्क्रीनशॉट तैयार हैं। अब उन्हें दोनों स्टोर में, आपकी सपोर्ट की गई हर भाषा में, हर स्टोर की माँग वाले हर डिवाइस साइज़ में डालना है। यही वह हिस्सा है जिसके बारे में कोई पहले नहीं बताता — और यहीं लोग चुपचाप "bulk upload localized screenshots app store connect / google play all languages" जैसा सर्च करने लगते हैं।
पहले ईमानदार जवाब ले लीजिए, ताकि खोजना बंद कर सकें: किसी भी स्टोर में लोकेल्स तक फैला हुआ नेटिव बल्क अपलोड नहीं है। आप हर लोकेल, हर डिवाइस-साइज़ फ़ैमिली के हिसाब से, वेब UI में एक-एक बकेट भरते हैं।
"कोई बल्क अपलोड नहीं" का असल मतलब
App Store Connect में आप अपना ऐप खोलते हैं, वर्ज़न चुनते हैं, स्क्रीनशॉट सेक्शन तक स्क्रॉल करते हैं, और PNG को किसी ख़ास डिस्प्ले-टाइप स्लॉट में ड्रैग करते हैं — 6.9", 6.5", 13" iPad, वग़ैरह। फिर लोकलाइज़ेशन ड्रॉपडाउन अगली भाषा पर बदलते हैं और फिर से यही करते हैं। Apple हर डिवाइस टाइप, हर लोकलाइज़ेशन के हिसाब से 10 तक स्क्रीनशॉट जोड़ने देता है। इमेजेज़ के लिए कोई "apply to all languages" बटन नहीं है।
Google Play Console भी वैसे ही काम करता है। Main store listing के तहत आप एक लोकेल चुनते हैं, फिर हर डिवाइस सेक्शन में स्क्रीनशॉट अपलोड करते हैं — फ़ोन, 7-इंच टैबलेट, 10-इंच टैबलेट, और चाहें तो Chromebook, Wear OS, Android TV, और नए टाइप। हर डिवाइस टाइप में 8 तक। भाषा बदलिए, दोहराइए।
तो काम की इकाई "एक स्क्रीनशॉट सेट" नहीं है। यह है एक बकेट = एक भाषा × एक डिवाइस-साइज़ फ़ैमिली, और हर बकेट आप हाथ से भरते हैं।
ड्रैग का आकार, आंकड़ों में
बकेट्स को ईमानदारी से गिनिए। Apple पर, एक सामान्य सबमिशन कम से कम एक iPhone डिस्प्ले फ़ैमिली और एक iPad डिस्प्ले फ़ैमिली भरता है — इसे 2 मानिए, अगर 6.9" के साथ अलग 6.5" iPhone सेट भी रखते हैं तो ज़्यादा। Play पर, सामान्य सबमिशन फ़ोन प्लस दो टैबलेट साइज़ भरता है — इसे 3 मानिए, अगर Chromebook या Wear OS जोड़ते हैं तो ज़्यादा।
- एक भाषा, दोनों स्टोर: लगभग 2 Apple बकेट + 3 Play बकेट = 5 मैनुअल अपलोड।
- दस भाषाएँ: लगभग 20 + 30 = 50 बकेट भरने हैं, हर एक में 8–10 इमेज तक।
- पचास भाषाएँ: लगभग 100 + 150 = 250 अलग ड्रैग-एंड-ड्रॉप अपलोड, यह चेक करने से पहले ही कि सही इमेज सही स्लॉट में पहुँची या नहीं।
हर लोकेल पर तीस मिनट का ड्रैगिंग — लोग यह आँकड़ा यूँ ही नहीं कहते। किसी भी असली भाषा-गिनती पर यह काम रहना बंद हो जाता है और एक पूरी दोपहर बन जाता है — ऐसी दोपहर जो अगली रिलीज़ पर फिर दोहरानी पड़ती है।
ऑटोमेशन के सिर्फ़ दो रास्ते
अगर वेब UI को पूरी तरह छोड़ना है, तो सपोर्टेड दरवाज़े सिर्फ़ दो हैं, हर स्टोर के लिए एक:
- App Store Connect API. स्क्रीनशॉट रिसोर्स आपको किसी दिए गए लोकलाइज़ेशन और डिवाइस डिस्प्ले टाइप के लिए सेट बनाने और प्रोग्रामेटिक रूप से इमेज अपलोड करने देता है। आप API key से ऑथेंटिकेट करते हैं और हर लोकेल, हर डिस्प्ले फ़ैमिली के हिसाब से इमेज पुश करते हैं।
- Google Play Developer API.
edits.images.uploadमेथड किसी तय भाषा और इमेज टाइप (phoneScreenshots,sevenInchScreenshots,tenInchScreenshots, वग़ैरह) की एक इमेज को पेंडिंग एडिट में अपलोड करता है, जिसे बाद में कमिट किया जाता है।
ज़्यादातर टीमें इन्हें सीधे कॉल नहीं करतीं। वे ऊपर fastlane इस्तेमाल करती हैं: deliver (जिसे upload_to_app_store भी कहते हैं) App Store Connect API चलाता है, और supply (upload_to_play_store) Play Developer API चलाता है। Supply लोकलाइज़्ड इमेज एक साथ पुश करने के लिए कई अपलोड थ्रेड तक बना देता है। असली "बल्क अपलोड" यही है — यह डैशबोर्ड का बटन नहीं, एक API लूप है।
इसकी क़ीमत भी साफ़ समझ लीजिए: fastlane मतलब Ruby टूलचेन, एक fastfile, स्टोर API क्रेडेंशियल, और (Apple की तरफ़) कोड-साइनिंग और सिम्युलेटर की सामान्य झंझट। जब आप बार-बार शिप करते हैं, तो यह पूरी तरह वसूल होता है। साल में कुछ ही बार सबमिट करने वाले ऐप के लिए, सिर्फ़ इमेज अपलोड करने के लिए इसे खड़ा करना, जिस ड्रैग की जगह लेता है उससे ज़्यादा काम हो सकता है। अगर आप बिल्ड्स के लिए इसे पहले से चलाते हैं, तो स्क्रीनशॉट स्टेप जोड़ना लगभग मुफ़्त है।
असली बॉटलनेक यह है कि स्क्रीनशॉट आते कहाँ से हैं
ग़ौर कीजिए कि ऊपर बताया हर रास्ता यह मान लेता है कि फ़ाइलें पहले से मौजूद हैं — सही साइज़ की, हर डिवाइस फ़ैमिली के लिए एक सेट, हर भाषा में अनुवादित। असली मुश्किल यही है। App Store Connect API और Play Developer API तैयार इमेज को इधर से उधर भेजते हैं; वे न तो उन्हें डिज़ाइन करते हैं, न रीसाइज़ करते हैं, न कैप्शन अनुवाद करते हैं। अगर आप किसी डिज़ाइन टूल में हाथ से 5 डिवाइस साइज़ पर 50 भाषा वेरिएंट बना रहे हैं, तो अपलोड कभी आपका बॉटलनेक था ही नहीं।
यही वह गैप है जो Mokbi भरता है। आप एक डिज़ाइन बनाते हैं, और वह उसी एक सोर्स से हर डिवाइस साइज़ और 50 में से हर भाषा रेंडर करता है — कैप्शन अनुवादित, लेआउट फिर से व्यवस्थित, हर फ़्रेम उसके स्टोर स्लॉट की सटीक पिक्सेल डाइमेंशन में एक्सपोर्ट किया गया। नतीजा एक बैच होता है: लोकेल × डिवाइस फ़ाइलों का साफ़ सेट, नाम और व्यवस्था के साथ, सही बकेट में डालने के लिए तैयार।
दोनों स्टोर पर वन-क्लिक पब्लिश
Mokbi ठीक यही हल करता है। आप एक सेट बनाते हैं, और यह हर लोकेल × हर डिवाइस साइज़ रेंडर करता है और उन्हें दोनों स्टोर पर पब्लिश करता है — Play Developer API के ज़रिए सीधे Google Play पर भेजकर, और App Store Connect में सेट को आपके सबमिट के लिए तैयार स्टेज करके। Apple को अंतिम Submit और रिव्यू चाहिए ही, तो वह आख़िरी टैप आपके पास रहता है; उस तक की हर चीज़ संभाल ली जाती है। कोई मैनुअल प्रति-लोकेल, प्रति-डिवाइस अपलोड नहीं।
अगर आप पहले से अपने CI में fastlane या स्टोर API चलाते हैं, तो वही एक्सपोर्ट की गई फ़ाइलें सीधे deliver और supply में जाती हैं। किसी भी तरह डिज़ाइन, रीसाइज़, और 50-भाषा अनुवाद आपके लिए हो जाता है — और अब पब्लिश भी।
वह वर्कफ़्लो जो सच में दोपहर बचाता है
- एक बार डिज़ाइन कीजिए। एडिटर में कैरोसेल एक बार बनाइए।
- मैट्रिक्स को बैच-एक्सपोर्ट कीजिए। हर डिवाइस साइज़ × हर भाषा, सटीक स्टोर डाइमेंशन में, एक ही एक्सपोर्ट में।
- दोनों स्टोर पर पब्लिश कीजिए। Mokbi सेट्स को Google Play पर भेजता है और App Store Connect में आपके अंतिम सबमिट के लिए स्टेज करता है — या अगर CI चलाते हैं तो फ़ाइलें fastlane
deliver/supplyको दे दीजिए। - अगली रिलीज़ पर, फिर से एक्सपोर्ट कीजिए और दोहराइए। डिज़ाइन एक बार बदलिए, पूरा मैट्रिक्स फिर से बनाइए, फिर अपलोड कीजिए।
जो हिसाब मायने रखता है: बकेट्स की गिनती नहीं बदलती, लेकिन हर बकेट पर लगने वाला समय तब सिमट जाता है जब आप पहले से डिज़ाइन और रीसाइज़ करने के बजाय एक तैयार, सही साइज़ की फ़ाइल ड्रॉप कर रहे होते हैं। यही फ़र्क़ है एक पूरी दोपहर और एक कॉफ़ी ब्रेक के बीच।