2009-07-21 12 views
1

Je ne parviens pas à envoyer de messages aux utilisateurs de Django en utilisant le mécanismeEnvoi de messages aux utilisateurs de Django

user.message_set.create(message="Message") 

. Tout d'abord,

user.message_set.create(message=_("Message")) 

à plat ne fonctionne pas, SQLite dit qu'il ne sera pas accepter le paramètre non-ascii (message localisé contient des caractères spéciaux).

user.message_set.create(message=unicode(_("Message"))) 

envoie le message original en anglais indépendamment de la langue préférée (d'autres parties traduites de l'application fonctionnent correctement).

l'aide d'un message localisé hardcoded comme celui-ci

user.message_set.create(message=u"Localized message áýčš") 

est la seule chose qui fonctionne, mais cela implique que je serais capable d'utiliser une seule langue.

Comment puis-je envoyer des messages localisés aux utilisateurs chargés depuis LC_MESSAGES?

Répondre

1

Avez-vous essayé de localiser le message juste avant de l'afficher?

À votre avis:

user.message_set.create(message="Message") 

Dans votre modèle

{% if messages %} 
<ul> 
    {% for message in messages %} 
    <li>{% trans message %}</li> 
    {% endfor %} 
</ul> 
{% endif %} 

De cette façon, vous ne devez pas stocker des caractères étranges dans votre base de données.

+1

theres est un problème avec cela. Je suppose que la commande 'makemessages' n'attrapera pas la chaîne et vous devrez vous rappeler d'éditer le fichier django.po manuellement, ou utiliser une solution de contournement - ajouter une ligne factice avec _ ("Message") dans le .py Il y a 'django.utils.translation.gettext_noop' ​​pour le code – Evgeny

+0

. De même, '{% trans message%}' ne fonctionnera pas (au moins sur 1.3/new contrib.messages). Utilisez '{% trans message.message%}' à la place. – ionelmc

1
user.message_set.create(message=_("Message")) 

... devrait fonctionner. Utilisez-vous la dernière version de SQLite, le support UTF-8 doit-il être activé? Est-ce que vous stockez des caractères non-ASCII dans SQLite ailleurs?

+0

Je n'utilise pas la dernière version de SQLite car l'installation de CentOS que je n'ai pas supportée. Mais je stocke définitivement des caractères non-ascii ailleurs dans la base de données. –

+0

C'est ce qui m'étonne - la plupart des choses fonctionnent, c'est juste le système de messagerie qui ne fonctionne pas. –

+0

Se pourrait-il que dans le contexte dans lequel vous vous trouvez, _ ne soit pas aliasé correctement à ugettext? http://docs.djangoproject.com/fr/dev/topics/i18n/#s-standard-translation –

Questions connexes