[pyar] Otra sobre jinja y traducción: buenas prácticas para HTML en el medio

Pablo Ziliani pablo en kultroom.com
Dom Jul 13 11:40:51 ART 2014


On 13/07/14 09:50, Facundo Batista wrote:
>      {{ gettext('You can access it in Wikipedia in <a class="external"
> href="%s">this external link</a>.') % (original_link,) }}
>
> Eso *funciona*.
>
> Lo que no me gusta es que se le está exponiendo HTML al traductor, en el .PO.
>
> Y no sólo lo tiene que tener en cuenta para la traducción, sino que si
> rompe ese HTML podría estar rompiendo el template!
>
> ¿Hay una mejor manera de hacerlo?

No conozo Jinja ni sus usos, pero mandar html al .po es una práctica no 
poco frecuente en el mundo Django (que conozco).
Asumiendo que Jinja no sea más que python (algo posiblemente erroneo 
pero que de paso sirve como indicador del límite de purismo alcanzable), 
si no hubera algo out-of-the-box, quizás se pueda hacer algo como;

{{ gettext('You can access it in Wikipedia in') }}
{{ makelink(original_link, gettext('this external link')) }}

donde makelink es un helper que te crearía el html (la clase "external" la puede determinar a partir de la url, lo cual es hasta deseable salvo que lo quieras encapsular aparte).

De todas maneras, el texto original es una unidad de significado cuya sintáxis en otros idiomas no conocemos y por lo tanto sería incorrecto asumir que el link puede ir *siempre* al final de la frase. Siempre conviene que este tipo de cosas sean variables.
Esto es lo más correcto que se me ocurre:

{{ gettext('You can access it in Wikipedia in %s') %s makelink(original_link, gettext('this external link')) }}



More information about the pyar mailing list