2015-10-08 12 views
6

Tôi đang cố gắng để dịch một số văn bản có chứa một dấu phần trăm như vậy:Django dịch thoát% dấu

{% trans "100% butterfly" %}

Khi tôi chạy lệnh makemessages, tôi nhận được kết quả như sau trong .po Đức của tôi file:

#: .\appName\templates\appName\butterflies.html:54 
#, fuzzy, python-format 
#| msgid "" 
#| "100% butterfly" 
msgid "" 
"100%% butterfly" 
msgstr "" 
"100% shmetterling" 

Khi biên dịch, không dịch văn bản sang tiếng Đức. Tôi đã thử làm {% trans "100%% butterfly" %}, nhưng điều này khiến các trang hiển thị "100% bướm" khi được xem bằng cả tiếng Đức và tiếng Anh. Tôi cũng đã thử sử dụng thẻ blocktrans thay vì dịch văn bản, với cùng một kết quả.

Xóa thủ công% thừa trong tệp .po, cùng với dòng #, fuzzy, python-format hoạt động, nhưng tôi không muốn làm điều này cho mỗi dấu% tôi đang cố dịch.

Làm cách nào để thoát khỏi điều này trong HTML của tôi để Django ngừng tạo bản dịch mờ trong tệp .po và không bị nhầm lẫn khi nghĩ rằng tôi đang cố gắng thực hiện một số định dạng python?

+3

Dường như làm '{% trans '100 % bướm"%} 'thực hiện thủ thuật, nhưng có thể gây nhầm lẫn cho người dịch. – tayden

+0

Bạn đã thử sử dụng '" 100 %% shmetterling "' trong tệp .po cho chuỗi msgstr "? –

+0

Vừa nãy, vâng. Tôi nhận được "100 %% shmetterling" là kết quả đầu ra html – tayden

Trả lời

1

Hóa ra đây là sự cố Django với bản sửa lỗi có thể đến ở Django 1.9. Một workaround là để làm:

{% blocktrans with percent="%" %}100{{percent}} butterfly{% endblocktrans %}

Mà về cơ bản bao trùm python định dạng nó nghĩ rằng bạn đang cố gắng để làm gì khi bạn đặt một biểu tượng% trong văn bản xuyên của bạn. It's verbose và sucks, nhưng nó hoạt động.

0

Tôi nghĩ rằng cách tốt hơn là sử dụng mã html: %

Đó là cách thanh lịch nhất để đối phó với dịch django ví dụ.

+0

Đó là sự thật cho các nhà phát triển, nhưng một lần nữa, là khó hiểu cho người dịch không hiểu mã html – tayden

+0

Có, nhưng thật đáng buồn, bạn không thể làm điều đó với bản dịch javascript django. '' '%' '' và cảnh báo người dịch của bạn là cách tốt nhất hiện nay. –

3

Theo this comment trong Trac của Django, thêm nhận xét người dịch để tắt định dạng python phía trên chuỗi mà bạn muốn dịch có thể khắc phục/giải quyết sự cố này.

Nếu văn bản để dịch là trong mã Python của bạn, sử dụng:

# Translator: xgettext:no-python-format 
_('100% butterfly') 

Đối trans mẫu thẻ, bạn có thể thử:

{# Translators: xgettext:no-python-format #} 
{% trans "100% butterfly" %} 

như explained in the doc.

+0

Trong Javascript, tôi đã sử dụng thành công // Translators: xgettext: no-c-format –

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