이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 55.2.사설 토토 사이트 위해버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

46.2. 스포츠 토토 사이트래머의 경우

46.2.1. 역학

이 섹션에서는 모국어 구현 방법을 설명합니다. 다음의 일부인 프로그램이나 라이브러리에서 지원합니다.포스트그레SQL배포. 현재는 C 프로그램에만 적용됩니다.

프로그램에 NLS 지원 추가

  1. 이 코드를 시작 시퀀스에 삽입하세요. 스포츠 토토 사이트램:

    #ifdef ENABLE_NLS
    #include <locale.h
    #endif
    
    ...
    
    #ifdef ENABLE_NLS
    setlocale(LC_ALL, "");
    바인딩텍스트도메인("스포츠 토토 사이트램명", LOCALEDIR);
    텍스트도메인("스포츠 토토 사이트램명");
    #endif

    (그스포츠 토토 사이트램명할 수 있다 실제로 자유롭게 선택될 수 있습니다.)

  2. 번역 후보인 메시지가 있는 곳마다 찾았습니다.에 대한 호출입니다.gettext()삽입해야 합니다. 예:

    fprintf(stderr, "패닉 레벨 %d\n", lvl);

    다음으로 변경됩니다

    fprintf(stderr, gettext("패닉 레벨 %d\n"), lvl);

    (gettext무작동으로 정의됨 NLS가 구성되지 않은 경우.)

    이것은 많은 혼란을 추가하는 경향이 있습니다. 하나의 공통점 단축키는 다음을 사용하는 것입니다.

    #define _(x) gettext(x)

    스포츠 토토 사이트램이 많은 일을 한다면 또 다른 해결책이 가능합니다 하나 또는 몇 가지 기능을 통한 통신 와 같이ereport()에 백엔드. 그런 다음 이 함수를 호출합니다.gettext내부적으로 모든 입력에 대해 문자열.

  3. 파일 추가nls.mk에 프로그램 소스가 있는 디렉토리입니다. 이 파일은 makefile로 읽습니다. 다음 변수 할당 여기서 만들어야 합니다:

    CATALOG_NAME

    다음에 제공된 프로그램 이름텍스트도메인()전화하세요.

    AVAIL_LANGUAGES

    제공된 번역 목록 — 처음에는 비어있습니다.

    GETTEXT_FILES

    번역 가능한 문자열을 포함하는 파일 목록, 즉, 다음과 같이 표시된 것입니다.gettext또는 대안 솔루션. 결국 여기에는 거의 모든 항목이 포함됩니다. 스포츠 토토 사이트램의 소스 파일. 이 목록이 너무 커지면 오랫동안 당신이 먼저 만들 수 있습니다"파일"되다+그리고 두 번째 단어는 다음과 같은 파일입니다 한 줄에 하나의 파일 이름을 포함합니다.

    GETTEXT_TRIGGERS

    다음에 대한 메시지 카탈로그를 생성하는 도구입니다. 작업할 번역가는 어떤 기능을 알아야 하는지 알아야 합니다. 통화에는 번역 가능한 문자열이 포함되어 있습니다. 기본적으로 만gettext()호출 알려져 있습니다. 사용한 경우_또는 필요한 기타 식별자 여기에 나열하겠습니다. 번역 가능한 문자열이 다음과 같은 경우 첫 번째 인수가 아닌 항목은 다음 인수에 속해야 합니다. 양식func:2(용 두 번째 인수).

빌드 시스템이 자동으로 빌딩을 관리합니다 메시지 카탈로그를 설치합니다.

46.2.2. 메시지 작성 지침

다음은 메시지 작성에 대한 몇 가지 지침입니다. 쉽게 번역할 수 있습니다.

  • 런타임에 다음과 같은 문장을 구성하지 마십시오.

    printf("파일은 %s였습니다.\n", 플래그 ? "복사됨" : "제거됨");

    문장 내의 단어 순서는 다음과 같이 다를 수 있습니다. 다른 언어. 또한 기억하고 전화를 했어도 각 조각에 대한 gettext(), 조각이 번역되지 않을 수 있습니다. 글쎄요 따로. 작은 코드를 복제하는 것이 더 낫습니다. 번역될 각 메시지는 일관된 전체입니다. 숫자, 파일 이름 및 이와 유사한 런타임 변수만 런타임에 메시지 텍스트에 삽입되어야 합니다.

  • 비슷한 이유로 이것은 작동하지 않습니다:

    printf("복사된 %d 파일%s", n, n!=1 ? "s" : "");

    복수형이 어떻게 형성되는지 가정하기 때문입니다. 당신이 이렇게 하면 해결할 수 있을 거라 생각했어요

    if (n==1)
        printf("1개의 파일을 복사했습니다.");
    그렇지 않으면
        printf("%d개의 파일을 복사했습니다", n):

    그러면 실망하세요. 일부 언어에는 두 개 이상의 언어가 있습니다. 특별한 규칙이 있는 형태로 만들어졌습니다. 우리는 다음에 대한 해결책을 가질 수 있습니다 미래에는 이 문제가 발생하지만 지금은 이 문제를 피하는 것이 가장 좋습니다. 전혀. 다음과 같이 작성할 수 있습니다.

    printf("복사된 파일 수: %d", n);
  • 번역가에게 무언가를 전달하고 싶다면, 예를 들어 메시지가 어떻게 정렬될 것인지에 대해 다른 출력에서는 문자열 발생 앞에 로 시작하는 댓글번역가예:

    /* 번역자: 이 메시지는 보이는 것과 다릅니다. */

    이 설명은 메시지 카탈로그 파일에 복사됩니다 번역가들이 볼 수 있도록 말이죠.