Ho un modello, Ordine, che ha un'azione nel pannello di amministrazione che consente ad un amministratore di inviare informazioni sull'ordine a determinate persone elencate nell'ordine. Ogni persona ha impostato la lingua e che è la lingua si suppone che il messaggio da inviare inDjango: cambia lingua del messaggio inviato dal pannello di amministrazione
Una versione breve di quello che sto usando:.
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()
Le informazioni sui clienti circa il linguaggio che usa è disponibile in lang
. La lingua predefinita è en-us, le traduzioni sono in francese (fr) e tedesco (de).
C'è un modo per utilizzare la traduzione per la lingua specificata in lang
per body
e subject
quindi tornare a en-us? Ad esempio: lang
è "de". L'oggetto e il corpo dovrebbero ottenere le stringhe specificate nei file di traduzione "de".
edit:
trovato una soluzione.
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')
Quello che ci vuole la variabile body
, lo traduce in tedesco, lo stampa poi ritorna la lingua inglese.
Qualcosa di simile
body = _("Some text in English")
translation.activate('de')
print "%s" % body
stampa il testo in inglese però.
Modifica: Oooops, mi dispiace. C'è sicuramente qualcosa di sbagliato nella mia testa oggi. –
translation.deactivate() potrebbe essere migliore di translation.activate ('en'). –
Grazie. Non ho notato quella funzione. – yoshi