Отправка локализованных сообщений пользователям Django - PullRequest
1 голос
/ 21 июля 2009

У меня проблемы с отправкой локализованных сообщений пользователям Django с помощью

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

механизм. Прежде всего,

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

flat out не работает, SQLite говорит, что не примет параметр non-ascii (локализованное сообщение содержит специальные символы).

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

отправляет исходное сообщение на английском языке независимо от предпочитаемого языка (другие переведенные части приложения работают правильно).

Использование жестко закодированного локализованного сообщения, подобного этому

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

- единственное, что работает, но это означает, что я мог бы использовать только один язык.

Как я могу отправлять пользователям локализованные сообщения, загруженные из LC_MESSAGES?

Ответы [ 2 ]

1 голос
/ 21 июля 2009
user.message_set.create(message=_("Message"))

... должно работать. Используете ли вы последнюю версию SQLite, должна ли быть включена поддержка UTF-8? Вы храните не SQL-символы в SQLite где-либо еще?

1 голос
/ 21 июля 2009

Вы пытались локализовать сообщение прямо перед его отображением?

На ваш взгляд:

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

В вашем шаблоне

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

Таким образом, вам не нужно хранить какие-либо странные символы в вашей базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...