2012-03-13 11 views
5

मैं यह जानने की कोशिश कर रहा हूं कि डिफ़ॉल्ट एंड्रॉइड ओएस भाषा को दूसरे में बदलना संभव है या नहीं। उदाहरण के लिए भाषा सेटिंग्स में नहीं है: प्रोग्राम की भाषा को बर्बाद करने के लिए डिवाइस की भाषा कैसे सेट करें।एंड्रॉइड: एंड्रॉइड की डिफ़ॉल्ट भाषा को नई भाषा में बदलने का कोई तरीका है?

+2

क्या आप कोड * * में ऐसा करने के बारे में बात कर रहे हैं? –

+0

@ जॉन स्कीट: कृपया मेरा अद्यतन प्रश्न देखें। हां मुझे इसे प्रोग्रामेटिक रूप से करने की ज़रूरत है। –

+0

क्या आप जावा को छोड़कर अन्य प्लेटफार्मों में एंड्रॉइड ऐप विकसित कर रहे हैं? –

उत्तर

12

उपयोग इस से programmatically--

Locale locale = new Locale("en_US"); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
context.getApplicationContext().getResources().updateConfiguration(config, null); 

भाषा बदलने के लिए भाषा का countryCode लिखें "en_US" के स्थान पर जो कुछ भी भाषा आप चाहते हैं ... की तरह "ja_jp" के लिए अरबी - - "ए आर" या country--

http://code.google.com/apis/igoogle/docs/i18n.html

के कोड के लिए इस लिंक की जाँच जापानी के लिए

और res/values-ja जापानी के लिए या res/values-ar अरबी के लिए में एक फ़ोल्डर ..

और बनाने string.xml फ़ाइल और अपने लेआउट पर भाषाओं जो चाहो डाल कर .. यह डिफ़ॉल्ट भाषा से मूल्यों अन्यथा आप इसे मैन्युअल तो यह अपने बाहरी फ़ोल्डर मान-ar आदि जैसे से लायेगा चाहते फ़ोल्डर ...

रेस अरबी के लिए/मूल्यों-ar की इसकी उदाहरण लायेगा - -

<?xml version="1.0" encoding="UTF-8"?> 
    <resources> 
    <string name="spinner_label">تصفية حسب</string> 
    <string name="app_name">2011 فرق</string> 
    <string name="search">بحث :</string> 
</resource> 

आशा है कि यह आप में मदद मिलेगी ..

+0

अच्छा उत्तर हल्क सर। मैं अपने प्रोजेक्ट (डिफ) में एक ही कोड का उपयोग कर रहा हूं: पी –

+0

इस कोड को स्थानीय.सेट डीफॉल्ट कहां रखा जाए? MainActivity.java में? –

+0

आपको इसे प्रत्येक गतिविधि के क्रिएट() में रखना होगा।अन्यथा यह सिस्टम द्वारा ओवरराइड हो सकता है - उदाहरण के लिए जब आप अपने डिवाइस को परिदृश्य में बदल देते हैं और आपकी गतिविधि नए (सिस्टम प्रदत्त) कॉन्फ़िगरेशन के साथ फिर से बनाई जाती है। –

3

आप जो कुछ भी चाहते हैं उसे लोकेल बदल सकते हैं और सिस्टम को इसका समर्थन करने की आवश्यकता है।

इस प्रयास करें:

public static void changeLocale(Locale locale) { 
    try { 
     Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative"); 

     Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative); 

     Object config = am.getClass().getMethod("getConfiguration").invoke(am); 
     config.getClass().getDeclaredField("locale").set(config, locale); 
     config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true); 

     am.getClass().getMethod("updateConfiguration", android.content.res.Configuration.class).invoke(am, config); 
     Log.i(LOG_TAG, "send change locale request"); 
    } catch (Exception e) { 
     Log.e(LOG_TAG, "change locale error:", e); 
    } 
} 
+0

क्या यह कोड डिफ़ॉल्ट भाषा को अन्य नई भाषा में बदलता है? –

+1

हां, बर्मी लोकेल 'लोकेल लोकेल = नया लोकेल ("मेरा")' पसंद कर सकता है, लेकिन आपके डिवाइस को इस भाषा का समर्थन करने की आवश्यकता है अन्यथा सिस्टम भाषा को बदल नहीं सकता है। इस उपयोगी जानकारी के लिए – idiottiger

+0

+1। लेकिन क्या होगा यदि डिवाइस में अंतर्निहित बर्मी भाषा नहीं है और मुझे इसे सभी उपकरणों में काम करने के लिए बनाना है? –

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