Gnome3에서 사용자 정의 로케일 설정 (Fedora 20) 있지만 사전 정의 된 locale조합 은

난 내 자신의 사용자 정의 만든 locale들과 그들을 배치 /etc/locale.conf나는 가상 콘솔 (Ctrl + Alt + F2)에 로그인하면 성공적으로 적용됩니다있다. 내 Gnome3 세션에서는 이러한 변수가 설정되지 않았습니다. 터미널 응용 프로그램의 경우에는 그냥 배치 할 수는 .bashrc있지만 Thunderbird 및 Pidgin과 같은 그래픽 응용 프로그램에는 도움이되지 않습니다.

힌트의 로케일 설정은 그놈 세션에서 사용되지 않고 파일 을 작성하여 로케일-ArchWiki 의 버그를 에뮬레이트 .pam_environment했지만 locales는 여전히 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"

누구나 localeGnome3에서 사용자 정의를 설정하는 방법을 알고 있습니까?



답변

배경 정보

그놈 쉘 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_weekdayen_GB의 LC_TIME (수정 된 및 first_workday)을 사용 하여 사용자 지정 로캘을 원했습니다 .

로캘 정의 파일 잡기

어떤 로케일을 혼합 하려는지 알아야합니다. 먼저 관련 정의 파일을 찾아야합니다 /usr/share/i18n/locales/. 내 예로 돌아가서 he_IL , en_USen_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 배포판에는 추가 단계 나 다른 단계가 필요할 수 있습니다.

지침에 문제가 있으면 의견을 말하십시오.