2011-06-04 21 views
10

मेरे आवेदन में मेरे पास भाषा चयन का विकल्प है।मैं अपने आवेदन की भाषा कैसे बदल सकता हूं?

तीन भाषाएं हैं: अंग्रेजी, जर्मन & स्पेनिश। जब मैं कोई विकल्प चुनता हूं, तो संपूर्ण एप्लिकेशन भाषा बदलनी चाहिए।

मैं इसे कैसे संभव बना सकता हूं?

+2

कृपया पूर्वावलोकन विंडो पर देखने के लिए जब आप एक सवाल तैयार करना, और सीधे HTML टैग का उपयोग नहीं करते, संपादक नियंत्रण का उपयोग। आपका प्रश्न टेक्स्ट बिल्कुल नहीं दिखा रहा था। – Mat

+3

नए लड़के की मदद के लिए धन्यवाद, @मैट। – DOK

उत्तर

21

क्या आपका मतलब है कि आप फोन में डिफ़ॉल्ट भाषा की तुलना में किसी अन्य भाषा का उपयोग करना चाहते हैं? मेरे पास एक आवेदन में है, और यही वह है जो मुझे करना था।

AndroidManifest.xml

<activity 
    android:name=".ui.SomeActivity" 
    android:configChanges="locale" 
    : 
    : 
</activity> 

में अपनी गतिविधि घोषणा करने के लिए इस जोड़े और फिर अपनी गतिविधि में onCreate से इस तरह की एक विधि आह्वान:

public static void setLanguage(Context context, String languageToLoad) { 
    Log.d(TAG, "setting language"); 
    Locale locale = new Locale(languageToLoad); //e.g "sv" 
    Locale systemLocale = SystemLocale.getInstance().getCurrentLocale(context); 
    if (systemLocale != null && systemLocale.equals(locale)) { 
     Log.d(TAG, "Already correct language set"); 
     return; 
    } 
    Locale.setDefault(locale); 
    android.content.res.Configuration config = new android.content.res.Configuration(); 
    config.locale = locale; 
    context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics()); 
    Log.d(TAG, "Language set"); 
} 
+0

तो, दो चीजों से ऊपर करने के बाद मुझे बस resoures फ़ाइल (विशिष्ट भाषा समर्थन के लिए R.String.Values.xml) बनाने की आवश्यकता है और ऐप सेटिंग्स पर आधार मैं ऐप रन टाइम की भाषा सेट कर सकता हूं। सही ? –

+2

आपको सिस्टम लॉकेल और TAG कहां मिला? – Teysz

+1

मुझे लगता है कि 'SystemLocale ....' के बजाय 'Locale.getDefault()' का उपयोग किया जाना चाहिए। –

0

तुम बस भाषा के अनुसार मूल्य फ़ोल्डर जोड़ने । उदाहरण के लिए, मैंने 3 भाषाओं को जोड़ा है: अंग्रेजी, अरबी और हिंदी। res फ़ोल्डर में values-ar अरबी के लिए और values-hi के लिए हिंदी में आवेदन में उपयोग किए गए सभी तारों को पकड़ने के लिए। अब मेरे पास भाषाओं की एक सूचीदृश्य है। तो जब उपयोगकर्ता किसी एक भाषा पर क्लिक करता है, तो आवेदन की भाषा बदल दी जाएगी और फोन भाषा वही रहेगी। यहाँ कोड .. है

listview.setOnItemClickListener(new OnItemClickListener() { 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 
      // When clicked, show a toast with the TextView text 
      String language = ((TextView) view).getText().toString(); 
      if (language.equals("English")) { 
       Locale locale = new Locale("en"); 
       Locale.setDefault(locale); 
       Configuration config = new Configuration(); 
       config.locale = locale; 
       getBaseContext().getResources() 
         .updateConfiguration(
           config, 
           getBaseContext().getResources() 
             .getDisplayMetrics()); 
       Toast.makeText(ChangeLanguage.this, "Locale in English", 
         Toast.LENGTH_LONG).show(); 

      } else if (language.equals("Arabic")) { 

       Locale locale = new Locale("ar"); 
       Locale.setDefault(locale); 
       Configuration config = new Configuration(); 
       config.locale = locale; 
       getBaseContext().getResources() 
         .updateConfiguration(
           config, 
           getBaseContext().getResources() 
             .getDisplayMetrics()); 
       Toast.makeText(ChangeLanguage.this, "Locale in Arabic", 
         Toast.LENGTH_LONG).show(); 
      }else if (language.equals("Hindi")) { 

       Locale locale = new Locale("hi"); 
       Locale.setDefault(locale); 
       Configuration config = new Configuration(); 
       config.locale = locale; 
       getBaseContext().getResources() 
         .updateConfiguration(
           config, 
           getBaseContext().getResources() 
             .getDisplayMetrics()); 
       Toast.makeText(ChangeLanguage.this, "Locale in Hindi", 
         Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(ChangeLanguage.this, 
         "Locale in not changed!", Toast.LENGTH_LONG).show(); 
      } 
      /* 
      * Toast.makeText(getApplicationContext(), language, 
      * Toast.LENGTH_SHORT) .show(); 
      */ 

      GetterSetter.getInstance().setLanguage(changelanguage); 
      startActivity(new Intent(ChangeLanguage.this, 
        MainSettings.class)); 
      main.tabhost.setCurrentTab(3); 
     } 
    }); 
+0

आपको निश्चित रूप से अपना कोड डालना चाहिए। – JJD

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