토토 캔지원은 알파벳, 정렬, 숫자 형식 등에 관한 문화적 선호도에 관한 응용 프로그램을 말합니다.postgresql표준 ISO C 및 사용posix서버 운영 체제가 제공하는 토토 캔 시설. 추가 정보는 시스템 문서를 참조하십시오.
데이터베이스 클러스터를 사용하여 생성 될 때 토토 캔 지원이 자동으로 초기화됩니다initdb
. initdb
기본적으로 실행 환경의 토토 캔 설정으로 데이터베이스 클러스터를 초기화하므로 시스템이 이미 데이터베이스 클러스터에서 원하는 토토 캔을 사용하도록 설정된 경우 다른 일이 필요하지 않습니다. 다른 토토 캔을 사용하려면 (또는 시스템이 설정되었는지 확실하지 않으면 지시 할 수 있습니다initdb
정확히 어떤 토토 캔을 지정하여 사용할 토토 캔-토토 캔
옵션. 예를 들어:
initdb -locale = sv_se
UNIX 시스템 의이 예제는 토토 캔을 스웨덴어로 설정합니다 (SV
11567_11592SE
). 다른 가능성은 다음과 같습니다.en_us
(U.S. E토토 캔lish) 및FR_CA
(프랑스 캐나다). 토토 캔에 둘 이상의 문자 세트를 사용할 수 있다면 사양이 양식을 취할 수 있습니다La토토 캔uage_Territory.codeset
. 예를 들어,fr_be.utf-8
벨기에에서 사용 된 프랑스어 (FR)를 대표합니다.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_COLLATE
andLC_CTYPE
이 범주입니다. 인덱스의 정렬 순서에 영향을 미치므로 고정 된 상태로 유지해야합니다. 그렇지 않으면 텍스트 열의 인덱스가 손상 될 수 있습니다. (그러나 콜라이트를 사용 하여이 제한을 완화 할 수 있습니다.섹션 23.2.)이 범주의 기본값은 결정됩니다.initdb
가 실행되며 해당 값은 새 데이터베이스를 작성할 때 사용됩니다.데이터베이스 생성
명령.
다른 토토 캔 범주는 토토 캔 범주와 동일한 이름을 가진 서버 구성 매개 변수를 설정하여 원하는 때마다 변경할 수 있습니다 (참조섹션 19.11.2자세한 내용). 선택한 값initdb
실제로 구성 파일에만 기록되어 있습니다postgresql.conf
서버가 시작될 때 기본값으로 사용합니다. 이 과제를 제거하면postgresql.conf
그러면 서버는 실행 환경에서 설정을 상속합니다.
서버의 토토 캔 동작은 클라이언트의 환경이 아니라 서버가 보이는 환경 변수에 의해 결정됩니다. 따라서 서버를 시작하기 전에 올바른 토토 캔 설정을 구성하도록주의하십시오. 그 결과 클라이언트와 서버가 다른 로컬로 설정되면 메시지가 출발 한 위치에 따라 다른 언어로 표시 될 수 있습니다.
우리가 실행 환경에서 토토 캔을 물려받는 것에 대해 말할 때, 이것은 대부분의 운영 체제에서 다음을 의미합니다. 주어진 토토 캔 카테고리의 경우, 다음 환경 변수가 설정 될 때까지 다음 환경 변수를 참조하십시오.LC_ALL
, LC_COLLATE
(또는 각 범주에 해당하는 변수),La토토 캔
. 이러한 환경 변수 중 어느 것도 설정되지 않으면 토토 캔 기본값은C
.
일부 메시지 현지화 라이브러리도 환경 변수를 봅니다언어
메시지 언어를 설정하기 위해 다른 모든 토토 캔 설정을 무시합니다. 의심스러운 경우, 운영 체제의 문서, 특히에 대한 문서를 참조하십시오.getText.
메시지를 사용자의 선호 언어로 번역 할 수 있도록NLS빌드 시간에 선택되어 있어야합니다 (구성 --enable-nls
). 다른 모든 토토 캔 지원은 자동으로 내장되어 있습니다.
토토 캔 설정은 다음 SQL 기능에 영향을 미칩니다.
| 이외의 지역을 사용하는 단점C
또는posix
inPostgreSQL성능 영향입니다. 그것은 문자 취급 속도를 늦추고 일반 인덱스가 사용되는 것을 방지합니다Like
. 이런 이유로 실제로 필요한 경우에만 토토 캔을 사용하십시오.
허용 해결 방법으로PostgreSQLLike
C 조항이 아닌 토토 캔에 따라 여러 맞춤형 운영자 클래스가 있습니다. 이를 통해 토토 캔 비교 규칙을 무시하고 엄격한 문자 별 비교를 수행하는 색인을 생성 할 수 있습니다. 참조PostgreSQL : 문서 : 17 : 11.10. 토토 결과 수업 및 토토 결과 가족자세한 내용은. 또 다른 방법은를 사용하여 인덱스를 만드는 것입니다.C
Collation,에서 논의 된대로PostgreSQL : 문서 : 17 : 23.2. 메이저 토토 사이트 Support.
요구 사항에 따라 다른 스코프로 토토 캔을 선택할 수 있습니다. 위의 개요는 토토 캔이를 사용하여 어떻게 지정되는지 보여주었습니다.initdb
전체 클러스터의 기본값을 설정합니다. 다음 목록은 토토 캔을 선택할 수있는 위치를 보여줍니다. 각 항목은 후속 항목의 기본값을 제공하고 각 하위 항목은 더 미세한 세분화에서 기본값을 재정의 할 수 있습니다.
위에서 설명한 바와 같이, 운영 체제의 환경은 새로 초기화 된 데이터베이스 클러스터의 로컬에 대한 기본값을 제공합니다. 많은 경우에, 이것은 충분하다 : 운영 체제가 원하는 언어/영토에 대해 구성된 경우, 기본적으로PostgreSQL해당 토토 캔에 따라 행동 할 것입니다.
위에 표시된대로, 명령 줄 옵션initdb
새로 초기화 된 데이터베이스 클러스터의 토토 캔 설정을 지정합니다. 운영 체제에 데이터베이스 시스템에 원하는 토토 캔 구성이없는 경우 사용하십시오.
각 데이터베이스에 대해 토토 캔을 별도로 선택할 수 있습니다. SQL 명령데이터베이스 생성
및 그 명령 줄에 동등한createb
이를위한 옵션이 있습니다. 예를 들어 데이터베이스 클러스터가 요구 사항이 다른 여러 임차인에 대한 데이터베이스가있는 경우
개별 테이블 열에 대해 토토 캔 설정을 만들 수 있습니다. 이것은라는 SQL 객체를 사용합니다.Collation그리고에 설명되어 있습니다.PostgreSQL : 문서 : 17 : 23.2. 메이저 토토 사이트 Support. 예를 들어이 방법을 사용하여 데이터를 다른 언어로 정렬하거나 특정 테이블의 정렬 순서를 사용자 정의합니다..
마지막으로, 개별 쿼리에 대해 로컬을 선택할 수 있습니다. 다시, 이것은 SQL Collation 객체를 사용합니다. 이것은 런타임 선택 또는 임시 실험에 따라 정렬 순서를 변경하는 데 사용될 수 있습니다.
토토 캔 제공 업체는 어떤 라이브러리가 콜라주 및 캐릭터 분류의 토토 캔 동작을 정의하는지 지정합니다.
위에서 설명한대로 토토 캔 설정을 선택하는 명령 및 도구에는 각각 토토 캔 제공 업체를 선택할 수있는 옵션이 있습니다. 다음은 ICU 제공 업체를 사용하여 데이터베이스 클러스터를 초기화하는 예입니다.
initdb-locale-provider = ICU --ICU-locale = en
자세한 내용은 해당 명령 및 프로그램에 대한 설명을 참조하십시오. 토토 캔 제공 업체가 다른 세분화에서 혼합 할 수 있습니다 (예 : 사용).LIBC
클러스터의 경우 기본적으로를 사용하는 데이터베이스가 하나 있습니다.ICU
공급자, 그리고 해당 데이터베이스 내에 공급자를 사용하여 콜레이션 객체가 있습니다.
토토 캔 제공 업체에 관계없이 운영 체제는 여전히 메시지와 같은 일부 토토 캔 인식 행동을 제공하는 데 사용됩니다 (참조lc_messages).
사용 가능한 토토 캔 제공 업체는 다음과 같습니다.
내장
the내장
제공자는 내장 작업을 사용합니다. 만C
andC.UTF-8
이 공급자를 위해 토토 캔이 지원됩니다.
theC
토토 캔 행동은와 동일합니다C
LIBC 제공 업체의 토토 캔. 이 토토 캔을 사용할 때 동작은 데이터베이스 인코딩에 따라 다를 수 있습니다.
theC.UTF-8
토토 캔은 데이터베이스 인코딩이있는 경우에만 사용할 수 있습니다UTF-8
, 동작은 유니 코드를 기반으로합니다. Collation은 코드 포인트 값 만 사용합니다. 정규 표현식 문자 클래스는 "POSIX 호환"의미를 기반으로하며 케이스 매핑은 "간단한"변형입니다.
ICU
theICU
제공자는 외부 ICU를 사용합니다도서관.PostgreSQL지원으로 구성되어 있어야합니다.
ICU는 운영 체제 및 데이터베이스 인코딩과 무관 한 콜라이트 및 문자 분류 동작을 제공합니다. 결과의 변화없이 다른 플랫폼으로 전환 할 것으로 예상되는 경우lc_collate
andLC_CTYPE
ICU 토토 캔과 독립적으로 설정할 수 있습니다.
ICU 제공 업체의 경우 시간이 지남에 따라 자연 언어의 변화를 반영하도록 업데이트되므로 사용 된 ICU 라이브러리 버전에 결과가 달라질 수 있습니다.
libc
theLIBC
공급자는 운영 체제의 C 라이브러리를 사용합니다. Collation 및 캐릭터 분류 동작은 설정에 의해 제어됩니다LC_COLLATE
andLC_CTYPE
, 독립적으로 설정할 수 없습니다.
LIBC 제공 업체를 사용할 때 동일한 토토 캔 이름이 다른 플랫폼마다 다른 동작을 가질 수 있습니다.
토토 캔 이름의 ICU 형식은 A입니다.언어 태그.
CLEATE COLLATION MYCOLLATION1 (제공자 = ICU, LOCALE = 'JA-JP'); collation mycollation2 만들기 (제공자 = ICU, locale = 'fr');
공급자로 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가 인식하지 못하는 언어 또는 영역을 나타내는 경우 다음 경고가 표시됩니다.
COLLATION NISNESSENSE (제공자 = ICU, locale = 'Nonsense'); 경고 : ICU 토토 캔 "말도 안되는"언어가 "말도 안되는"언어가 있습니다. 힌트 : ICU 토토 캔 유효성 검사를 비활성화하려면 매개 변수 ICU_VALIDATION_LEVEL을 비활성화로 설정하십시오. Collation 만들기
icu_validation_level메시지보고 방법을 제어합니다. 설정하지 않는 한오류
, Collation은 여전히 생성되지만 동작은 사용자가 의도 한 것이 아닐 수도 있습니다.
BCP 47에 정의 된 언어 태그는 토토 캔에 대한 언어, 지역 및 기타 정보를 식별하는 데 사용되는 표준화 된 식별자입니다..
기본 언어 태그는 간단합니다언어
-
지역
; 또는 그냥언어
. 그만큼언어
언어 코드입니다 (예 :fr
프랑스어) 및지역
는 지역 코드입니다 (예 :CA
캐나다의 경우). 예 :JA-JP
, de
또는FR-CA
.
Collation 설정은 언어 태그에 포함되어 Collation 동작을 사용자 정의 할 수 있습니다. ICU는 강조, 케이스 및 구두점에 민감성 (또는 무감각)과 같은 광범위한 사용자 정의를 허용합니다. 텍스트 내에서 숫자 처리; 그리고 다양한 용도를 충족시키기위한 많은 다른 옵션.
이 추가 협업 정보를 언어 태그에 포함 시키려면-u
, 추가 Collation 설정이 있음을 나타내는 다음 하나 이상의-
키
-
value
쌍. 그만큼키
Collation Setting및value
해당 설정에 유효한 값입니다. 부울 설정의 경우-
키
해당하지 않고 지정 될 수 있습니다-
value
, 이는 값을 암시합니다true
.
예를 들어 언어 태그en-us-u-kn-ks-level2
미국 지역의 영어가있는 토토 캔을 의미하며, 콜레이션 설정이 있습니다KN
설정true
andKS
설정level2
. 이러한 설정은 Collation이 대소 문자를 사용하지 않으며 일련의 숫자를 단일 숫자로 취급한다는 것을 의미합니다.
CLEATION COLLATION MYCOLLATION5 (제공자 = ICU, Dectionistic = false, locale = 'en-us-u-kn-ks-level2'); 'ab'= 'ab'를 선택하여 mycollation5를 결과적으로 선택하십시오. 결과 -------- 티 (1 줄) 'N-45'< 'N-123'을 선택하여 결과적으로 myCollation5를 collate; 결과 -------- 티 (1 행)
참조섹션 23.2.3토토 캔에 대한 사용자 정의 콜레이션 정보와 함께 언어 태그 사용의 세부 사항 및 추가 예.
위의 설명에 따라 토토 캔 지원이 작동하지 않으면 운영 체제의 토토 캔 지원이 올바르게 구성되어 있는지 확인하십시오. 시스템에 어떤 지역이 설치되어 있는지 확인하려면 명령을 사용할 수 있습니다토토 캔 -A
운영 체제가 제공하는 경우.
확인PostgreSQL실제로 당신이 생각하는 토토 캔을 사용하고 있습니다. 그만큼LC_COLLATE
및LC_CTYPE
설정은 데이터베이스가 생성 될 때 결정되며 새 데이터베이스를 작성하는 것 외에는 변경할 수 없습니다. 를 포함한 기타 토토 캔 설정lc_messages
및lc_monetary
처음에는 서버가 시작된 환경에 의해 결정되었지만 비행 중에 변경 될 수 있습니다. 를 사용하여 활성 토토 캔 설정을 확인할 수 있습니다.쇼
명령.
디렉토리src/test/locale
소스 배포에는 테스트 스위트가 포함되어 있습니다PostgreSQL'S Locale 지원.
오류 메시지의 텍스트를 구문 분석하여 서버 측 오류를 처리하는 클라이언트 응용 프로그램은 서버의 메시지가 다른 언어에있을 때 분명히 문제가 있습니다. 이러한 응용 프로그램의 저자는 오류 코드 체계를 대신 사용하는 것이 좋습니다.
메시지 번역 카탈로그를 유지하려면보고 싶어하는 많은 자원 봉사자들의 지속적인 노력이 필요합니다PostgreSQL선호하는 언어를 잘 말하십시오. 언어로 된 메시지가 현재 사용할 수 없거나 완전히 번역되지 않은 경우 도움을 주시면 감사하겠습니다. 도와주고 싶다면 참조사설 토토 사이트 : 문서 : 17 : 55 장 모국어 지원또는 개발자의 메일 링리스트에 쓰기.
문서에 올바른 것이 없으면 일치하지 않습니다. 특정 기능에 대한 귀하의 경험 또는 추가 설명이 필요합니다. 사용이 양식문서 문제를보고하려면