1. Locale의 의미
각 나라들은 고유의 언어, 날짜, 시간, 화폐 단위 등으로 표현한다. 다국적용 애플리케이션 또는 패키지 개발 시에는 이러한 각 나라 고유의 표현 방법 등을 고려한 국제화(Internationalization, i18n)이 필요하다.
Locale은 이러한 국제화를 가능하게 해준다.
예를 들어, 날짜를 우리나라에서는 년/월/일(예, 1998/01/03)을 디폴트로 표현한다면, 미국에서는 월,일,년(예, Jan, 1th, 1998)과 같이 표현한다. 이때 Locale과 같은 기능이 없다면, 애플리케이션에서 분기시켜 처리하여 하드코딩을 해야 겠지만, Locale을 잘 활용하면, 쉽게 국제화가 가능하다.
2. Locale 의미
현재 설정된 Locale 설정 값은 아래와 같은 명령어로 확인한다.
<예시>
$ locale
|
위의 형식은 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과 유사한 완성형이라고 보면 된다. |
'OS > 공통-명령어' 카테고리의 다른 글
[명령어] find 명령어 이해 (0) | 2017.07.08 |
---|---|
[Tips] 시스템/OS별 스레드 모니터링 (0) | 2017.07.04 |
[명령어] 운영체제별 시스템콜 확인 명령어 (0) | 2017.03.26 |
[명령어] iconv 명령어 이해 (0) | 2017.02.20 |
[명령어] ssh 관련 명령어 (0) | 2017.02.01 |