2009-11-28 11 views
9

que tienen un problema de i18n en Django:blocktrans Django y i18n en plantillas

Esto funciona bien:

{% trans cat.name %} 

cat.name se traducirán

Pero esto no funciona:

{% blocktrans with cat.name|slugify as cat_slug %}{{ cat_slug }}{% endblocktrans %} 

cat.name no se traduce

Si cambio del filtro:

{% blocktrans with cat.name|capfirst as cat_slug %}{{ cat_slug }}{% endblocktrans %} 

Veo que el filtro está funcionando, pero no hay una traducción ...

Respuesta

1
{% blocktrans with cat.name as cat_slug %}{{ cat_slug|capfirst }}{% endblocktrans %} 

? 

EDIT: tenías razón el médico dice que el filtro como para ser colocado en los blocktrans

+0

parece que la var no se traduce {% blocktrans con cat.name como cat_slug%} {{cat_slug}} {%}% endblocktrans esto tampoco se traduce ... – Julien

9

Esto funciona:

{% filter slugify %}{% trans cat.name %}{% endfilter %} 
+0

Esto me ayudó demasiado : Quería '' linebreaksbr'' algún texto traducido. –

16

Soy solamente acaba de empezar con Django internacionalización, pero creo que estés malentendido cómo maneja la etiqueta {% blocktrans %} marcadores de posición.

El punto de blocktrans es permitir el texto alrededor de los marcadores de posición para traducir. No traducirá nada dentro de {{...}}.

Si nos fijamos en el archivo generado .po, verá que el siguiente código de plantilla:

{% blocktrans %}This is my variable: {{variable}}{% endblocktrans %} 

obtendrá convertido en algo parecido a lo siguiente: No

msgid:"This is my variable: %s" 

hago cree que puede traducir una variable dentro de una etiqueta blocktrans. Es probable que pueda hacerlo con cadenas constantes {% blocktrans with _("string") as x %}{{x}}{% endblocktrans %} pero no puedo pensar por qué te gustaría.

Vas a tener que hacer lo que quiere en su vista o modelo de código que pienso.

3

Como Tom señaló blocktrans preservarán lo que se pone en la sentencia with en lugar de traducirlo. Lo que debe hacer es usar el con antes de la traducción. En su ejemplo, se vería así:

{% with cat_slug=cat.name|slugify %} 
    {% trans cat_slug %} 
{% endwith %} 

P.S. Sé que estoy respondiendo a una pregunta de edad 6yr, pero me he encontrado con esta situación exacta de un par de veces y no he visto un SO pregunta/respuesta que se encarga de ello.

0
{% blocktrans with cat_slug=cat.name|capfirst %}{{ cat_slug }}{% endblocktrans %}