2012-03-24 6 views
3

可能性の重複をレンダリングするテンプレートのスイッチの言語設定:
Django switching, for a block of code, switch the language so translations are done in one languageジャンゴ -

Djangoは単一のテンプレートのレンダリング操作のために言語を切り替えるに取得する簡単な方法はありますか?

私の場合、ユーザーは、同じ言語を話していない人にメッセージを送信する必要があるイベントを引き起こす可能性があります。

たとえば、ユーザーは英語の話し手ですが、スペイン語を話すユーザーにメッセージを送信するアクションを呼び出すため、スペイン語で発信するコンテンツを生成する必要があります。

私は、リクエストを偽装してRequestContextを使用することによって可能であることを認識していますが、私はもっと短い/クリーンなソリューションを好むでしょう。

+0

RequestsやRequestContextsがど​​のようにこの状態になるのかわかりません。確かに、ユーザAがユーザBにメッセージを送信した場合、ユーザBがメッセージを見ることを要求したとき(メッセージの言語設定に応じて)、メッセージを単に翻訳することができます。 –

+0

私が探していた:http://djangosnippets.org/snippets/1428/。 問題は私が電子メールまたはSMSメッセージを送信していることです。したがって、受信者は私のDjangoアプリケーションとやりとりすることはありません。しかし、私はshanyuが指摘したようにdjango.utils.translate.activate/deactivateが正解であることを学んできました。コンテキストマネージャを使用する – JanezStupar

答えて

5

次のようなものを探しています:より良いコードの再利用のために

from django.utils import translation 
language_code = 'xx' 
template_body = Template(some_text_var) 
translation.activate(language_code) 
r = template_body.render(context) 
translation.deactivate() 

、あなたはコンテキストマネージャとしてこれをリファクタリングすることができます。

+0

- http://stackoverflow.com/a/10385085/486209 – yossi