I need a text to be shown in English and Hindi but, by default it is shown in English.
I have two buttons with labels "English" and "Hindi"
When clicked on Hindi, it is showing in hindi, but when i click english, text is not getting back to english again.
The following is the code i am using
Button en_Button,hi_Button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setLanguage("en");
en_Button = (Button)findViewById(R.id.en_Button);
hi_Button = (Button)findViewById(R.id.hi_Button);
en_Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLanguage("en");
}
});
hi_Button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLanguage("hi");
}
});
}
public void setLanguage(String language)
{
String languageToLoad = language; // your language
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
this.setContentView(R.layout.activity_main);
}
What is that I am missing?
Thanks.
This is not give you effect runtime. You need to start your activity again with the language hi
.
Simple Workaround for that
now every time you loading "en". instead of that load value form the SharedPreferences
public String getAppLanguage() {
SharedPreferences pref; = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
return pref.getString(APP_LANG, "en");
}
public void setAppLanguage(String language) {
SharedPreferences pref; = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
Editor editor = pref.edit();
editor.putString(APP_LANG, language);
editor.commit();
}