OS/공통-명령어

[개요] Locale 이해

투칼론 2017. 2. 1. 21:30
반응형

1. Locale의 의미

 

각 나라들은 고유의 언어, 날짜, 시간, 화폐 단위 등으로 표현한다. 다국적용 애플리케이션 또는 패키지 개발 시에는 이러한 각 나라 고유의 표현 방법 등을 고려한 국제화(Internationalization, i18n)이 필요하다. 
Locale은 이러한 국제화를 가능하게 해준다.
예를 들어, 날짜를 우리나라에서는 년/월/일(예, 1998/01/03)을 디폴트로 표현한다면, 미국에서는 월,일,년(예, Jan, 1th, 1998)과 같이 표현한다. 이때 Locale과 같은 기능이 없다면, 애플리케이션에서 분기시켜 처리하여 하드코딩을 해야 겠지만, Locale을 잘 활용하면, 쉽게 국제화가 가능하다.

 


2. Locale 의미

 

현재 설정된 Locale 설정 값은 아래와 같은 명령어로 확인한다. 


<예시>

 $ locale


LANG=ko_KR.eucKR
LC_CTYPE="ko_KR.eucKR"
LC_NUMERIC="ko_KR.eucKR"
LC_TIME="ko_KR.eucKR"
LC_COLLATE="ko_KR.eucKR"
LC_MONETARY="ko_KR.eucKR"
LC_MESSAGES="ko_KR.eucKR"
LC_ALL= 위에서 ko_KR.eucKR은 로케일 값(locale name)이다.


  • 위의 형식은  ll[_CC[.EEEE]][@dddd] 이다. 

  • ll : 언어(language)를 지정하는 소문자 두 글자 ISO 639 language code. (예시, ko)

  • CC : 지역(territory)를 지정하는 대문자 두 글자 ISO 3166 country code. (예시, KR)

  • EEEE : 문자설정(character set) 또는 인코딩(encoding). (예시, eucKR) 

  • dddd : 방언 등의 변종을 구별하기 위한 것(modifier). (우리나라에서는 적용 필요하지 않음) 

참고로, []로 묶여진 내용은 사용하지 않을 수도 있음을 의미한다.

그리고, LANG=C로 설정하는 것은 C 언어 또는 POSIX (glibc) 에서 사용하는 기본 Locale값을 의미한다.


 

% locale -a

라는 명령을 이용하면 이외에 사용 가능한 로케일의 이름들을 알 수 있다.

 


3. Locale 관련 각 환경변수 의미

 

LANG : 모든 카테고리에 대한 Locale을 설정하는 환경변수이다. 다른 LC_* 환경변수보다는 우선 순위가 낮다. 우선순위가 가장 낮음


LC_ALL이 설정이 안 되어 있고 LC_* 값들이 설정이 따로 설정이 않된 경우 LANG을 변화시키면 LC_ALL을 제외한 로케일 카테고리들의
값이 변경되지만 LC_ALL이 설정 되어 있는 경우 LANG의 변화는 로케일 카테고리들의 값에 영향을 주지 않는다. 우선순위가 가장 높음

 

LC_CTYPE : 문자 분류(알파벳, 숫자, 한글 또는 소문자, 대문자 등등)를 위한 Locale 설정을 의미한다. 

 

LC_COLLATE : 문자열(string)의 정렬 순서(sort order 또는 collation)를 위한 Locale 설정을 위해 사용한다. 

 

LC_MESSAGES : 정보, 오류, 경고 메시지 등을 표현하기 위한 Locale 설정


LC_NUMERIC : 금액이 아닌 숫자 표현(천단위, 소수점, 숫자 그룹핑 등)을 위한 Locale 설정. 

 

LC_MONETARY : 금액 표현(천단위 구분 문자, 소수점 문자, 금액 표시 문자, 그 위치 등)을 위한 Locale 설정. 

 

LC_TIME : 시간과 날짜의 표현(년, 월, 일에 대한 명칭 등)을 위한 Locale 설정

 

LC_ALL : 모든 카테고리에 대한 로케일 설정을 위한 환경변수이고, 위의 LC_* 및 LANG 보다 우선순위가 높다.

 


4. 플랫폼별 locale


플랫폼별 locale명칭이 다름에 유의한다.

플랫폼 

 UTF-8 

 EUC-KR 

 AIX

 ko_KR.UTF-8 

 ko_KR.IBM-eucKR 

 HP-UX

 ko_KR.UTF8 

 ko_KR.eucKR 

 Solaris

 ko_KR.UTF-8 (ko.UTF-8) 

 ko 

 Linux

 ko_KR.UTF-8 

 ko_KR.euckr



5. 기타


해당 LANG 환경 변수에 따라 WAS 또는  JAVA언어에서 file.encoding  값이 설정되어, 한글 처리하는 데 있어 주의가 필요한다.


아래는 IBM AIX에서 테스트한 결과이다.


<예시>

 LANG=C로 설정했을 때,

 디폴트 file.encoding 값은 ISO8859-1 이고,


 LANG=ko_KR로 설정했을 때,

 디폴트 file.encoding 값은 IBM-eucKR 이다.  IBM-eucKR은 KSC5601, EUC-KR과 유사한 완성형이라고 보면 된다.