2011-12-30 7 views
3

オファーがいくつかの要件(モデルで指定されたフィルタ)を満たしている場合、ユーザーは電子メールアラートを設定できます。djangoはUserProfile.language()フィールドデータに応じてローカライズされたメールを送信します

したがって、ユーザー "A"がクーポンを追加すると、post_save信号がセロリーに送信され、ユーザー警告フィルタが適用されているかどうか、またあれば電子メールが送信されているかどうかがチェックされます。

問題は、送信された電子メールごとにコンテンツを安全に設定する方法がわかりません。 サービスはより多くの言語で提供されています。ユーザーはプロファイルの言語をユーザー< - Userprofile.language())フィールドで変更できます。各電子メールの言語はUserProfile.language()の値に設定する必要があります。

translation.activate(userinstance.UserProfile。言語)しかし、これは私が期待するように動作しません。私はtranslation.activate()がスレッド全体の翻訳アクティベーションを実行するのを見ていますか?

PS:電子メールコンテンツはテンプレートからレンダリングされます。私にとって

答えて

9

translation.activate作品:

$ ./manage.py shell 
Python 2.7.2 (default, Jan 20 2012, 15:23:49) 
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
(InteractiveConsole) 
>>> from django.utils import translation 
>>> translation.get_language() 
'en-us' 
>>> translation.ugettext('E-mail address') 
u'E-mail address' 
>>> translation.activate('fr') 
>>> translation.ugettext('E-mail address') 
u'Adresse électronique' 

テンプレートは、あまりにも動作します:それはあなたのために働いていない理由を

>>> from django.template import Context, Template 
>>> Template('{% load i18n %}{% trans "E-mail address" %}').render(Context()) 
u'Adresse électronique' 

私は知りません。 UserProfile.language()関数はどのような値を返しますか?

+0

私のUserProfileモデルでは、「選択肢」フィールドにsettings.LANGUAGESを使用します。私は私のサービスで翻訳を書き直そうとしていますが、あなたの投稿は私が正しいことをしていることを確認しています。ありがとう – Robert

関連する問題