J'ai un problème avec la traduction des chaînes formatées dans Django en utilisant django.utils.translations
. Seules les chaînes sans format (%s
ou {}
) fonctionnent.La traduction des chaînes formatées dans Django ne fonctionne pas
Mon fichier locale/en/LC_MESSAGES/django.po
:
msgid "foo"
msgstr "bar"
#, python-format
msgid "foo %s"
msgstr "bar %s"
#, python-format
msgid "foo %(baz)s"
msgstr "bar %(baz)s "
#, python-brace-format
msgid "foo {}"
msgstr "bar {}"
#, python-brace-format
msgid "foo {baz}"
msgstr "bar {baz}"
Première chaîne fonctionne:
>>> from django.utils import translation
>>> translation.activate('en')
>>> translation.ugettext('foo')
'bar'
Mais reste n'est pas:
>>> translation.ugettext('foo %s' % 'bax')
'foo bax'
>>> translation.ugettext('foo %(baz)s' % {'baz': 'bax'})
'foo bax'
>>> translation.ugettext('foo {}'.format('bax'))
'foo bax'
>>> translation.ugettext('foo {baz}'.format(baz='bax'))
'foo bax'
Pas mater si j'utilise ugettext_lazy
, gettext
ou gettext_lazy
- même histoire, sortie non traduite.
Une idée de pourquoi les chaînes formatées ne fonctionnent pas?
- Django 1.11.3
- Python 3.5.3
Merci pour cela. Je ne pouvais pas voir les bois pour les arbres. – Moritz