이번에는 국가 코드를 가져오는 법을 알아볼 것이다.
다국어를 지원하는 앱을 개발하는 분들 중 단순히 텍스트 번역만이 아닌,
각 나라별로 프로그램의 동작이 바뀌어야 하는 등의 경우도 존재할 것이다.
그런 경우 어느 국가에서 실행했는지를 알아야 하는데,
이것을 국가 코드를 얻어와서 해결할 수 있다.
Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
locale = getApplicationContext().getResources().getConfiguration().getLocales().get(0);
}else{
locale = getApplicationContext().getResources().getConfiguration().locale;
}
String displayCountry = systemLocale.getDisplayCountry();
String country = systemLocale.getCountry();
String language = systemLocale.getLanguage();
코드는 위와 같다.
API Level 24 안드로이드 7.0(Nougat)부터는 getConfiguration()의 locale이 Deprecated되었기 때문에,
위처럼 조건으로 getLocales().get(0)을 사용해주어야 한다.
그 다음 코드를 보면 국가 코드를 가져오는 방법이 세가지가 있다.
첫번째 getDisplayCountry()는 나라 이름을 반환해준다.
한국이라면 "대한민국"
미국이라면 "United States"
이런 형식이다. 각 나라별 언어 문자로 반환을 하기 때문에 조금 불편할 수 있다.
두번째 getCountry()는 국가 코드를 반환해준다.
나의 경우는 이 국가 코드를 이용해서 국가를 구분한다.
한국이라면 "KR"
미국이라면 "US"
일본이라면 "JP"
중국이라면 "CH"
대만이라면 "TW"
이렇게 각 나라별로 고유의 국가 코드를 반환해준다.
세번째 getLanguage()는 국가 언어 코드를 반환해준다.
한국은 "ko"
미국은 "en"
일본은 "ja"
중국은 "zh"
대만도 "zh"
나라별로 국가 언어 코드를 반환해주지만,
중국과 대만은 구분되지 않는 것을 알 수 있다.
결론적으로 국가별 코드를 확실히 구분하려면 getCountry()를 사용하는 것을 추천한다.