Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2
Tài liệu này dành kèo bóng đá pháp phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang kèo bóng đá pháphiện tạiPhiên bản hoặc kèo bóng đá pháp trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

45.2. Cho kèo bóng đá pháp

45.2.1. Cơ học

Phần này mô tả cách thực hiện ngôn ngữ bản địa Hỗ trợ trong một chương kèo bóng đá pháp hoặc thư viện là một phần củaPostgreSQLPhân phối. Hiện tại, nó chỉ áp dụng cho các chương kèo bóng đá pháp C.

Thêm hỗ trợ NLS vào chương kèo bóng đá pháp

  1. Chèn mã này vào chuỗi khởi động của chương kèo bóng đá pháp:

    #ifdef enable_nls
    #include <locale.h
    #endif
    
    ...
    
    #ifdef enable_nls
    setLocale (lc_all, "");
    bindtextdomain ("Tiên lượng", Localedir);
    Textdomain ("Tiên lượng");
    #endif

    (TheTiên lượngCó thể thực sự được chọn tự do.)

  2. Bất cứ nơi nào một thông điệp là ứng cử viên kèo bóng đá pháp bản dịch được tìm thấy, một cuộc gọi đếngetText ()cần được chèn. Ví dụ.,

    fprintf (stderr, "panic level %d \ n", lvl);

    sẽ được thay đổi thành

    fprintf (stderr, getText ("panic level %d \ n"), lvl);

    (GetTextđược định nghĩa là không có op Nếu không có NLS được cấu hình.)

    Điều này có thể có xu hướng thêm nhiều sự lộn xộn. kèo bóng đá pháp phổ biến phím tắt là sử dụng

    #define _ (x) getText (x)

    Giải pháp khác là khả thi nếu chương kèo bóng đá pháp thực hiện nhiều về giao tiếp của nó thông qua một hoặc một vài chức năng, như vậy BẰNGEREPORT ()Trong phụ trợ. Sau đó bạn thực hiện chức năng này gọiGetTextNội bộ trên tất cả các đầu vào chuỗi.

  3. Thêm tệpnls.mkTrong Thư mục với các nguồn chương kèo bóng đá pháp. Tệp này sẽ Đọc như một makefile. Các bài tập biến sau cần được thực hiện ở đây:

    catalog_name

    Tên chương kèo bóng đá pháp, như được cung cấp trongTextdomain ()cuộc gọi.

    13245_13262

    Danh sách các bản dịch được cung cấp - ban đầu trống.

    gettext_files

    Danh sách các tệp có chứa chuỗi có thể dịch, tức là, những người được đánh dấu bằngGetTexthoặc một giải pháp thay thế giải pháp. Cuối cùng, điều này sẽ bao gồm gần như tất cả tập tin nguồn của chương kèo bóng đá pháp. Nếu danh sách này quá dài bạn có thể làm cho đầu tiên13878_13886là A+và từ thứ hai là kèo bóng đá pháp tệp mà chứa kèo bóng đá pháp tên tệp trên mỗi dòng.

    GetText_Triggers

    các công cụ tạo danh mục tin nhắn kèo bóng đá pháp người dịch để làm việc cần biết chức năng nào Các cuộc gọi chứa các chuỗi có thể dịch. Theo mặc định, chỉ mộtgetText ()cuộc gọi được biết đến. Nếu bạn đã sử dụng_14487_14674func: 2(kèo bóng đá pháp Đối số thứ hai).

Hệ thống xây dựng sẽ tự động chăm sóc tòa nhà và cài đặt danh mục tin nhắn.

45.2.2. Hướng dẫn viết thông điệp

15110_15191

  • Không xây dựng các câu khi chạy, như

    printf ("Tệp là %s. \ N", cờ? "Đã sao chép": "Đã xóa");

    Thứ tự từ trong câu có thể khác nhau trong các ngôn ngữ khác. Ngoài ra, ngay cả khi bạn nhớ gọi gettext () trên mỗi mảnh, các mảnh có thể không dịch Vâng riêng biệt. Tốt hơn là sao chép kèo bóng đá pháp ít mã nên Rằng mỗi thông điệp được dịch là kèo bóng đá pháp tổng thể mạch lạc. Chỉ số, tên tệp và các biến thời gian chạy giống như vậy nên được chèn vào thời gian chạy vào văn bản tin nhắn.

  • Vì những lý do tương tự, điều này sẽ không hoạt động:

    printf ("được sao chép %d tệp %s", n, n! = 1? "S": "");

    Bởi vì nó giả sử cách số nhiều được hình thành. Nếu bạn Hình bạn có thể giải quyết nó như thế này

    if (n == 1)
        printf ("Sao chép 1 tệp");
    khác
        printf ("được sao chép %d tệp", n):

    Sau đó thất vọng. Một số ngôn ngữ có nhiều hơn hai ngôn ngữ hình thức, với một số quy tắc đặc biệt. Chúng tôi có thể có một giải pháp kèo bóng đá pháp điều này trong tương lai, nhưng bây giờ vấn đề là tốt nhất nên tránh toàn bộ. Bạn có thể viết:

    printf ("số lượng tệp được sao chép: %d", n);
  • 16601_16822kèo bóng đá pháp dịch, ví dụ:

    /* kèo bóng đá pháp dịch: Thông báo này không phải là những gì nó có vẻ như. */

    Những bình luận này được sao chép vào các tệp danh mục tin nhắn để các dịch giả có thể nhìn thấy chúng.