2011-04-01 8 views
11

여러 언어로 현지화 된 Android 앱이 있습니다. 장치의 로케일에 해당하는 문자열이 있으면 앱에서 자동으로 표시합니다. 여태까지는 그런대로 잘됐다.Android 앱의 기본 로케일을 복원하는 방법

다음은 앱 사용자가 내가 제공 한 언어 중 하나로 전환 할 수있게하려는 것입니다. 기본 로케일을 무시하여이 작업을 수행 할 수 있습니다. 여기도 문제 없습니다.

여기에 질문 : 사용자가 기본 자동 로켈을 복원 할 수 있도록 언어 목록에 "기본"옵션을 제공 할 수있는 방법이 있습니까? 다음 시나리오를 고려하십시오.
1. 장치의 로캘이 독일어로 설정됩니다. 앱이 모든 것을 독일어로 표시합니다.
2. 사용자가 앱을 프랑스어로 만들고 싶어하므로 앱 내부에서 언어가 변경되고 그 결과로 프랑스어가 바뀝니다.
3. 동일한 사용자가 장치의 로켈을 스페인어로 변경합니다. 앱은 여전히 ​​프랑스어입니다.
4. "기본값"설정을 선택합니다. 앱이 스페인어로 변경되고 로캘이 변경되면 계속 변경됩니다.

자동으로 수행 할 수없는 경우 "기본"옵션을 선택한 경우 내 앱을 설정할 수 있도록 장치 전체의 로케일을 가져올 수있는 방법이 있습니까?

답변

16

기본 로캘을 변경하기 전에 먼저 앱을 처음 실행할 때 기존 설정을 저장하여이 문제를 해결했습니다. 단지 내 응용 프로그램 실행 처음 실행하는 블록에서, 내가 전화 :

나중에
m_preferences.edit().putString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         getResources().getConfiguration().locale.getLanguage() 
         ).commit(); 

, 내가 필요로 할 때 그것을 검색 :

languageToLoad = m_preferences.getString(
         MyConstants.PREFERENCE_SYSTEM_LANGUAGE, 
         MyConstants.LANGUAGE_DEFAULT); 

언어를 변경하는 경우, 내가 저장이 다른 환경에서 뷰에 대한 업데이트를 처리합니다.

: 조금 더 주위를 파고 들자 시스템 설정을 찾았습니다. 위의 코드 대신이 코드를 사용하도록 전환했습니다.

Resources.getSystem().getConfiguration().locale.getLanguage(); 
+2

위 부분은 내 앱의 언어가 저장 된 후에도 기기의 로케일이 변경 될 수 있기 때문에 실제로 나에게 적합하지 않습니다. 두 번째 부분은 정확하게 내가 찾고 있었던 것 같습니다. 감사! – Goldsmith

2
Locale defaultLocale = Locale.getDefault(); 

편집 : 미안 해요, 난 당신이 변경 사항을 적용하기 위해 기본을 무시하고 있기 때문에이 사실은, 귀하의 질문에 대답하지 않습니다 깨달았다.

관련 문제