안드로이드를 개발을 하다보면, 각각의 나라마다 해당 국가의 언어를 표시해 줘야 할 경우가 생깁니다. 그럴경우.. 음.. 굉장한 난관에 부딪히게 되는데요. 그러한 이유때문에 안드로이드에서는 단말에 설정되 있는 시스템언어에 따라 자동으로 언어를 설정해 주는 기능을 제공합니다.
그 기능은 바로 안드로이드 Project -> res폴더 안에 -> values 라는 string.xml 포함하고 있는 폴더를 이용한 방법인데요. 보통 프로젝트를 개발할 시에는 하나의 values에 하나의 string.xml을 사용하게 됩니다. 하지만, 아래와 같이 언어별 폴더를 따로 만들게 되면, 단말에 설정된 시스템언어를 기준으로 자동으로 지정된 values 폴더를 참조 하게 됩니다.
자 그럼!! 사용 방법을 알아볼까요?
위에서 보시는 것과 같이, "values-en" , "values-ko" 라는 폴더를 만들었습니다. 그리고 각각의 폴더마다 "strings.xml"이 존재하는 것 을 볼 수 있습니다. 각각 단말에 설정에 언어에 의해서 해당폴더의 "strings.xml"을 참조하게 되는 것이지요.
주의하실점은 기본적으로 사용자가 설정한 언어의 폴더가 없을 경우, values 폴더를 참조 한다는 점입니다. 그렇기 때문에 기본적으로 설정할 언어를 values 폴더에 지정하고, 사용자 설정에 따른 언어별 폴더를 만들어야 합니다. "values-en", "values-ko"와 같이 말이죠.
음 근데 왜 values 폴더 옆에 en 과 ko 라는 네임이 붙은 것 일까요? 네 맞습니다. 그것이 시스템 언어에서 구분자로 사용하고 있는 값이기 때문입니다. 한국어는 "ko" , 미국어는 "en", 일본어는 "ja" 이런식으로 값을 사용하고 있습니다. (다른언어를 더 사용하고 싶다면, 이클립스에서 Locale. 까지 입력하시면 제공하는 언어들을 더 보실 수 있습니다.)
만약 일본어를 추가해 주고 싶다면, "values-ja" 라는 폴더를 만들어서 사용하면 되겠죠? 자 다음은 strings.xml 내부 모습을 살펴 보겠습니다.
values-en 폴더의 strings.xml 파일입니다.
<string name="hello">Hello World, TestHHimLocationActivity!</string> |
values-ko 폴더의 strings.xml 파일입니다.
<string name="hello">안녕하세요.!!!!</string> |
이런식으로 구성을 하기 때문에, 시스템언어에 따라 손쉽게 국가별 언어를 지정해 줄 수 있는 것입니다. View들이 "hello" 라는 string값을 참조하고 있기때문에, 어떤 폴더의 "hello"라도 지정만 되어 있으면 View들은 "hello" 값을 참조하게 되는 형식이 되기 때문 입니다. 자 그럼 values 폴더가 적용된 화면을 보실까요?
처음 보실 화면은 시스템 언어를 한국어로 설정했을 경우 입니다. (한국에서 핸드폰을 사셨다면 별다른 지정을 하지 않아도 기본값으로 한국어가 설정되어 있습니다.)
보시는 바와 같이 한글로 설정한 app_name 과 hello 메시지가 찍혀 있는 것을 확인 할 수 있습니다. 신기 하시죠?ㅎ 저도 그렇습니다.
자 다음은 시스템 언어를 영어로 바꿔 보겠습니다. 언어를 바꾸는 방법은 [환경설정] -> [언어 및 키보드] -> [언어 선택] -> [영어] 로 선택해 주시면 됩니다.
음 역시 지정된 영어로 app_name 과 hello 메시지가 찍혀 있는 것 을 확인 할 수 있습니다.!! 그런데!!!! 신기한점은 아이콘의 app_name 역시 바뀐다는 점 입니다.!! 이유는 app_name을 아이콘 이름 으로 설정해서 쓰고 있기 때문입니다.
이러한 기능을 이용하면, 더욱 멋지게 국가별 언어를 지원 할 수 있게 되는데요.!! 각각의 상황에 맞는 언어를 사용하여 멋진 APP 개발 하시기를 바라겠습니다.
이상 포스트 마치겠습니다. 감사합니다.
'IT > 안드로이드+JAVA' 카테고리의 다른 글
[안드로이드] ui 라이브러리, 디자인, 머터리얼 디자인 (0) | 2016.05.19 |
---|---|
[안드로이드] 머터리얼 디자인 (5.0 롤리팝 이상) (0) | 2016.05.19 |
[안드로이드] 액티비티 화면 전환 애니메이션 (링크) (0) | 2016.05.18 |
[안드로이드] 코드 컨벤션 정리 - 낙타, 헝가리안, 파스칼 (0) | 2016.05.18 |
[안드로이드] Activity 애니메이션 효과 (링크) (0) | 2016.05.17 |