etc.

로케일(Locale)이란? 국제화(internationalization)와 지역화(localization)

zubetcha 2022. 5. 6. 14:37

 

 

로케일(Locale)이란?

 

로케일이란 사용자 인터페이스(UI)에서 사용되는 언어(ISO 639-1 codes 표준 형식), 지역 설정(ISO 3166-1 표준 형식), 출력 방식(Character Set 또는 ISO 8859-1, UTF-8 등의 인코딩 식별자) 등을 정의하는 문자열을 말한다. OS에서 로케일과 관련된 환경 변수들을 사용해 로케일 관련 설정들을 변경할 수 있으며, 설정된 로케일에 따라 프로그램이 지원하는 메시지, 시간 포맷, 통화 등의 출력이나 동작 등을 제어할 수도 있다. 로케일 설정은 특정 언어의 입출력에 영향을 줄 수도 있기 때문에 영어 이외의 언어를 사용하는 경우 적절한 값을 지정해야 한다.

 

로케일 형식

 

language[_territory][.codeset][@modifier]

 

 

한국어를 사용하는 경우 주로 ko_KR.UTF-8을 사용하며, 이 때 맨 앞의 ko는 한국어(한글), 가운데 언더바(_)로 구분되는 KR은 국가 변수(한국), 마지막 점(.)으로 구분되는 코드셋은 EUC-KR이나 UTF-8같은 문자 인코딩 코드셋을 의미한다. 일반적으로는 이렇게 언어+지역+코드셋의 세 개의 값을 묶어서 로케일이 구성된다. 이 뒤로 @로 구분되는 추가 문자열이 붙는 경우도 있지만 자주 사용되지는 않는다.

 

즉, ko_KR.UTF-8은 한글, 한국, UTF-8 인코딩을 의미한다. 한국어(ko)의 경우 주로 한국(KR)으로 지역을 설정하지만 영어의 경우 국가에 종속되지 않기 때문에 다음과 같이 여러 국가의 조합으로 사용되곤 한다.

 

▪︎ en_US.UTF-8: 영어, 미국, UTF-8 인코딩

▪︎ en_CA.UTF-8: 영어, 캐나다, UTF-8 인코딩

▪︎ en_GB.UTF-8: 영어, 영국, UTF-8 인코딩

▪︎ en_HK.UTF-8: 영어, 홍콩, UTF-8 인코딩

 

locale 명령어

 

셸에서 locale 명령어를 입력하면 현재 OS에 설정되어 있는 로케일 값을 확인할 수 있다.

 

$ locale

 

각각의 설정값들이 의미하는 것은 아래와 같다.

 

 

LANG

전역 로케일 설정값으로, 다른 값이 설정되어있지 않을 때만 적용되며, 우선순위가 가장 낮다.

LC_COLLATE

문자열의 정렬 순서를 결정하는 로케일을 지정한다.

LC_CTYPE

문자 분류, 글자수, 대소문자 구분이 되는 로케일을 지정한다.

LC_MESSAGES

메시지를 표시하는 기준이 되는 로케일을 지정한다.

LC_MONETARY

통화나 금액과 관련된 숫자의 기준이 되는 로케일을 지정한다.

LC_NUMERIC

숫자와 관련된 기준이 되는 로케일을 지정한다.

LC_TIME

날짜, 시간과 관련된 로케일을 지정한다.

LC_ALL

전역 로케일 설정값으로, 우선순위가 가장 높다.

 

이 외에도 시스템에 따라 LC_PAPER, LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, LC

_IDENTIFICATION 등의 추가적인 환경변수도 있다. 로케일은 라이브러리나 프로그램의 동작 방식에 영향을 줄 수도 있지만, 라이브러리나 프로그램에서 로케일과 관련된 동작 방식을 지원해야만 의도한대로 동작한다.

 

아래와 같이 locale 뒤에 -a를 붙이면 현재 OS에서 사용가능한 모든 로케일을 확인할 수 있다.

 

$ locale -a

 

 

로케일 설정 방법

 

$ export LANG="ko_KR.UTF-8"

 

셸에 export 키워드로 위와 같이 명령어를 입력하면 로케일을 설정할 수 있다. LANG의 위치에는 로케일의 환경변수 이름을 입력하고, 등호(=)로 로케일 설정값을 할당한다.

 

로케일 환경변수의 우선순위

 

위와 같이 로케일과 관련된 다양한 환경변수들 중에서 우선순위가 가장 높은 환경변수 LC_ALL로, LC_ALL 값이 설정되어 있으면 이 외의 다른 로케일 환경변수들을 별도로 변경해도 적용되지 않는다. LC_ALL 다음으로 우선순위가 높은 환경변수는 LC 로 시작하는 환경변수들이며, 우선순위가 가장 낮은 환경변수LANG이다. 

 

특정 로케일을 사용한다면 LC_ALL 하나만 설정해줘도 되며, 각각의 로케일 환경변수에 서로 다른 설정값을 지정해야 하는 경우에는 LANG으로 기본값을 설정하고 필요에 따라 LC_*의 설정값을 개별적으로 지정해주면 된다.

 

국제화(internationalization)와 지역화(localization)의 차이

 

internationalization (i18n)

 

i18ninternationalization의 축약형이다. 국제화를 의미하는 internationalization은 총 20개의 알파벳으로 되어 있는데, 가장 첫 글자인 i와 가장 마지막 글자인 n 사이의 알파벳의 갯수가 18개이기 때문에 i18n이라고 칭한다. 즉, 국제화 = internationalization = i18n 이라고 보아도 무방하다.

 

i18n외에도 축약형으로 사용하는 다른 예시들도 있다.

 

▪︎ i18n: internationalization (국제화)

▪︎ l10n: localization (현지화)

▪︎ g11n: globalization (세계화)

 

소프트웨어의 국제화(internationalization, i18n)

 

소프트웨어의 국제화는 소프트웨어가 특정 지역이나 언어에 종속되지 않고 다양한 지역, 언어에서 정상적으로 동작하도록 국제적으로 통용되는 소프트웨어를 설계하고 개발하는 과정을 일컫는다.

 

소프트웨어 국제화 고려사항

▪︎ 유니코드

▪︎ 리소스 외부화 및 관리

▪︎ 로케일 대응

▪︎ Localizability (internationalization & localization)

 

주요 요소 설명 목적
유니코드 세계의 모든 문자를 컴퓨터에서 일관되게 표현하고 다룰 수 있도록 설계된 산업 표준 각 언어와 문자 체계에 따른 충돌 문제 해결
리소스 외부화 및 관리 이미지, 바이너리 코드, 소스코드 등으로부터 리소스를 분리하는 것 프로그램의 수정 없이 다국어 지원이 가능하도록 하기 위함
로케일 대응 날짜/시간 형식, 달력, 통화 기호, 문자열 정렬 순서 등 국제화 라이브러리를 이용하여 다수의 로케일에 유연하게 대응하기 위함
Localizability 다국어로 번역될 경우 사용자 인터페이스에 미치는 영향을 분석하는 것 UI가 구성한 의도에 맞게 언어별로 처리할 수 있는지를 확인하기 위함

 

소프트웨어의 현지화 (localization, l10n)

 

소프트웨어의 현지화는 현지의 IT 환경에 맞에 소프트웨어를 개발하는 과정을 일컫는다.

 

소프트웨어 현지화 고려사항

▪︎ 현지화 번역

▪︎ 현지어 처리

▪︎ 문화적, 사회적 객체 처리 등

 

즉, 그 나라의 문화와 사회적 분위기 등을 고려하여 소프트웨어를 만들고, 번역을 처리하고, 리소스 작업을 하는 것이 현지화이다.

 

주요 요소 설명 목적
현지화 번역    
현지어 처리 인코딩 (문자와 문자열)
입, 출력 장치 (키보드, 마우스 등)
파일 시스템을 이용한 입출력
데이터베이스를 이용한 데이터 입출력 등
사용자가 의도한 대로 정상적으로 입출력이 동작하는지 확인
문화적, 사회적 객체 처리 날짜, 시간, 달력
숫자, 통화
측정 단위
우편번호, 주소, 전화번호, 이름 등
 

 

 

참고

 

로케일(Locale)이란? 국가 및 언어 설정

https://miaow-miaow.tistory.com/32