単一選択でアプリケーション言語全体を変更したい場合。1つのメニューからすべてのアクティビティの言語を変更します。
MainActivity.java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private static Button english,russian;
private static TextView chooseText;
private static Locale myLocale;
//Shared Preferences Variables
private static final String Locale_Preference = "Locale Preference";
private static final String Locale_KeyValue = "Saved Locale";
private static SharedPreferences sharedPreferences;
private static SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initViews();
setListeners();
loadLocale();
}
//Initiate all views
private void initViews() {
sharedPreferences = getSharedPreferences(Locale_Preference, Activity.MODE_PRIVATE);
editor = sharedPreferences.edit();
chooseText = (TextView) findViewById(R.id.choose_text);
english = (Button) findViewById(R.id.english);
russian = (Button) findViewById(R.id.russian);
}
//Set Click Listener
private void setListeners() {
english.setOnClickListener(this);
russian.setOnClickListener(this);
}
@Override
public void onClick(View view) {
String lang = "en";//Default Language
switch (view.getId()) {
case R.id.english:
lang = "en";
break;
case R.id.russian:
lang = "ru";
break;
}
changeLocale(lang);//Change Locale on selection basis
}
//Change Locale
public void changeLocale(String lang) {
if (lang.equalsIgnoreCase(""))
return;
myLocale = new Locale(lang);//Set Selected Locale
saveLocale(lang);//Save the selected locale
Locale.setDefault(myLocale);//set new locale as default
Configuration config = new Configuration();//get Configuration
config.locale = myLocale;//set config locale as selected locale
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());//Update the config
updateTexts();//Update texts according to locale
}
//Save locale method preferences
public void saveLocale(String lang) {
editor.putString(Locale_KeyValue, lang);
editor.commit();
}
//Get locale method in preferences
public void loadLocale() {
String language = sharedPreferences.getString(Locale_KeyValue, "");
changeLocale(language);
}
//Update text methods
private void updateTexts() {
chooseText.setText(R.string.tap_text);
english.setText(R.string.btn_en);
russian.setText(R.string.btn_ru);
}
}
私は、コードの上に使用して単一のアクティビティの表示言語を変更することができています。しかし、私はワンクリックですべてのアプリケーション言語を変更したいと思います。これを手伝ってください。私はデバイス設定から言語アクセスを許可しようとしています。
https://stackoverflow.com/questions/43292013/how-can-i-change-language-of-whole-application-by-only-single-click –
https://gunhansancar.com/change-language -programmatically-in-android/ –
[ワンクリックでアプリケーション全体の言語を変更するにはどうすればいいですか?](https://stackoverflow.com/questions/43292013/how-can-i-change-language-of) -whole-application-only-single-click) –