24.1. 토토 지원#

토토지원은 알파벳, 정렬, 숫자 서식 등과 관련된 문화적 선호를 존중하는 애플리케이션을 의미합니다.토토표준 ISO C를 사용하며POSIX서버 운영 체제에서 제공하는 토토 기능입니다. 추가 정보는 시스템 설명서를 참조하세요.

24.1.1. 개요#

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

initdb --locale=sv_SE

Unix 시스템에 대한 이 예는 토토을 스웨덴어로 설정합니다(sv) 스웨덴에서 사용됨(SE). 다른 가능성은 다음과 같습니다.en_US(미국 영어) 및fr_CA(프랑스계 캐나다인). 하나의 로캘에 두 개 이상의 문자 집합을 사용할 수 있는 경우 사양은 다음 형식을 취할 수 있습니다.언어_territory.codeset. 예를 들어,fr_BE.utf-8벨기에(BE)에서 사용되는 프랑스어(fr)를 나타냅니다.utf-8문자 집합 인코딩.

시스템에서 어떤 이름으로 사용할 수 있는 토토은 운영 체제 공급업체에서 제공한 내용과 설치된 내용에 따라 다릅니다. 대부분의 Unix 시스템에서는 다음 명령을 사용합니다.토토 -a사용 가능한 토토 목록을 제공합니다. Windows는 다음과 같이 더 자세한 토토 이름을 사용합니다.독일어_독일또는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_COLLATE그리고LC_CTYPE이 카테고리입니다. 이는 인덱스의 정렬 순서에 영향을 미치므로 고정된 상태로 유지해야 합니다. 그렇지 않으면 텍스트 열의 인덱스가 손상됩니다. (그러나 에서 설명한 대로 데이터 정렬을 사용하면 이 제한을 완화할 수 있습니다.섹션 24.2.) 이러한 범주의 기본값은 다음 경우에 결정됩니다.initdb이 실행되며, 해당 값은 달리 지정하지 않는 한 새 데이터베이스가 생성될 때 사용됩니다.데이터베이스 생성명령.

다른 토토 카테고리는 토토 카테고리와 동일한 이름을 가진 서버 구성 매개변수를 설정하여 원할 때마다 변경할 수 있습니다(참조섹션 20.11.2자세한 내용). 에 의해 선택되는 값initdb실제로 구성 파일에만 기록됩니다.토토.conf서버가 시작될 때 기본값으로 사용됩니다. 다음에서 이러한 할당을 제거하는 경우토토.conf그러면 서버는 실행 환경에서 설정을 상속받습니다.

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

참고

실행 환경에서 토토 상속에 대해 말할 때 이는 대부분의 운영 체제에서 다음을 의미합니다. 주어진 토토 카테고리(예: 대조)에 대해 다음 환경 변수는 설정될 때까지 이 순서로 참조됩니다.LC_ALL, LC_COLLATE(또는 해당 카테고리에 해당하는 변수),. 이러한 환경 변수가 설정되지 않은 경우 토토의 기본값은C.

일부 메시지 현지화 라이브러리도 환경 변수를 확인합니다.언어메시지 언어 설정을 위해 다른 모든 토토 설정을 무시합니다. 확실하지 않은 경우 운영 체제 설명서, 특히 다음에 대한 설명서를 참조하십시오.gettext.

메시지가 사용자가 선호하는 언어로 번역되도록 하려면,NLS빌드 시 선택되어 있어야 합니다(구성 --enable-nls). 다른 모든 토토 지원은 자동으로 내장되어 있습니다.

24.1.2. 행동#

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

  • 다음을 사용하여 쿼리 정렬 순서주문 기준또는 텍스트 데이터의 표준 비교 연산자

  • 상부, 하위initcap함수

  • 패턴 일치 연산자(좋아요, 비슷함및 POSIX 스타일 정규 표현식); 토토은 대소문자를 구분하지 않는 일치와 문자 클래스 정규식에 의한 문자 분류에 모두 영향을 미칩니다.

  • to_char함수 계열

  • 색인을 사용하는 기능좋아요

이외의 토토 사용의 단점C또는POSIX토토성능에 영향을 미칩니다. 문자 처리 속도가 느려지고 일반 인덱스가 사용되는 것을 방지합니다.좋아요. 이러한 이유로 실제로 필요한 경우에만 토토을 사용하십시오.

허용하는 해결 방법으로포스트그레SQL색인을 사용하다좋아요19960_20170PostgreSQL : 문서 : 16 : 11.10. 토토 베이 수업 및 토토 베이 가족더 많은 정보를 원하시면. 또 다른 접근 방식은 다음을 사용하여 인덱스를 만드는 것입니다.C조합, 논의된 대로PostgreSQL : 문서 : 16 : 24.2. 토토 사이트 Support.

24.1.3. 토토 선택#

로캘은 요구 사항에 따라 다양한 범위에서 선택할 수 있습니다. 위의 개요에서는 다음을 사용하여 토토을 지정하는 방법을 보여주었습니다.initdb전체 클러스터에 대한 기본값을 설정합니다. 다음 목록은 로캘을 선택할 수 있는 위치를 보여줍니다. 각 항목은 후속 항목에 대한 기본값을 제공하며, 각 하위 항목을 사용하면 더 세밀하게 기본값을 재정의할 수 있습니다.

  1. 위에 설명된 바와 같이 운영 체제 환경은 새로 초기화된 데이터베이스 클러스터의 토토에 대한 기본값을 제공합니다. 대부분의 경우 이것으로 충분합니다. 운영 체제가 원하는 언어/지역에 맞게 구성된 경우포스트그레SQL기본적으로 해당 토토에 따라 동작합니다.

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

  3. 토토은 각 데이터베이스에 대해 별도로 선택할 수 있습니다. SQL 명령데이터베이스 생성및 이에 상응하는 명령줄생성된 DB에 대한 옵션이 있습니다. 예를 들어 데이터베이스 클러스터에 요구 사항이 서로 다른 여러 테넌트에 대한 데이터베이스가 있는 경우 이 방법을 사용하세요.

  4. 개별 테이블 열에 대해 로캘 설정을 지정할 수 있습니다. 이는라는 SQL 개체를 사용합니다.조합다음에 설명되어 있습니다.PostgreSQL : 문서 : 16 : 24.2. 토토 사이트 Support. 예를 들어 이를 사용하여 다양한 언어로 데이터를 정렬하거나 특정 테이블의 정렬 순서를 맞춤설정할 수 있습니다.

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

24.1.4. 토토 제공자#

토토여러 개 지원토토 제공자. 이는 토토 데이터를 제공하는 라이브러리를 지정합니다. 하나의 표준 공급자 이름은 다음과 같습니다.libc, 운영 체제 C 라이브러리에서 제공하는 토토을 사용합니다. 이는 운영 체제에서 제공하는 대부분의 도구에서 사용되는 로캘입니다. 다른 제공업체는 다음과 같습니다.icu, 외부 ICU를 사용함도서관. ICU 토토은 토토이 빌드될 때 ICU에 대한 지원이 구성된 경우에만 사용할 수 있습니다.

위에 설명된 대로 토토 설정을 선택하는 명령과 도구에는 각각 토토 공급자를 선택하는 옵션이 있습니다. 이전에 표시된 예에서는 모두libc공급자(기본값)입니다. 다음은 ICU 공급자를 사용하여 데이터베이스 클러스터를 초기화하는 예입니다.

initdb --locale-provider=icu --icu-locale=en

자세한 내용은 각 명령과 프로그램의 설명을 참조하세요. 예를 들어 다음과 같이 다양한 세부사항에서 로캘 공급자를 혼합할 수 있습니다.libc기본적으로 클러스터에 대한 것이지만 다음을 사용하는 하나의 데이터베이스가 있습니다.icu공급자, 그런 다음 해당 데이터베이스 내에서 공급자 중 하나를 사용하여 데이터 정렬 개체를 갖습니다.

사용할 토토 제공자는 개별 요구사항에 따라 다릅니다. 대부분의 기본 용도에서는 두 공급자 모두 적절한 결과를 제공합니다. libc 공급자의 경우 운영 체제가 제공하는 내용에 따라 다릅니다. 일부 운영 체제는 다른 운영 체제보다 낫습니다. 고급 사용을 위해 ICU는 더 많은 언어 변형 및 맞춤설정 옵션을 제공합니다.

24.1.5. ICU 토토#

24.1.5.1. ICU 토토 이름#

토토 이름의 ICU 형식은 다음과 같습니다.언어 태그.

CREATE COLLATION mycollation1 (제공자 = icu, 토토 = 'ja-JP');
COLLATION 생성 mycollation2(공급자 = icu, 토토 = 'fr');

24.1.5.2. 로캘 정규화 및 유효성 검사#

ICU를 공급자로 사용하여 새 ICU 데이터 정렬 개체 또는 데이터베이스를 정의할 때 해당 토토 이름이 아직 해당 형식이 아닌 경우 언어 태그로 변환("표준화")됩니다. 예를 들어,

CREATE COLLATION mycollation3 (공급자 = icu, 토토 = 'en-US-u-kn-true');
주의 사항: "en-US-u-kn-true" 토토에 대해 표준 형식 "en-US-u-kn" 사용
CREATE COLLATION mycollation4 (공급자 = icu, 토토 = 'de_DE.utf8');
주의사항: 토토 "de_DE.utf8"에 대해 표준 형식 "de-DE" 사용

이 알림이 표시되면 다음을 확인하세요.공급자그리고토토예상된 결과입니다. ICU 제공자를 사용할 때 일관된 결과를 얻으려면 표준을 지정하세요.언어 태그변환에 의존하는 대신.

언어 이름이 없는 토토 또는 특수 언어 이름루트, 다음 언어를 갖도록 변환됩니다.und("정의되지 않음").

ICU는 ICU로 더 쉽게 전환할 수 있도록 대부분의 libc 토토 이름과 기타 형식을 언어 태그로 변환할 수 있습니다. libc 토토 이름이 ICU에서 사용되는 경우 libc에서와 정확히 동일한 동작을 갖지 않을 수 있습니다.

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

CREATE COLLATION 넌센스(공급자 = icu, 토토 = '넌센스');
경고: ICU 토토 "nonsense"에는 알 수 없는 언어 "nonsense"가 있습니다.
힌트: ICU 로캘 유효성 검사를 비활성화하려면 icu_validation_level 매개변수를 DISABLED로 설정하세요.
콜레이션 생성

icu_validation_level메시지 보고 방법을 제어합니다. 로 설정되지 않은 경우오류, 대조는 계속 생성되지만 동작은 사용자가 의도한 것과 다를 수 있습니다.

24.1.5.3. 언어 태그#

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

기본 언어 태그는 간단합니다.언어-지역; 아니면 그냥언어.언어는 언어 코드입니다(예:fr프랑스어의 경우) 및지역은 지역 코드입니다(예:CA캐나다). 예:ja-JP, , 또는fr-CA.

조합 설정은 언어 태그에 포함되어 조합 동작을 사용자 정의할 수 있습니다. ICU는 악센트, 대소문자 및 구두점에 대한 민감도(또는 둔감도)와 같은 광범위한 사용자 정의를 허용합니다. 텍스트 내의 숫자 처리; 다양한 용도를 만족시키는 기타 다양한 옵션이 있습니다.

이 추가 조합 정보를 언어 태그에 포함하려면 추가하세요-u, 이는 추가 대조 설정이 있고 그 뒤에 하나 이상이 있음을 나타냅니다.--쌍.a의 열쇠입니다콜레이션 설정그리고은 해당 설정에 유효한 값입니다. 부울 설정의 경우,-해당 항목 없이 지정할 수 있습니다.-, 이는 값을 의미합니다.사실.

예: 언어 태그en-US-u-kn-ks-level2데이터 정렬 설정이 있는 미국 지역의 영어 토토을 의미kn다음으로 설정됨그리고ks다음으로 설정됨레벨2. 이러한 설정은 대조가 대소문자를 구분하지 않고 일련의 숫자를 단일 숫자로 처리함을 의미합니다.

CREATE COLLATION mycollation5(공급자 = icu, 결정적 = false, 토토 = 'en-US-u-kn-ks-level2');
SELECT 'aB' = 'Ab' COLLATE mycollation5를 결과로;
 결과
--------
 티
(1줄)

결과로 SELECT 'N-45' < 'N-123' COLLATE mycollation5;
 결과
--------
 티
(1행)

참조섹션 24.2.3토토에 대한 사용자 정의 조합 정보와 함께 언어 태그를 사용하는 자세한 내용 및 추가 예를 확인하세요.

24.1.6. 문제#

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

확인해 보세요포스트그레SQL실제로는 귀하가 생각하는 토토을 사용하고 있습니다.LC_COLLATE그리고LC_CTYPE설정은 데이터베이스가 생성될 때 결정되며 새 데이터베이스를 생성하는 경우를 제외하고는 변경할 수 없습니다. 다음을 포함한 기타 토토 설정LC_MESSAGES그리고LC_MONETARY처음에는 서버가 시작된 환경에 따라 결정되지만 즉시 변경될 수 있습니다. 다음을 사용하여 활성 토토 설정을 확인할 수 있습니다.표시명령.

디렉토리src/테스트/토토소스 배포판에는 다음에 대한 테스트 스위트가 포함되어 있습니다.토토의 로캘 지원.

오류 메시지 텍스트를 분석하여 서버측 오류를 처리하는 클라이언트 응용 프로그램은 서버의 메시지가 다른 언어로 되어 있는 경우 분명히 문제가 있습니다. 이러한 애플리케이션의 작성자는 대신 오류 코드 구성표를 사용하는 것이 좋습니다.

메시지 번역 카탈로그를 유지하려면 번역을 보고 싶어하는 많은 자원봉사자들의 지속적인 노력이 필요합니다.토토그들이 선호하는 언어를 잘 구사합니다. 귀하의 언어로 된 메시지가 현재 제공되지 않거나 완전히 번역되지 않은 경우 귀하의 도움을 주시면 감사하겠습니다. 도움을 주고 싶으시다면 다음을 참조하세요.스포츠 토토 : 문서 : 16 : 57 장. 모국어 지원또는 개발자 메일링 리스트에 글을 쓰세요.

수정사항 제출

문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.