개요

locale은 세계 각 국에서 사용하는 언어, 문자, 화폐 표시, 시간등에 대해 국제화(i18n; Internationalization) 와 지역화(l10n; localization)를 통해 어떻게 표시할 지 정의한 매개 변수의 모음입니다.


locale 이 필요한 이유는 동일한 데이타라도 문화권마다 표시하고 처리하는 방법이 달라서입니다.


예로 12345678.235 란 숫자가 있을 경우 한국어로 locale 이 설정되어 있으면 다음과 같이 큰 자리 구분은 , 로 소수점은 . 으로 표시를 합니다.

12,345,678.235


하지만 프랑스 권에서는 다음처럼 콤마 대신 공백을 사용하고 소수점에는 콤마를 찍어서 표시한다고 합니다.

12 345 678,235


프랑스와 같은 EU 국가인 독일은 우리와 정반대로 콤마와 점을 사용한다고 합니다. 즉 큰 자리수 표현은 . 으로 소수점은 , 로 구분합니다.

12.345.678,235


locale 을 활용하면 언어권에 맞게 프로그램마다 데이타의 입력과 출력을 수정하지 않고도 사용하는 언어별에 맞는 데이타를 처리할 수 있는 장점이 있습니다.

locale 확인

locale 명령어로 현재 설정을 확인할 수 있습니다.

$ locale

LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=


가능한 로케일 언어 목록은 -a 옵션을 주고 실행하면 됩니다.

$ locale -a | grep 

C
C.utf8
en_AG
en_AU
en_AU.utf8
...
en_US
en_US.iso885915
en_US.utf8
en_ZA
en_ZA.utf8
en_ZM
en_ZW
en_ZW.utf8
ko_KR.euckr
ko_KR.utf8
POSIX


한국어 로케일은 ko_KR.euckrko_KR.utf8 이며 만약 목록에 보이지 않을 경우 언어팩을 설치해 주면 됩니다.

$ sudo yum install langpacks-ko
$ sudo apt install language-pack-ko


locale 설정

LC_NUMERIC, LC_TIME, LC_MONETARY 같은 개별 로케일 변수마다 설정해도 되지만 LANG 변수에 설정하면 모든 로케일에 적용됩니다. 

$ export LANG=ko_KR.utf8


위 문장은 다음 명령어와 동일한 결과를 갖게 됩니다.

export LC_CTYPE="ko_KR.utf8"
export LC_NUMERIC="ko_KR.utf8"
export LC_TIME="ko_KR.utf8"
export LC_COLLATE="ko_KR.utf8"
export LC_MONETARY="ko_KR.utf8"
export LC_MESSAGES="ko_KR.utf8"
export LC_PAPER="ko_KR.utf8"
export LC_NAME="ko_KR.utf8"
export LC_ADDRESS="ko_KR.utf8"
export LC_TELEPHONE="ko_KR.utf8"
export LC_MEASUREMENT="ko_KR.utf8"
export LC_IDENTIFICATION="ko_KR.utf8"


위와 같이 콘솔에서 설정하면 재부팅시 사라지므로 사용하는 쉘의 초기화 파일에 설정을 넣어주면 됩니다.

예로 RHEL/CentOS 에서 bash를 사용시에는 .bash_profile 에  Ubuntu 에서 bash 를 사용하면 .profile 에 설정하며 zsh 를 사용시에는 .zshrc 에 넣어줍니다.

export LANG=ko_KR.utf8
export LANG=ko_KR.utf8

같이 보기


참고




blog comments powered by Disqus