Android 앱에서 언어를 수동으로 설정할 필요없이 언어 전환을 구현하려면 어떻게해야합니까? 앱이 시작할 때 로캘에 따라 strings.xml을로드한다는 것을 알고 있지만이 선택을 시스템 로캘을 기반으로하지 않고 대신 설정에서 사용자 지정되도록하고 싶습니다.앱 안의 언어 전환
또는 로케일을 수동으로 설정하고 있습니까?
Android 앱에서 언어를 수동으로 설정할 필요없이 언어 전환을 구현하려면 어떻게해야합니까? 앱이 시작할 때 로캘에 따라 strings.xml을로드한다는 것을 알고 있지만이 선택을 시스템 로캘을 기반으로하지 않고 대신 설정에서 사용자 지정되도록하고 싶습니다.앱 안의 언어 전환
또는 로케일을 수동으로 설정하고 있습니까?
응용 프로그램 클래스를 확장 할 수 있습니다 (매니페스트에서도 선언해야 함). 다음과 같이 입력하십시오. 당신이 언어를 변경할 때마다
당신은 그 활동 내에서
((App)getApplicationContext()).changeLang(lang);
를 호출 할 수 있습니다. R.string.locale_lang 당신이 더 명확 해주세요 수있는 공유 환경 설정
public class App extends Application {
private Locale locale = null;
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (locale != null) {
Locale.setDefault(locale);
Configuration config = new Configuration(newConfig);
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
}
@Override
public void onCreate() {
super.onCreate();
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(this);
String lang = settings.getString(getString(R.string.locale_lang), "");
changeLang(lang);
}
public void changeLang(String lang) {
Configuration config = getBaseContext().getResources().getConfiguration();
if (!"".equals(lang) && !config.locale.getLanguage().equals(lang)) {
Editor ed = PreferenceManager.getDefaultSharedPreferences(this).edit();
ed.putString(getString(R.string.locale_lang), lang);
ed.commit();
locale = new Locale(lang);
Locale.setDefault(locale);
Configuration conf = new Configuration(config);
conf.locale = locale;
getBaseContext().getResources().updateConfiguration(conf, getBaseContext().getResources().getDisplayMetrics());
}
}
public String getLang(){
return PreferenceManager.getDefaultSharedPreferences(this).getString(this.getString(R.string.locale_lang), "");
}
}
감사합니다. 나는 아이디어를 얻는다. 그러나 어떻게 선언서에 선언해야합니까? 내가 생각하는 활동이 아니야. –
활동으로 아니지만 활동 태그를 묶는 응용 프로그램 태그가 있습니다. 응용 프로그램의 속성으로 android : name = ". App"을 추가해야합니다. – kjurkovic
에 대한 strings.xml의에 저장됩니다 단지 열쇠? 언어가 기기 로캘 설정이 아닌 앱 설정에 따라 변경되기를 원하십니까? –
예, 앱 설정에 따라 앱 언어를 변경하고 싶습니다. –