2012-04-19 15 views
21

Ho una stringa che può essere tradotta in varie parti del mio codice in due modi diversi.Stessa stringa con traduzione diversa

Ora, se makemessages Usa django-admin -l è

ottengo in django.po questo:

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

ma vorrei due traduzione diversa:

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

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

Se io eseguire il compilemessage django-admin con il file di traduzione pubblicato, ho ottenuto:

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

Eventuali suggerimenti? Sto usando Django.

+2

Questo [questo] (https://docs.djopoproject.com/en/dev/topics/i18n/translation/#contesto-sale-markers) è d'aiuto? – dgel

+0

@dgel: Non proprio, sfortunatamente. –

+0

Ah ... Capisco. 'pgettext' fornisce solo una stringa di contesto per aiutare i traduttori. – dgel

risposta

24

È possibile utilizzare il contesto di gettext per questo. Django ha aggiunto il supporto per quella a 1,3 rilascio (in codice) e 1,4 (per i modelli), vedere https://docs.djangoproject.com/en/dev/topics/i18n/translation/#contextual-markers

Aggiornamento:

Per esempio seguente codice:

from django.utils.translation import pgettext, ugettext 

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

si traduce in:

#: 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 "" 

Ogni messaggio è diverso e può essere tradotto in modo diverso.

+0

Hai letto i commenti alla domanda? –

+5

Sì, ma pgettext non riguarda solo la fornitura di informazioni ai traduttori, ma differenzia anche il messaggio per gettext e ne rende diversi i messaggi. –

Problemi correlati