2012-04-19 9 views
21

Tengo una cadena que se puede traducir en varius parte de mi código de dos maneras diferentes.Misma secuencia con traducción diferente

Ahora bien, si makemessages Uso django-admin -l que

me meto en este django.po:

#: pingapi/ping.py:17 pingapi/nots.py:10 
msgid "may" 
msgstr "maggio" 

Pero me gustaría que dos traducción diferente:

#: pingapi/ping.py:17 
msgid "may" 
msgstr "posso" 

#: pingapi/nots.py:10 
msgid "may" 
msgstr "maggio" 

Si yo ejecute django-admin compilemessage con el archivo de traducción publicado, obtengo:

Error: errors happened while running msgmerge 
error 'duplicate message definition' 

¿Alguna sugerencia? Estoy usando Django.

+2

¿Ayuda [este] (https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers)? – dgel

+0

@dgel: No realmente, desafortunadamente. –

+0

Ah ... Ya veo. 'pgettext' solo proporciona una cadena de contexto para ayudar a los traductores. – dgel

Respuesta

24

Puede usar el contexto de gettext para eso. Django ha añadido soporte para que, en 1,3 de liberación (en el código) y 1,4 (para las plantillas), ver https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers

Actualización:

Por ejemplo siguiente código:

from django.utils.translation import pgettext, ugettext 

month = pgettext("month name", "May") 
month = pgettext("fifth month", "May") 
month = ugettext("May") 

Traduce a:

#: foo/views.py:4 
msgctxt "month name" 
msgid "May" 
msgstr "" 

#: foo/views.py:5 
msgctxt "fifth month" 
msgid "May" 
msgstr "" 

#: foo/views.py:6 
msgid "May" 
msgstr "" 

Cada mensaje es diferente y se puede traducir de manera diferente.

+0

¿Has leído los comentarios a la pregunta? –

+5

Sí, pero pgettext no solo trata de proporcionar información a los traductores, sino que también diferencia el mensaje de gettext y los convierte en mensajes diferentes. –

Cuestiones relacionadas