Phần này mô tả cách thực hiện hỗ trợ ngôn ngữ bản địa 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
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
(The11840_11850
thực sự có thể được chọn tự do.)
Bất cứ nơi nào kèo bóng đá pháp thông điệp là ứng cử viên cho dịch được tìm thấy, kèo bóng đá pháp 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à NO-OP nếu hỗ trợ NLS không được cấu hình.)
Điều này có xu hướng thêm nhiều sự lộn xộn. kèo bóng đá pháp phím tắt phổ biến là sử dụng:
#define _ (x) getText (x)
Một 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 giao tiếp thông qua một hoặc một vài chức năng, chẳng hạn nhưEREPORT ()
Trong phần phụ trợ. Sau đó bạn thực hiện chức năng này gọiGetText
Nội bộ trên tất cả kèo bóng đá pháp chuỗi đầu vào.
Thêm tệpnls.mk
Trong thư mục với các nguồn chương kèo bóng đá pháp. Tệp này sẽ được đọc dưới dạng Makefile. Các bài tập biến sau cần được thực hiện tại đây:
catalog_name
Tên chương kèo bóng đá pháp, như được cung cấp trongTextdomain ()
cuộc gọi.
Danh sách kèo bóng đá pháp bản dịch được cung cấp - ban đầu trống.
gettext_files
Danh sách kèo bóng đá pháp tệp có chứa kèo bóng đá pháp chuỗi có thể dịch, tức là, kèo bóng đá pháp tệp được đánh dấu bằngGetText
hoặc một giải pháp thay thế. Cuối cùng, điều này sẽ bao gồm gần như tất cả các tệp 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ể thực hiện đầu tiênFILElà A+
và từ thứ hai là kèo bóng đá pháp tệp chứa kèo bóng đá pháp tên tệp trên mỗi dòng.
GetText_Triggers
14350_14504getText ()
Cuộc gọi được biết đến. Nếu bạn đã sử dụng_
hoặc kèo bóng đá pháp định danh khác mà bạn cần liệt kê chúng ở đây. Nếu chuỗi có thể dịch không phải là đối số đầu tiên, mục này cần phải ở dạngfunc: 2
(Đối với đối số thứ hai). Nếu bạn có kèo bóng đá pháp chức năng hỗ trợ các tin nhắn đa hóa, mục sẽ trông giống nhưfunc: 1,2
(Xác định kèo bóng đá pháp đối số thông điệp số ít và số nhiều).
Hệ thống xây dựng sẽ tự động chăm sóc việc xây dựng và cài đặt kèo bóng đá pháp danh mục tin nhắn.
Dưới đây là kèo bóng đá pháp số hướng dẫn cho các tin nhắn viết dễ dàng dịch.
Không xây dựng kèo bóng đá pháp 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 kèo bóng đá pháp ngôn ngữ khác. Ngoài ra, ngay cả khi bạn nhớ gọigetText ()
Trên mỗi mảnh, các mảnh có thể không dịch riêng biệt. Tốt hơn là sao chép kèo bóng đá pháp ít mã để mỗi tin nhắn được dịch là kèo bóng đá pháp tổng thể mạch lạc. Chỉ các số, tên tệp và các biến thời gian chạy giống như vậy phải được chèn vào thời gian chạy vào kèo bóng đá pháp 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 dung 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. kèo bóng đá pháp số ngôn ngữ có nhiều hơn hai hình thức, với kèo bóng đá pháp số quy tắc đặc biệt. Tốt nhất là thiết kế thông điệp để tránh vấn đề hoàn toàn, ví dụ như thế này:
printf ("Số lượng tệp được sao chép: %d", n);
Nếu bạn thực sự muốn xây dựng kèo bóng đá pháp thông điệp đa nguyên hợp, có sự hỗ trợ cho việc này, nhưng nó hơi khó xử. Khi tạo thông báo lỗi chính hoặc chi tiết trongEREPORT ()
, bạn có thể viết kèo bóng đá pháp cái gì đó như thế này:
17229_17331
Đối số đầu tiên là chuỗi định dạng phù hợp với dạng số ít tiếng Anh, thứ hai là chuỗi định dạng phù hợp với dạng số nhiều tiếng Anh và thứ ba là giá trị kiểm soát số nguyên xác định dạng số nhiều sẽ sử dụng. kèo bóng đá pháp đối số tiếp theo được định dạng trên mỗi chuỗi định dạng như bình thường. .n
là 1 hoặc không 1, nhưng trong các ngôn ngữ khác có thể có nhiều dạng số nhiều khác nhau. Người dịch coi hai biểu mẫu tiếng Anh là kèo bóng đá pháp nhóm và có cơ hội cung cấp nhiều chuỗi thay thế, với hình thức thích hợp được chọn dựa trên giá trị thời gian chạy củan
.
Nếu bạn cần đa hóa kèo bóng đá pháp thông điệp không trực tiếp đếnerrmsg
hoặcerrdetail
Báo cáo, bạn phải sử dụng hàm cơ bảnngetText
. Xem tài liệu GetText.
18507_18704kèo bóng đá pháp dịch
, ví dụ:
18791_18853
Những bình luận này được sao chép vào kèo bóng đá pháp tệp danh mục tin nhắn để kèo bóng đá pháp dịch giả có thể nhìn thấy chúng.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không phù hợp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu này20361_20425