2012-09-28 7 views
0

프로그래밍 방식으로 프로그램 언어를 설정하려고하지만 일부 문자열 만 변경됩니다. 값 폴더에는 영어로 된 기본 문자열이 있습니다. 그런 다음 값 - fr을 만들고 모든 문자열을 프랑스어로 번역 했으므로 이제는 영어 문자열이있는 기본 값 폴더가 있습니다 .xml 및 값 - fr 폴더에 내 프랑스어 strings.xml이 있습니다.언어가 변경되지 않습니다

및 여기에 내가 언어에서 onCreate와 onResume 변경하는 데 사용하는 코드입니다 :

String languageToLoad = "fr"; // your language 
Locale locale = new Locale(languageToLoad); 
Locale.setDefault(locale); 
Configuration config = new Configuration(); 
config.locale = locale; 
getBaseContext().getResources().updateConfiguration(config, 
getBaseContext().getResources().getDisplayMetrics()); 

하지만 그것은 단지 내 취향의 모든 문자열이 바뀌지 예를 들어, 문자열의 일부를 변경하지만 주요 활동에서 문자열은 동일하게 유지 . 어떤 아이디어가 그 원인이 될 수 있습니까?

+0

활동보기를 부 풀리기 전에 해당 코드가 호출 되었습니까? – UgglyNoodle

+0

'getBaseContext()'를 제거하십시오. 'getBaseContext(). getResources() ...'대신에'getResources() ...'를 시도하십시오. – pawelzieba

+0

예, onCreate와 onResume에서 호출되었습니다. –

답변

0

이 시도 :

Resources standardResources = getApplicationContext(); 
DisplayMetrics metrics = standardResources.getDisplayMetrics(); 
Configuration config = new Configuration(standardResources.getConfiguration()); 
config.locale = new Locale("fr") // change 
standardResources.updateConfiguration(config, metrics); 
0

는이 작업을 수행 : 앱에 대한 로케일을 설정하면

Locale localeFR = new Locale("fr", "FR"); 
Resources res = getResources(); 
DisplayMetrics dm = res.getDisplayMetrics(); 
Configuration conf = res.getConfiguration(); 
conf.locale = localeFR; 
res.updateConfiguration(conf, dm); 
Intent refresh = new Intent(MyActivity.this, MyActivity.class); 
startActivity(refresh); 
finish(); 

, 당신은 변경 사항이 볼 수 있도록하기 위해 활동을 다시 시작해야합니다.

관련 문제