저는 Android 개발에 아주 익숙하며 약간의 현지화 문제가 있습니다. 사용자가 기기의 현재 언어가 아닌 다른 기본 언어를 사용하도록 선택할 수있는 앱이 있습니다. 예를 들어 독일에 거주하고 휴대 전화가 "독일어"로 설정된 프랑스 사용자는 프랑스어로 내 앱을 사용하고 싶지만 다양한 언어로 휴대 전화의 기본 언어를 설정할 수는 없습니다.android 기기의 전원을 끈 후에도 앱의 기본 언어를 올바르게 설정하는 방법
내 앱에는 일부보기 만로드되고 언로드되는 하나의 활동 만 있습니다. 매우 간단한 앱이지만 큰 콘텐츠 (텍스트 및 이미지)가 있습니다.
이렇게하려면 아래 코드를 사용하십시오.
그것은 잘 작동하지만 몇 가지 문제가 있습니다 : 사용자가 해당 버튼에 새로운 언어를 선택하고 응용 프로그램을 다시 시작
(또는 내가 마무리 앱을 강제하는 경우() ..) : FIRST VIEW 만 새로운 언어를 사용합니다. 다음보기는 여전히 이전 언어로 설정됩니다.
사용자가 장치를 끄기로 선택한 경우 동일한 문제가 발생합니다. 활동의 첫 번째보기 만 선택한 언어로 설정됩니다 (변수는 환경 설정에서 읽음).
그러나 사용자가 앱을 다시 실행하기로 선택한 경우 모든보기 및 하위보기가 새 언어로 올바르게 설정됩니다.
사용자가 이미 앱을 적어도 한 번 이상 다시 시작한 경우 각 언어 변경이 성공적으로 완료됩니다. 두 번째로 앱을 다시 시작할 필요가 없습니다. 사용자가 이전의 자신의 장치를 켠 경우
그래서 제대로 응용 프로그램
의 첫 번째 재발 후 즉시 새로운 언어
를 설정하는 방법은 무엇입니까
도움이 되겠습니다. 여기 내가 사용하는 코드 (간체)이다 : 것은 다음
public void onCreate(Bundle savedInstanceState) {
SharedPreferences myPrefs;
myPrefs = getSharedPreferences("langage", MODE_PRIVATE);
String langageToLoad = myPrefs.getString("langageToLoad", "");
changeLangage(langageToLoad);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
(...some other code...)
}
public void setLangageEn(View view){
changeLangage("en");
setPreference("en");
// finish(); // optionnal
}
public void changeLangage(String langage) {
Locale locale = new Locale(langage);
Locale systemLocale = Locale.getDefault();
if (systemLocale != null && systemLocale.equals(locale)) {
return;
}
Locale.setDefault(locale);
android.content.res.Configuration config = new android.content.res.Configuration();
config.locale = locale;
getResources().updateConfiguration(config, getResources().getDisplayMetrics());
}
public void setPreference(String langage){
SharedPreferences languagepref = getSharedPreferences("langage",MODE_PRIVATE);
SharedPreferences.Editor editor = languagepref.edit();
editor.putString("langageToLoad",langage);
editor.commit();
}