Я успешно изменил язык своего приложения в первом действии ... но, перейдя в другое занятие, я обнаружил, что язык не изменился.
Обратите внимание, что я использую следующий код для изменения языка
public static final String languageFile="language_file";
SharedPreferences myLang;
private Locale Language;
String defaultLanguage="en";
String language1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
myLang = getSharedPreferences(languageFile, Context.MODE_PRIVATE);
language1=myLang.getString("language",defaultLanguage).toString();
setLocale(language1);
}
public void setLocale(String lang) {
Language = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = Language;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(this,Welcome_Activity.class);
startActivity(refresh);
finish();
}
Я использовал диалог, чтобы выбрать язык и добавить его в общие настройки, как показано ниже
public void changeLanguage(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
// .setIcon(android.R.drawable.ic_dialog_alert)
.setTitle(R.string.LanguageSelector)
.setMessage(R.string.Pleaseselectyourlanguage)
.setPositiveButton("English", new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int
which) {
setLocale("en");
myLang=getSharedPreferences(languageFile,Context.MODE_PRIVATE);
SharedPreferences.Editor editor=myLang.edit();
editor.putString("language", "en").apply();
}
})
.setNegativeButton("عربي", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
setLocale("ar");
myLang=getSharedPreferences(languageFile,Context.MODE_PRIVATE);
SharedPreferences.Editor editor=myLang.edit();
editor.putString("language", "ar").apply();
}
});
AlertDialog alert = builder.create();
alert.show();
Button nbutton = alert.getButton(DialogInterface.BUTTON_NEGATIVE);
nbutton.setTextColor(Color.BLACK);
Button pbutton = alert.getButton(DialogInterface.BUTTON_POSITIVE);
pbutton.setTextColor(Color.BLACK);
}