2013-01-18 35 views
9

बदलने के बाद डिवाइस लोकेल कैसे प्राप्त करें मैं उपयोगकर्ता विकल्प के आधार पर एप्लिकेशन लोकेल बदल रहा हूं। डिवाइस लोकेल के स्वतंत्र।एप्लिकेशन लोकेल

public void setDefaultLocale(Context context, String locale) { 
     Locale appLoc = new Locale(locale); 
     Locale.setDefault(appLoc); 
     Configuration appConfig = new Configuration(); 
     appConfig.locale = appLoc; 
     context.getResources().updateConfiguration(appConfig, 
       context.getResources().getDisplayMetrics()); 
    } 

लेकिन मुझे पता है कि आप किसी भी उपकरण स्थान भी हो जाएगा चाहते हैं का उपयोग कर।

जब मैं इसे प्राप्त करने की कोशिश कर रहा हूं तो मुझे हमेशा उस लोकेल को मिल रहा है जिसे मैंने एप्लिकेशन पर सेट किया है।

पूर्व: applictaion अंग्रेजी में है और डिवाइस चीनी में है। मुझे हमेशा अंग्रेजी मिल रहा है।

का उपयोग कर स्थान प्राप्त करने के लिए

,

विकल्प 1.

String locale = context.getResources().getConfiguration().locale.getCountry(); 

विकल्प 2.

String local_country = ((Activity) context).getBaseContext().getResources().getConfiguration().locale.getCountry(); 

किसी भी मदद अत्यधिक सराहना की जाएगी !!! खेद persist.sys.country

+0

समान: http://stackoverflow.com/questions/23348954/android-get-device-locale – trante

उत्तर

6

मैं बिल्कुल अनिश्चित कैसे पोर्टेबल इस विभिन्न उपकरणों के लिए है हूँ अगर यह देर हो चुकी है:

defaultLocale = Resources.getSystem().getConfiguration().locale; 

मैं:

सिस्टम स्थान उपयोग को खोजने के लिए टी सिस्टम लोकेल प्राप्त करता है, कोई फर्क नहीं पड़ता कि ऐप/गतिविधि के लिए कौन सा डिफ़ॉल्ट लोकेल सेट है।

Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"}); 
String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine(); 
exec.destroy(); 

कि स्थान के बारे में पता खाली नवीनतम Android एपीआई (+21) पर हो सकता है हो सकता है:

+0

धन्यवाद! यह मेरे लिए काम कर रहा है! :) – AndroidDev

7

मैं ऐसी ही कुछ कहा और, इस सवाल का जवाब मिला:

try { 
    Process exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.language"}); 
    String locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine(); 
    exec.destroy(); 
    Log.e("", "Device locale: "+locale); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 

और अगर आप देश हिस्सा हैं:

+2

यह स्वीकार्य उत्तर होना चाहिए। – Pongpat

0
उन जिसे Daniel Fekete के समाधान का उपयोग कर रहे हैं जो है के लिए

! बजाय persist.sys.language उपयोग का उपयोग करने का persist.sys.locale

exec = Runtime.getRuntime().exec(new String[]{"getprop", "persist.sys.locale"}); 
locale = new BufferedReader(new InputStreamReader(exec.getInputStream())).readLine(); 
exec.destroy(); 

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

  • कोई संबंधित समस्या नहीं^_^