2015-10-08 16 views
6

sto cercando di tradurre un testo che contiene un segno di percentuale in questo modo:Django traduzione fuga% segno

{% trans "100% butterfly" %}

Quando faccio funzionare l'ordine makemessages, ottengo il seguente output nel mio .po tedesco file:

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

Che, una volta compilato, non riesce a tradurre il testo in tedesco. Ho provato a fare {% trans "100%% butterfly" %}, ma questo fa sì che le pagine visualizzino "100 %% farfalla" se visualizzate in tedesco e inglese. Ho anche provato a utilizzare i tag blocktrans per tradurre il testo, con lo stesso risultato.

Cancellare manualmente la% extra nel file .po, insieme alla riga #, fuzzy, python-format funziona, ma preferirei non doverlo fare per ogni segno% che sto cercando di tradurre.

Come faccio a evitare questo nel mio codice HTML in modo che Django smetta di generare una traduzione fuzzy nel file .po e non si confonda pensando che sto provando a fare qualche formattazione python?

+3

Sembra fare "{% trans" 100 % "%}" farfalla fa il trucco, ma potrebbe essere fonte di confusione per i traduttori. – tayden

+0

Hai provato a usare "" 100 %% shmetterling "' nel file .po per msgstr? –

+0

Proprio ora, sì. Ottengo "100 %% shmetterling" come l'output html visualizzato – tayden

risposta

1

Risulta che questo è un problema di Django con una correzione probabilmente in arrivo in Django 1.9. Una soluzione è quella di fare:

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

che abbraccia essenzialmente il pitone formattazione crede che tu stia cercando di fare quando si mette un simbolo% nel testo trans. È prolisso e fa schifo, ma funziona.

0

Penso che il modo migliore è quello di utilizzare il codice html: %

E 'il modo più elegante per affrontare con traduzione Django per esempio.

+0

Questo vale per gli sviluppatori, ma, di nuovo, confonde i traduttori che non comprendono il codice html – tayden

+0

Sì, ma purtroppo non è possibile farlo con la traduzione javascript di django. '' '%' '' e avverti che i tuoi traduttori sono il modo migliore oggi. –

3

Secondo this comment in Django's Trac, aggiungere un commento del traduttore per disattivare il formato python sopra la stringa che si desidera tradurre può risolvere/risolvere questo problema.

Se il testo da tradurre è nel codice Python, utilizzare:

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

Per trans tag modello, si può provare:

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

come explained in the doc.

+0

In Javascript, ho usato con successo // Translators: xgettext: no-c-format –