| 포스트그레SQL 8.0.26 문서 | ||||
|---|---|---|---|---|
| 범퍼카 토토stgreSQL : 문서 : 8.0 : 모국어 지원 | 빠르게 뒤로 | 44장. 모국어 지원 | 빨리 감기 | 다음 |
이 섹션에서는 모국어 구현 방법을 설명합니다. 다음의 일부인 프로그램이나 라이브러리에서 지원합니다.포스트그레SQL배포. 현재는 C 프로그램에만 적용됩니다.
프로그램에 NLS 지원 추가
이 코드를 시작 시퀀스에 삽입하세요. 토토 커뮤니티램:
#ifdef ENABLE_NLS
#include <locale.h
#endif
...
#ifdef ENABLE_NLS
setlocale(LC_ALL, "");
바인딩텍스트도메인("토토 커뮤니티램명", LOCALEDIR);
텍스트도메인("토토 커뮤니티램명");
#endif
(그토토 커뮤니티램명할 수 있다 실제로 자유롭게 선택될 수 있습니다.)
번역 후보인 메시지가 있는 곳마다
찾았습니다.에 대한 호출입니다.gettext()을 삽입해야 합니다.
예:
fprintf(stderr, "패닉 레벨 %d\n", lvl);
다음으로 변경됩니다
fprintf(stderr, gettext("패닉 레벨 %d\n"), lvl);
(gettext무작동으로 정의됩니다. NLS가 구성되지 않은 경우.)
이것은 많은 혼란을 추가하는 경향이 있습니다. 하나의 공통점 단축키는 다음을 사용하는 것입니다.
#define _(x) gettext(x)
토토 커뮤니티램이 많은 일을 한다면 또 다른 해결책이 가능합니다
하나 또는 몇 가지 기능을 통한 통신
와 같이ereport()안에
백엔드. 그런 다음 이 함수를 호출합니다.gettext내부적으로 모든 입력에 대해
문자열.
파일 추가nls.mk에 프로그램 소스가 있는 디렉토리입니다. 이 파일은 makefile로 읽습니다. 다음 변수 할당 여기서 만들어야 합니다:
다음에 제공된 프로그램 이름텍스트도메인()전화하세요.
제공된 번역 목록 — 처음에는 비어있습니다.
번역 가능한 문자열을 포함하는 파일 목록,
즉, 다음과 같이 표시된 것입니다.gettext또는 대안
솔루션. 결국 여기에는 거의 모든 항목이 포함됩니다.
토토 커뮤니티램의 소스 파일. 이 목록이 너무 커지면
오랫동안 당신이 먼저 만들 수 있습니다"파일"되다+그리고 두 번째 단어는 다음과 같은 파일입니다
한 줄에 하나의 파일 이름을 포함합니다.
다음에 대한 메시지 카탈로그를 생성하는 도구입니다.
작업할 번역가는 어떤 기능을 알아야 하는지 알아야 합니다.
통화에는 번역 가능한 문자열이 포함되어 있습니다. 기본적으로
만gettext()호출
알려져 있습니다. 사용한 경우_또는 필요한 기타 식별자
여기에 나열하겠습니다. 번역 가능한 문자열이 다음과 같은 경우
첫 번째 인수가 아닌 항목은 다음 인수에 속해야 합니다.
양식func:2(의 경우
두 번째 인수).
빌드 시스템이 자동으로 빌딩을 관리합니다 메시지 카탈로그를 설치합니다.
다음은 메시지 작성에 대한 몇 가지 지침입니다. 쉽게 번역할 수 있습니다.
런타임에 다음과 같은 문장을 구성하지 마십시오.
printf("파일은 %s였습니다.\n", 플래그 ? "복사됨" : "제거됨");
문장 내의 단어 순서는 다음과 같이 다를 수 있습니다. 다른 언어. 또한 기억하고 전화를 했어도 각 조각에 대한 gettext(), 조각이 번역되지 않을 수 있습니다. 글쎄요 따로. 작은 코드를 복제하는 것이 더 낫습니다. 번역될 각 메시지는 일관된 전체입니다. 숫자, 파일 이름 및 이와 유사한 런타임 변수만 런타임에 메시지 텍스트에 삽입되어야 합니다.
비슷한 이유로 이것은 작동하지 않습니다:
printf("복사된 %d 파일%s", n, n!=1 ? "s" : "");
왜냐하면 복수형이 어떻게 형성되는지 가정하기 때문입니다. 당신이 이렇게 하면 해결할 수 있을 거라 생각했어요
if (n==1)
printf("1개의 파일을 복사했습니다.");
그렇지 않으면
printf("%d개의 파일을 복사했습니다", n):
그러면 실망하세요. 일부 언어에는 2개 이상의 언어가 있습니다. 몇 가지 독특한 규칙이 있는 형식입니다. 우리는 다음에 대한 해결책을 가질 수 있습니다 미래에는 이 문제가 발생하지만 지금은 이 문제를 피하는 것이 가장 좋습니다. 전혀. 다음과 같이 작성할 수 있습니다.
printf("복사된 파일 수: %d", n);
번역가에게 무언가를 전달하고 싶다면, 예를 들어 메시지가 어떻게 정렬될 것인지에 대해 다른 출력에서는 문자열 발생 앞에 로 시작하는 댓글번역자예:
/* 번역자: 이 메시지는 보이는 것과 다릅니다. */
이 설명은 메시지 카탈로그 파일에 복사됩니다 번역가들이 볼 수 있도록 말이죠.
| 범퍼카 토토stgreSQL : 문서 : 8.0 : 모국어 지원 | 집 | 다음 |
| 모국어 지원 | 위로 | A 작성 중 절차적 언어 처리기 |