2015-10-08 28 views
6

Próbuję tłumaczyć jakiś tekst, który zawiera znak procentu tak:Django tłumaczenie ucieczka% znak

{% trans "100% butterfly" %}

Kiedy uruchomić komendę makemessages, pojawia się następujący komunikat w moim niemieckim .po file:

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

Który po skompilowaniu nie przetłumaczy tekstu na niemiecki. Próbowałem już robić {% trans "100%% butterfly" %}, ale powoduje to, że strony wyświetlają "100 %% butterfly", gdy są wyświetlane zarówno w języku niemieckim, jak i angielskim. Próbowałem również używać tagów blocktrans zamiast tłumaczyć tekst, z tym samym wynikiem.

Ręczne kasowanie dodatkowych% w pliku .po wraz z linią #, fuzzy, python-format działa, ale wolałbym nie robić tego za każdy znak%, który próbuję przetłumaczyć.

Jak mogę uniknąć tego w moim HTML, aby Django przestał generować rozmyte tłumaczenie w pliku .po i nie myli się myśląc, że próbuję zrobić jakieś formatowanie Pythona?

+3

Wygląda na to, że robiąc "{% trans" 100 % motyl "%}" działa, ale może być mylący dla tłumaczy. – tayden

+0

Czy próbowałeś użyć '' 100 %% shmetterling ''w pliku .po dla msgstr? –

+0

Właśnie teraz, tak. Otrzymuję "100 %% shmetterling" jako renderowane wyjście html – tayden

Odpowiedz

1

Okazało się, że jest to problem Django z poprawką prawdopodobnie pochodzącą z Django 1.9. Jeden obejście jest zrobić:

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

który zasadniczo obejmuje pytona formatowania uzna starasz się zrobić, kiedy można umieścić symbol% ​​w tekście trans. To gadatliwe i do bani, ale działa.

0

Myślę, że lepszym sposobem jest użycie kodu HTML: %

Jest to najbardziej elegancki sposób do czynienia z tłumaczeniem django na przykład.

+0

To prawda dla programistów, ale znowu jest mylące dla tłumaczy, którzy nie rozumieją kodu html – tayden

+0

Tak, ale niestety, nie można tego zrobić z tłumaczeniem javascript django. '' '' % '' 'i ostrzeżenie swoich tłumaczy jest dziś najlepszą drogą. –

3

Zgodnie z this comment w Django's Trac, dodanie komentarza tłumacza do dezaktywowania formatu Pythona powyżej ciągu znaków, który chcesz przetłumaczyć, może naprawić/obejść ten problem.

Jeśli tekst do przetłumaczenia jest w kodzie Pythona, użyj:

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

Dla trans tag szablonu, można spróbować:

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

jak explained in the doc.

+0

W JavaScript z powodzeniem użyłem // Translators: xgettext: no-c-format –