Postgresql 9.0.23 문서화 | ||||
---|---|---|---|---|
스포츠 토토 : 문서 : 9.0 : 번역기의 경우 | 와이즈 토토 : 문서 : 9.0 : 모국어 지원 | 48 장. 모국어 지원 | PostgreSQL : 문서 : 9.0 : 절차 언어 토토 꽁 머니 작성 |
이 섹션에서는 모국어 구현 방법을 설명합니다 의 일부인 프로그램 또는 도서관에서의 지원PostgreSQL분포. 현재 C 프로그램에만 적용됩니다.
프로그램에 NLS 지원 추가
이 코드를의 시작 시퀀스에 삽입하십시오 와이즈 토토램:
#ifdef enable_nls #include <locale.h #endif ... #ifdef enable_nls setLocale (lc_all, ""); BindTextDomain ( "Progname", LocalEdir); TextDomain ( "Progname"); #endif
(Prognamecan 실제로 자유롭게 선택됩니다.)
번역 후보 인 메시지가 어디에 있든
발견된다, 전화getText ()
삽입해야합니다.
예 :
fprintf (stderr, "panic level %d \ n", lvl);
:로 변경됩니다.
fprintf (stderr, getText ( "panic level %d \ n"), lvl);
(getText는 NO-OP로 정의됩니다 NLS 지원이 구성되지 않은 경우.)
이것은 많은 혼란을 더하는 경향이 있습니다. 하나의 일반적인 바로 가기는 다음과 같습니다.
#define _ (x) getText (x)
와이즈 토토램이 많은 경우 다른 솔루션이 가능합니다
하나 또는 몇 가지 기능을 통한 의사 소통의
처럼Ereport ()
백엔드. 그런 다음이 기능을 호출합니다getText
내부적으로 모든 입력
문자열.
파일 추가nls.mk프로그램 소스가있는 디렉토리. 이 파일이 될 것입니다 Makefile로 읽으십시오. 다음 변수 할당 여기에 만들어야합니다 :
와이즈 토토램 이름,TextDomain ()
전화.
제공된 번역 목록 - 처음에 비어 있는.
번역 가능한 문자열이 포함 된 파일 목록,
즉, 표시된getText
또는 대안
해결책. 결국에는 거의 모든 것이 포함될 것입니다
프로그램의 소스 파일. 이 목록도 가져 오면
당신은 먼저 만들 수 있습니다"파일"a+그리고 두 번째 단어는 파일입니다
줄 당 하나의 파일 이름을 포함합니다.
메시지 카탈로그를 생성하는 도구
일하는 번역가는 어떤 기능을 알아야합니다
통화에는 번역 가능한 문자열이 포함되어 있습니다. 기본적으로
오직getText ()
전화
알려져 있습니다. 사용한 경우_
또는 필요한 기타 식별자
여기에 나열합니다. 번역 가능한 문자열 인 경우
첫 번째 주장이 아니라 항목은
형태func : 2(용
두 번째 논쟁). 기능이 있다면
복수 메시지를 지원하면 항목이 보일 것입니다
좋다func : 1,2(식별
단수 및 복수 메시지 인수).
빌드 시스템은 자동으로 빌딩을 처리합니다 메시지 카탈로그 설치.
다음은 메시지 작성에 대한 몇 가지 지침이 있습니다 쉽게 번역 할 수 있습니다.
런타임에 문장을 구성하지 마십시오 :
printf ( "파일은 %s. \ n", flag? "복사": "제거";
문장 내의 단어 순서가 다를 수 있습니다.
다른 언어. 또한 전화를 기억하더라도getText ()
각 조각에서,
조각은 별도로 잘 번역되지 않을 수 있습니다. 그것은
각 메시지가
번역은 일관된 전체입니다. 숫자, 파일 만
이름과 같은 런타임 변수를 삽입해야합니다
메시지 텍스트로 런 시간에.
비슷한 이유로 작동하지 않습니다 :
printf ( "복사 된 %d 파일 %s", n, n! = 1? "s": "");
복수형이 어떻게 형성되는지 가정하기 때문입니다. 당신이 이렇게 해결할 수 있다고 생각했습니다.
if (n == 1) printf ( "복사 1 파일"); 또 다른 printf ( "Coveried %d 파일", n) :
실망하십시오. 일부 언어에는 2 개가 넘습니다 몇 가지 독특한 규칙이있는 형태. 종종 디자인하는 것이 가장 좋습니다 예를 들어 문제를 완전히 피하기위한 메시지 이와 같이:
printf ( "복사 된 파일 수 : %d", n);
실제로 적절하게 복수를 구성하려는 경우
메시지, 이것에 대한 지원이 있지만 조금 어색합니다.
에서 기본 또는 세부 오류 메시지를 생성 할 때Ereport ()
, 당신은 쓸 수 있습니다
다음과 같은 것 :
errmsg_plural ( "복사 된 %d 파일", "복사 된 %d 파일", N, N)
첫 번째 인수는 적합한 형식 문자열입니다 영어 단수 형식, 두 번째는 형식 문자열입니다 영어 복수 형식에 적합하고 세 번째는 어떤 복수 형태를 결정하는 정수 제어 값 사용. 후속 인수는 형식에 따라 형식화됩니다 평소와 같이 문자열. (일반적으로 복수화 제어 값 또한 형식화 할 값 중 하나이므로 두 번 쓰기.) 영어로는 단지 중요n1이거나 1이지만 다른 언어에는 여러 개의 복수형 형태가있을 수 있습니다. 번역가는 두 개의 영어 양식을 그룹으로보고 여러 대체 문자열을 공급할 수있는 기회가 있습니다. 적절한 것을 사용하여 runtime valuen.
진행되지 않는 메시지를 복수화 해야하는 경우
직접errmsg
또는errdetail
보고서, 당신은해야합니다
기본 기능 사용NGETTEXT
. getText를 참조하십시오
선적 서류 비치.
번역기에게 무언가를 전달하려면, 메시지가 어떻게 일치하는지에 대한 것과 같은 다른 출력은 문자열의 발생에 앞서 로 시작하는 의견번역기, 예 :
/* Translator :이 메시지는 그 모습이 아닙니다. */
이 주석은 메시지 카탈로그 파일에 복사됩니다 번역가가 그들을 볼 수 있도록.