2009-01-21 29 views
7

Tôi có một dự án Django cỡ trung bình, (chạy trên AppEngine nếu nó tạo ra bất kỳ sự khác biệt nào), và có tất cả các chuỗi sống trong các tệp .po như chúng cần.Django thiếu bản dịch của một số chuỗi. Bất kỳ ý tưởng tại sao?

Tôi thấy hành vi lạ khi một số chuỗi nhất định không dịch. Chúng hiển thị trong tệp .po khi tôi chạy make_messages, với vị trí tệp chính xác được đánh dấu nơi thẻ {% trans%} của tôi là. Các bản dịch được đặt ra và trông chính xác so với các chuỗi khác ở hai bên của chúng. Nhưng khi tôi hiển thị trang được đề cập, khoảng 1/4 số chuỗi chỉ đơn giản là không dịch.

Đào vào tệp .mo được tạo có liên quan, tôi không thấy tệp sặc sỡ hoặc.

Có ai thấy điều gì tương tự như vậy không? Bất kỳ ý tưởng gì có thể xảy ra?

  • thẻ xuyên tìm đúng
  • file .po tìm đúng
  • không có lỗi trong compile_messages

Trả lời

9

Ugh. Django, bạn đang giết tôi.

Đây là những gì đã xảy ra:

http://blog.e-shell.org/124

Đối với một số lý do duy nhất Django biết, nó quyết định để trang trí một số bản dịch của tôi với những nhận xét 'mờ #'. Dường như đã chọn cái nào để đánh dấu ngẫu nhiên.

Dù sao, #fuzzy nghĩa này: "không dịch này, mặc dù đây là bản dịch:"

Tôi sẽ để lại này đây trong trường hợp một số linh hồn nghèo khác đi qua nó trong tương lai.

+0

+1 theo mặc định PyCharm bao gồm #fuzzy ở đầu tệp hủy kích hoạt tệp. – Valchris

+0

Cảm ơn, đã có cùng một vấn đề, bạn đã tiết kiệm thời gian cho tôi :-) – Tommy

10

Các điểm đánh dấu mờ được thêm vào tập tin .po bởi makemessages. Khi bạn có một chuỗi mới (không có bản dịch), nó sẽ tìm các chuỗi tương tự và bao gồm chúng như là bản dịch, với dấu mờ. Điều này có nghĩa, đây là một trận đấu thô, do đó, không hiển thị nó cho người dùng, nhưng nó có thể là một khởi đầu tốt cho người dịch.

Nó không phải là một hành vi Django, nó xuất phát từ cơ sở gettext.

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