2012-04-06 15 views
18

जिस एप्लिकेशन पर मैं काम कर रहा हूं वह 3 भाषाओं का समर्थन करता है: अंग्रेजी, फ्रेंच और जर्मन।आईओएस: वर्तमान आवेदन भाषा कैसे प्राप्त करें

मैं वर्तमान एप्लिकेशन भाषा कैसे प्राप्त कर सकता हूं (डिवाइस भाषा नहीं)?

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

धन्यवाद

+0

उपयोगकर्ता ऐप भाषा कैसे चुनता है? –

+0

अपनी खुद की सेटिंग्स से, उन भाषाओं की सूची जोड़ें जिन्हें आप समर्थन करते हैं। – Elsammak

उत्तर

34

क्या मैं हमेशा कार्य करें:

Localizable.strings फ़ाइलों में एक स्ट्रिंग प्रविष्टि जोड़ें। मैं हमेशा कुंजी "lang"="de"; (या "lang"="en", आदि) का उपयोग करता हूं।

तो फिर तुम कि विधि के साथ NSLocalizedString(@"lang", @"")

से अधिक भाषा को जोड़कर अपने NSURLRequest में उपयोग कर सकते हैं आप पूर्ण नियंत्रण बैकेंड आप के लिए भेजा जाना कि क्या हो रहा है।

+0

हाँ, सरल समाधान :) धन्यवाद। – gpopov

+1

मैं इसका उपयोग तब से करता हूं [[एनएसबंडल मेनबंडल] पसंदीदा लोकालाइजेशन] विश्वसनीय नहीं है। – zeiteisen

0

जब उपयोगकर्ता डिवाइस भाषा बदलता है तो ऐप भाषा बदल जाएगी और आप इसे NSUserDefaults से प्राप्त कर सकते हैं (मैं आपको दिखाऊंगा कि आप कैसे चाहते हैं) जब तक ऐप के अंदर भाषा बदलने का कोई विकल्प न हो तो आप कर सकते हैं वर्तमान उपयोग की जाने वाली भाषा को आसानी से सहेजें और जब चाहें सर्वर पर भेज दें।

NSString *currentLocalization = [[[NSBundle mainBundle] preferredLocalizations] objectAtIndex:0]; 
12

आप NSBundle वर्ग के preferredLocalizations विधि का उपयोग कर सकते हैं। डिवाइस अपने आप में

के बारे भाषा प्राथमिकताओं, आप

[NSLocale preferredLanguages] 

है के रूप में सिस्टम के सामान्य सेटिंग्स में परिभाषित किया गया है जो आप पसंदीदा भाषा के एक आदेश दिया सरणी दे देंगे।

कोको टच ढांचा ऐप के स्थानीयकरण संसाधनों को लोड करते समय पसंदीदा भाषाओं की इस सूची को ले जाएगा और इसे आपके द्वारा प्रदान किए गए अनुवादों के अनुसार फ़िल्टर करेगा। स्थानीय भाषाओं की

यह फ़िल्टर और आदेश दिया सूची

[[NSBundle mainBundle] preferredLocalizations] 

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

+4

क्या यह वास्तव में काम करता है? मेरे पास एक ऐप है जो अंग्रेजी (एन) और स्वीडिश (एसवी) का समर्थन करता है और यदि मैं सिम्युलेटर को जर्मन का उपयोग करने के लिए सेट करता हूं, तो उपरोक्त मान "डी" बन जाता है। –

26

स्वीकार किए जाते हैं जवाब एक समाधान नहीं है:

+3

यह निश्चित रूप से ऐसा करने का सही तरीका लगता है .. स्वीकार्य उत्तर होना चाहिए! – Accatyyc

+0

अच्छी नौकरी @ एमजीसीएम निश्चित रूप से जाने का सही तरीका – Mikael

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