2009-07-21 45 views
1

我在與使用發送已本地化的消息Django的用戶

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

機制發送本地化的消息到Django的用戶使用帶來麻煩。首先,

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

扁平不工作,SQLite表示它不會接受非ascii參數(本地化的消息包含特殊字符)。

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

無論首選語言如何(應用程序的其他翻譯部分都可以正常工作)發送原始英文消息。

使用這樣

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

一個硬編碼本地化的消息是,工作,但那個唯一意味着我可以只使用一種語言。

如何向用戶發送從LC_MESSAGES加載的本地化消息?

回答

1

您在顯示之前是否嘗試過本地化消息?

在你看來:

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

在模板

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

這樣,您就不必任何奇怪的字符存儲在數據庫中。

+1

theres與此有關的一個問題。我猜測'makemessages'命令不會捕獲字符串,你必須記得手動編輯django.po文件,或者使用一種解決方法 - 在.py中添加一個帶有_(「Message」)的虛擬行代碼 – Evgeny 2009-10-26 21:36:50

+0

那裏有`django.utils.translation.gettext_noop`。另外,'{%trans message%}'不起作用(至少在1.3/new contrib.messages上)。改用'{%trans message.message%}'。 – ionelmc 2011-03-28 23:29:47

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

...應該工作。您是否使用最新版本的SQLite,是否必須以某種方式啓用UTF-8支持?你是否在其他地方的SQLite中存儲非ascii字符?