2011-05-27 16 views
25

मैं एक आईओएस ऐप लिख रहा हूं, जहां मैं चाहता हूं कि उपयोगकर्ता आईफोन या आईपैड की भाषा से स्वतंत्र यूआई भाषा को बदल सके। सवाल यह है कि, जब भाषा बदलती है और मैं उचित .strings फ़ाइल कैसे लोड करूं तो NSLocalizedString उचित तरीके से काम करता है, तो वर्तमान में प्रदर्शित दृश्य के लिए उपयुक्त एनआईबी फ़ाइल को फिर से लोड कैसे करूं?फ्लाई पर आईओएस ऐप की भाषा बदलें

+5

आप जानते हैं कि लोग सेटिंग ऐप में भाषा बदल सकते हैं और आपके ऐप को ** ** के लिए एक अलग विकल्प नहीं होना चाहिए, है ना? –

+0

यदि आप किसी निश्चित भाषा को फ़ॉलबैक भाषा होना चाहते हैं, तो आपको इसके लिए एक अलग विकल्प की आवश्यकता हो सकती है, जो उपयोगकर्ता भाषा सूची में पहले मौजूदा स्थानीयकरण के समान भाषा नहीं है। यह एक बहुत ही आम पैटर्न है। – brainray

उत्तर

27

यह यह मानना ​​चाहिए कि de उपयोगकर्ता द्वारा चुनी गई नई भाषा है। यह भी आश्वस्त करें कि आप वर्तमान दृश्य को फिर से शुरू कर रहे हैं।

[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"de", nil] 
              forKey:@"AppleLanguages"]; 
+0

आपकी तेज प्रतिक्रिया के लिए धन्यवाद। लेकिन क्या वह पूरे फोन के लिए भाषा नहीं बदलता है? – tommazzo

+0

नहीं, आप कोड से फोन कॉन्फ़िगरेशन नहीं बदल सकते हैं (कम से कम "अनुमोदित" कोड)। – sorin

+1

यहां भाषा के नामों के सभी प्रतिनिधित्वों की एक सूची दी गई है: http://www.loc.gov/standards/iso639-2/php/English_list.php – KKendall

4

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

फिर, मेरे कोड में मैंने प्रत्येक यूआई नियंत्रण के लिए पाठ सेट किया।

[_myButton setTitle:NSLocalizedString(@"My button title", 
             @"My description for translation file, e.g. including chars limit") 
      forState:UIControlStateNormal]; 

मुझे लगता है कि यह अनुवाद प्रक्रिया को प्रबंधित करने में आसान बनाता है।

अपने मूल प्रश्न का उत्तर देने के लिए, आप इस कोड को viewWillAppear में अपने UIView के फ़ंक्शन में डाल देंगे ताकि यह सुनिश्चित किया जा सके कि प्रत्येक बार यूआई फिर से दिखाई दे।

+0

मैं बस अपने ऐप को स्थानीयकरण के माध्यम से चला गया और मुझे जो भी कह रहा है उससे सहमत होना है। +1। – Moshe

+0

धन्यवाद, यह निश्चित रूप से ऐसा करने का एक तरीका है। मैं अपने ग्राहकों के साथ इस भाषा परिवर्तन की बात फिर से चर्चा करूंगा। एक विकल्प, स्थानीयकरण के लिए एनआईबी फाइलों का उपयोग करना उपयोगकर्ता से पूछना है कि क्या वह भाषा सेटिंग में बदलाव के बाद ऐप को पुनरारंभ करना चाहता है। – tommazzo

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