locale 이란
locale은 세계 각 국에서 사용하는 언어, 문자, 화폐 표시, 시간등에 대해 국제화(i18n; Internationalization) 와 지역화(l10n; localization)를 통해 어떻게 표시할 지 정의한 매개 변수의 모음입니다.
locale 이 필요한 이유는 동일한 데이타라도 문화권마다 표시하고 처리하는 방법이 달라서입니다.
예로 12345678.235 란 숫자가 있을 경우 한국어로 locale 이 설정되어 있으면 다음과 같이 큰 자리 구분은 , 로 소수점은 . 으로 표시를 합니다.
Code Block |
---|
12,345,678.235 |
하지만 프랑스 권에서는 다음처럼 콤마 대신 공백을 사용하고 소수점에는 콤마를 찍어서 표시한다고 합니다.
Code Block |
---|
12 345 678,235 |
프랑스와 같은 EU 국가인 독일은 우리와 정반대로 콤마의 점을 사용한다고 합니다. 즉 큰 자리수 표현은 . 으로 소수점은 , 로 구분합니다.
...
locale 명령어로 현재 설정을 확인할 수 있습니다.
Code Block | ||||
---|---|---|---|---|
| ||||
$ 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 옵션을 주고 실행하면 됩니다.
Code Block | ||||
---|---|---|---|---|
| ||||
$ 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 |
...
Code Block | ||||
---|---|---|---|---|
| ||||
$ sudo apt install language-pack-ko |
locale 설정
LC_NUMERIC, LC_TIME, LC_MONETARY 같은 개별 로케일을 로케일 변수마다 설정해도 되지만 LANG 변수에 설정하면 모든 로케일에 적용됩니다.
...
- PHP number_format 으로 숫자 포맷팅 하기
- RHEL/CentOS 6 에서 locale 변수를 변경했지만 service 명령어의 결과가 한글로 표시되는 경우 처리 방법
- Unix profile 설정에서 export LANG=C 의 의미
- PHP money_format 으로 화폐 단위 표시 하기
...