2011-04-01 12 views
11

मेरे पास यह एंड्रॉइड ऐप है जो कई भाषाओं में स्थानीयकृत है। यदि डिवाइस के लोकेल के लिए उचित स्ट्रिंग मौजूद है, तो ऐप स्वचालित रूप से इसे प्रदर्शित करता है। अब तक सब ठीक है.एंड्रॉइड ऐप के डिफ़ॉल्ट लोकेल को पुनर्स्थापित कैसे करें

अगला, मैं ऐप के उपयोगकर्ताओं को प्रदान की गई भाषाओं में से किसी एक पर स्विच करने की अनुमति देना चाहता हूं। मैं इसे डिफ़ॉल्ट लोकेल ओवरराइड करके कर सकता हूं। यहां कोई समस्या नहीं है, या तो।

यहां प्रश्न: क्या भाषा सूची में "डिफ़ॉल्ट" विकल्प प्रदान करने का कोई तरीका है जो उपयोगकर्ताओं को डिफ़ॉल्ट, स्वचालित लोकेल को पुनर्स्थापित करने की अनुमति देगा? निम्नलिखित परिदृश्य पर विचार करें:
1. डिवाइस का लोकेल जर्मन पर सेट है। ऐप जर्मन में सब कुछ प्रदर्शित करता है।
2. उपयोगकर्ता चाहता है कि ऐप फ्रेंच में हो, इसलिए वे ऐप के अंदर से भाषा बदलते हैं, और ऐप परिणामस्वरूप फ्रेंच बदल जाता है।
3. वही उपयोगकर्ता डिवाइस के लोकेल को स्पेनिश में बदल देता है। ऐप अभी भी फ्रेंच है।
4. वे "डिफ़ॉल्ट" सेटिंग का चयन करते हैं। ऐप स्पैनिश में बदल जाता है, और जब लोकेल बदल जाता है तो बदलता रहता है।

यदि यह स्वचालित रूप से करने योग्य नहीं है, तो मेरे पास डिवाइस-व्यापी लोकेल प्राप्त करने का कोई तरीका है ताकि यदि मेरा "डिफ़ॉल्ट" विकल्प चुना गया है तो मैं अपना ऐप सेट कर सकता हूं?

उत्तर

16

मैंने ऐप के पहले भाग पर मौजूदा सेटिंग को स्टोर करके इस समस्या को हल किया (डिफ़ॉल्ट लोकेल में किए गए किसी भी बदलाव से पहले)। एक ब्लॉक है कि केवल पहली बार मेरे एप्लिकेशन चलाता चलाता में, मैं फोन:

m_preferences.edit().putString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         getResources().getConfiguration().locale.getLanguage() 
         ).commit(); 

बाद में, इसे पुनः प्राप्त करने जब मैं की जरूरत है:

languageToLoad = m_preferences.getString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         MyConstants.LANGUAGE_DEFAULT); 

जब भाषा बदलने, मैं बचाने कि एक और वरीयता में और दृश्य को अद्यतन संभाल लें।

संपादित करें: थोड़ा और अधिक पोक करने के बाद, मुझे सिस्टम सेटिंग मिली। मैंने उपर्युक्त कोड की बजाय इसका उपयोग करने के लिए स्विच किया।

Resources.getSystem().getConfiguration().locale.getLanguage(); 
+2

उपरोक्त भाग वास्तव में मेरे लिए ऐसा नहीं करता है, क्योंकि डिवाइस की लोकेल अभी भी मेरे ऐप की भाषा सहेजी जाने के बाद बदल सकती है। दूसरा भाग बिल्कुल वैसा ही प्रतीत होता है जो मैं खोज रहा था। धन्यवाद! – Goldsmith

2
Locale defaultLocale = Locale.getDefault(); 

संपादित करें: क्षमा करें, मैं सिर्फ यह वास्तव में अपने प्रश्न, नहीं का जवाब है के बाद से आप डिफ़ॉल्ट अपने परिवर्तन को प्रभावित करने के लिए अधिभावी रहे हैं एहसास हुआ।

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