मैं उपयोगकर्ता को स्पिनर (या किसी भी तरह से) का उपयोग करके अपने आवेदन की भाषा बदलना चाहता हूं। मैंने कई तरीकों की कोशिश की लेकिन वे इस गतिविधि की भाषा को सभी गतिविधियों में नहीं बदलते हैं, और मैं इसे सहेजना चाहता हूं ताकि जब उपयोगकर्ता ऐप को पुनरारंभ करे तो उसे अंतिम चुनी गई भाषा मिल जाएगी।एंड्रॉइड रनटाइम पर एप्लिकेशन भाषा को कैसे बदलें
उत्तर
आप स्पिनर में इस कोड को या किसी भी तरह आप चाहते हैं
String languageToLoad = "en"; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
उपयोग कर सकते हैं तो आप इस
SharedPreferences languagepref = getSharedPreferences("language",MODE_PRIVATE);
SharedPreferences.Editor editor = languagepref.edit();
editor.putString("languageToLoad",languageToLoad);
editor.commit();
और उपयोग की तरह भाषा को बचाने चाहिए onCreate()
में languageToLoad
को साझा करने के लिए onCreate()
में प्रत्येक गतिविधि में एक ही कोड
उपयोगकर्ता द्वारा चुने गए भाषा का ट्रैक रखने के लिए साझा किए गए संदर्भों का उपयोग करें, और उसके बाद गतिविधियों को उस भाषा का उपयोग करने के लिए ऑनक्रेट(), और शायद रेस्यूम() विधि में सेट करें। इस तरह से यह ऐप पुन: प्रारंभ आदि भर में बना रहेगा
क्या सभी डेवलपर इस तरह से ऐप्स में उपयोग करते हैं, मुझे लगता है कि यह बहुत स्पष्ट नहीं है! –
मैं अन्य डेवलपर्स के लिए बात नहीं कर सकता क्योंकि मेरे पास उनके कोडम –
तक पहुंच नहीं है, हां, यह एक गतिविधि में आपके पास एक गतिविधि में अन्य गतिविधियों के लिए जानकारी देने के लिए अनुशंसित और क्लीनर तरीका है। दूसरा, ऐसा करने के लिए अधिक हैकी/अनुचित तरीका यह है कि डेटा को गतिविधि में स्थिर क्षेत्र के रूप में रखना और अन्य गतिविधियों से इसका उपयोग करना है, लेकिन अगर कोई पूछता है, तो मैंने आपको यह नहीं बताया! :) –
यह एक पुराना प्रश्न है, लेकिन मैं इसका उत्तर दूंगा: -) आप प्रत्येक गतिविधि पर Abol3z के समाधान को लागू करने के लिए आवेदन कक्षा का विस्तार कर सकते हैं। प्रकट में
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
String lang = preferences.getString("lang", "en");
Locale locale = new Locale(lang);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
}
और आवेदन वर्ग के रूप में MyApplication सेट: कक्षा बनाएं लैंग मूल्य (अपने स्पिनर में)
<application
android:name=".MyApplication"
...
/>
आप सेट कर सकते हैं:
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(getContext());
preferences.edit().putString("lang", "en").commit();
[दस्तावेज़ीकरण] के अनुसार धन्यवाद (https://developer.android.com/reference/android/app/Application.html#onCreate()) एप्लिकेशन ऑनक्रेट() को केवल ऐप शुरू करने के लिए कहा जाता है । तो आप रनटाइम में भाषा को वास्तव में नहीं बदल रहे हैं, लेकिन अगले ऐप पर, सही है? संपादित करें: मूल प्रश्न दोबारा पढ़ें, आपके रास्ते में समस्या हल हो गई है। – Micha
btnChange.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(mContext);
//preferences.edit().putString("lang", "bn").commit();
String lang = preferences.getString("lang", "en");
//Log.e("lang", "lang in Main Activity:"+lang);
if (lang.equalsIgnoreCase("en")){
setLocale("bn");
preferences.edit().putString("lang", "bn").commit();
btnChange.setText("Eng");
}else if(lang.equalsIgnoreCase("bn")){
setLocale("en");
preferences.edit().putString("lang", "en").commit();
btnChange.setText("বাংলা");
}
}
});
public void setLocale(String lang) {
myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this, MainActivity.class);
startActivity(refresh);
finish();
}
उपयोग हम परीक्षण उद्देश्य के लिए दो भाषा। सभी स्ट्रिंग को अलग-अलग फ़ोल्डर में मूल्यों और मानों-बीएन में रखें।
- 1. जावा स्विंग में रनटाइम पर भाषा को कैसे बदलें
- 2. लेआउट परेशानियों के बिना रनटाइम पर भाषा को कैसे बदलें
- 3. डब्ल्यूपीएफ: रनटाइम पर CurrentUICulture को कैसे बदलें
- 4. रनटाइम पर अभिविन्यास बदलें
- 5. रनटाइम पर लोकेल बदलें?
- 6. रनटाइम पर sql_mode को कैसे बदलें
- 7. रनटाइम पर फ़ाइल एक्सटेंशन को कैसे बदलें
- 8. रनटाइम पर CurrentCulture को कैसे बदलें?
- 9. रनटाइम पर slf4j स्तर को कैसे बदलें?
- 10. एंड्रॉइड एप्लिकेशन शीर्षक को कैसे बदलें
- 11. बहु भाषा एंड्रॉइड एप्लिकेशन?
- 12. रनटाइम पर log4j गुण बदलें
- 13. भाषा रनटाइम के बिना जेवीएम आधारित भाषा
- 14. रनटाइम पर लेबल स्थिति बदलें
- 15. वेबड्राइवर की भाषा कैसे बदलें?
- 16. रनटाइम पर enum मान बदलें?
- 17. डब्ल्यूपीएफ - रनटाइम पर वैश्विक फ़ॉन्ट आकार बदलें
- 18. WPF + PRISM रनटाइम पर क्षेत्र को कैसे बदलें
- 19. रनटाइम पर JFormattedTextField के प्रारूप को कैसे बदलें?
- 20. रनटाइम में AndroidManifest को कैसे बदलें?
- 21. एंड्रॉइड - रनटाइम
- 22. एंड्रॉइड: रनटाइम पर ढेर आकार कैसे बढ़ाएं?
- 23. रनटाइम में पेज प्रारूप कैसे बदलें? (जैस्परपोर्ट)
- 24. हडसन डिफ़ॉल्ट इंटरफेस भाषा को कैसे बदलें
- 25. मौजूदा एंड्रॉइड एप्लिकेशन में स्काइप रनटाइम को एकीकृत करना
- 26. फ्लाई पर आईओएस ऐप की भाषा बदलें
- 27. सामान्य भाषा रनटाइम ब्रेकपॉइंट
- 28. एंड्रॉइड और एक्शनबार कॉम्पैम्प: प्री-आईसीएस उपकरणों पर रनटाइम पर कार्रवाइयों की दृश्यता कैसे बदलें?
- 29. रनटाइम पर एकाधिक बटन कैसे बनाएं? + एंड्रॉइड
- 30. भाषा बदलें सी # में
क्या यह परिवर्तन पूरे एंड्रॉइड सिस्टम में लांग होगा या यह केवल एप्लिकेशन के लिए बदल जाएगा? मैं यह पूछ रहा हूं कि जब उपयोगकर्ता एप्लिकेशन छोड़ देता है, तो वे एंड्रॉइड डिफ़ॉल्ट लैंग –
@ करयूबेन्सनकेयर के साथ आगे बढ़ने में सक्षम होंगे, यह केवल एप्लिकेशन में बदल जाएगा। –
ठीक है, आपकी प्रतिक्रिया के लिए धन्यवाद –