1
我可以將應用程序更改爲波斯語,但每當我關閉應用程序並重新打開它時,它就會回到默認英語。我面臨的另一個問題是,當我將語言改回英文時,它並沒有改變!當我點擊返回英語後,我改變了語言。在Android中使用微調器更改應用程序語言
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
Configuration config = getBaseContext().getResources().getConfiguration();
final String lang = settings.getString("LANG", "");
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {
Locale locale = new Locale(lang);
Locale.setDefault(locale);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources()
.getDisplayMetrics());
}
Spinner spinner = (Spinner) findViewById(R.id.spinner1);
spinner.setPrompt("select language");
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, languages);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> arg0, View arg1,
int arg2 ,long arg3) {
Configuration config = new Configuration();
Locale locale;
switch (arg2) {
case 0:
config.locale = Locale.ENGLISH;
break;
case 1:
PreferenceManager.getDefaultSharedPreferences(getApplicationContext())
.edit().putString("LANG", "fa").apply();
config.locale = new Locale("fa");
startActivity(new Intent(getBaseContext(), MainActivity.class));
finish();
break;
}
getResources().updateConfiguration(config, null);
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
private String[] languages = { "English","فارسی" };
}
http://stackoverflow.com/questions/12908289/how-to-change-language-of-app-when-user-selects-language –