IOS info.plist फ़ाइल के अंदर एक स्ट्रिंग को स्थानीय कैसे करें?


258

जैसा कि आप जानते हैं कि iOS 8 को उपयोगकर्ता के स्थान का उपयोग करने के लिए NSLocationWhenInUseUsageDescription कुंजी की आवश्यकता होती है । मैंने इस कुंजी और कुछ सामान्य जानकारी को अपनी जानकारी में जोड़ा है। यहां छवि विवरण दर्ज करें

मैं plist फ़ाइल के अंदर अनुवाद स्ट्रिंग का उपयोग कैसे कर सकता हूं?

-- अपडेट करें --

मेरे पास पहले से ही एक स्थानीयकरण स्ट्रिंग है। मैं बस सोच रहा हूँ कि क्या मैं NSLocalizedString (MYSTRING, nil) जैसे कुछ का उपयोग कर सकता हूँ। मुझे पता है कि मैं स्थानीयकरण के लिए info.plist की कई फ़ाइल बना सकता हूं, लेकिन मैं सोच रहा था कि एक आसान तरीका हो सकता है।


क्या आपने कभी इस पर काम किया, मैं NSLocationWhenInUseUsageDescription स्थानीयकृत करने के लिए संघर्ष कर रहा हूं?
ओलिवर पियरमैन

जवाबों:


489

InfoPlist.stringsमूल्यों के स्थानीयकरण के लिए आपको फ़ाइल का उपयोग करना चाहिए Info.plist। ऐसा करने के लिए, पर जाएं File->New->File, टैब के Strings Fileनीचे Resourceचुनें iOS, इसे नाम दें InfoPlist, और बनाएं। उन Info.plistमानों को खोलें और सम्मिलित करें, जिन्हें आप स्थानीय बनाना चाहते हैं:

NSLocationWhenInUseUsageDescription = "Description of this";

अब आप InfoPlist.stringsअनुवाद के साथ फ़ाइल को स्थानीय कर सकते हैं । शुभ लाभ!

संपादित करें:

स्थानीयकरण विकल्पों का चयन करें, या यदि आवश्यक हो तो स्थानीयकरण सक्षम करें,

राइट साइड एडिटर

आपको फ़ाइल को बाईं ओर के संपादक में भी देखने में सक्षम होना चाहिए।

बाईं ओर के संपादक

संपादित करें:

यहाँInfo.plist कुंजी स्थानीयकरण के लिए आधिकारिक दस्तावेज है ।

मार्को को श्रेय , इस उत्तर में चित्रों को शामिल करने के लिए धन्यवाद!


15
स्ट्रिंग्स फ़ाइल बनाने के बाद, क्या आपको Info.plist फ़ाइल में भी कुंजी को शामिल करने की आवश्यकता है, या वहां से हटाना सुरक्षित है?
रौनक

11
युक्ति: बिल्कुल "InfoPlist.strings" नाम का उपयोग करें और कुछ नहीं। उदाहरण के लिए मेरी मूल infoplist फ़ाइल को कुछ और नाम दिया गया था, लेकिन मुझे इस नाम का उपयोग करने की आवश्यकता थी ताकि इसे काम में लाया जा सके।
सोज़र्ड परफ़ॉर्मर्स

22
सिम्युलेटर पर स्थानीयकरणों का परीक्षण करते समय। मुझे सिम्युलेटर पर भाषा बदलनी थी, न कि केवल भाषा के एक्सकोड लक्ष्य में। बस किसी और के लिए एक चेतावनी।
जॉन वेब

10
सही उपयोग कीनेम = "आपका पाठ" है; उदाहरण: NSLocationWhenInUseUsageDescription = "आपका पाठ"
मैगुरिज़ियो

10
सावधानी: इस फ़ाइल की कुंजी में उद्धरण चिह्न नहीं होना चाहिए, जो सामान्य स्थानीयकरण के साथ अलग है। जैसे: NSMicrophoneUsageDescription = "आपका विवरण";
युचाओ झोउ

33

उपरोक्त सभी ने मेरे लिए काम नहीं किया (XCode 7.3) इसलिए मैंने Apple संदर्भ को पढ़ा कि कैसे करना है, और यह ऊपर वर्णित बहुत सरल है। Apple के अनुसार:

स्थानीयकृत मान Info.plist फ़ाइल में ही संग्रहीत नहीं हैं। इसके बजाय, आप InfoPlist.strings नाम के साथ किसी स्ट्रिंग फ़ाइल में किसी विशेष स्थानीयकरण के लिए मान संग्रहीत करते हैं। आप इस फ़ाइल को उसी भाषा-विशिष्ट प्रोजेक्ट निर्देशिका में रखते हैं जिसका उपयोग आप उसी स्थानीयकरण के लिए अन्य संसाधनों को संग्रहीत करने के लिए करते हैं।

तदनुसार, मैंने InfoPlist.strings नामक एक स्ट्रिंग फ़ाइल बनाई और इसे "xx" भाषा के xx.lproj फ़ोल्डर में रखा (और फ़ाइल-> फ़ाइलें जोड़ें ... का उपयोग करके इसे प्रोजेक्ट में जोड़ा गया)। बस। कुंजी के लिए कोई ज़रूरत नहीं "स्थानीय संसाधनों को मिलाया जा सकता है" = हाँ, और आधार.लॉग या एन.एलप्रोज में InfoPlist.strings की कोई आवश्यकता नहीं है।

यदि यह भाषा विशेष फ़ाइल में कोई कुंजी नहीं ढूँढ सकता है तो अनुप्रयोग Info.plist कुंजी-मान को डिफ़ॉल्ट मान के रूप में उपयोग करता है। इस प्रकार, मैंने Info.plist फ़ाइल में अपना अंग्रेजी मान और भाषा विशिष्ट फ़ाइल में अनुवादित एक, परीक्षण किया और सब कुछ काम करता है।

विशेष रूप से, InfoPlist.strings (जो आधार में फ़ाइल का एक संस्करण बनाता है, को स्थानीय करने की कोई आवश्यकता नहीं है। lproj, en.lroj, और xx.lproj), और मेरे मामले में इस तरह से काम नहीं किया।


2
उपयुक्त दस्तावेज़ के लिंक को शामिल क्यों नहीं किया?
जुरासिक

3
यहां Apple doc के प्रासंगिक पृष्ठ का लिंक किसी के भी हित में है: developer.apple.com/library/archive/documentation/General/…
झुकें

और हम कैसे xx तय करते हैं? उदाहरण के लिए अंग्रेजी के लिए यह en, En, Eng, अंग्रेजी आदि हो सकता है। क्षमा करें, अगर इसका एक मूर्खतापूर्ण प्रश्न है क्योंकि मैं एक शुरुआत हूं
Awais Nasir

आपके जवाब ने मेरे लिए काम किया, जो कि फ़ॉलबैक भाषा के परिदृश्य को छोड़कर, ऐप में हमेशा पहले से इस्तेमाल की जाने वाली भाषा है, न कि अंग्रेजी, मेरे अंग्रेजी मूल्य की जानकारी Info.plist फ़ाइल में मौजूद है, हालांकि, मैंने आधार की भी कोशिश की है। एलप्रोज़ के साथ
Awais Nasir

19

यदि कुछ काम नहीं कर रहा है तो सुनिश्चित करें कि आपने जोड़ा है:

"स्थानीय संसाधनों को मिलाया जा सकता है" = हाँ

info.plist में। मेरे मामले में InfoPlist.strings फ़ाइलों को केवल अनदेखा किया गया था।


15

टिप्स

  1. याद रखें कि iOS सिम्युलेटर आपकी सिस्टम भाषा को डिफ़ॉल्ट रूप से दिखाता है। कृपया अपने अनुवाद का परीक्षण करने के लिए iOS सिम्युलेटर सेटिंग में भाषा (और क्षेत्र) बदलें।

  2. स्थानीयकरण स्ट्रिंग ( यहां Apple डॉक्स देखें ) होना चाहिए

    NSLocationWhenInUseUsageDescription = "Description of this";

    और नहीं (उद्धरण के साथ "...")

    "NSLocationWhenInUseUsageDescription" = "Description of this";

मूल्यवान जोड़, लेकिन मुझे लगता है कि यह संबंधित उत्तर के तहत एक टिप्पणी होनी चाहिए, न कि एक नया उत्तर। यह भी ध्यान दें कि "363" एक पोस्ट पहचानकर्ता नहीं है, लेकिन वोटों की संख्या का जवाब है (संख्या बदल गई है)।
जॉन जे। कैमिलेरी

7
मुझे वहां टिप्पणी जोड़ने के लिए 50 प्रतिष्ठा नहीं है।
Giuseppe Beccari

इससे कोई फर्क नहीं पड़ता कि आप कुंजी के आसपास "..." का उपयोग करते हैं जैसे: ( "NSLocationWhenInUseUsageDescription"="description"वैध है)। यह साथ या बिना हो सकता है।
mluisbrown

12

मैं अत्यधिक Apple के मार्गदर्शकों को पढ़ने, और यहाँ सूचीबद्ध WWDC संसाधनों को देखने की सिफारिश करूँगा: अंतर्राष्ट्रीयकरण और स्थानीयकरण विषय

विशेष रूप से आपके प्रश्न का उत्तर देने के लिए, जब आप अपनी परियोजना में एक नई भाषा जोड़ते हैं, तो आपको यहां छवि विवरण दर्ज करेंचुनने के लिए InfoPlist फ़ाइलों को चुनने का अवसर मिलता है (यदि आपके पास कई लक्ष्य हैं, तो आपके पास कई जानकारी युक्त फ़ाइल होंगी)। स्थानीयकरण के तहत आपको निम्नलिखित स्क्रीन + हिट करने के लिए सभी करने की आवश्यकता है और समर्थन जोड़ने के लिए एक नई भाषा चुनें। यहां छवि विवरण दर्ज करें

आपके द्वारा जोड़ दिए जाने के बाद, यह दी गई भाषा के लिए उपयुक्त lproj निर्देशिकाओं में आवश्यक स्ट्रिंग फाइलें बनाएगा।

--EDIT--

बस स्पष्ट होने के लिए, iOS आपके प्लेटिस्ट फ़ाइल के लिए स्ट्रिंग को स्वैप करेगा, जो कि उपयोगकर्ता की वर्तमान में चयनित भाषा के आधार पर स्थानीयकृत स्ट्रिंग्स फ़ाइल की कुंजी के रूप में प्लिस्ट प्रविष्टि की कुंजी का उपयोग करेगा।


3
केवल एक ही कुंजी के लिए पूरे प्लिस्ट का अनुवाद करना ओवरकिल है। अधिक जानकारी यहाँ
पाएं

2
यह केवल XCode 9 के लिए सच नहीं है। यह एक नई भाषा जोड़ते समय यह nevers plist स्थानीयकरण के लिए पूछता है।
टॉम

मुझे यह देखने की आवश्यकता होगी कि Xcode 9 के लिए - अभी तक नए Xcode में परीक्षण करने का मौका नहीं मिला है।
मैट एस।

11

चरण दर चरण स्थानीयकरण Info.plist:

  1. फ़ोल्डर संसाधन Xcode में खोजें (इसे रूट में रखा गया है)
  2. फ़ोल्डर संसाधन का चयन करें
  3. फिर मेन मेन्यू फाइल को दबाएं-> नई-> फाइल ...
  4. अनुभाग "संसाधन" स्ट्रिंग्स फ़ाइल में चयन करें और अगला दबाएं
  5. फिर Save Asफ़ील्ड में केवल InfoPlist लिखें ("I" कैपिटल और "P" कैपिटल)
  6. फिर Create को दबाएं
  7. फिर फ़ाइल का चयन करें InfoPlist.strings जो कि संसाधन फ़ोल्डर में बनाया गया है और दाएं मेनू में बटन दबाएं "स्थानीय करें"
  8. फिर आप प्रोजेक्ट नेविगेटर से प्रोजेक्ट का चयन करें और प्रोजेक्ट प्रोजेक्ट को प्रोजेक्ट सूची से चुनें
  9. नीचे दी गई जानकारी टैब में आप जितनी चाहें उतनी भाषाएं (अनुभाग स्थानीयकरण में है)
  10. संसाधन फ़ोल्डर में आप जिस भाषा को देख सकते हैं
  11. Info.plist फ़ाइल से मानों ("कुंजी") को स्थानीय बनाने के लिए, आप एक टेक्स्ट एडिटर के साथ खोल सकते हैं और उन सभी कुंजियों को प्राप्त कर सकते हैं जिन्हें आपको सूचित करना है
  12. आप उपरोक्त उदाहरण की तरह किसी भी InfoPlist.strings में उदाहरण के रूप में कोई भी कुंजी लिखें

"NSLocationAlwaysAndWhenInUseUsageDescription" = "blabla";

"NSLocationAlwaysUsageDescription" = "blabla2";

यह सब काम है और आप अपनी info.plist फ़ाइल को स्थानीय कर चुके हैं!


4

जानकारी की समस्या का सामना करने वाले किसी भी व्यक्ति के लिए। स्थानीयकरणों को जोड़ने की कोशिश में शामिल नहीं किया जा रहा है, जैसे कि Xcode 9 में।

आपको जानकारी बनाने की जरूरत है। लोकलजिबल को इसमें जाकर फाइल इंस्पेक्टर में लोकलाइज बटन पर क्लिक करें, जैसा कि नीचे दिखाया गया है।

जब आप नए स्थानीयकरण जोड़ने के लिए जाते हैं, तो info.plist फ़ाइल संसाधनों में शामिल किया जाएगा।

यहां छवि विवरण दर्ज करें


3
क्या आपने किसी समस्या का सामना किया? जब मैं दो भाषाओं को स्थानीयकरण में जोड़ता हूं तो मैं प्रोजेक्ट नहीं बना सकता क्योंकि xcode कह रहा है "फ़ाइल info.plist को खोला नहीं जा सकता क्योंकि ऐसी कोई फ़ाइल नहीं है।
mkkrolik

2
@mkkrolik मैं अब एक ही मुद्दा रहा हूँ। क्या आपने हल खोज लिया?
टोडानले

@Todanley इस समाधान को छोड़ें यह मेरे लिए काम नहीं करता है। इसके बजाय InfoPlist.strings का उपयोग करें।
mkkrolik

@mkkrolik धन्यवाद कि काम करता है। और सिम्युलेटर के साथ परीक्षण करते समय, मुझे काम करने के लिए अपने लक्ष्य के बजाय सिम्युलेटर की भाषा सेटिंग को बदलना पड़ा।
टोडानले

3

जैसा कि RGML कहता है, आप एक InfoPlist.strings बना सकते हैं, इसे स्थानीय कर सकते हैं और फिर अपनी कुंजी और मूल्य इस प्रकार जोड़ सकते हैं: "NSLocationWhenInUseUsageDescription" = "मुझे खोजने में मदद करें!"।

यह निर्दिष्ट भाषा के लिए आपकी info.plist में कुंजी जोड़ देगा।


0

मेरे मामले में सब कुछ सही ढंग से सेट किया गया था, लेकिन फिर भी InfoPlist.strings फ़ाइल नहीं मिली।

केवल एक चीज जो वास्तव में काम करती थी, वह थी InfoPlist.strings फ़ाइलों को प्रोजेक्ट में फिर से निकालना और जोड़ना


0

मेरे मामले में स्थानीयकरण ने नाम में '-' प्रतीक का काम नहीं किया। उदाहरण: "एयरो-इन्फो.प्लिस्ट" और स्थानीयकृत फाइलें: "एयरो-इन्फोप्लास्टस्ट्रिंग" और "एयरोइन्फोप्लिस्ट्स"।


0

InfoPlist.stringsफ़ाइल का उपयोग करते समय (एक्सकोड में इसे Info.plistफ़ाइल के बगल में रखा जाना चाहिए - वास्तविक फ़ाइल स्थान परियोजना के भीतर कहीं भी हो सकता है

XCode में देखें

) अनुवाद के लिए कुंजी के संक्षिप्त नाम का उपयोग करने के लिए सावधान रहें।

मैं उपयोग करने की कोशिश कर रहा था Privacy - Camera Usage Description, लेकिन काम करने की कुंजी हैNSCameraUsageDescription

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.