| PostgreSQL 9.3.25 문서 | ||||
|---|---|---|---|---|
| 메이저 토토 사이트stgreSQL : 문서 : 9.3 : 번역기의 경우 | 토토 : 문서 : 9.3 : 모국어 지원 | 50장. 네이티브 언어 지원 | PostgreSQL : 문서 : 9.3 : 절차 언어 스포츠 토토 결과 작성 | |
이 섹션에서는 모국어 지원 구현 방법을 설명합니다. 의 일부인 프로그램이나 라이브러리에서PostgreSQL배포. 현재는 그것만 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);
(gettextNLS인 경우 무작동으로 정의됩니다. 지원이 구성되지 않았습니다.)
이것은 많은 혼란을 추가하는 경향이 있습니다. 일반적인 지름길 중 하나는 다음과 같습니다. 사용:
#define _(x) gettext(x)
프로그램이 많은 작업을 수행하는 경우 또 다른 솔루션이 가능합니다.
다음과 같은 하나 또는 몇 가지 기능을 통한 통신ereport()백엔드에서. 그럼 이걸 만들어요
함수 호출gettext내부적으로 켜짐
모든 입력 문자열.
파일 추가nls.mk디렉토리에 프로그램 소스와 함께. 이 파일은 makefile로 읽혀집니다. 는 여기서는 다음 변수 할당을 수행해야 합니다.
다음에 제공된 프로그램 이름텍스트도메인()전화하세요.
제공된 번역 목록 — 처음에는 비어 있습니다.
번역 가능한 문자열을 포함하는 파일 목록, 즉
으로 표시됨gettext또는 대안
솔루션. 결국 여기에는 거의 모든 소스 파일이 포함됩니다.
토토 꽁 머니램. 이 목록이 너무 길면 첫 번째 목록을 만들 수 있습니다."파일"되다+그리고 두 번째 단어는 각각 하나의 파일 이름을 포함하는 파일입니다.
라인.
번역가를 위한 메시지 카탈로그를 생성하는 도구
어떤 함수 호출에 번역 가능한 내용이 포함되어 있는지 알아야 합니다.
문자열. 기본적으로만gettext()호출이 알려져 있습니다. 사용한 경우_또는
다른 식별자는 여기에 나열해야 합니다. 번역 가능한 경우
문자열은 첫 번째 인수가 아니며 항목 형식은 다음과 같아야 합니다.func:2(두 번째 인수의 경우). 당신이
복수형 메시지를 지원하는 기능이 있어야 합니다.
처럼 생겼어func:1,2(식별
단수 및 복수 메시지 인수).
빌드 시스템은 자동으로 빌딩 및 작업을 처리합니다. 메시지 카탈로그를 설치 중입니다.
다음은 쉽게 메시지를 작성하기 위한 몇 가지 지침입니다. 번역 가능합니다.
런타임에 다음과 같은 문장을 구성하지 마십시오:
printf("파일은 %s입니다.\n", 플래그 ? "복사됨" : "제거됨");
문장 내의 단어 순서는 다른 문장에서는 다를 수 있습니다.
언어. 또한 기억하고 전화를 했어도gettext()각 조각에서 조각은 다음과 같습니다.
따로 번역을 잘 못해요. 조금 복제하는 것이 좋습니다
번역할 각 메시지가 일관된 전체가 되도록 코드를 작성합니다.
숫자, 파일 이름 및 이와 유사한 런타임 변수만 사용해야 합니다.
런타임에 메시지 텍스트에 삽입됩니다.
비슷한 이유로 이것은 작동하지 않습니다:
printf("복사된 %d 파일%s", n, n!=1 ? "s" : "");
왜냐하면 복수형이 어떻게 형성되는지 가정하기 때문입니다. 당신이 생각했다면 다음과 같이 해결할 수 있습니다:
if (n==1)
    printf("1개의 파일을 복사했습니다.");
그렇지 않으면
    printf("%d개의 파일을 복사했습니다", n):
그러면 실망하세요. 일부 언어에는 두 가지 이상의 형식이 있습니다. 좀 특이한 규칙이 있어서. 메시지를 다음과 같이 디자인하는 것이 가장 좋습니다. 예를 들어 다음과 같이 문제를 완전히 피하십시오.
printf("복사된 파일 수: %d", n);
정말로 적절하게 복수형 메시지를 구성하고 싶다면,
이에 대한 지원이 있지만 조금 어색합니다. 생성할 때
기본 또는 세부 오류 메시지ereport(), 다음과 같이 작성할 수 있습니다.
errmsg_plural("%d 파일을 복사했습니다",
              "%d개의 파일을 복사했습니다",
              엔,
              n)
첫 번째 인수는 영어에 적합한 형식 문자열입니다. 단수형, 두 번째는 다음에 적합한 형식 문자열입니다. 영어 복수형, 세 번째는 정수 제어값 사용할 복수형을 결정합니다. 후속 인수는 평소와 같이 형식 문자열에 따라 형식이 지정됩니다. (보통, 복수화 제어 값도 다음 값 중 하나가 됩니다. 형식화되어 있으므로 두 번 작성해야 합니다.) 영어로만 작성됩니다. 여부가 중요합니다n1이거나 1이 아니거나, 그러나 다른 언어에는 다양한 복수형이 있을 수 있습니다. 번역자는 두 개의 영어 형식을 하나의 그룹으로 보고 여러 대체 문자열을 제공할 수 있는 기회 런타임 값을 기준으로 적절한 값이 선택됩니다.n.
직접 전달되지 않는 메시지를 복수화해야 하는 경우
anerrmsg또는errdetail보고하려면 기본을 사용해야 합니다.
기능gettext. gettext를 참조하세요
문서.
번역가에게 다음과 같은 내용을 전달하고 싶다면 메시지가 다른 출력과 어떻게 정렬되는지에 대해 문자열이 시작되기 전에 주석이 시작됩니다. 와 함께번역가, 예:
/* 번역자: 이 메시지는 보이는 것과 다릅니다. */
이 설명은 메시지 카탈로그 파일에 복사되어 다음과 같습니다. 번역가가 볼 수 있습니다.