개요

프로그램 개발을 하면서 항상 제대로 알고있는건지 의심하게 되는, 사소할 수 있는 정보를 한번 정리해봤다. 예를들어 한국의 국가-언어 코드는 ko-kr(ko_KR)이고, 한글은 유니코드 또는 EUC-KR 인코딩 방식을 사용하고, 시간표기에서 Asia/Seoul(UTC+0900) 시간대에 속해있다. 이 문서는 이 중에서 우리의 지역 정보를 표현하는 표준에 대한 내용을 담고있다.

국가 및 언어 표기

국가와 언어는 묶어서 표현된다. en-us(en_US) 또는 en-uk(en_UK), de-de(de_DE), ko-kr(ko_KR), ja-jp(ja_JP) 등으로 표기가 된다. 각각 언어 코드, 국가 코드 순서로 표기되고 linux에서도 이런 표기를 따르도록 되어있다. 예를들어 linux terminal에서 한국에서 유니코드로 한글표기를 기본 출력으로 설정하고 싶다면 LC_LANG=ko_KR.UTF-8 환경변수를 설정한다.

국가 코드 표기

국가 코드는 ISO 3166 으로 표준화 되어있다. 모든 국가 코드 목록은 Country code 에서 검색을 통해 찾을 수 있다.

이 코드는 처음에 2개의 알파벳으로 표기되었는데 이후에 국가가 추가되면서 중복되는 코드가 생겨서 3개의 알파뱃으로 새로운 표준이 생겼다. 각각 Alpha 2, Alpha 3_으로 표현한다. 그러나 아직 _ISO 3166 Alpha 2 가 기본이므로 대부분의 시스템이 이 표준을 따르고 있다.

한국은 kr로 표기한다.

언어 코드 표기

언어 코드는 ISO 639-1, ISO 639-2, ISO 639-5 로 표준화되어있다. 모든 언어 코드 목록은 미국 정부 페이지인 Library of Congress의 ISO 639.2 code list 페이지를 참고하는 것이 좋다.

이 코드는 처음에 2개의 알파뱃으로 표기되었는데 이후에 새로운 언어가 추가되면서 3개의 알파뱃을 사용하는 ISO 639-2가 새로운 표준으로 정의되었고 이후에 지역 언어들을 그룹화 하면서 ISO 639-3, ISO 639-5(ISO 639 part.5) 로 표준이 다시 정의되었다. ISO 639-5는 표기 자체도 복잡하고 언어 지역, 어족 등으로 Hierarchy로 표현하고있기 때문에 표기법이 너무 복잡해져서 대부분의 시스템이 ISO 639-1 표준을 따르고있다.

한국은 ko로 표기한다.

POSIX에서 사용하는 환경변수

unix 계열 os에서는 POSIX 표기를 따르기 때문에 이 방법에 대해 이해하면 locale에 대해 이해하기 더 쉬워진다. 윈도우에서도 일부 변수를 차용하고있기 때문에 그대로 사용할 수 있다. 이에대한 환경변수 값들은 POSIX Environment Variables 여기를 보면 자세히 알 수 있다.

  • LANG

    이 변수는 언어에 대한 변수이다. 이 값을 참고해서 소프트웨어에서 언어, 문자, 명령어, 날짜 포맷 등을 표현하도록 설정할 수 있다.

  • LC_ALL

    이 변수는 모든 locale 분류를 위한 값이다. 이 값을 설정하는 것으로 “LANG” 변수를 포함해서 “LC_” prefix를 갖는 모든 변수들을 일괄적으로 설정할 수 있다.

  • LC_COLLATE

    이 변수는 문자 비교를 위한 locale 분류 값이다. 이 변수에 지정되는 값에 따라 미리 정의해둔 문자 및 문장 비교, 정규식, 정렬 등의 규칙을 불러올 수 있다.

  • LC_CTYPE

    이 변수는 문자를 다루기위한 함수세트(tolower(), toupper(), isalpha(), …)의 정보를 담고있다.

  • LC_MESSAGES

    이 변수는 확인 절차와 에러메시지, 언어, 그리고 메시지를 작성할 때 지켜야 할 문화적인 규정 등을 가리킨다. catopen() 등의 함수에서 활용된다.

  • LC_MONETARY

    이 변수는 통화 표기에 대한 정보를 가리킨다.

  • LC_NUMERIC

    이 변수는 숫자를 표기할 때 지켜야 할 규칙을 가리킨다. 예를 들어 1000 단위에서 콤마(,)를 찍거나 하는 규칙들을 이야기한다. printf(), scanf() , strtod() 등의 함수에서 활용된다.

  • LC_TIME

    이 변수는 날짜와 시간을 표기하는 포맷 구성에 대한 정보를 갖는다. strftime() 등의 함수에서 사용될 수 있다.

파이썬에서의 Locale

파이썬에서 locale은 현재 이 스크립트가 어떤 나라에 대한 정보를 사용할 것인지에 대한 기준을 정하는데 쓸 수 있다. 예를든다면 ko-kr 인 경우에는 한국어를 한글로 표기하고, 화폐는 원화로 표기하고, Timezone은 +0900으로 표현해야 한다. 이런 정보들을 하나의 레이블로 묶어서 표현하는 것이 바로 국가 및 언어 표기인 것이다.

locale 모듈을 이용하면 현재 시스템의 코드를 알 수 있다.

import locale

print(locale.getlocale())  # 파라미터를 넣지 않으면 LC_CTYPE 변수를 반환하도록 되어있다.

locale.setlocale(locale.LC_ALL, 'ko_KR')  # locale code를 한국어로 설정하고싶을 경우에.

이 부분은 POSIX 표기를 기본으로 하고있고, os가 unix 계열이라면 linux/unix 시스템에 대한 환경변수에 대해 알아보는 것이 더 낫다.


This site uses Just the Docs, a documentation theme for Jekyll.