제대로 이해하면 전화에서 언어를 변경하지 않고 응용 프로그램의 언어를 전환 할 수 있기를 원합니다. 나는 이것이 유용 할 수있는 시나리오를 볼 수 있다고 생각한다.
이와 같은 작업을 시도해 볼 수 있습니다.
1) 여러 로케일/언어를 지원하는 것처럼 여러 문자열 리소스로 앱을 빌드하십시오. 매니페스트에서
2), 사용자의 작업에 configChanges="locale"
을 추가
<activity android:name=".Main" android:configChanges="locale" android:label="@string/app_name" />
3) 앱을 처음 시작하면, 그것은 클라이언트 전화의 언어에있을 것입니다. 사용자가 앱에서 언어를 변경하면 선호하는 방식 (sqlite, 파일, 앱 번들 등)으로 새 언어를 저장하고 앱을 강제로 다시 시작합니다. 나는이에게 자신을 시도하지 않은
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//load saved language
String languageToUse = ...
if(languageToUse != null)
{
Locale locale = new Locale(languageToLoad);
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
}
this.setContentView(R.layout.main);
}
, 그래서 이것은 단지 일반적인 생각입니다 - 참조가 작동하는 경우 : 앱이 시작되면
4), 그것에 저장된 언어와 설정 한 기본 로케일을 검색 너를 위해서.