23.1. 토토 캔 지원#

토토 캔지원은 알파벳, 분류, 숫자 형식 등에 관한 문화적 선호도에 관한 응용 프로그램을 말합니다.PostgreSQL표준 ISO C 및 사용posix서버 운영 체제가 제공하는 토토 캔 시설. 추가 정보는 시스템 문서를 참조하십시오.

23.1.1. 개요#

데이터베이스 클러스터가 생성 될 때 토토 캔 지원이 자동으로 초기화됩니다initdb. initdb기본적으로 실행 환경의 토토 캔 설정으로 데이터베이스 클러스터를 초기화하므로 시스템이 이미 데이터베이스 클러스터에서 원하는 토토 캔을 사용하도록 설정된 경우 다른 일이 필요하지 않습니다. 다른 토토 캔을 사용하려면 (또는 시스템이 설정되었는지 확실하지 않으면 지시 할 수 있습니다initdb정확히 어떤 토토 캔을 지정하여 사용할 토토 캔-토토 캔옵션. 예를 들어:

initdb -locale = sv_se

UNIX 시스템 의이 예제는 토토 캔을 스웨덴어로 설정합니다 (SV) 스웨덴에서 사용 된대로 (SE). 다른 가능성은 다음과 같습니다.en_us(U.S. E토토 캔lish) 및FR_CA(프랑스 캐나다). 토토 캔에 둘 이상의 문자 세트를 사용할 수 있다면 사양이 양식을 취할 수 있습니다La토토 캔uage_Territory.codeset. 예를 들어,fr_be.utf-8벨기에에서 사용 된 프랑스어 (FR)를 대표합니다 (BE)UTF-8캐릭터 세트 인코딩.

운영 체제 공급 업체가 제공 한 내용 및 설치 한 내용에 따라 이름으로 시스템에서 사용할 수있는 토토 캔. 대부분의 UNIX 시스템에서 명령토토 캔 -A사용 가능한 토토 캔 목록을 제공합니다. Windows는와 같은 더 많은 장황한 토토 캔 이름을 사용합니다.german_germany또는Swedish_sweden.1252그러나 원칙은 동일합니다.

때로는 여러 지역의 규칙을 혼합하는 것이 유용합니다. 예를 들어 영어 통합 규칙이지만 스페인 메시지를 사용합니다. 이를 뒷받침하기 위해 현지화 규칙의 특정 측면 만 제어하는 ​​일련의 토토 캔 하위 범주가 존재합니다.

LC_COLLATE 문자열 정렬 순서
LC_CTYPE 캐릭터 분류 (문자 란 무엇입니까? 상위 상위 동등한가?)
lc_messages 메시지 언어
lc_monetary 통화 형식
lc_numeric 숫자 형식
LC_TIME 날짜와 시간의 형식

카테고리 이름은의 이름으로 번역됩니다initdb특정 범주에 대한 토토 캔 선택을 무시할 수있는 옵션. 예를 들어, 토토 캔을 프랑스 캐나다인으로 설정하지만 통화 서식에 미국 규칙을 사용하려면 사용initdb-locale = fr_ca ---lc-monetary = en_us.

시스템이 토토 캔 지원이없는 것처럼 행동하기를 원한다면 특수 토토 캔 이름을 사용하십시오C또는 동등하게posix.

일부 토토 캔 범주에는 데이터베이스가 생성 될 때 값이 고정되어 있어야합니다. 다른 데이터베이스에 대해 다른 설정을 사용할 수 있지만 데이터베이스가 생성되면 해당 데이터베이스에 대해 더 이상 변경할 수 없습니다.LC_COLLATEandLC_CTYPE이 범주입니다. 인덱스의 정렬 순서에 영향을 미치므로 고정 된 상태로 유지해야합니다. 그렇지 않으면 텍스트 열의 인덱스가 손상 될 수 있습니다. (그러나 콜라이트를 사용 하여이 제한을 완화 할 수 있습니다.섹션 23.2.)이 범주의 기본값은에 결정됩니다.initdb가 실행되며 해당 값은 새 데이터베이스를 작성할 때 사용됩니다.데이터베이스 생성명령.

다른 토토 캔 범주는 토토 캔 범주와 동일한 이름을 가진 서버 구성 매개 변수를 설정하여 원하는 때마다 변경할 수 있습니다 (참조​​섹션 19.11.2자세한 내용). 선택한 값initdb실제로 구성 파일에만 기록되어 있습니다postgresql.conf서버가 시작될 때 기본값으로 사용합니다. 이 과제를 제거하면postgresql.conf그러면 서버는 실행 환경에서 설정을 상속합니다.

서버의 토토 캔 동작은 클라이언트의 환경이 아니라 서버가 보이는 환경 변수에 의해 결정됩니다. 따라서 서버를 시작하기 전에 올바른 토토 캔 설정을 구성하도록주의하십시오. 그 결과 클라이언트와 서버가 다른 로컬로 설정되면 메시지가 출발 한 위치에 따라 다른 언어로 표시 될 수 있습니다.

Note

우리가 실행 환경에서 토토 캔을 물려받는 것에 대해 말할 때, 이것은 대부분의 운영 체제에서 다음을 의미합니다. 이는 주어진 토토 캔 카테고리의 경우, 다음 환경 변수가 설정 될 때 까지이 순서로 문의합니다.LC_ALL, LC_COLLATE(또는 각 범주에 해당하는 변수),La토토 캔. 이러한 환경 변수 중 어느 것도 설정되지 않으면 토토 캔 기본값은C.

일부 메시지 현지화 라이브러리도 환경 변수를 봅니다언어메시지 언어를 설정하기 위해 다른 모든 토토 캔 설정을 무시합니다. 의심스러운 경우, 운영 체제의 문서, 특히에 대한 문서를 참조하십시오.getText.

메시지를 사용자의 선호 언어로 번역 할 수 있도록NLS빌드 시간에 선택되어 있어야합니다 (구성 -enable-nls). 다른 모든 토토 캔 지원은 자동으로 내장되어 있습니다.

23.1.2. 행동#

토토 캔 설정은 다음 SQL 기능에 영향을 미칩니다.

  • Queries를 사용하여 순서를 정렬합니다주문 by또는 텍스트 데이터의 표준 비교 연산자

  • the어퍼, LowerInitcap기능

  • 패턴 매칭 연산자 (좋아요, 유사및 Posix 스타일 정규식); 토토 캔은 사례 무감각 일치와 캐릭터 클래스 정규 표현에 의한 문자 분류에 영향을 미칩니다

  • theto_char기능 가족

  • LikeClauses

| 이외의 지역을 사용하는 단점C또는posixinPostgreSQL성능 영향입니다. 그것은 문자 취급 속도를 늦추고 일반 인덱스가 사용되는 것을 방지합니다Like. 이런 이유로 실제로 필요한 경우에만 토토 캔을 사용하십시오.

허용 해결 방법PostgreSQLLike비 C 토토 캔의 조항에는 여러 맞춤형 운영자 클래스가 있습니다. 이를 통해 토토 캔 비교 규칙을 무시하고 엄격한 문자 별 비교를 수행하는 색인을 생성 할 수 있습니다. 참조PostgreSQL : 문서 : 17 : 11.10. 토토 결과 수업 및 토토 결과 가족자세한 내용은. 또 다른 방법은를 사용하여 인덱스를 만드는 것입니다.CCollation에서 논의 된대로PostgreSQL : 문서 : 17 : 23.2. 메이저 토토 캔 사이트 Support.

23.1.3. 지역 선택#

토토 캔은 요구 사항에 따라 다른 범위로 선택할 수 있습니다. 위의 개요는 토토 캔이를 사용하여 어떻게 지정되는지 보여주었습니다.initdb전체 클러스터의 기본값을 설정합니다. 다음 목록은 토토 캔을 선택할 수있는 위치를 보여줍니다. 각 항목은 후속 항목의 기본값을 제공하고 각 하위 항목은 더 미세한 세분화에서 기본값을 재정의 할 수 있습니다.

  1. 위에서 설명한 바와 같이, 운영 체제의 환경은 새로 초기화 된 데이터베이스 클러스터의 로컬에 대한 기본값을 제공합니다. 많은 경우에, 이것은 충분하다 : 운영 체제가 원하는 언어/영토에 대해 구성된 경우, 기본적으로PostgreSQL그 지역에 따라 행동 할 것입니다.

  2. 위에 표시된대로, 명령 줄 옵션initdb새로 초기화 된 데이터베이스 클러스터의 토토 캔 설정을 지정합니다. 운영 체제에 데이터베이스 시스템에 원하는 토토 캔 구성이없는 경우 사용하십시오.

  3. 각 데이터베이스에 대해 토토 캔을 별도로 선택할 수 있습니다. SQL 명령데이터베이스 생성및 그 명령 줄 동등한createb이를위한 옵션이 있습니다. 예를 들어 데이터베이스 클러스터가 요구 사항이 다른 여러 임차인에 대한 데이터베이스가있는 경우

  4. 개별 테이블 열에 대해 토토 캔 설정을 만들 수 있습니다. 이것은라는 SQL 객체를 사용합니다.Collation그리고에 설명되어 있습니다.PostgreSQL : 문서 : 17 : 23.2. 메이저 토토 캔 사이트 Support. 예를 들어이 방법을 사용하여 데이터를 다른 언어로 정렬하거나 특정 테이블의 정렬 순서를 사용자 정의합니다..

  5. 마지막으로, 개별 쿼리에 대해 로컬을 선택할 수 있습니다. 다시, 이것은 SQL Collation 객체를 사용합니다. 이것은 런타임 선택 또는 임시 실험에 따라 정렬 순서를 변경하는 데 사용될 수 있습니다.

23.1.4. 토토 캔 제공자#

토토 캔 제공 업체는 어떤 라이브러리가 콜라주 및 캐릭터 분류에 대한 토토 캔 동작을 정의하는지 지정합니다.

위에서 설명한대로 토토 캔 설정을 선택하는 명령 및 도구에는 각각 토토 캔 제공 업체를 선택할 수있는 옵션이 있습니다. 다음은 ICU 제공 업체를 사용하여 데이터베이스 클러스터를 초기화하는 예입니다.

initdb-locale-provider = ICU --Icu-locale = en

자세한 내용은 해당 명령 및 프로그램에 대한 설명을 참조하십시오. 토토 캔 제공 업체가 다른 세분화에서 혼합 할 수 있습니다 (예 : 사용).LIBC클러스터의 경우 기본적으로를 사용하는 데이터베이스가 하나 있습니다.ICU공급자, 그리고 해당 데이터베이스 내에 공급자를 사용하여 콜레이션 객체가 있습니다.

토토 캔 제공 업체에 관계없이 운영 체제는 여전히 메시지와 같은 일부 토토 캔 인식 행동을 제공하는 데 사용됩니다 (참조lc_messages).

사용 가능한 토토 캔 제공 업체는 다음과 같습니다.

내장

the내장제공자는 내장 작업을 사용합니다. 만CandC.UTF-8이 공급자를 위해 토토 캔이 지원됩니다.

theC토토 캔 동작은와 동일합니다CLIBC 제공 업체의 토토 캔. 이 토토 캔을 사용할 때 동작은 데이터베이스 인코딩에 따라 다를 수 있습니다.

theC.UTF-8토토 캔은 데이터베이스 인코딩이있는 경우에만 사용할 수 있습니다UTF-8및 동작은 유니 코드를 기반으로합니다. Collation은 코드 포인트 값 만 사용합니다. 정규 표현식 문자 클래스는 "POSIX 호환"의미를 기반으로하며 케이스 매핑은 "간단한"변형입니다.

ICU

theICU공급자는 외부 ICU를 사용합니다도서관.PostgreSQL지원으로 구성되어 있어야합니다.

ICU는 운영 체제 및 데이터베이스 인코딩과 무관 한 콜라이트 및 문자 분류 동작을 제공합니다. 결과의 변화없이 다른 플랫폼으로 전환 할 것으로 예상되는 경우LC_COLLATELC_CTYPEICU 토토 캔과 독립적으로 설정할 수 있습니다.

Note

ICU 제공 업체의 경우 시간이 지남에 따라 자연 언어의 변화를 반영하도록 업데이트되므로 사용 된 ICU 라이브러리 버전에 결과가 달라질 수 있습니다.

LIBC

theLIBC공급자는 운영 체제의 C 라이브러리를 사용합니다. Collation 및 캐릭터 분류 동작은 설정에 의해 제어됩니다LC_COLLATEandLC_CTYPE, 독립적으로 설정할 수 없습니다.

Note

LIBC 제공 업체를 사용할 때 동일한 토토 캔 이름이 다른 플랫폼마다 다른 동작을 가질 수 있습니다.

23.1.5. ICU 지역#

23.1.5.1. ICU 토토 캔 이름#

토토 캔 이름의 ICU 형식은 A입니다.언어 태그.

CLEATE COLLATION MYCOLLATION1 (제공자 = ICU, LOCALE = 'JA-JP');
collation mycollation2 만들기 (제공자 = ICU, locale = 'fr');

23.1.5.2. 토토 캔 정제 및 검증#

ICU가있는 새 ICU Collation Object 또는 데이터베이스를 제공자로 정의 할 때 주어진 토토 캔 이름은 해당 양식이 아닌 경우 언어 태그로 변환됩니다 ( "Canonicalized"). 예를 들어,

CLEATE COLLATION MYCOLLATION3 (제공자 = ICU, locale = 'en-us-u-kn-true');
통지 : "en-us-u-kn-true"에 대한 표준 형식 "en-us-u-kn"사용
Collation MyCollation4를 작성합니다. (제공자 = ICU, locale = 'de_de.utf8');
통지 : 토토 캔 "de_de.utf8"에 표준 양식 "de-de"를 사용합니다.

이 통지가 표시되면을 확인하십시오.공급자and토토 캔예상 결과입니다. ICU 제공 업체를 사용할 때 일관된 결과를 얻으려면 표준을 지정하십시오언어 태그변환에 의존하는 대신

언어 이름이없는 토토 캔 또는 특별 언어 이름루트, 언어를 갖도록 변환und( "정의되지 않은").

ICU는 대부분의 LIBC 토토 캔 이름과 다른 형식을 언어 태그로 변환하여 ICU 로의 쉽게 전환 할 수 있습니다. LIBC 토토 캔 이름이 ICU에서 사용되는 경우 LIBC에서와 정확히 동일한 동작을 가질 수 있습니다.

토토 캔 이름을 해석하는 데 문제가 있거나 토토 캔 이름이 ICU가 인식하지 못하는 언어 또는 지역을 나타내는 경우 다음 경고가 표시됩니다.

COLLE COLLATION NISNESSENSE (제공자 = ICU, locale = 'Nonsense');
경고 : ICU 토토 캔 "말도 안되는"언어가 "말도 안되는"언어가 있습니다.
힌트 : ICU 토토 캔 유효성 검사를 비활성화하려면 매개 변수 ICU_VALIDATION_LEVEL을 비활성화로 설정하십시오.
Collation 만들기

icu_validation_level메시지보고 방법을 제어합니다. 설정하지 않는 한오류, Collation은 여전히 ​​생성되지만 동작은 사용자가 의도 한 것이 아닐 수도 있습니다.

23.1.5.3. 언어 태그#

BCP 47에 정의 된 언어 태그는 토토 캔에 대한 언어, 지역 및 기타 정보를 식별하는 데 사용되는 표준화 된 식별자입니다..

기본 언어 태그는 간단합니다언어-지역; 또는 그냥언어. 그만큼언어언어 코드입니다 (예 :FR프랑스어) 및지역는 지역 코드입니다 (예 :CA캐나다의 경우). 예 :JA-JP, de또는FR-CA.

Collation Settings는 Collation 동작을 사용자 정의하기 위해 언어 태그에 포함될 수 있습니다. ICU는 강조, 케이스 및 구두점에 민감성 (또는 무감각)과 같은 광범위한 사용자 정의를 허용합니다. 텍스트 내에서 숫자 처리; 그리고 다양한 용도를 충족시키기위한 많은 다른 옵션.

이 추가적인 협업 정보를 언어 태그에 포함 시키려면-u, 추가 Collation 설정이 있음을 나타내는 다음 하나 이상의--value쌍. 그만큼A의 핵심입니다Collation Settingandvalue는 해당 설정에 유효한 값입니다. 부울 설정의 경우-해당하지 않고 지정 될 수 있습니다-value.true.

예를 들어 언어 태그en-us-u-kn-ks-level2미국 지역의 영어가있는 토토 캔을 의미하며, 콜라이트 설정KN설정trueandKS설정level2. 이러한 설정은 Collation이 대소 문자를 사용하지 않으며 일련의 숫자를 단일 숫자로 취급한다는 것을 의미합니다.

CLEATE COLLATION MYCOLLATION5 (제공자 = ICU, 결정 론적 = 거짓, locale = 'en-us-u-kn-ks-level2');
'ab'= 'ab'를 선택하여 mycollation5를 결과적으로 선택하십시오.
 결과
--------
 티
(1 줄)

'N-45'< 'N-123'을 선택하여 결과적으로 myCollation5를 collate;
 결과
--------
 티
(1 행)

참조섹션 23.2.3토토 캔에 대한 사용자 정의 콜레이션 정보와 함께 언어 태그 사용의 세부 사항 및 추가 예.

23.1.6. 문제#

위의 설명에 따라 토토 캔 지원이 작동하지 않으면 운영 체제의 토토 캔 지원이 올바르게 구성되어 있는지 확인하십시오. 시스템에 어떤 지역이 설치되어 있는지 확인하려면 명령을 사용할 수 있습니다토토 캔 -A운영 체제가 제공하는 경우.

확인PostgreSQL실제로 당신이 생각하는 토토 캔을 사용하고 있습니다. 그만큼LC_COLLATELC_CTYPE설정은 데이터베이스가 생성 될 때 결정되며 새 데이터베이스를 작성하는 경우를 제외하고는 변경할 수 없습니다. 를 포함한 기타 토토 캔 설정lc_messages​​lc_monetary초기에 서버가 시작된 환경에 의해 결정되었지만 비행 중에 변경 될 수 있습니다. 를 사용하여 활성 토토 캔 설정을 확인할 수 있습니다.명령.

디렉토리src/test/locale소스 배포에는 테스트 스위트가 포함되어 있습니다.PostgreSQL'S Locale Support.

오류 메시지의 텍스트를 구문 분석하여 서버 측 오류를 처리하는 클라이언트 응용 프로그램은 서버의 메시지가 다른 언어에있을 때 분명히 문제가 있습니다. 이러한 응용 프로그램의 저자는 오류 코드 체계를 대신 사용하는 것이 좋습니다.

메시지 번역 카탈로그 유지에는보고 싶은 많은 자원 봉사자들의 지속적인 노력이 필요합니다PostgreSQL선호하는 언어를 잘 말하십시오. 언어로 된 메시지가 현재 사용할 수 없거나 완전히 번역되지 않은 경우 도움을 주시면 감사하겠습니다. 도와주고 싶다면 참조사설 토토 캔 사이트 : 문서 : 17 : 55 장 모국어 지원또는 개발자의 메일 링리스트에 쓰기.

정정 제출

문서에 맞지 않는 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면