アプリケーションの言語をユーザー設定に応じて設定したいと思いますが、これまでのところどのようにしたいのですか。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