배경 정보

배경 정보

나는 나만의 사용자 정의 를 만들어 가상 콘솔(Ctrl+Alt+F2)에 로그인하면 성공적으로 적용되도록 locale배치했습니다 . /etc/locale.conf그러나 내 Gnome3 세션에서는 해당 변수가 설정되지 않았습니다. 터미널 애플리케이션의 경우에는 그냥 배치할 수 있지만 .bashrcThunderbird 및 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에서 사용자 정의를 설정하는 방법을 아는 사람이 있습니까 ?

답변1

배경 정보

GNOME Shell 3.14.4를 사용하여 Fedora 21에서 솔루션을 테스트했지만 다른 버전에도 적용할 수 있다고 생각합니다.

가장 먼저 이해해야 할 점은 GNOME 데스크탑 환경이 시스템 전체 로케일 정의를 무시하므로 /etc/locale.conf. 또한 자체 로캘 구성이 있고 시스템이나 GNOME 설정을 전혀 사용하지 않는 응용 프로그램이 있을 수 있습니다. 이 안내서에서는 필요에 따라 로케일 설정을 사용자 정의하는 방법과 그놈에 대해 설명할 것이며 시스템은 로케일 관점에서 일관될 것입니다.


현재 로케일 상태 확인

시스템 전체 설정

에서Fedora 21 시스템 관리자 가이드:

시스템 전반의 로케일 설정은 파일에 저장되며 /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_weekdayfirst_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_ILhe_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 배포판에는 추가 단계나 다른 단계가 필요할 수 있습니다.

지침에 문제가 있으면 의견을 말해주세요.

관련 정보