我希望根據用戶的喜好設置應用程序語言,但到目前爲止,它不工作,我希望它。在Android中設置應用程序的語言首選項
我已經設置了默認值:strings.xml,還有西班牙語裏面的strings.xml文件。我有一個菜單選項,它將用戶帶到首選活動,在那裏他可以選擇語言。
因此,這裏是代碼的一部分摘錄:
public class Preference extends PreferenceActivity implements
OnSharedPreferenceChangeListener {
......
// Set up a listener whenever a key changes
getPreferenceScreen().getSharedPreferences()
.registerOnSharedPreferenceChangeListener(this);
...}
//(......)
//and here I have the listener so when the language pref changes value the locale gets changed.
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals("listPref2")) {
String idioma = sharedPreferences.getString("listPref2", "catala");
if ("castella".equals(idioma)) {
idioma = "es_ES";
Locale locale = new Locale(idioma);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getApplicationContext().getResources().updateConfiguration(config,
getBaseContext().getResources().getDisplayMetrics());
}
}
}
所以,當我改變了語言它的工作原理,但後來當我回來以後或重新啓動仿真語言變回默認語言環境EN_US和應用程序語言再次變回默認值。我能做些什麼來整理?
我知道我可以得到這個偏好(我可以從我的所有活動中獲得),然後每次設置語言環境,但我覺得它有點沉重,沒有辦法在更多優雅的方式?
我想要做的是如果用戶設置語言,所以當他回來2天后他不必再次更改語言。
任何想法?
我已經完成了你所說的事情,但是這隻會改變主要活動中的語言環境。然後,我會在所有活動開始時添加相同的代碼。謝謝 – vallllll
我不得不承認我從來沒有嘗試過當地的事情。看起來它是基於用戶設置的。你看過嗎? http://developer.android.com/resources/tutorials/localization/index.html – bytebender
是的,我已經設置了一個默認語言和2種語言:西班牙語和加泰羅尼亞語,我需要用戶能夠選擇他自己的語言環境。僅使用手機確定區域設置是不夠的。 – vallllll