Mac ऐप की हर स्थानीयकरण कुंजी का ऑडिट करने के लिए, संबंधित टार्गेट बनाएँ, हर स्ट्रिंग टेबल को सभी समर्थित भाषाओं से जाँचें, फिर चल रहे ऐप में संदेश के विभिन्न रूपों का परीक्षण करें। कैटलॉग की पूर्णता और रनटाइम पर सही प्रदर्शन की अलग-अलग जाँच आवश्यक है।
यह कार्यप्रवाह Xcode में Mac डेस्कटॉप ऐप का रखरखाव करने वाले डेवलपर के लिए है। इसका ठोस लक्ष्य अनुपस्थित संदेशों, अधूरे अनुवादों, गलत आर्ग्युमेंट और प्रदर्शन संबंधी समस्याओं का पता लगाने योग्य रिकॉर्ड बनाना है। उदाहरणों में काल्पनिक लेबल और संख्याएँ हैं; वे ऐसी ऑडिट विधि बताते हैं जिसे आप अपने प्रोजेक्ट पर लागू कर सकते हैं।
तय करें कि पूर्ण संदेश किसे माना जाएगा
एक छोटी ऑडिट वर्कशीट से शुरुआत करें। ऐप टार्गेट, रिसोर्स बंडल, स्ट्रिंग टेबल, कुंजी, समर्थित स्थानीयकरण, आवश्यक रूपांतर, अनुवाद की स्थिति और रनटाइम परिणाम दर्ज करें। हर bundle–table–key संयोजन को अलग संदेश पहचान मानें, ताकि अलग-अलग रिसोर्स में समान कुंजी-पाठ किसी कमी को छिपा न दे।
Apple के दस्तावेज़ बताते हैं कि स्थानीयकरण योग्य API टेबल और बंडल निर्दिष्ट कर सकते हैं, और मुख्य बंडल से बाहर के रिसोर्स खोजने के लिए उपयुक्त बंडल की आवश्यकता होती है। इसलिए केवल डिफ़ॉल्ट Localizable.xcstrings फ़ाइल जाँचने से ऐप में कहीं और मौजूद संदेश छूट सकते हैं। देखें अपने ऐप के पाठ को अनुवाद के लिए तैयार करना।
प्रोजेक्ट एडिटर में प्रोजेक्ट के समर्थित स्थानीयकरण देखें: Project के अंतर्गत प्रोजेक्ट चुनें, Info खोलें और Localizations देखें। यह भी जाँचें कि उन स्थानीयकरणों में कौन-कौन से रिसोर्स शामिल हैं। Apple का भाषाओं और क्षेत्रों के लिए समर्थन जोड़ना इन प्रोजेक्ट सेटिंग्स और रिसोर्स चयन की व्याख्या करता है।
वर्कशीट में Localization A, Localization B और Localization C जैसे काल्पनिक उपनाम इस्तेमाल कर सकते हैं। अपने कार्य रिकॉर्ड में इनका वास्तविक प्रोजेक्ट स्थानीयकरण पहचानकर्ताओं से मेल बनाए रखें। ये उपनाम वर्कशीट के लेबल हैं, Xcode में दर्ज किए जाने वाले मान नहीं।
ऑडिट के लिए निम्नलिखित पूर्णता मानदंड अपनाएँ। यह प्रस्तावित समीक्षा विधि है, Apple द्वारा परिभाषित पूर्णता स्थिति नहीं।
| जाँच | दर्ज करने के लिए साक्ष्य |
|---|---|
| सूचीकरण | संदेश का टार्गेट, बंडल, टेबल और कुंजी पहचाने गए हैं। |
| खोज | संदेश कोड से निकाला गया है या जानबूझकर मैन्युअल रूप से रखा गया है। |
| कवरेज | हर आवश्यक स्थानीयकरण में संदेश के जरूरी रूपांतर मौजूद हैं। |
| आर्ग्युमेंट | हर आर्ग्युमेंट अपना अभिप्रेत अर्थ और संगत प्रकार बनाए रखता है। |
| रनटाइम | संबंधित Mac इंटरफ़ेस में सही संदेश और मान दिखाई देते हैं। |
| निपटान | हर निष्कर्ष ठीक किया गया है, कारण सहित जानबूझकर बाहर रखा गया है, या अभी खुला है। |
अनुवादों की समीक्षा से पहले कैटलॉग सूची बनाएँ
प्रोजेक्ट के मौजूदा स्ट्रिंग कैटलॉग खोलें। यदि किसी टार्गेट में कैटलॉग नहीं है, तो Apple का दस्तावेज़ित निर्माण मार्ग है File > New > File from Template, फिर String Catalog चुनें। डिफ़ॉल्ट नाम Localizable है; वही टेबल नाम इस्तेमाल करें जिसकी अपेक्षा आपका कोड करता है। कैटलॉग भरने और अपडेट करने के लिए Product > Build चुनें। देखें स्ट्रिंग कैटलॉग से पाठ का स्थानीयकरण और रूपांतर।
सिर्फ़ एक सफल बिल्ड को पूरी सूची मानने के बजाय हर संबंधित Mac स्कीम बनाएँ। Apple बताता है कि एक्सट्रैक्शन मौजूदा स्कीम और प्लेटफ़ॉर्म के लिए स्ट्रिंग खोजता है। किसी संदेश का एक बिल्ड में न होना, उसे अप्रयुक्त मानने से पहले जाँच का कारण है। यह सीमा Discover String Catalogs में बताई गई है।
Use Compiler to Extract Swift Strings बिल्ड सेटिंग जाँचें। Apple स्पष्ट रूप से कहता है कि स्थानीयकरण एक्सपोर्ट में सभी स्थानीयकरण योग्य Swift पाठ शामिल करने के लिए इसे सक्षम होना चाहिए। यदि अनुवाद कार्य के लिए विनिमय प्रति चाहिए, तो प्रोजेक्ट चुनें और Product > Export Localizations चुनें, फिर आवश्यक स्थानीयकरण चुनें। एक्सपोर्ट किया गया .xcloc पैकेज Xcode Localization Catalog है, जो किसी एक .xcstrings स्ट्रिंग टेबल से अलग है। देखें स्थानीयकरण एक्सपोर्ट करना।
इसके बाद ऐप के सामान्य डेस्कटॉप हिस्सों में जाएँ: मुख्य विंडो, मेनू, टूलबार, सेटिंग्स, पैनल, खाली अवस्थाएँ और संख्या पर निर्भर लेबल। हर ऐप-स्वामित्व वाले संदेश के लिए उसकी वर्कशीट प्रविष्टि खोजें। दिखाई देने वाले इंटरफ़ेस से सूची की ओर यह उलटी जाँच उन पाठों को पकड़ने में मदद करती है जो कभी कैटलॉग तक नहीं पहुँचे।
यह न मानें कि एक्सट्रैक्शन हर मनमानी स्ट्रिंग अभिव्यक्ति खोज लेगा। Apple स्थानीयकरण योग्य API के ज़रिए एक्सट्रैक्शन का वर्णन करता है। जब अपेक्षित संदेश न मिले, तो दूसरी प्रविष्टि मैन्युअल रूप से जोड़ने से पहले जाँचें कि कोड उसे कैसे बनाता और पास करता है। देखें अपने ऐप के पाठ को अनुवाद के लिए तैयार करना।
एक्सट्रैक्शन, लुकअप और रनटाइम फ़ॉर्मैटिंग को अलग-अलग जाँचें
ये प्रक्रियाएँ अलग-अलग सवालों के जवाब देती हैं। एक्सट्रैक्शन पूछता है कि क्या Xcode विकास के दौरान संदेश खोज सकता है। लुकअप पूछता है कि चल रहा ऐप कौन-सा स्थानीयकृत रिसोर्स माँगता है। रनटाइम फ़ॉर्मैटिंग चुने गए संदेश में दिखने वाली बदलती सामग्री उपलब्ध कराती है।
SwiftUI में आर्ग्युमेंट के प्रकार मायने रखते हैं। Text("Open collection") जैसा लिटरल स्थानीयकृत लुकअप में शामिल होता है। संबंधित इनिशियलाइज़र को साधारण String वैरिएबल देने पर सामान्यतः वह वैरिएबल बिना स्थानीयकरण के दिखता है। Apple इस अंतर को LocalizedStringKey में दर्ज करता है।
किसी वैरिएबल से स्पष्ट रूप से LocalizedStringKey बनाने पर लुकअप का अनुरोध होता है, लेकिन इससे यह साबित नहीं होता कि बिल्ड-टाइम एक्सट्रैक्शन ने हर संभावित वैरिएबल मान खोज लिया है। गतिशील रूप से चुनी गई कुंजियों के लिए, अनुमत कुंजियों के पूरे सेट की कैटलॉग से तुलना करें। परीक्षण के दौरान संयोग से दिखे किसी एक मान पर निर्भर रहने के बजाय हर मेल न खाने वाले मान की जाँच करें।
इंटरपोलेशन संदेश के स्तर पर भी काम करता है। SwiftUI फ़ॉर्मैट स्पेसिफ़ायर वाला स्थानीयकृत संदेश खोज सकता है और रेंडर करने से पहले इंटरपोलेट किया गया मान उसमें भर सकता है। Apple Text दस्तावेज़ में स्थानीयकरण योग्य पाठ बनाने के लिए इंटरपोलेशन की अनुशंसा करता है।
किसी संख्या में आइटम बताने वाले उदाहरणात्मक संदेश पर विचार करें। कैटलॉग में स्थानीयकरण योग्य संदेश की संरचना और उसके रूपांतर रखे जाते हैं; बदलती संख्या रनटाइम व्यवहार का हिस्सा है। केवल संख्या बदलने के कारण 1 और 24 की गिनती जाँचने के लिए दो अलग-अलग रखी जाने वाली कुंजियों की ज़रूरत नहीं होनी चाहिए।
सही दिखने वाला लेबल सफल लुकअप का कमज़ोर प्रमाण है। Apple बताता है कि स्थानीयकृत मान न मिलने पर SwiftUI कुंजी को ही दिखा सकता है। यदि कुंजी स्रोत-पाठ के रूप में पढ़ी जा सकती है, तो लुकअप की समस्या सामान्य लेबल जैसी लग सकती है। दिखाई देने वाले नतीजे के साथ चुने गए स्थानीयकरण और कैटलॉग प्रविष्टि की पुष्टि करें। देखें स्थानीयकरण के लिए व्यू तैयार करना।
हर भाषा और हर आवश्यक रूपांतर की समीक्षा करें
एक समय में एक टेबल और एक स्थानीयकरण पर काम करें। हर संदेश के लिए उसकी अनुवाद स्थिति, पाठ, आर्ग्युमेंट और विस्तारित रूपांतर जाँचें। आसपास के संदेश पूरे होने पर भी अधूरी पंक्तियों को खुला रखें।
Apple के कैटलॉग कार्यप्रवाह में New, Needs Review, अनूदित प्रविष्टियों और Stale स्ट्रिंगों के बीच अंतर है। Stale प्रविष्टि वह है जो अब कोड में नहीं मिली; मैन्युअल रूप से रखी गई प्रविष्टियाँ सिंक्रनाइज़ेशन के दौरान अपने आप अपडेट या हटाई नहीं जातीं। अनुवाद मिटाने से पहले पुष्टि करें कि stale कुंजी की ज़रूरत नहीं है। देखें Discover String Catalogs।
गिनती पर निर्भर संदेशों के लिए, इंटरपोलेट की गई कुंजी पर Control-click करें और Vary by Plural चुनें। Xcode द्वारा हर स्थानीयकरण के लिए दिए गए सभी रूपों की समीक्षा करें। आवश्यक रूप अलग-अलग हो सकते हैं, इसलिए स्रोत स्थानीयकरण में जितनी पंक्तियाँ हैं, उतनी ही पंक्तियों का मिलान पर्याप्त जाँच नहीं है। यदि कैटलॉग में डिवाइस के अनुसार रूपांतर हैं, तो Mac-विशिष्ट मान और सामान्य मान दोनों देखें। Apple इन दोनों नियंत्रणों का दस्तावेज़ स्ट्रिंग कैटलॉग से पाठ का स्थानीयकरण और रूपांतर में देता है।
आर्ग्युमेंट को दिखावट के साथ-साथ अर्थ के आधार पर भी जाँचें। समूहों में आइटम बताने वाले काल्पनिक संदेश में पहचानें कि कौन-सा आर्ग्युमेंट आइटम की गिनती है और कौन-सा समूहों की। अनुवाद में उनकी जगह बदल सकती है, लेकिन उनके अर्थ वही रहने चाहिए। Apple का कैटलॉग सत्र Discover String Catalogs में आर्ग्युमेंट की स्थितियों, प्रकार निर्दिष्ट करने वाले स्पेसिफ़ायर और बहुवचन प्रतिस्थापनों की व्याख्या करता है।
जहाँ छोटा लेबल अस्पष्ट हो, वहाँ संदर्भ जोड़ें। Open के लिए टिप्पणी यह बता सकती है कि यह किसी संग्रह की पंक्ति पर मौजूद क्रिया है। SwiftUI का comment पैरामीटर यह संदर्भ स्थानीयकरण आउटपुट तक पहुँचाता है; Apple इसका वर्णन स्थानीयकरण के लिए व्यू तैयार करना में करता है।
अधूरा काम दिखाने वाली कवरेज मैट्रिक्स इस्तेमाल करें
कैटलॉग की प्रगति देखने के लिए एक प्रतिशत उपयोगी है, लेकिन ऑडिट में कवरेज और व्यवहार के लिए अलग-अलग कॉलम चाहिए। नीचे दिया उदाहरण बताता है कि ऐसा क्यों है। इसकी संख्याएँ काल्पनिक हैं और संदेश–स्थानीयकरण युग्म दर्शाती हैं, किसी ऐप के माप नहीं।
मान लें कि सूची में 48 आवश्यक संदेश और तीन समर्थित स्थानीयकरण हैं। इससे 144 आवश्यक युग्म बनते हैं: 48 गुणा 3। हर युग्म में बहुवचन या डिवाइस के अतिरिक्त रूपांतर हो सकते हैं, जिनकी अलग जाँच करनी होगी।
| स्थानीयकरण | आवश्यक युग्म | कैटलॉग जाँचें पूरी | रनटाइम जाँचें पूरी |
|---|---|---|---|
| Localization A | 48 | 48 | 48 |
| Localization B | 48 | 46 | 44 |
| Localization C | 48 | 48 | 45 |
| कुल | 144 | 142 | 137 |
यहाँ, दो युग्मों पर कैटलॉग का काम बाकी है और सात की रनटाइम जाँच पूरी नहीं हुई है। ये समूह एक-दूसरे से मेल खा सकते हैं, इसलिए उन्हें जोड़ने पर अलग-अलग अधूरे संदेशों की भरोसेमंद संख्या नहीं मिलेगी। दोनों निष्कर्षों को उनकी संबंधित पंक्तियों से जोड़कर रखें।
हर अधूरी पंक्ति के लिए अगला विशिष्ट कदम दर्ज करें: अनुपस्थित स्रोत संदेश खोजें, बहुवचन रूप पूरा करें, आर्ग्युमेंट की पुष्टि करें, बंडल चयन की जाँच करें या कम चौड़ाई पर इंटरफ़ेस फिर देखें। इससे मैट्रिक्स केवल सजावटी प्रगति रिपोर्ट के बजाय मरम्मत की सूची बन जाती है।
हर समर्थित स्थानीयकरण में Mac ऐप चलाएँ
ऐप-स्तर की बार-बार की जा सकने वाली जाँच के लिए Xcode की स्कीम सेटिंग्स इस्तेमाल करें। Product > Scheme > Edit Scheme चुनें, Run चुनें, Options खोलें और App Language तथा App Region चुनें। डायलॉग बंद करें, Mac रन डेस्टिनेशन चुनें और ऐप चलाएँ। अपने ऑडिट में समर्थित संयोजनों के लिए यह प्रक्रिया दोहराएँ। Apple इस क्रम का दस्तावेज़ ऐप चलाते समय स्थानीयकरणों का परीक्षण में देता है।
हर बार इंटरफ़ेस में उसी रास्ते से जाएँ। हर संदेश को उसकी प्रासंगिक अवस्थाओं में चलाएँ: खाली संग्रह, एक आइटम, कई आइटम और लंबे काल्पनिक लेबल। बहुवचन संदेशों के लिए, उस स्थानीयकरण में मौजूद रूपों की शाखाएँ चलाने के लिए आवश्यक अतिरिक्त मान चुनें; छोटी तय संख्या-सूची से शाखाओं का पूरा कवरेज साबित नहीं होता।
पूरे वाक्य, प्रतिस्थापित मान, टेक्स्ट का अगली पंक्ति में जाना, कटना और मेनू या नियंत्रण की चौड़ाई जाँचें। जब किसी संदेश में दो गिनतियाँ हों, तो उन्हें स्वतंत्र रूप से बदलें। उदाहरण के लिए, समूहों की गिनती स्थिर रखते हुए आइटम की गिनती बदलने से आर्ग्युमेंट मैपिंग की गलती सामने आ सकती है।
SwiftUI प्रीव्यू से मरम्मत का चक्र छोटा हो सकता है। Apple प्रीव्यू का locale environment मान सेट करने और स्थानीयकरण जोड़ने या इम्पोर्ट करने के बाद कई स्थानीयकृत प्रीव्यू बनाने की सुविधा देता है। किसी समस्याग्रस्त व्यू को फिर देखने के लिए उनका इस्तेमाल करें, फिर ऐप के असली रास्ते से पुष्टि करें। देखें स्थानीयकरणों का प्रीव्यू देखना।
जब हर आवश्यक संदेश–स्थानीयकरण युग्म का निपटान दर्ज हो जाए और उसकी सभी आवश्यक शाखाएँ जाँच ली जाएँ, तब ऑडिट बंद करें। सूची, परीक्षण का रास्ता और अनसुलझे निष्कर्ष एक साथ सुरक्षित रखें। इस रिकॉर्ड से अगला ऑडिट उपयोगी कदमों में बदलता है: बदले हुए संदेश की जगह, अपेक्षित आर्ग्युमेंट, आवश्यक रूपांतर और उसका प्रदर्शन जाँचने का दोहराया जा सकने वाला तरीका पता रहता है।
स्रोत
- स्ट्रिंग कैटलॉग से पाठ का स्थानीयकरण और रूपांतर — Apple Developer
- अपने ऐप के पाठ को अनुवाद के लिए तैयार करना — Apple Developer
- भाषाओं और क्षेत्रों के लिए समर्थन जोड़ना — Apple Developer
- Discover String Catalogs — Apple Developer
- स्थानीयकरण एक्सपोर्ट करना — Apple Developer
- LocalizedStringKey — Apple Developer
- Text — Apple Developer
- स्थानीयकरण के लिए व्यू तैयार करना — Apple Developer
- ऐप चलाते समय स्थानीयकरणों का परीक्षण — Apple Developer
- स्थानीयकरणों का प्रीव्यू देखना — Apple Developer