Trước tiên, bạn cần có cách tách các miền.
Ví dụ, giả sử bạn có một tên miền cho lib và một cho ứng dụng, sau đó tạo ra một phím tắt cho dgettext()
cuộc gọi;
_app(msg) -> dgettext("app", msg);
và một cho miền lib:
_lib(msg) -> dgettext("lib", msg);
Thêm các cuộc gọi qua tất cả các mã của bạn, như thế này;
show_message(_app("Choose a directory to save your work."));
show_message(_lib("No space left on device."));
Hãy nhớ rằng bạn cần gọi bindtextdomain()
cho cả hai tên miền khi khởi tạo ứng dụng của bạn.
Để trích xuất chúng, bạn cần phải xác định các từ khóa khác nhau để xgettext
trên tất cả các tên tập tin trong cây nguồn của bạn có chứa các điểm đánh dấu:
xgettext --keyword=_app -d domain1 filenames...
xgettext --keyword=_lib -d domain2 filenames...
Cuối cùng, biên dịch cả các tập tin .po vào biến thể .mo nhị phân của họ và sao chép/cài đặt chúng vào đúng vị trí.
Nguồn
2012-04-04 20:14:17
Tôi tìm thấy [gợi ý] (http://stackoverflow.com/a/5354360/645186) về cách phân tích từng miền riêng biệt. Tuy nhiên, đây là một giải pháp. – Shef