답변:
이 답변은 선택적으로 기존 로케일을 기본으로 사용하여 로케일을 완전히 사용자 정의하는 방법을 보여줍니다. 이 답변에 사용될 로케일 유형이 유형입니다 i18n
. 이러한 유형의 로케일은 답변 본문에 "로케일"이라는 단어가 언급 될 때 암시됩니다.
로케일을 사용자 정의해야 할 첫 번째는 로케일의 형식을 알아야합니다. 이 웹 로캘 편집기 는 다른 사람이 바로 사용할 수는 없지만 로캘의 모든 필드에 대한 포괄적 인 설명을 제공합니다. 이 가이드가 사용됩니다.
로케일로 작업하는 데 필요한 유일한 도구는
디렉토리를 만들고 로케일에서 수행 할 작업과 관련된 모든 것을 저장하는 것이 좋습니다.
참고 : 일반적이지 않은 문자 를 사용하는 경우 아래에 작성한 스크립트에 문제가있을 수 있습니다. nass로 연결된 대체 스크립트를 살펴볼 수 있습니다 .
다음 코드를 파일에 저장하십시오. 이 파일은 시스템에서 파이썬 스크립트로 식별되며 파일이기 때문에 괜찮습니다. 이 안내서에서는 사용자가 스크립트를 호출했다고 가정합니다 encodestr
.
#!/usr/bin/python
def encode(string):
newstring = str()
for ch in string:
newstring += "<U%04X>" % ord(ch)
return newstring
if __name__ == '__main__':
import sys
print encode(sys.argv[1])
파일을 저장 한 후 파일 실행 권한을 부여하십시오.이 기능이 유용합니다. 노틸러스를 사용하거나 터미널에서 다음 명령을 실행하여 스크립트를 저장 한 디렉토리에서 수행 할 수 있습니다.chmod +x encodestr
.
이제 동일한 디렉토리에서 실행하여이 스크립트를 테스트 할 수 있습니다 ./encodestr hello
. 출력이와 같아야합니다 <U0068><U0065><U006C><U006C><U006F>
.
기존 로케일을 수정하는 것이 가장 쉬운 경우입니다. 이상적으로는 거의 모든 요구 사항에 맞는 로케일을 선택하므로 작은 수정 만하면됩니다. 이를 조정하기 위해 가이드를 사용하여 변경하려는 섹션과 변경 방법을 알 수 있습니다. 설치된 모든 로케일이에 /usr/share/i18n/locales
있지만 , 안내서 에는 거의 모든 로케일이 포함되어 있습니다.
그러나 로케일을 열면 가장 먼저 눈에 띄는 것은 이상한 <UXXXX>
코드 만큼 영어 단어를 읽는다는 것 입니다. 이러한 코드를 만들 수 있어야합니다.encodestr
. 스크립트 입니다.
어떤 섹션을 변경해야하는지 알면 섹션에 포함 된 각 필드를 알아야합니다.
예를 들어,
LC_TIME
섹션에는 필드t_fmt
및 기타 여러 필드가 포함되어 있습니다. 각 필드에는 가이드 에 대한 자체 설명이 있습니다 .
어떤 필드를 수정해야하는지 알았으므로 가이드를 다시 사용 하여 필드가 어떤 값을 허용하는지 확인하십시오.
예를 들어,이 필드
t_fmt
는 텍스트 및 공통 strfmt 변수를 허용합니다 .
수정하려는 필드에 무엇을 쓸 것인지 아는 경우 텍스트를 통해 encodestr
스크립트를 인코딩 된 해당 항목을 가져 오십시오.
참고 : 모든 필드를 인코딩 할 필요는 없으며 필요한 경우 기존 로캘을 참조로 사용하십시오.
예를 들어, 필드에 시간 형식
Time: %T
을 설정하려면 ; 이것은 돌아와서 로케일에 줄 을 가질 것 입니다 (물론 해당 섹션에 있습니다).t_fmt
./encodestr "Time: %T"
<U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
t_fmt <U0054><U0069><U006D><U0065><U003A><U0020><U0025><U0054>
원하는 모든 필드를 수정 한 후 시스템에 로케일을 설치해야 사용할 수 있습니다. 이를 위해 설치 섹션으로 진행하십시오.
하나를 수정하는 것과 달리 사용자 정의 로캘을 만드는 데 사용할 수있는 다른 방법은 처음부터 작업하고 있습니다. 이 가이드를 다시 사용하면 그리 어렵지 않습니다 . 유용한 팁은 다음과 같습니다 . 실제 복사 및 붙여 넣기 방법 없이 다른 로케일에서 섹션을 복사 할 수 있습니다 . 이 형식을 따라야합니다.
LC_SECTION
copy "locale"
END LC_SECTION
LC_SECTION
수정하려는 섹션은 어디에 있으며 해당 섹션 locale
을 복사하려는 로캘입니다.
예를 들어 영어 로케일로 시간 형식을 복사하려면이 텍스트에 사용자 정의 로케일 파일이 있어야합니다.
LC_TIME
copy "en_GB"
END LC_TIME
따라서 많은 작업이 절약되고 참조 된 로캘의 변경 사항이 사용자의 작업에 반영됩니다.
아래에 보여줄 단계는 최적이 아니지만 작동 할 수 있습니다.
로케일을 컴파일하십시오. 당황하지 마십시오! 시간이 걸리지 않습니다. 로케일의 이름 인 sudo localedef -i custom -f UTF-8 custom.UTF-8 -c -v
where 명령을 실행하십시오 custom
.
로케일을 /usr/share/i18n/locales/
디렉토리에 복사하십시오 . 당신은 확실히해야합니다 sudo는 이 작업을 수행하는의 권한을, 당신은 명령으로 할 수있는 사용자 정의 로케일의 파일 이름입니다.sudo cp locale /usr/share/i18n/locales/
locale
로캘을 지정하십시오 /var/lib/locales/supported.d/
. 예를 들어, 파일 이름을 작성 /var/lib/locales/supported.d/asd
하고 행을 추가하십시오 custom UTF-8
. 여기서 custom은 로케일의 이름입니다.
마법 명령을 실행하십시오. 나는 실제로이 명령이 정확히 무엇을하는지 모르지만 그것은 중요합니다. 를 실행하십시오 sudo locale-gen
. 필요한 경우 사용 가능한 로캘에 대한 참조를 생성하는 것이 가장 가능성이 높습니다.
시스템에 로케일을 사용하도록 지시하십시오. 로케일을 시스템 전체에서 사용하려면 /etc/environment
파일을 수정 하십시오. 그렇지 않은 경우 ~/.profile
파일 또는 시작시 제공되는 다른 파일을 수정할 수 있습니다. 후자가 무엇을 의미하는지 모른다면 걱정하지 말고 ~/.profile
파일을 사용 하십시오. 무엇을 써야하는지 알려면 먼저 locale
명령을 실행하십시오 . LANGUAGE
, LC_MESSAGES
등의 항목이 포함 된 목록을 발행해야 LC_CTYPE
합니다. 원하는 각 섹션 (이전 명령으로 나열)에 대해 별도의 줄에 씁니다.이 SECTION="locale"
부분 SECTION
은 locale
사용자 지정 로캘 의 섹션과 이름입니다.
예를 들어 네덜란드의 시간 형식을 사용하지만 영어는 사용하려면 다음과 같이 작성하십시오.
LANGUAGE="en_GB:en"
LC_TIME="nl_NL"
참고 : 모든 로캘 설정에 대해 하나의 로캘을 사용하려면 사용자 지정 로캘의 이름을 LC_ALL="locale"
where locale
라고 적으십시오. 당신이 모든 것을하지만 언어에 대한 로케일을 사용하려는 경우, 당신은 쓸 수 LANG="locale"
및 (물론, 다른 라인) LANGUAGE="locale":XX
여기서 XX
원하는 언어에 대한 두 문자 코드입니다.
예를 들어 네덜란드어 로캘과 영어를 사용하려는 경우 다음을 사용할 수 있습니다.
LANG="nl_NL"
LANGUAGE="nl_NL:en"
다음에 로그인 할 때 로케일이 사용 중이어야합니다. locale
명령을 다시 실행하여이를 테스트 할 수 있습니다 .
이 안내서의 불일치 또는 허위 진술에 대해 의견을 말하십시오!
custom UTF-8
에 /usr/share/i18n/SUPPORTED
내가 실행하기 전에 sudo locale-gen
. 그렇지 않으면 목록에 없습니다.
어떤 종류의 사용자 정의를 원하는지 확실하지 않지만을 사용하여 로케일 변수를 설정할 수 있습니다 ~/.locale
. 예를 들어 영어 메시지를 받지만 독일 시간과 내가 좋아하는 것을
export LC_ALL=""
export LANG="en_GB.utf8"
export LC_CTYPE="de_DE.utf8"
export LC_NUMERIC="de_DE.utf8"
export LC_TIME="de_DE.utf8"
export LC_COLLATE="de_DE.utf8"
export LC_MONETARY="de_DE.utf8"
export LC_MESSAGES="en_GB.utf8"
export LC_PAPER="de_DE.utf8"
export LC_NAME="en_GB.utf8"
export LC_ADDRESS="de_DE.utf8"
export LC_TELEPHONE="de_DE.utf8"
export LC_MEASUREMENT="de_DE.utf8"
export LC_IDENTIFICATION="de_DE.utf8"
사용자 정의 로캘 생성도 가능합니다. 날짜는 이 안내서 를 참조하십시오 .
en_US
을 위해 LC_NUMERIC
및 de_DE
위해 LC_MONETARY
및 LC_MEASUREMENT
다른 부작용 당신에게 제공? 개인 로케일 생성을위한 새 링크도 참조하십시오.
πμ
출력<U00CF><U0080><U00CE><U00BC>
됩니다<U03C0><U03BC>
. 작동 하는 링크 는 다음과 같습니다 .