앱에서 스페인어, 포르투갈어 및 영어의 세 가지 언어를 지원하고 싶습니다. 그리고 앱에서 언어를 선택하는 옵션을 제공합니다.
1) drawable-es, drawable-pt, drawable 3 개의 드로어 블 폴더.
2) 3 개의 값 폴더 values-es, values-pt, values. 언어에 따라 String.xml 값을 변경합니다.
언어를 선택할 수있는 imageView가 있습니다. 클릭하면 영어, 스페인어, 포르투갈어 옵션으로 구성된 메뉴가 열립니다.
이 코드로 옵션 선택시 앱 내부에 로케일을 설정했습니다.
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.en:
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
break;
case R.id.pt:
Locale locale2 = new Locale("pt");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
break;
case R.id.es:
Locale locale3 = new Locale("es");
Locale.setDefault(locale3);
Configuration config3 = new Configuration();
config3.locale = locale3;
getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
Manifest- android : configChanges = "locale" 에서 선언했습니다 .
작동하지만 문제가 있습니다.
문제:-
1) 언어 선택시 언어 선택 이미지로 구성된 화면은 변경되지 않고 다른 화면은 변경됩니다.
2) 방향 변경 후 휴대 전화의 로케일에 따라 앱 복원 언어.
android:configChanges="locale"
AndroidManifest.xml을 내부 사용자의 활동에 대해