
나는 나만의 사용자 정의 를 만들어 가상 콘솔(Ctrl+Alt+F2)에 로그인하면 성공적으로 적용되도록 locale
배치했습니다 . /etc/locale.conf
그러나 내 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에서 사용자 정의를 설정하는 방법을 아는 사람이 있습니까 ?
답변1
배경 정보
GNOME Shell 3.14.4를 사용하여 Fedora 21에서 솔루션을 테스트했지만 다른 버전에도 적용할 수 있다고 생각합니다.
가장 먼저 이해해야 할 점은 GNOME 데스크탑 환경이 시스템 전체 로케일 정의를 무시하므로 /etc/locale.conf
. 또한 자체 로캘 구성이 있고 시스템이나 GNOME 설정을 전혀 사용하지 않는 응용 프로그램이 있을 수 있습니다. 이 안내서에서는 필요에 따라 로케일 설정을 사용자 정의하는 방법과 그놈에 대해 설명할 것이며 시스템은 로케일 관점에서 일관될 것입니다.
현재 로케일 상태 확인
시스템 전체 설정
시스템 전반의 로케일 설정은 파일에 저장되며
/etc/locale.conf
, 이는 초기 부팅 시체계화된악마. 에 구성된 로케일 설정은/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'
그놈에는 하나의 설정만 있습니다. 간략하게 살펴보면서그놈 제어 센터의 소스 코드함수가 호출 되면 set_localed_locale()
다음 범주(LC_TIME, LC_NUMERIC, LC_MONETARY, LC_MEASUREMENT, LC_PAPER)를 모두 org.gnome.system.locale region
.
사용자 정의 로케일을 만들지 않고는 다양한 로케일 설정을 혼합하는 것이 불가능해 보이지만 다행히도 그다지 복잡한 작업은 아닙니다.
사용자 정의 로케일 생성
설명하는 가장 쉬운 방법은 예를 드는 것이라고 생각합니다. 제 특별한 경우에는 주로 히브리어(he_IL) 그러나 LC_NAME의 경우 LC_MESSAGESen_US및 LC_TIME(수정 first_weekday
및 first_workday
)en_GB.
로케일 정의 파일 가져오기
어떤 로케일을 혼합하고 싶은지에 대한 아이디어가 있어야 합니다. 먼저 에서 찾을 수 있는 관련 정의 파일을 찾아야 합니다 /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 ~/custom-locale/hc_IL
아직 마음에 드는 에디터를 선택하지 못한 분들과정력차 한잔이 아니어도 사용할 수 있습니다gedit:)
$ gedit ~/custom-locale/hc_IL
파일 구조는 그리 복잡하지 않습니다. 기본적으로 섹션으로 구성됩니다. 에서로케일(5)매뉴얼 페이지:
로케일 정의는 각 로케일 범주에 대해 하나의 부분으로 구성됩니다. 각 부분은 다른 기존 로케일에서 복사하거나 처음부터 정의할 수 있습니다. 카테고리를 복사해야 하는 경우 정의에서 유효한 키워드는 다음과 같습니다.복사복사할 로케일의 이름이 그 뒤에 옵니다.
의 개념복사매우 유용합니다. 시간이 절약되고 결과 파일이 명확하고 간결해집니다. 예를 들어 전체 섹션을 복사하는 대신 다음을 수행할 수 있습니다.
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 "[email protected]" tel "" fax "" language "Hebrew" territory "Israel" revision "1.0" date "2015-04-21"
메모:모든 "범주.." 줄에LC_IDENTIFICATION섹션을 사용하여 파일을 생성하는 동안 수정되었습니다
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/
새 로케일 활성화
이 단계에서는 새 로케일을 사용하도록 시스템과 GNOME을 구성하려고 합니다.
시스템 전체 설정
/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
그놈 설정
GNOME에서 새 로케일을 활성화하려면 다음 명령을 실행하십시오. hc_IL
해당 로케일로 바꾸십시오 .
$ gsettings set org.gnome.system.locale region "hc_IL.utf8"
새 설정 확인
마지막 단계는 모든 것이 예상대로 작동하는지 확인하는 것입니다. 모든 설정을 다시 로드하는 가장 쉬운 방법은 재부팅하는 것이었습니다.
- 시스템 구성이 올바른지 확인하려면 "현재 로케일 상태 확인" 섹션을 참조하십시오.
GNOME 쉘과 로케일 종속 응용프로그램(그래픽 및 콘솔)을 사용하고 새 로케일에서 예상대로 작동하는지 확인하십시오. 예를 들어 LC_TIME을 사용자 정의한 경우 다음
date
명령을 실행하여 날짜 형식을 확인할 수 있습니다.$ date +%x 21/04/15
메모:모든 것은 GNOME 3.14가 포함된 Fedora 21에서 테스트되었습니다. 다른 Linux 배포판에는 추가 단계나 다른 단계가 필요할 수 있습니다.
지침에 문제가 있으면 의견을 말해주세요.