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

10.2. 스포츠 토토의 경우

이 섹션에서는 모국어 지원 방법을 설명합니다. 의 일부인 프로그램이나 라이브러리에서PostgreSQL배포. 현재는 그것만 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))

    프로그램이 다음 작업을 많이 수행하는 경우 또 다른 솔루션이 가능합니다. 다음과 같은 하나 또는 몇 가지 기능을 통한 통신elog()백엔드에서. 그런 다음 이 함수를 호출하면 됩니다.gettext내부적으로 모든 입력에 대해 값.

  3. 파일 추가nls.mk안에 프로그램 소스가 있는 디렉토리입니다. 이 파일을 읽습니다. 메이크파일로. 다음 변수 할당이 필요합니다. 여기서 만들 수 있습니다:

    CATALOG_NAME

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

    AVAIL_LANGUAGES

    제공된 번역 목록 -- 비어 있음 시작합니다.

    GETTEXT_FILES

    번역 가능한 문자열을 포함하는 파일 목록, 즉, 다음과 같이 표시된 것입니다.gettext또는 대체 솔루션. 결국 여기에는 거의 모든 소스 파일이 포함됩니다. 프로그램의. 이 목록이 너무 길어지면 다음을 수행할 수 있습니다. 첫 번째로 만들어라"파일"되다+그리고 두 번째 단어는 한 줄에 하나의 파일 이름을 포함하는 파일입니다.

    GETTEXT_TRIGGERS

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

빌드 시스템이 자동으로 빌드 및 작업을 처리합니다. 메시지 카탈로그를 설치 중입니다.

메시지 번역을 쉽게 하기 위한 몇 가지 사항은 다음과 같습니다. 지침:

  • 런타임에 게으름 때문에 문장을 구성하지 마십시오. 좋아요

    printf("%s.\n"에 있는 파일", 플래그 ? "복사됨" : "제거됨");

    문장 내의 단어 순서는 다음과 같이 다를 수 있습니다. 다른 언어.

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

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

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

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

    그러면 실망하세요. 일부 언어에는 2개 이상의 언어가 있습니다. 몇 가지 독특한 규칙이 있는 형식입니다. 우리는 다음에 대한 해결책을 가질 수 있습니다 앞으로는 이 일을 하겠지만 지금은 피하는 것이 가장 좋습니다. 전혀. 다음과 같이 작성할 수 있습니다.

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

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

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