배경 정보
그놈 쉘 3.14.4로 Fedora 21에서 솔루션을 테스트했지만 다른 버전에도 적용될 수 있다고 생각합니다.
가장 먼저 이해해야 할 것은 그놈 데스크탑 환경이 시스템 전체 로켈 정의를 무시하므로에 영향을받지 않습니다 /etc/locale.conf
. 또한 자체 로케일 구성이 있고 시스템 또는 그놈 설정을 전혀 사용하지 않는 응용 프로그램이있을 수 있습니다. 이 안내서에서는 로케일 설정을 사용자의 필요와 그놈에 맞게 사용자 정의하는 방법을 설명하고 시스템은 로케일 관점에서 일관됩니다.
현재 로캘 상태 확인
시스템 전체 설정
에서 페도라 21 시스템 관리자 안내서 :
시스템 전체 로케일 설정은 /etc/locale.conf
파일에 저장되며, 초기 부팅시 systemd 데몬 이 읽습니다 . 로케일 설정 /etc/locale.conf
은 개별 프로그램 또는 개별 사용자가이를 대체하지 않는 한 모든 서비스 또는 사용자에 의해 상속됩니다.
현재 로케일 상태를 보려면 다음을 실행할 수 있습니다.
$ localectl status
System Locale: LANG=en_US.UTF-8
LC_NUMERIC=en_US.UTF-8
LC_TIME=en_US.UTF-8
LC_MONETARY=en_US.UTF-8
LC_PAPER=en_US.UTF-8
LC_MEASUREMENT=en_US.UTF-8
VC Keymap: us
X11 Layout: us
그놈 설정
$ gsettings get org.gnome.system.locale region
'en_US.UTF-8'
그놈에는 하나의 설정 만 있습니다. gnome-control-center 의 소스 코드를set_localed_locale()
간략히 살펴보면 함수가 호출 될 때 다음의 모든 범주 (LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER)가에 정의 된 동일한 로케일로 설정되는 것으로 보입니다 org.gnome.system.locale region
.
사용자 지정 로캘을 만들지 않고 다른 로캘 설정을 혼합하는 것은 불가능 해 보이지만 다행히도 매우 복잡한 작업은 아닙니다.
사용자 정의 로캘 만들기
나는 설명하는 가장 쉬운 방법은 예에 의한 것이라고 생각합니다. 필자의 경우에는 주로 히브리어 ( he_IL )를 기반으로 하지만 LC_NAME, en_US의 LC_MESSAGES first_weekday
및 en_GB의 LC_TIME (수정 된 및 first_workday
)을 사용 하여 사용자 지정 로캘을 원했습니다 .
로캘 정의 파일 잡기
어떤 로케일을 혼합 하려는지 알아야합니다. 먼저 관련 정의 파일을 찾아야합니다 /usr/share/i18n/locales/
. 내 예로 돌아가서 he_IL , en_US 및 en_GB가 필요했습니다 . 집에 작업 폴더를 설정하고 필요한 파일을 복사했습니다.
$ cd /usr/share/i18n/locales
$ mkdir -v ~/custom-locale ; cp -v he_IL en_US en_GB ~/custom-locale/
새 정의 파일 작성
내 로케일 부르기로 결정 hc_IL을 하고 갔다 he_IL을 기초로. 다음 행은 새 파일 작성 hc_IL
에서 내용을 he_IL
문자열의 발생 모두 교체하고 길에 he_IL 으로 파일 내부 hc_IL .
$ cd ~/custom-locale/
$ sed 's/he_IL/hc_IL/g' he_IL > hc_IL
새 정의 파일 수정
이제 필요에 따라 새 로캘을 사용자 지정할 수 있습니다. ~/custom-locale/hc_IL
자주 사용하는 텍스트 편집기로 새로 만든 파일 을 엽니 다 . vim을 사용합니다 (로케일 정의 파일에 적합한 구문 강조 표시가 있음).
$ vim ~/custom-locale/hc_IL
좋아하는 편집기를 아직 선택하지 않았고 vim 이 차 한잔이 아닌 경우 gedit 를 사용할 수 있습니다. :)
$ gedit ~/custom-locale/hc_IL
파일 구조는 그리 복잡하지 않습니다. 기본적으로 섹션으로 구성됩니다. 에서 로케일 (5) 맨 페이지 :
로캘 정의에는 각 로캘 범주마다 한 부분이 있습니다. 각 부분은 기존의 다른 로케일에서 복사하거나 처음부터 정의 할 수 있습니다. 범주를 복사해야하는 경우 정의에서 유효한 키워드는 copy 다음에 복사해야하는 로케일 이름입니다.
복사 의 개념 은 매우 유용합니다. 시간을 절약하고 결과 파일이 명확하고 간결합니다. 예를 들어, 전체 섹션을 복사하는 대신 다음을 수행 할 수 있습니다.
LC_MESSAGES
copy "en_US"
END LC_MESSAGES
로케일 정의 파일에 대한 전체 문서는 다음을 통해 액세스 할 수 있습니다.
$ man 5 locale
그러나 기존 로케일이 혼합 된 사용자 정의 로케일을 작성하려는 경우 모든 세부 사항을 이해할 필요는 없습니다.
필자의 경우 다음 카테고리와 키워드를 수정했습니다.
LC_IDENTIFICATION
title "Custom Hebrew locale"
source "mydomain.ws"
address "http:////www.mydomain.ws"
contact ""
email "admin@mydomain.ws"
tel ""
fax ""
language "Hebrew"
territory "Israel"
revision "1.0"
date "2015-04-21"
참고 : LC_IDENTIFICATION 섹션의 모든 " category .. "행 은 파일을 만드는 동안을 사용하여 수정되었습니다 . 따라서 더 이상 건드릴 필요가 없습니다.sed
LC_TIME
en_GB 에서 전체 섹션을 복사하고 첫 번째 요일과 첫 번째 작업 일을 나타내는 행만 수정했습니다.
first_weekday 1
first_workday 1
내가 남긴 카테고리의 나머지 부분은 다음과 같이 복사 지시문으로 내용을 대체했습니다 .
LC_NAME
copy "en_US"
END LC_NAME
이제 정의 파일이 준비되었습니다. 파일을 저장하는 것을 잊지 마십시오 :)
새 로캘 컴파일 및 복사
새 로케일의 컴파일은 다음 명령을 루트로 사용하거나 sudo를 사용하여 수행됩니다 . 교체 hc_IL
로케일과 :
$ sudo localedef -c -v -i hc_IL -f UTF-8 hc_IL.UTF-8
컴파일이 성공하면 컴파일 된 로케일 데이터가 아카이브 파일에 추가됩니다 /usr/lib/locale/locale-archive
.
새 로케일 정의 파일을 로케일 정의 디렉토리로 복사하십시오. 교체 hc_IL
로케일과 :
$ sudo cp -v hc_IL /usr/share/i18n/locales/
새 로케일 활성화
이 단계에서는 새로운 로케일을 사용하도록 시스템과 그놈을 구성하려고합니다.
시스템 전체 설정
/etc/locale.conf
파일을 루트 로 편집하고 LC_
새 로케일로 시작하는 모든 행을 설정 하십시오. 예를 들면 다음과 같습니다.
LANG=en_US.UTF-8
LC_NUMERIC=hc_IL.utf8
LC_TIME=hc_IL.utf8
LC_MONETARY=hc_IL.utf8
LC_PAPER=hc_IL.utf8
LC_MEASUREMENT=hc_IL.utf8
그놈 설정
그놈에서 새 로케일을 활성화하려면 다음 명령을 실행하십시오. 교체 hc_IL
로케일과 :
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
새로운 설정 확인
마지막 단계는 모든 것이 예상대로 작동하는지 확인하는 것입니다. 모든 설정을 다시로드하려면 가장 쉬운 방법은 재부팅이었습니다.
참고 : 모든 것은 GNOME 3.14로 Fedora 21에서 테스트되었습니다. 다른 Linux 배포판에는 추가 단계 나 다른 단계가 필요할 수 있습니다.
지침에 문제가 있으면 의견을 말하십시오.