2012-06-25 8 views
28

में स्थानीयकरण योग्य नहीं है। मुझे यह वास्तव में दिमाग तोड़ने की समस्या है।आईओएस

मैंने XCode में एक Localizable.strings फ़ाइल बनाई और फिर इसमें 2 भाषाएं बनाईं।

मैंने इन फ़ाइलों को भाषा अनुवादों के साथ भर दिया, एक बिल्ड/साफ किया और फिर एक नया निर्माण किया, लेकिन मेरे प्रोजेक्ट में स्थानीयकरण स्ट्रिंग्स का कोई तरीका नहीं है। अगर मैं कुछ ऐसा करने की कोशिश करता हूं:

self.title = NSLocalizedString(@"HEAD", nil); 

केवल अनुवाद के बजाय "HEAD" डिवाइस सिम्युलेटर में दिखाई देता है।

यह मेरा परियोजना पदानुक्रम है:

project hierarchy

और यह अंग्रेजी स्थानीयकरण फ़ाइल की सामग्री हैं: enter image description here

कोई भी विचार?

+1

यह [जवाब] (http://stackoverflow.com/a/8851669/384808) आपकी मदद कर सकते है। –

+0

@BrianDriscoll धन्यवाद, लेकिन इससे मदद नहीं मिली। – jbssm

+0

क्या मैं localizable.strings फ़ाइल की सामग्री देख सकता हूं? – CodaFi

उत्तर

61

मुझे जवाब खुद मिला।

परियोजना की सफाई और निर्माण के अलावा और ऊपर वर्णित सभी के अलावा। आपको आईफोन सिम्युलेटर में ऐप भी हटाना होगा और फिर इसे फिर से बनाना होगा! उसके बाद यह पूरी तरह से काम करता है।

यह आसान एप्पल बनाने के बारे में बात करते ...

+4

क्या यह सिम्युलेटर के लिए केवल एक समस्या है या ऐप स्टोर पर उपयोगकर्ताओं को भी नई भाषा को काम करने के लिए ऐप को हटाना होगा? धन्यवाद। – geekinit

+0

@geekinit मैंने ऐप को भौतिक डिवाइस में परीक्षण नहीं किया है, इसलिए मुझे उस प्रश्न का उत्तर नहीं पता है। अगर आपको यह मुश्किल हो तो मैं जवाब जानना चाहूंगा। – jbssm

+0

इसके लिए धन्यवाद। ऐप को हटाने, सफाई और पुनः स्थापित करने के लिए यह मेरे लिए काम किया। –

3

@ jbssm के समाधान काम करता है, लेकिन एक बेहतर तरीका (सुनिश्चित करें कि संसाधन की सफाई और हर बार हटाए बिना अद्यतन करने रखेंगे बनाने) एक कस्टम स्क्रिप्ट का निर्माण चरण जोड़ने के लिए किया जाएगा जो Localizable.bundle के एक्सेस समय को बदलता है।

https://stackoverflow.com/a/19274844/414037

1

में बताया गया है मैं 1 जवाब अपने आप को मिल गया।

सुनिश्चित करें कि सभी मानों के साथ अंत बिंदु है; अन्यथा, यह काम नहीं करता ..

+4

आपकी परियोजना संकलित नहीं होगी जब ';' अनुपलब्ध – Jasper

+0

यह उत्तर उन लोगों के लिए सही है जो स्टोरीबोर्ड स्थानीयकरण का उपयोग करते हैं। यदि आपके स्टोरीबोर्ड स्थानीयकरण में आपके पास अनुपलब्ध ';' है, तो परियोजना ठीक से संकलित होगी लेकिन रनटाइम पर स्थानीयकरण लोड नहीं करेगी।हालांकि यदि आप localizable.strings का उपयोग कर रहे हैं तो यह एक त्रुटि होगी यदि अनुपलब्ध है; ' – sleepwalkerfx

4

सुनिश्चित करें कि आपके पास बिल्ड चरण, कॉपी बंडल संसाधनों के तहत Localizable.strings हैं।

+0

वास्तव में मुझे यह याद आ रही थी, धन्यवाद! इसे –

18

सुनिश्चित करें कि:

  1. फ़ाइल कहा जाता है: "Localizable.strings"।
  2. "Localizable.strings" उस लक्ष्य से संबंधित है जिसका आप से निपट रहे हैं।
+2

धन्यवाद दिया जाना चाहिए :) यह मेरी समस्या हल हो गई। Lozalizable.strings नाम की फ़ाइल थी। आपकी पोस्ट के बिना इसे नोटिस नहीं करेंगे! –

+3

मैं "Lozalizable" पर LOL'd –

+0

हां, सुनिश्चित करें कि आपका फ़ाइल नाम "लोकलाइजेशन.स्ट्रिंग" नहीं है, मुझे एक ही समस्या थी और मैंने इसे "Localizable.string" में बदलकर ठीक काम किया :) –

4

चेक फ़ाइल नाम यदि पहले अक्षर अपरकेस Localizable.strings

0

मेरे मामले में है, मेरे Localizable.strings फ़ाइल का प्रारूप सही नहीं था, कुछ बचे पाठ की वजह से। कंपाइलर शिकायत नहीं करता था, लेकिन फ़ाइल के अवैध खंड के बाद सभी तारों को नजरअंदाज कर दिया गया था।मेरी फ़ाइल ने इस तरह कुछ देखा:

"कुंजी 1" = "स्ट्रिंग 1";

  • एक स्ट्रिंग

  • एक स्ट्रिंग

  • एक स्ट्रिंग

एक स्ट्रिंग ";

" Key2 "=" string2 ";

इसलिए किसी भी Localizable.strings का निरीक्षण करना सुनिश्चित करें जिसे ठीक से संसाधित नहीं किया जा रहा है। आप सभी स्वरूपण त्रुटियों को पकड़ने के लिए कंपाइलर पर भरोसा नहीं कर सकते हैं।

+1

त्रुटि। लाइन खोजने के लिए टर्मिनल में निम्न कमांड का उपयोग करें: plutil -lint Kusan

+0

ग्रेट ट्रिक, धन्यवाद @ कुसान! – phatmann

7

कुछ चेक:

  1. यकीन है कि फ़ाइल नाम बिल्कुल Localizable.strings है और लक्ष्य
  2. हर स्ट्रिंग ;
  3. हर तार के साथ समाप्त हो गया है में शामिल है के साथ "
  4. टिप्पणियाँ डबल उद्धृत किया गया है सुनिश्चित करें // से शुरू होता है (#)
+0

सभी सत्यापन प्रदान करने के लिए धन्यवाद – Esha

0

स्थानीयकरण पर मेरे दो सेंट। मैंने स्थानीयकरण फ़ाइलों के साथ tweaked किया है, जोड़ा और उन्हें हटा दिया, और परियोजना कई Xcode अद्यतनों के तहत चला गया था। बाद में पता चला कि अंग्रेजी को छोड़कर कोई भी स्थानीयकरण काम नहीं कर रहा है।

समस्या यह थी कि मेरे पास base स्थानीयकरण होना चाहिए, मुझे दाईं तरफ बेस पर टिकटें चाहिए जब मैंने उस फ़ाइल को बाएं जोड़ा और ऐप में अन्य अनुवाद आया। निश्चित रूप से एक ऐसी ही सवाल का वहाँ तार ...

enter image description here