난 내 자신의 사용자 정의 만든 locale
들과 그들을 배치 /etc/locale.conf
나는 가상 콘솔 (Ctrl + Alt + F2)에 로그인하면 성공적으로 적용됩니다있다. 내 Gnome3 세션에서는 이러한 변수가 설정되지 않았습니다. 터미널 응용 프로그램의 경우에는 그냥 배치 할 수는 .bashrc
있지만 Thunderbird 및 Pidgin과 같은 그래픽 응용 프로그램에는 도움이되지 않습니다.
쉘 힌트의 로케일 설정은 그놈 세션에서 사용되지 않고 파일 을 작성하여 로케일-ArchWiki 의 버그를 에뮬레이트 .pam_environment
했지만 locale
s는 여전히 Gnome3에서 설정 한 것입니다. Gnome 설정에는 구성 대화 상자가 있지만 사전 정의 된 locale
조합 은 매우 제한되어 있으며 사용자 정의 할 수는 없습니다.
내 홈 디렉토리의 관련 파일 :
user@localhost:~$ ls -lah .dmrc .pam_environment .session .xsession .xsessionrc
lrwxrwxrwx. 1 user user 16 12. Jun 08:57 .dmrc -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 11. Jun 20:23 .pam_environment -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:09 .session -> /etc/locale.conf
lrwxrwxrwx. 1 user user 16 12. Jun 09:07 .xsession -> /etc/locale.conf
lrwxrwxrwx. 1 user user 9 13. Jun 11:22 .xsessionrc -> .xsession
-rw-rw-r--. 1 user user 66 13. Jun 11:13 .profile
user@localhost:~$ cat .profile
source /etc/locale.conf
내용 /etc/locale.conf
:
LANG="en_US.utf8"
LC_TIME="de_MY.utf8" # NB: de_MY
LC_MONETARY="de_DE.utf8"
LC_PAPER="de_DE.utf8"
LC_NAME="de_DE.utf8"
LC_ADDRESS="de_DE.utf8"
LC_TELEPHONE="de_DE.utf8"
LC_MEASUREMENT="de_DE.utf8"
LC_IDENTIFICATION="de_DE.utf8"
누구나 locale
Gnome3에서 사용자 정의를 설정하는 방법을 알고 있습니까?
답변
배경 정보
그놈 쉘 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"
새로운 설정 확인
마지막 단계는 모든 것이 예상대로 작동하는지 확인하는 것입니다. 모든 설정을 다시로드하려면 가장 쉬운 방법은 재부팅이었습니다.
- 시스템 구성이 올바른지 확인하려면 “현재 로케일 상태 확인”섹션을 참조하십시오.
-
그놈 쉘 및 로케일 종속 응용 프로그램 (그래픽 및 콘솔)을 사용하여 새 로케일에서 예상대로 작동하는지 확인하십시오. 예를 들어 LC_TIME을 사용자 정의한 경우
date
명령을 실행 하여 날짜 형식을 검증 할 수 있습니다 .$ date +%x 21/04/15
참고 : 모든 것은 GNOME 3.14로 Fedora 21에서 테스트되었습니다. 다른 Linux 배포판에는 추가 단계 나 다른 단계가 필요할 수 있습니다.
지침에 문제가 있으면 의견을 말하십시오.