Ich habe ein Modell, Bestellung, die eine Aktion im Admin-Panel hat, dass ein Admin Informationen über die Bestellung an bestimmte Personen gesendet, die diese Reihenfolge gesendet haben. Jede Person hat Sprachset und das ist die Sprache die Nachricht in werden soll gesendetDjango: Sprache der Nachricht von Admin-Panel
eine kurze Version von dem, was ich verwende.
from django.utils.translation import ugettext as _
from django.core.mail import EmailMessage
lang = method_that_gets_customer_language()
body = _("Dear mister X, here is the information you requested\n")
body += some_order_information
subject = _("Order information")
email = EmailMessage(subject, body, '[email protected]', ['[email protected]'])
email.send()
Der Kunde Informationen über die Sprache, die er verwendet, ist verfügbar in lang
. Die Standardsprache ist en-us, die Übersetzungen sind in Französisch (fr) und Deutsch (de).
Gibt es eine Möglichkeit, die Übersetzung für die Sprache zu verwenden, die in lang
für body
und subject
angegeben ist, und dann zurück zu en-us wechseln? Zum Beispiel: lang
ist 'de'. Das Subjekt und der Körper sollten die in den 'de' Übersetzungsdateien angegebenen Zeichenfolgen erhalten.
edit:
eine Lösung gefunden.
from django.utils import translation
from django.utils.translation import ugettext as _
body = "Some text in English"
translation.activate('de')
print "%s" % _(body)
translation.activate('en')
Was macht es die body
Variable nehmen, übersetzt sie in Deutsch, druckt es dann die Sprache in Englisch zurück.
So etwas wie
body = _("Some text in English")
translation.activate('de')
print "%s" % body
druckt den Text in Englisch though.
Bearbeiten: Hoppla, tut mir leid. Es ist definitiv etwas falsch mit meinem Kopf heute. –
translation.deactivate() ist möglicherweise besser als translation.activate ('en'). –
Danke. Ich habe diese Funktion nicht bemerkt. – yoshi