locale 이란
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.euckr 과 ko_KR.utf8 이며 만약 목록에 보이지 않을 경우 언어팩을 설치해 주면 됩니다.
$ sudo yum install langpacks-ko
$ sudo apt install language-pack-ko
locale 설정
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
같이 보기
- PHP number_format 으로 숫자 포맷팅 하기
- RHEL/CentOS 에서 locale 변수를 변경했지만 service 명령어의 결과가 한글로 표시되는 경우 처리 방법
- Unix profile 설정에서 export LANG=C 의 의미
- PHP money_format 으로 화폐 단위 표시 하기