12

Bạn sẽ làm cách nào để quốc tế hóa ứng dụng webapp của Google App Engine bằng cách sử dụng BABEL? Tôi đang tìm kiếm ở đây cho tất cả các giai đoạn:Quốc tế hóa ứng dụng webapp của GAE với Babel

  1. Đánh dấu chuỗi cần dịch.
  2. Trích xuất chúng.
  3. Traslating
  4. Cấu hình ứng dụng của bạn để tải ngôn ngữ phù hợp theo yêu cầu của trình duyệt

Trả lời

11

1) sử dụng _() (hoặc gettext()) trong mã và mẫu của bạn. Các chuỗi đã dịch được đặt trong phần tử mô-đun hoặc định nghĩa lớp nên sử dụng một dạng gettext lười(), vì i18n sẽ không khả dụng khi các mô-đun được nhập.

2) Trích xuất tất cả bản dịch bằng cách sử dụng nhãn mã vạch. Ở đây chúng tôi vượt qua hai thư mục để được quét: thư mục mẫu và thư mục ứng dụng. Điều này sẽ tạo ra một tập tin messages.pot trong thư mục/locale với tất cả các chuỗi được tìm thấy trong các thư mục này. babel.cfg là cấu hình trích xuất khác nhau tùy thuộc vào công cụ mẫu bạn sử dụng:

$ pybabel extract -F ./babel.cfg -o ./locale/messages.pot ./templates/ ./app/ 

3) Khởi tạo thư mục cho từng ngôn ngữ. Việc này chỉ được thực hiện một lần. Ở đây chúng tôi khởi tạo ba bản dịch, en_US, es_ES và pt_BR và sử dụng tệp messages.pot được tạo trên bước 2:

$ pybabel init -l en_US -d ./locale -i ./locale/messages.pot 
$ pybabel init -l es_ES -d ./locale -i ./locale/messages.pot 
$ pybabel init -l pt_BR -d ./locale -i ./locale/messages.pot 

Dịch thư. Chúng sẽ nằm trong các tệp .mo trong mỗi thư mục dịch. Sau khi tất cả các miền địa phương được dịch, biên dịch chúng:

$ pybabel compile -f -d ./locale 

Sau đó, nếu bản dịch mới được thêm vào, lặp lại bước 2 và cập nhật chúng bằng cách sử dụng tập tin .pot mới:

$ pybabel update -l pt_BR -d ./locale/ -i ./locale/messages.pot 

Sau đó dịch các chuỗi mới và biên dịch lại các bản dịch.

4) Chiến lược ở đây có thể khác nhau. Đối với mỗi yêu cầu, bạn phải đặt bản dịch chính xác được sử dụng và có thể muốn lưu lại các bản dịch đã tải để sử dụng lại trong các yêu cầu tiếp theo.

+1

Cảm ơn moraes, bước 4 vẫn eludes tôi. Tôi hy vọng một số sẽ đăng giải pháp tốt đẹp cho nó. – fccoelho

+1

Bất cứ ai cũng có một gợi ý đơn giản cho mục 4 của câu trả lời này? – fccoelho

+0

số 4 là liên kết bị hỏng ..:/ – Lipis

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