포스트그레스지원 세 가지 접근 방식을 사용한 현지화:
운영 체제의 로캘 기능을 사용하여 다음 작업을 수행합니다. 로케일별 조합 순서, 숫자 형식 지정, 그리고 다른 측면.
다음에 정의된 명시적 다중 바이트 문자 집합 사용포스트그레스지원할 서버 언어에 맞는 것보다 더 많은 문자가 필요한 언어 단일 바이트 사이에 문자 세트 기록을 제공합니다. 클라이언트와 서버. 지원되는 문자 세트 수는 다음과 같습니다. 서버가 컴파일될 때 고정되며 내부적으로는 문자열 비교와 같은 작업에는 확장이 필요합니다. 각 문자를 32비트 단어로 변환합니다.
단일 바이트 문자 인코딩은 더 많은 정보를 제공합니다. 다중이지만 단일 바이트 사용자를 위한 경량 솔루션 문자 집합.
로케일지원은 문화적 선호를 존중하는 응용 프로그램 알파벳, 정렬, 숫자 서식 등포스트그레SQL표준 ISO C를 사용하며 서버 운영에서 제공하는 POSIX와 유사한 로케일 기능 체계. 추가 정보는 설명서를 참조하세요. 시스템의.
로케일 지원이 내장되어 있지 않습니다.PostgreSQL기본적으로; 활성화하려면 공급하다--활성화-로케일옵션 그만큼구성스크립트:
로케일 지원은 서버에만 영향을 미칩니다. 모든 클라이언트는 로케일 지원 유무에 관계없이 서버와 호환됩니다.특정 문화적 규칙에 관한 정보 사용 여부는 표준 환경 변수에 따라 결정됩니다. 당신이 다른 프로그램에서 현지화된 동작을 받고 있습니다. 아마도 이미 설정되어 있을 것입니다. 가장 간단한 설정 방법 현지화 정보는 다음과 같습니다.랭변수, 예:
내보내기 LA토토 사이트=sv_SE로케일을 스웨덴어로 설정합니다(sv) 스웨덴에서 말하는 대로 (SE). 다른 가능성은 있을 수 있습니다en_US(미국 영어) 및fr_CA(캐나다, 프랑스어). 만약에 하나 이상의 문자 집합이 로케일에 유용할 수 있습니다. 사양은 다음과 같습니다.cs_CZ.ISO8859-2. 어떤 로케일을 사용할 수 있나요? 시스템의 이름은 제공한 내용에 따라 다릅니다. 운영 체제 공급업체 및 설치된 항목.
때때로 여러 규칙을 혼합하는 것이 유용합니다. 예를 들어 로케일은 미국 대조 규칙을 사용하지만 스페인어 메시지를 사용합니다. 이를 위해 재정의되는 환경 변수 세트가 존재합니다. 기본값은랭특정 항목에 대해 범주:
| LC_COLLATE | 문자열 정렬 순서 |
| LC_CTYPE | 캐릭터 분류(문자란 무엇입니까? 대문자 동등한?) |
| LC_MESSAGES | 언어 메시지 |
| LC_MONETARY | 통화 형식 금액 |
| LC_NUMERIC | 형식 지정 중 숫자 |
| LC_TIME | 날짜 형식 및 타임스 |
시스템이 로케일이 없는 것처럼 작동하도록 하려는 경우 지원하려면 특수 로케일을 사용하세요.C또는POSIX또는 단순히 모든 로케일 설정을 해제합니다. 관련 변수입니다.
로케일 동작은 다음에 의해 결정됩니다. 환경 변수는 서버가 아닌 서버에서 볼 수 있습니다. 어떤 클라이언트의 환경. 그러므로 다음 사항을 주의해서 설정하세요. 포스트마스터를 시작하기 전의 변수입니다.
그LC_COLLATE그리고LC_CTYPE변수는 정렬 순서에 영향을 미칩니다. 인덱스. 따라서 이러한 값은 모든 경우에 대해 고정된 상태로 유지되어야 합니다. 특정 데이터베이스 클러스터 또는 텍스트 열의 인덱스는 부패하다.포스트그레스값을 기록하여 이를 시행합니다.LC_COLLATE그리고LC_CTYPE다음에 의해 표시됨initdb. 서버 시작될 때 자동으로 이 두 값을 채택합니다. 다른 쪽만LC_카테고리는 다음과 같습니다. 서버 시작 시 환경에서 설정됩니다. 간단히 말해서, 단지 데이터베이스 클러스터에서는 하나의 조합 순서를 사용할 수 있으며 에서 선택되었습니다.initdb시간.
로캘 지원은 특히 다음에 영향을 미칩니다. 특징:
정렬 순서주문 기준쿼리.
그to_char가족 기능
그좋아요그리고~패턴 일치 연산자
로케일 지원 사용의 유일한 심각한 단점PostgreSQL은 속도입니다. 그래서 실제로 필요한 경우에만 로케일을 사용하십시오. 주목해야 할 점 특히 C가 아닌 로케일을 선택하면 색인이 비활성화됩니다. 최적화좋아요그리고~연산자, 이는 거대한 이를 사용한 검색 속도의 차이 연산자.
설명에도 불구하고 로캘 지원이 작동하지 않는 경우 위에서 운영 체제의 로캘 지원을 확인하세요. 괜찮아. 특정 로캘이 설치되어 있는지 확인하려면 사용할 수 있는 기능펄, 예를 들어. Perl은 로케일도 지원합니다. 로케일이 깨졌습니다.perl -v불평할 것이다 이런 것:
$ LC_CTYPE='not_exist' 내보내기
$ perl -v
perl: 경고: 로캘 설정에 실패했습니다.
perl: 경고: 로케일 설정을 확인하십시오:
LC_ALL = (설정되지 않음),
LC_CTYPE = "존재하지 않음",
LANG = (설정되지 않음)
지원되며 시스템에 설치됩니다.
perl: 경고: 표준 로케일("C")로 대체됩니다.
로케일 파일이 올바른 위치에 있는지 확인하세요. 가능한 위치는 다음과 같습니다:/usr/lib/locale(리눅스, 솔라리스),/usr/share/locale(리눅스),/usr/lib/nls/loc(DUX 4.0). 로케일을 확인하세요 확실하지 않은 경우 시스템 매뉴얼 페이지를 참조하세요.
디렉토리src/테스트/로케일다음에 대한 테스트 스위트가 포함되어 있습니다.PostgreSQL의 로캘 지원.