본문 바로가기
Android/Dev

기기의 지역(Locale) 판별 및 리소스 사용하기, 국가코드와 언어코드

by featherwing 2020. 5. 28.
반응형

 

1. 개별적인 리소스 사용하기

 

2. 기기의 지역(Locale) 판별하기

 

3. 국가코드(contry)와 언어코드(Language)


 

1. 개별적인 리소스 사용하기

 

앱을 개발할 때, 사용자의 지역에 따라 다른 언어를 사용해야 하는 경우가 있습니다.

 

언어의 경우 보통 다음과 같이 개별적인 resource를 만들어 주면 됩니다.

 

해당 언어를 사용하는 기기에서 해당 resource를 사용하게 되며, 기기의 설정에서 언어변경시에도 자동으로 변경되게 됩니다.

 

만드는 방법은 아래와 같습니다.

 

 

개발중인 안드로이드 앱의 폴더 내의 app/src/main/res 폴더 내에 values를 언어별로 분리해서 추가 해 주면 됩니다.

뒤에 언어가 붙지 않은 폴더가 기본 폴더가 되며, 언어에 따라 해당 언어 코드가 붙은 폴더내의 리소스들이 사용되게 됩니다. 

 

 

 

 

좀 더 자세한 내용은 개발자 문서의 현지화 부분을 참고 해 주세요

 

 

 

 

 

2. 기기의 지역(Locale) 판별하기

 

resource만 단순하기 구분하는 것이 아니라, 코드를 다르게 사용해야 하는 경우라면

 

사용하는 기기의 언어를 판단 해 주어야 합니다.

 

 

아래와 같이, getResources().getConfiguration().getLocales()을 통해서 사용하는 코드가 많이 돌아다닙니다.

 

*안드로이드 7.0, Nuga, Api 24  전후로 다른 코드를 사용해야 하기 때문에 if문으로 구분도 해주어야 합니다. 

    public static Locale getLocale(Context context) {
        Locale localefoLaunguage;

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            localefoLaunguage = context.getResources().getConfiguration().getLocales().get(0);
        } else {
            localefoLaunguage = context.getResources().getConfiguration().locale;
        }
        return localefoLaunguage;
    }

 

사용은 이와 같이 합니다.

if(getLocale(this)== Locale.KOREA) {
	somethingTODO
}

 

 

사실 안드로이드 7.0, Nuga, Api 24 부터 새롭게 추가된 Locale.getDefault를 사용하는 것이 더 낫습니다.

 

버전의 구분도 필요없이 더 간단하게 사용할 수 있습니다.

 

* 아래의 코드는 사용 언어를 반환하는 코드로  getContry() 와 같이 다른 코드가 더 존재하므로

 

개발자 문서를 확인해 주세요.

    public static String getLocale() {
        String LaunguageOfLocale = Locale.getDefault().getLanguage();
        return LaunguageOfLocale;
    }

 

사용은 아래와 같이 합니다

if(getLocale().equals("ko")) {
            //한국어를 사용할 때
        
        } else {
            //한국어가 아닌 글로벌일 때
            
        }

 

 

3. 국가코드(contry)와 언어코드(Language)

 

resource폴더를 만들 때나 언어를 구분할때 국가코드와 언어코드를 사용합니다.

 

개발자 문서에 따르면 언어코드는 ISO 639-1을, 국가코드는 ISO 3166을 사용하고 있습니다.

 

각 코드의 자세한 정보는 ISO 사이트에서 확인 할 수 있습니다.

 

언어코드 : ISO 639 공식문서

국가코드 : ISO 3166 공식문서

 

wikipedia에서 코드를 좀 더 편하게 확인할 수 있도록 정리되어 있습니다.

 

언어코드 : ISO 639 alpha-2 (https://ko.wikipedia.org/wiki/ISO_639)

국가코드 : ISO 3166 alpah-2 (https://ko.wikipedia.org/wiki/ISO_3166-1_alpha-2)

반응형

댓글