Mac ऐप के अनुवादों का राउंड-ट्रिप करने के लिए, Xcode Localization Catalog निर्यात करें, उसकी प्लूरल संरचना और आर्ग्युमेंट मैपिंग सुरक्षित रखें, फिर लौटाए गए पैकेज को आयात करके जाँचें। यह गाइड एक कृत्रिम चयन लेबल का उपयोग करके दिखाती है कि अनुवाद के लिए वास्तव में क्या भेजना और क्या जाँचना है।

यह काम उस व्यक्ति के लिए है जो Mac पर Xcode में अनुवादकों के लिए सामग्री तैयार कर रहा है: अनुवाद के लिए संख्या पर निर्भर एक संदेश भेजें और उसका व्यवहार बरकरार रखते हुए उसे वापस लाएँ। उदाहरण लेबल है 2 समूहों में 3 टाइलें चुनी गईं। दोनों संख्याएँ एक-दूसरे से स्वतंत्र रूप से बदल सकती हैं, इसलिए सामग्री में पढ़ने योग्य शब्दों से अधिक चीज़ें सुरक्षित रखनी होंगी।

निर्यात करने से पहले संदेश का अनुबंध तय करें

संदेश के अनुबंध को एक छोटे विनिर्देश की तरह मानें: ऐप किस एंट्री को खोजता है, रनटाइम उसे कौन-सी वैल्यू देता है, और व्याकरणिक रूपों में बदलाव किन वैल्यू से नियंत्रित होता है। Apple के दस्तावेज़ बताते हैं कि String.LocalizationValue इंटरपोलेशन वाले लोकलाइज़ किए जा सकने वाले स्ट्रिंग्स का समर्थन करता है, जिनमें रनटाइम पर दी गई वैल्यू भी शामिल हैं। दस्तावेज़ यह भी बताते हैं कि जब आइडेंटिफ़ायर दिखाए जाने वाले स्रोत पाठ से अलग होना चाहिए, तो स्थिर कुंजी और अलग डिफ़ॉल्ट वैल्यू का उपयोग किया जा सकता है। String.LocalizationValue

इस उदाहरण के लिए, अनुवाद अनुरोध के साथ निम्नलिखित अनुबंध दर्ज करें। ये कृत्रिम लेबल के लिए उदाहरणार्थ आवश्यकताएँ हैं, Apple का फ़ाइल फ़ॉर्मैट नहीं।

अनुबंध का तत्व इस उदाहरण की आवश्यकता
संदेश का उद्देश्य मौजूदा चयन का सार बताना
अंग्रेज़ी स्रोत Selected 3 tiles in 2 groups.; दोनों संख्याएँ रनटाइम पर दी जाती हैं
आर्ग्युमेंट 1 टाइलों की संख्या; tile का रूप नियंत्रित करती है
आर्ग्युमेंट 2 समूहों की संख्या; group का रूप नियंत्रित करती है
संख्यात्मक निरूपण हर आर्ग्युमेंट के लिए Xcode द्वारा दर्ज प्रकार और फ़ॉर्मैट स्पेसिफ़ायर बनाए रखें
अनुवाद की स्वतंत्रता हर आर्ग्युमेंट का अर्थ बनाए रखते हुए वाक्य का क्रम बदल सकते हैं
अपेक्षित व्यवहार हर संज्ञा का रूप उसी की अपनी संख्या से मेल खाए

प्रोजेक्ट का वास्तविक कैटलॉग, टेबल और कुंजी भी दर्ज करें। अनुवाद के दौरान कोई नई कुंजी न बनाएँ। Apple की तैयारी गाइड बताती है कि लोकलाइज़ किए जा सकने वाले API बिल्ड के दौरान कैटलॉग भरते हैं और table या tableName पैरामीटर कैटलॉग चुनता है। यह स्ट्रिंग का संदर्भ समझाने वाली टिप्पणियों का भी समर्थन करती है। अपने ऐप के पाठ को अनुवाद के लिए तैयार करना

उपयोगी कृत्रिम टिप्पणी: चयन का सार। आर्ग्युमेंट 1 चुनी गई टाइलों की संख्या है। आर्ग्युमेंट 2 उन समूहों की संख्या है जिनमें वे टाइलें हैं। दोनों संख्याएँ एक-दूसरे से स्वतंत्र रूप से बदलती हैं। हर संख्या को उसकी संबंधित संज्ञा से जोड़े रखें। इससे अनुवादक को दो आर्ग्युमेंट अलग-अलग समझने में मदद मिलती है, भले ही दोनों का संख्यात्मक प्रकार एक जैसा हो।

कैटलॉग में प्लूरल के स्वतंत्र रूप तैयार करें

ऐप के लोकलाइज़ किए जा सकने वाले स्रोत में संदेश से शुरुआत करें, फिर प्रोजेक्ट बिल्ड करें। स्ट्रिंग कैटलॉग एडिटर में संबंधित कुंजी पर Control-क्लिक करें और Vary by Plural चुनें। Apple के दस्तावेज़ बताते हैं कि Xcode इंटरपोलेशन का फ़ॉर्मैट स्पेसिफ़ायर निर्धारित करता है, भाषा के प्लूरल रूप जोड़ता है और वैरिएंट फ़ील्ड में शुरुआत में मौजूदा वैल्यू भरता है। इन पहले से भरी वैल्यू को फिर भी संपादित करना होगा। स्ट्रिंग कैटलॉग के साथ पाठ को लोकलाइज़ करना और उसके रूप बदलना

अंग्रेज़ी स्रोत के लिए, अपेक्षित रेंडर किए गए परिणामों में Selected 1 tile in 1 group., Selected 3 tiles in 1 group. और Selected 1 tile in 2 groups. शामिल हैं। केवल टाइलों की संख्या पर आधारित एक विकल्प हर संयोजन सही ढंग से नहीं बना सकता।

Apple का String Catalog प्रदर्शन सब्स्टिट्यूशन के ज़रिए कई आर्ग्युमेंट के रूप बदलने का समर्थन करता है। हर सब्स्टिट्यूशन में प्लूरल केस होते हैं, और उसका इंस्पेक्टर आर्ग्युमेंट की स्थिति और C-शैली फ़ॉर्मैट स्पेसिफ़ायर दिखाता है। रनटाइम चुने गए सब्स्टिट्यूशन को आसपास के संदेश के साथ जोड़ता है। String Catalogs को जानें

दो स्वतंत्र संख्याओं के लिए यही तरीका अपनाएँ। जिन शब्दों का रूप संख्या से मेल खाना चाहिए, उन्हें संबंधित रूप-परिवर्तन के भीतर रखें; उन्हें आसपास के वाक्य में स्थिर प्लूरल संज्ञा के रूप में न छोड़ें। जहाँ एडिटर अनुमति दे, सब्स्टिट्यूशन को अर्थपूर्ण नाम दें, फिर उनकी मैपिंग जाँचें: टाइलों वाला सब्स्टिट्यूशन अब भी आर्ग्युमेंट 1 और समूहों वाला सब्स्टिट्यूशन आर्ग्युमेंट 2 का उपयोग करे।

हर लक्षित लोकलाइज़ेशन में अंग्रेज़ी की शाखाओं की सूची हूबहू दोहराने की माँग न करें। Apple के दस्तावेज़ बताते हैं कि Xcode भाषा-विशिष्ट प्लूरल रूप जोड़ता है। स्रोत लोकलाइज़ेशन में रूप जोड़ने पर वे रूप अनुवादों में भी पहुँचते हैं; केवल किसी अन्य लोकलाइज़ेशन में जोड़ने पर उसका प्रभाव उसी लोकलाइज़ेशन तक रहता है। निर्यात से पहले लक्ष्य भाषा की वास्तविक शाखाएँ जाँचें। स्ट्रिंग कैटलॉग के साथ पाठ को लोकलाइज़ करना और उसके रूप बदलना

शब्दों का क्रम बदलने पर आर्ग्युमेंट की पहचान सुरक्षित रखें

वाक्य में प्लेसहोल्डर की स्थिति और उसका आर्ग्युमेंट नंबर अलग-अलग काम करते हैं। अनुवादक को समूहों की संख्या, टाइलों की संख्या से पहले रखनी पड़ सकती है, जबकि ऐप इन वैल्यू को देने का क्रम बदले बिना।

Apple के फ़ॉर्मैट स्पेसिफ़ायर संदर्भ में n$ का उपयोग करके स्थितिगत संकेतन का वर्णन है। उदाहरण के लिए, %1$lld का अर्थ है long long पूर्णांक रूपांतरण के साथ आर्ग्युमेंट 1, जबकि %2$lld उसी रूपांतरण के साथ आर्ग्युमेंट 2 को दर्शाता है। %d एक अलग पूर्णांक निरूपण है; यह %lld का छोटा रूप नहीं है। यह संदर्भ पुराना दस्तावेज़ है, इसलिए इन स्थापित फ़ॉर्मैटिंग नियमों के लिए इसका उपयोग मौजूदा कैटलॉग वर्कफ़्लो के साथ करें। String Format Specifiers

उदाहरणार्थ फ़ॉर्मैट अंश Groups: %2$lld; tiles: %1$lld देखें। आर्ग्युमेंट 1 का मान 3 और आर्ग्युमेंट 2 का मान 2 होने पर इसका अपेक्षित आउटपुट Groups: 2; tiles: 3 है। यह अंश केवल आर्ग्युमेंट का क्रम दिखाता है; यह व्याकरणिक प्लूरल चयन लागू नहीं करता और इसे कैटलॉग के सब्स्टिट्यूशन की जगह नहीं लेना चाहिए।

प्लेसहोल्डर को अर्थ, इंडेक्स और प्रकार के आधार पर जाँचें। केवल यह देखना कि दो प्रतिशत चिह्न मौजूद हैं, अदला-बदली हुई संख्याओं का पता नहीं लगाएगा। केवल प्रकार जाँचने से भी अदला-बदली नहीं दिखेगी, क्योंकि दोनों वैल्यू पूर्णांक हैं। इसके उलट, किसी एक अनुवाद से मेल कराने के लिए ऐप के आर्ग्युमेंट का क्रम बदलने से उस एंट्री का उपयोग करने वाले हर दूसरे अनुवाद का अनुबंध बदल जाएगा।

अनुवाद के लिए सामग्री भेजते समय अनुवादक से कहें कि शब्दों को ढालते हुए निर्यात किए गए आर्ग्युमेंट संबंध और फ़ॉर्मैटिंग प्रकार बनाए रखें। सब्स्टिट्यूशन में संरचनात्मक बदलाव हो तो अनुबंध के अनुसार उसकी स्पष्ट समीक्षा करें। शब्दों का क्रम बदलना बिल्कुल उचित हो सकता है।

अनुवादक को लौटाने योग्य पैकेज निर्यात करें

निर्यात करने से पहले, प्रोजेक्ट की Use Compiler to Extract Swift Strings बिल्ड सेटिंग चालू करें ताकि Swift लोकलाइज़ किए जा सकने वाले स्ट्रिंग शामिल हों। Project नेविगेटर में प्रोजेक्ट चुनें, Product > Export Localizations चुनें, ज़रूरी लोकलाइज़ेशन और गंतव्य चुनें, फिर निर्यात करें। Apple इन चरणों और उनसे बनने वाले .xcloc पैकेज का दस्तावेज़ देता है। लोकलाइज़ेशन निर्यात करना

कैटलॉग के दो एक्सटेंशन के काम अलग-अलग हैं। प्रोजेक्ट की .xcstrings फ़ाइल में उसका String Catalog होता है। निर्यात किया गया .xcloc पैकेज अनुवादक को दिया जाता है; उसके Localized Contents फ़ोल्डर में XLIFF होता है, और Notes फ़ोल्डर में सहायक पाठ रखा जा सकता है। संदेश को केवल दिखाई देने वाले वाक्यों की दो-कॉलम सूची में बदलने के बजाय, अनुबंध नोट के साथ पैकेज भेजें। लोकलाइज़ेशन निर्यात करना

जाँचें कि अनुवाद टूल XLIFF में String Catalog के रूपों का समर्थन करता है। Apple बताता है कि कैटलॉग से बने रूप-परिवर्तन पहचानकर्ता स्ट्रिंग कुंजी और रूप-परिवर्तन कॉन्फ़िगरेशन को कोड करते हैं, और उस निर्यात निरूपण के लिए Localization Prefers String Catalogs सेटिंग का दस्तावेज़ देता है। वापसी के दौरान इन संरचनाओं को सुरक्षित रहना चाहिए। String Catalogs को जानें

यह व्यावहारिक सामग्री-जाँच सूची अपनाएँ। यह दस्तावेज़ित पैकेज संरचना और उदाहरण के अनुबंध से निकली वर्कफ़्लो सिफ़ारिश है।

  • लौटाए गए अनुवादित .xcloc पैकेज के साथ उसके संबंधित संसाधन भी सुरक्षित रखें।
  • संदेश आइडेंटिफ़ायर और रूप-परिवर्तन पथ बनाए रखें, जब तक किसी जानबूझकर किए गए संरचनात्मक बदलाव का दस्तावेज़ न हो।
  • लक्ष्य लोकलाइज़ेशन के लिए ज़रूरी प्लूरल शाखाओं का पाठ दें।
  • आर्ग्युमेंट की पहचान, संख्यात्मक प्रकार और सब्स्टिट्यूशन मैपिंग सुरक्षित रखें।
  • निर्यात के बाद मिले स्रोत में किसी भी बदलाव की पहचान करें, ताकि आयात से पहले उनका मिलान किया जा सके।

यदि अनुवादक का टूल रूप-परिवर्तन वाली एंट्री सुरक्षित नहीं रख सकता, तो Xcode का उपयोग करके निर्यात किए गए लोकलाइज़ेशन को संपादित करें या प्रोजेक्ट के कैटलॉग में अनुवाद दर्ज करें। Apple XLIFF लक्ष्य और Xcode में स्ट्रिंग कैटलॉग संपादित करने के दस्तावेज़ देता है; बाद के निर्यात में कैटलॉग के बदलाव शामिल होते हैं। केवल सपाट पाठ का आदान-प्रदान करने पर किसी को रूप-परिवर्तन की संरचना फिर से बनानी पड़ती है। XLIFF और स्ट्रिंग कैटलॉग फ़ाइलें संपादित करना

लौटाई गई सामग्री आयात करें और वास्तविक अंतर देखें

तुलना के लिए मूल निर्यात उपलब्ध रखें। अनुवादित पैकेज लौटने पर प्रोजेक्ट चुनें और Product > Import Localizations चुनें। Xcode Localization Catalog फ़ोल्डर चुनें। आयात इंटरफ़ेस में, Issues View से चेतावनियाँ और त्रुटियाँ देखें, और आयात पूरा करने से पहले File View से बदलावों की समीक्षा करें। Apple के अनुसार तुलना एडिटर बाईं ओर आयात किया गया संस्करण और दाईं ओर मौजूदा प्रोजेक्ट संस्करण दिखाता है। लोकलाइज़ेशन आयात करना

कैटलॉग से बनी स्ट्रिंग के लिए Apple उपयुक्त String Catalog में अनुवाद आयात करने का दस्तावेज़ देता है। आयात के बाद, चयन-सारांश एंट्री फिर खोलें और दोनों सब्स्टिट्यूशन, उनकी आर्ग्युमेंट मैपिंग और लक्ष्य शाखाएँ जाँचें। String Catalogs को जानें

कुछ गलत दिखे तो केंद्रित निदान क्रम अपनाएँ। यदि एंट्री मौजूद नहीं है, तो उसकी टेबल और कुंजी की मूल निर्यात से तुलना करें। यदि प्लूरल वैरिएंट मौजूद नहीं हैं, तो लौटाई गई रूप-परिवर्तन संरचना की तुलना करें। यदि संख्याएँ गलत संज्ञाओं के पास दिखें, तो आर्ग्युमेंट मैपिंग की तुलना करें। यदि केवल एक संयोजन गलत पढ़ा जाता है, तो ऐप कोड बदलने से पहले उस शाखा का पाठ जाँचें। यह क्रम उदाहरण की निर्भरताओं का अनुसरण करता है; इसका अर्थ यह दावा करना नहीं है कि Xcode अनुबंध के हर उल्लंघन का अपने आप पता लगा लेता है।

आर्ग्युमेंट की अदला-बदली पकड़ने के लिए अलग-अलग संख्याएँ जाँचें

सफल आयात से यह पुष्टि होती है कि Xcode ने सामग्री स्वीकार कर ली। फिर भी उदाहरण के व्यवहार की जाँच आवश्यक है। निम्न संयोजनों को रेंडर करने के लिए ऐप के टेस्ट डेटा या डेवलपमेंट फ़िक्स्चर का उपयोग करें। अपेक्षित वाक्य अंग्रेज़ी स्रोत के अनुबंध को दर्शाते हैं; लक्ष्य भाषा का पाठ और शाखा चयन लक्ष्य लोकलाइज़ेशन के अनुसार होना चाहिए।

टाइलों की संख्या समूहों की संख्या अपेक्षित अंग्रेज़ी स्रोत आउटपुट इससे क्या पता चल सकता है
1 1 Selected 1 tile in 1 group. दोनों एकवचन रूप
3 1 Selected 3 tiles in 1 group. टाइलों का स्वतंत्र रूप-परिवर्तन
1 2 Selected 1 tile in 2 groups. समूहों का स्वतंत्र रूप-परिवर्तन
3 2 Selected 3 tiles in 2 groups. अलग-अलग मान, जो आर्ग्युमेंट की अदला-बदली पकड़ सकते हैं

यदि ऐप खाली चयन दिखा सकता है, तो शून्य संख्या की जाँच भी जोड़ें। लक्ष्य लोकलाइज़ेशन की हर ज़रूरी प्लूरल श्रेणी को जाँचने वाली संख्याएँ भी चुनें। ऊपर की चार पंक्तियाँ अंग्रेज़ी के एकवचन/बहुवचन संयोजनों को कवर करती हैं, हर लक्ष्य शाखा को नहीं।

लक्ष्य लोकलाइज़ेशन में Mac ऐप चलाने के लिए, Product > Scheme > Edit Scheme चुनें, Run चुनें और Options खोलें। App Language और ज़रूरत पड़ने पर App Region सेट करें, एडिटर बंद करें, Mac रन डेस्टिनेशन चुनें और ऐप चलाएँ। Apple इस स्कीम-आधारित परीक्षण वर्कफ़्लो का दस्तावेज़ देता है। ऐप चलाते समय लोकलाइज़ेशन का परीक्षण करना

रेंडर किए गए संदेश को पढ़ें और देखें कि वह डेस्कटॉप इंटरफ़ेस में ठीक से समा रहा है या नहीं। यदि संख्याएँ सही संज्ञाओं से जुड़ी रहें, हर ज़रूरी शाखा सही काम करे और लौटाई गई संरचना अपेक्षित अनुबंध से मेल खाए, तो अनुवाद राउंड-ट्रिप ने इस लेबल के लिए ज़रूरी व्यवहार सुरक्षित रखा है। अनुबंध नोट सामग्री के साथ रखें, ताकि शब्दों में अगला बदलाव भी इन्हीं स्पष्ट आवश्यकताओं के अनुसार जाँचा जा सके।

स्रोत