2010-05-25 28 views
8

Chúng tôi đang đánh giá Babel 0.9.5 [1] trong Windows để sử dụng với Python 2.6 và có các câu hỏi sau mà chúng tôi không thể trả lời thông qua việc đọc tài liệu hoặc googling.Quốc tế hóa ứng dụng Python 2.6 qua Babel

1) Tôi muốn sử dụng chữ viết tắt _ giống như cho ungettext. Có một concencus về việc liệu một trong những nên sử dụng n_ hoặc N_ cho điều này?

n_ có vẻ không hoạt động. Babel không trích xuất văn bản.

N_ có vẻ hoạt động một phần. Babel trích xuất văn bản giống như nó làm cho gettext, nhưng không định dạng cho gettext (thiếu đối số số nhiều và msgstr [n].)

2) Có cách nào để thiết lập các trường nhập ban đầu như sau khi tạo tệp POT ?

Tôi nghi ngờ có thể có cách để thực hiện việc này thông qua các tệp Babel cfg, nhưng tôi không thể tìm thấy tài liệu về định dạng tệp Babel cfg.

"Project-Id-Version: DỰ ÁN VERSION \ n" "Ngôn ngữ-Team: en_US \ n"

3) Có cách nào để bảo vệ 'lỗi thời' msgstr/msgstr trong tập tin PO của chúng tôi? Khi tôi sử dụng lệnh cập nhật Babel, các chuỗi lỗi thời được tạo mới được đánh dấu bằng # ~ tiền tố, nhưng các chuỗi thông báo lỗi thời hiện tại bị xóa.

Cảm ơn, Malcolm

[1] http://babel.edgewall.org/

+0

Tại sao bạn không muốn sử dụng các tiện ích GNU gettext được chuyển đến win32 để trích xuất thư? http://gnuwin32.sf.net – bialix

+1

Xin chào Bializ: Việc cài đặt các ngôn ngữ gettext của GNU không thuận tiện cho khách hàng của chúng tôi, những người duy trì các tệp PO của riêng họ. Một ưu điểm khác của tiện ích Babel là chúng hoạt động theo chế độ UTF-8 theo mặc định. Chúng tôi đã gặp một số vấn đề khi sử dụng các tiện ích GNU gettext để thực hiện việc này một cách nhất quán (chúng được mặc định là ASCIII). – Malcolm

Trả lời

8

Theo mặc định pybabel extract nhận các từ khóa sau đây: _, gettext, ngettext, ugettext, ungettext, dgettext, dngettext, N_. Sử dụng -k option để thêm người khác. N_ thường được sử dụng cho NULL-translations (còn được gọi là bản dịch trì hoãn).

Cập nhật: Tùy chọn -k có thể liệt kê các đối số của hàm được đưa vào danh mục. Vì vậy, nếu bạn sử dụng n_ = ngettext hãy thử pybabel extract -k n_:1,2 ....

+0

Hi Denis: Cảm ơn sự giúp đỡ của bạn.Msgstr "không tìm được cách để ánh xạ N_ hoặc n_ thành hàm ngettext để các tham số của hàm này được xử lý thành số nhiều" #:. của gettext. Tôi đánh giá cao sự tham chiếu đến việc sử dụng N_ như một bản dịch NULL. Điều này có vẻ giống như một cú pháp cụ thể của Python (?) Như trái ngược với các triển khai gettext ngôn ngữ khác có hỗ trợ N_ hoặc n_ như các bí danh ngettext. – Malcolm

+0

Hi Denis: Kỹ thuật "-k n_: 1,2" của bạn hoạt động hoàn hảo - cảm ơn bạn rất nhiều !! Đối với kho lưu trữ: Chúng tôi đã quyết định sử dụng N_ so với n_ để theo dõi giao diện của tiêu chuẩn defacto cho từ viết tắt của ngettext. – Malcolm

1

Để trả lời câu hỏi 2):

Nếu bạn chạy Babel qua pybabel extract, bạn có thể đặt Project-Id-Version qua các tùy chọn --project--version.

Nếu bạn chạy Babel qua setup.py extract_messages, thì Project-Id-Version được lấy từ bản phân phối (tên dự án và phiên bản trong tệp setup.py).

Cả hai cách này cũng hỗ trợ các tùy chọn --msgid-bugs-address--copyright-holder để đặt siêu dữ liệu POT.

Các vấn đề liên quan