로케일을 무엇으로 설정해야 하나요? 이것이 어떤 영향을 미칠까요?

로케일을 무엇으로 설정해야 하나요? 이것이 어떤 영향을 미칠까요?

이 질문은 다음과 같은 질문에서 비롯되었습니다. Chromium 브라우저에서는 "파일로 인쇄"에 대한 기본 용지 크기 설정을 허용하지 않습니다., 채팅을 통해 @Gilles와 채팅하세요. @don_crissti가 지적하고 제가 확인한 대로 로케일(적어도 LC_PAPER)을 변경하면 선택한 용지 크기에 영향을 미칩니다.

나는 무엇을 선택해야 할지 별로 고민하지 않고, en_US.UTF-8합리적인 기본 선택처럼 보이기 때문에 항상 선택한다.

그러나 @Gilles의 채팅 내용에 따르면(다음에서 시작된 대화 참조)http://chat.stackexchange.com/transcript/message/17017095#17017095). 발췌:

Gilles: LC_PAPER의 기본값은 $LANG입니다.

Gilles: LANG=en_US.UTF-8이 있어야 합니다. 이것은 나쁜 생각입니다. 거의 항상 나쁜 일인 LC_COLLATE를 설정합니다.

Gilles: LC_COLLATE는 올바른 데이터 정렬을 설명하지 않습니다. 너무 제한적입니다(문자별). LANG을 제거하고 LC_CTYPE 및 LC_PAPER를 설정합니다.

Gilles: 영어 이외의 언어로 메시지를 원하시면 LC_MESSAGES를 추가하세요.

분명히 여기에는 내가 모르는 문제가 있고 다른 많은 사람들도 알지 못할 것이라고 확신합니다. 그렇다면 로케일을 설정할 때 무엇을 고려해야 하며, 어떻게 설정해야 할까요? 나는 항상 dpkg-reconfigure locales데비안에서 실행해 왔지만 그것에 대해 많이 생각하지 않았습니다.

구체적인 질문: 로케일을 en_IN.UTF-8로 설정해야 합니까? 이렇게 하면 단점이 있나요?

또한보십시오:LC_COLLATE(반드시)가 문자 범위에 영향을 줍니까?

답변1

로케일설정은 귀하의 문화와 관련된 사용자 기본 설정입니다.

로케일 이름

내가 아는 모든 현재 Unix 변종(일부 골동품은 아님)에서 로케일 이름은 동일한 패턴을 따릅니다.

  • 하나ISO 639-1소문자 2자리 언어 코드, 또는ISO 639-2언어에 두 글자의 코드가 없으면 세 글자의 언어 코드가 사용됩니다. 예를 들어 en영어, 독일어 de, ja일본어, uk우크라이나어, ber베르베르어...
  • 모든 언어는 아니지만 많은 언어의 경우 밑줄 _뒤에 밑줄이 옵니다.ISO 3166대문자 2자리 국가 코드입니다. 예: en_US미국 영어, en_UK영국 영어, fr_CA캐나다(퀘벡) 프랑스어, de_DE독일어 독일어, de_AT오스트리아 독일어, ja_JP일본어(일본어) 등.
  • 선택적으로 점 .뒤에 이름이 옵니다.문자 인코딩UTF-8적어도 GNU libc( ISO-8859-1이것이 얼마나 흔한지는 모르겠습니다)에서는 이름을 인코딩할 때 대소문자 KOI8-UGB2312구두점이 무시됩니다. Big5예를 들어, zh_CN.UTF-8중국어 간체는 UTF-8로 인코딩되고, zh_CN중국어는 GB2312로 인코딩되며, zh_TW대만어(번체) 중국어는 Big5로 인코딩됩니다.
  • (선택 사항) at 기호 @뒤에 변형 이름이 옵니다. 변형의 의미는 로케일에 따라 다릅니다. 예를 들어, 많은 유럽 국가에는 @euro통화 기호가 €이고 인코딩이 일반 통화 기호 변형이 아닌 해당 문자(ISO 8859-15 또는 ISO 8859-16)를 포함하는 로케일 변형이 있습니다. 예를 들어 en_IE(영어, 아일랜드)는 latin1(ISO 8859-1) 인코딩과 £를 통화 기호로 사용하는 반면, en_IE@eurolatin9(ISO 8859-15) 인코딩과 €를 통화 기호로 사용합니다.

또한 모든 UNIX 계열 시스템에는 두 개의 로케일 이름이 있습니다: CPOSIX. 이러한 이름은 동의어이며 컴퓨터 용어로 컴퓨터 프로그램에서 구문 분석되는 데이터에 적합한 기본 설정을 의미합니다.

지역 설정

다음 로캘 범주는 다음과 같이 정의됩니다.POSIX:

  • LC_CTYPE: 터미널 응용 프로그램에서 사용되는 문자 집합: 범주형 데이터(문자, 구두점, 공백, 유효하지 않은 문자 등) 및 대소문자 변환. 텍스트 유틸리티는 일반적으로 LC_CTYPE문자 경계를 결정하는 데 주의를 기울입니다.
  • LC_COLLATE: 데이터 정렬(즉, 정렬) 순서입니다. 이 설정은 다음과 같은 여러 가지 이유로 매우 제한적으로 사용됩니다.
    • 대부분의 언어에는 순서에 따라 달라지는 복잡한 규칙이 있으며(예: 사전 단어와 고유 이름은 동일한 순서를 사용하지 않을 수 있음) 표현적으로 사용할 수 없습니다 LC_COLLATE.
    • 올바른 정렬 순서가 필요한 응용 프로그램은 거의 없으며 이러한 작업은 로케일을 사용하는 소프트웨어에 의해 수행됩니다. 예를 들어, 워드 프로세서는 파일 자체에 파일의 언어와 인코딩을 저장하며(그렇지 않으면 파일이 다른 로케일을 사용하는 시스템에서 올바르게 처리되지 않음) 환경에서 지정한 로케일에 대해 신경 쓰지 않습니다.
    • LC_COLLATE특히 정렬 순서 A < a < B < ...가 발생하여 "A와 Z 사이"에 소문자 a부터 y까지 포함되기 때문에 불쾌한 부작용이 있을 수 있습니다. 특히 매우 일반적인 정규 표현식[A-Z]일부 응용 프로그램을 깨뜨리는 것과 같습니다..
  • LC_MESSAGES: 정보 및 오류 메시지의 언어입니다.
  • LC_NUMERIC: 숫자 형식: 소수점 및 천 단위 구분 기호.
    많은 응용 프로그램에는 .소수 구분 기호가 하드 코딩되어 있습니다. 이로 인해 LC_NUMERIC그다지 유용하지도 않고 잠재적으로 위험할 수도 있습니다.
    • 설정하더라도 여전히 기본 형식이 표시되는 경우가 많습니다.
    • .한 애플리케이션에서는 로케일 종속 출력을 생성하는 반면 다른 애플리케이션에서는 소수점 또는 ,필드 구분 기호 출력을 기대하는 상황이 발생할 수 있습니다 .
  • LC_MONETARY: 유사 LC_NUMERIC하지만 현지 통화 금액에 해당됩니다.
    이를 사용하는 응용 프로그램은 거의 없습니다.
  • LC_TIME:날짜 및 시간 형식: 요일 및 월 이름, 12시간제 또는 24시간제, 날짜 부분 순서, 구두점 등

추가 로케일 범주를 정의하는 비임베디드 Linux에서 GNU libc를 찾을 수 있습니다.

  • LC_PAPER:기본 용지 크기(높이와 너비로 정의됨).
  • LC_NAME, LC_ADDRESS, LC_TELEPHONE, LC_MEASUREMENT, LC_IDENTIFICATION: 이것을 사용하는 애플리케이션이 있는지 모르겠습니다.

환경 변수

로케일을 사용하는 애플리케이션은 환경 변수를 기반으로 로케일을 결정합니다.

  • LANG그러면 다른 설정으로 재정의되지 않는 한 환경 변수 값이 사용됩니다. 설정하지 않은 경우 LANG기본 로케일은 입니다 C.
  • LC_xxx이름은 환경 변수로 사용될 수 있습니다.
  • 설정 하면 LC_ALL다른 모든 값은 무시됩니다. 이는 LC_ALL=C실행 위치에 관계없이 동일한 출력을 생성해야 하는 응용 프로그램을 설정하는 데 주로 유용합니다.
  • 또한 GNU libc사용LANGUAGE대체를 정의합니다 LC_MESSAGES. 예를 들어 LANGUAGE=fr_BE:fr_FR:en벨기에 프랑스어가 선호되고, 사용할 수 없는 경우 프랑스어 프랑스어, 사용할 수 없는 경우 영어가 선호됩니다.

로케일 설치

로캘 데이터는 용량이 클 수 있으므로 일부 배포판에서는 이를 사용 가능한 형식으로 제공하지 않지만 추가 설치 단계가 필요합니다.

  • Debian에서 로캘을 설치하려면 dpkg-reconfigure locales대화 상자의 목록에서 실행하고 선택하거나 편집하세요./etc/locale.gen그런 다음 실행locale-gen.
  • Ubuntu에서 로캘을 설치하려면 다음을 실행하세요.locale-gen로케일 이름을 인수로 사용합니다.

당신은 할 수자신만의 로케일을 정의하세요..

추천하다

유용한 설정은 다음과 같습니다.

  • LC_CTYPE텍스트 파일을 인코딩할 언어와 인코딩을 설정합니다 . 터미널에서 이 인코딩을 사용하는지 확인하세요.
    대부분의 언어에서는 인코딩만 중요합니다. 몇 가지 예외가 있습니다. 예를 들어 i터키어( )를 제외한 대부분의 언어에서는 대문자가 사용됩니다.Iİtr_TR
  • LC_MESSAGES메시지를 볼 언어를 설정하세요 .
  • 기본 용지 크기로 사용하려면 US Letter로 설정하고, LC_PAPERA4로 사용하려면 다른 크기(예:)로 설정하세요.en_USen_GB
  • (선택 사항) LC_TIME원하는 시간 형식으로 설정합니다.

위에서 언급했듯이 LC_COLLATELC_NUMERIC. 를 사용하는 경우 LANG두 범주를 모두 로 설정하여 명시적으로 재정의합니다 C.

관련 정보