2014-04-23 9 views
6

मैं अभी भी आईओएस विकास सीखने के लिए काफी भुगतान कर रहा हूं, इसलिए कृपया दयालु रहें।
मैं लगभग 400 NSString litterals युक्त एक ऐसा iOS ऐप्लिकेशन है। मैंने कभी सोचा नहीं था कि मैं बाद में इस ऐप को स्थानीयकृत करना चाहता हूं, इसलिए NSLocalizedString के बारे में जागरूक होने पर मैंने अपने प्रोजेक्ट के लिए उनका उपयोग नहीं करने का फैसला किया।
अब दुनिया बदल गई है और मुझे इस एप्लिकेशन को स्थानीयकृत करने की आवश्यकता है। क्या कोई उपकरण/स्क्रिप्ट है जिसका उपयोग मैं कर सकता हूं जो .m फाइलों के माध्यम से चलाएगा और NSStrings के साथ NSLocalizedStrings के साथ "खोज/प्रतिस्थापित" करेगा, इससे पहले कि मैं उन्हें जेनरस्ट्रिंग के साथ निकालूं?स्वचालित रूप से एनएसएसटींग को NSLocalizedString में बदल रहा है?

धन्यवाद रोजर

उत्तर

1

प्रश्न से और आपकी टिप्पणियां ऐसा लगता है कि आपके पास लगभग 400 तार हैं जिनमें से 20 को स्थानीयकृत नहीं किया जाना चाहिए। उस अनुपात के साथ, जैसा कि आप स्वयं कहते हैं, उन्हें सभी बदलना और फिर 20 के लिए परिवर्तन को पूर्ववत करना समझ में आता है।

ऐसा करने के लिए TextWrangler, या BBEdit प्राप्त करें, और एक बहु-फ़ाइल पैटर्न मिलान करने वाली खोज करें और प्रतिस्थापित करें।आप .m या .h में समाप्त होने वाली फ़ाइलों को खोज को सीमित कर सकते हैं। कार्य उन 20 से अलग, त्वरित और आसान हो जाएगा ...

HTH

+0

धन्यवाद CRD। मैं नहीं मानता सोचा (Xcode बॉक्स किया जा रहा है, तो कहने के लिए) के साथ «बॉक्स से बाहर» के लिए प्रार्थना :(मिला यह करने के लिए समय आ गया है लगता। मेरी Regex कौशल पर ब्रश करना और इसे आजमाइए ... – theremin

+0

यह सिर्फ पूरी तरह से बाहर काम किया है और मुझे टाइपिंग के घंटे बचा लिया गया है। तुम्हें पता है, दिन के मेरे हीरो हैं CRD! – theremin

+0

पूर्णता के लिए के लिए। यह Regex है मैं उपयोग कर रहा हूँ (मेरे तार के सबसे सरणियों में थे)। मैं के लिए/खोजा @ "[^ ,;]"/g और NSLocalizedString ($ और, नहीं के बराबर) – theremin

2

आप आम तौर पर नहीं है सभी NSStringsNSLocalizedString साथ बदलने के लिए के रूप में नहीं सभी स्ट्रिंग्स जरूरी 'का सामना करना पड़ उपयोगकर्ता चाहते हैं। आपके पास स्ट्रिंग स्थिरांक हो सकते हैं जिनका उपयोग आंतरिक रूप से किया जाता है जिसे उपयोगकर्ता कभी नहीं देखता है और इन्हें सामान्य रूप से अनुवादित नहीं किया जाना चाहिए। इसलिए, NSLocalizedString के साथ सभी NSStrings को अंधाधुंध रूप से बदलना शायद एक अच्छा विचार नहीं है।

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

+0

अच्छा बिंदु, रोब! लेकिन मेरे 400 स्ट्रिंग्स में से, शायद लगभग 380 उपयोगकर्ता का सामना कर रहे हैं। तो यह उन सभी को स्ट्रिंग को स्थानीयकृत करने के लिए परिवर्तित करने के लिए कम काम करेगा और फिर उन 20 गैर उपयोगकर्ता-सामना वाले स्ट्रिंग को सामान्य NSStrings में परिवर्तित करें। – theremin

2

मैंने सीखा है और चेक आउट किया है, वहां आपके तारों को स्थानीयकृत करने के लिए कोई स्वचालित तरीका नहीं है। लेकिन XCode के लिए लिन नामक एक प्लगइन है, जो आपकी प्रक्रिया को आसान बनाता है।

जब आप स्ट्रिंग के स्थानीय संस्करण प्राप्त करने के लिए NSLocalizedString या अन्य कार्यों पर ध्यान केंद्रित कर रहे हैं, तो लिन स्थानीयकरण की सूची दिखाती है जिसमें इनपुट कुंजी स्ट्रिंग होती है।

Lin

6

आप एक गलती अपना कोड सही तरीके से पहली बार नहीं लिख, और अब आप कीमत का भुगतान करना बना दिया।

आपको अपने प्रोग्राम को मैन्युअल रूप से जाने और NSLocalizedString को कॉल करने के लिए उपयोगकर्ता-दृश्य स्ट्रिंग अक्षर बदलने की आवश्यकता है।

ध्यान दें कि आप वैश्विक रूप से सभी स्ट्रिंग अक्षर बदलना नहीं चाहते हैं। शब्दकोश कुंजी की तरह चीजें स्थानीयकृत नहीं की जानी चाहिए।

हमेशा, हमेशा स्थानीय तार बनाने के लिए NSLocalizedString का उपयोग करें। यह टाइप करने के लिए केवल कुछ और वर्ण है, और यह आसान नाटकीय रूप से अपने कोड अंतर्राष्ट्रीयकरण बनाता है।

अच्छी खबर यह है कि ऐसा करने का दर्द कड़वी सबक के रूप में कार्य करेगा और आप शायद वही गलती नहीं करेंगे।

+3

कभी कभी सच दर्द होता है ;-) – theremin

+0

मैं एक अनूठे मेरी कलाई – braden

3

हाँ! रेगेक्स को ढूंढें और बदलें, इसे तेज कर देगा।

ढूंढें बार पुट में:

(".*") 

की जगह बार में:

NSLocalizedString($1,comment:"") 

यह NSLocalizedString ("normalString", टिप्पणी: "") को "normalString" बदल जाएगा

तो अपने कोड के माध्यम से जाएं और जिन्हें आप प्रतिस्थापित करना चाहते हैं, बस प्रतिस्थापित करें, यह एक बड़ा टाइमवेवर है!

+0

रेगेक्स में ढूंढ विकल्प को सेट करना न भूलें – Pbk

संबंधित मुद्दे

 संबंधित मुद्दे