https://yunaaaas.tistory.com/19
먼저 이글은 위 게시물에 기반해서 작성된 것임을 밝힘.
앱을 만들면서 여러나라 사람이 사용할 수 있는 앱을 만들고 싶다. 그래서 번역 API 을 활용하는 앱을 만들기 시작했다. 그러다 보니, 나의 앱은 우리나라에서만 사용하는 사람들을 위한 앱이 되어 가고 있는데, 이 나라에 온 사람들이 다 자기 나라말을 하고 싶을 것이다.
그래서 앱의 언어 설정을 변경하는 기능을 구현해 보기록 했다. 코드 구현은 다음과 같이 했다.
private fun setLocale(Lang: String) {
Log.e("로그", "setLocale=$Lang" )
val locale = Locale(Lang) // Local 객체 생성. 인자로는 해당 언어의 축약어가 들어가게 됩니다. (ex. ko, en)
Locale.setDefault(locale) // 생성한 Locale로 설정을 해줍니다.
val config = Configuration() //이 클래스는 응용 프로그램이 검색하는 리소스에 영향을 줄 수 있는
// 모든 장치 구성 정보를 설명합니다.
config.setLocale(locale) // 현재 유저가 선호하는 언어를 환경 설정으로 맞춰 줍니다.
baseContext.resources.updateConfiguration(config, baseContext.resources.displayMetrics)
val intent = baseContext.packageManager.getLaunchIntentForPackage(baseContext.packageName)
intent!!.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
intent!!.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
finish()
startActivity(intent)
}
다만, 한국어 설정시 ko 로 해야 하는 동작을 한다는 것, kr 이라고 생각을 할 수 도 있지만... 이제 다른 나라 언어도 설정을 해 보아야겠다. 다국어 버전을 만들기 위해서는 잘 하지 못하는 영어이기는 하지만, default 을 영어로 설정하는 것이 도움이 된다. 위 예시와 같이 locale 설정을 변경한 다음 화면을 다시 그려야 하기 때문에 강제로 앱을 종료하고 새로 실행하는 방식으로 해결을 한 원작자의 의도(?)을 이해 할 수 있었다.
그 다음은 아래 포스팅을 참고 해서 이런 저런 나라의 언어로 번역된 파일을 만들어 보는 것이다. 그리고 나서
그것을 내 프로젝트의 res 폴더 아래 values-ko-rKr (한국어) 부터 폴더별로 string.xml 파일을 만들어 담아 보자.
https://billcorea.tistory.com/37
마무리가 다 되면 다시 이글을 업데이트 하도록 해야겠다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 앱 만들기 : jetpack compose 최종 버전 오류(?) (10) | 2022.07.12 |
---|---|
안드로이드 앱 만들기 : local.properties 의 활용 API 키 숨기기 (0) | 2022.07.11 |
안드로이드 앱 만들기 : Bitmap.createScaledBitmap 사용 예시 (0) | 2022.06.25 |
안드로이드 앱 만들기 : 연일 검증에서 퇴짜를 맞다... (4) | 2022.06.22 |
안드로이드 앱 만들기 : Dokka 는 뭔가 ? (0) | 2022.06.20 |