Tengo un modelo, orden, que tiene una acción en el panel de administración que le permite a un administrador enviar información sobre el pedido a ciertas personas enumeradas en esa orden. Cada persona tiene juego de lenguaje y que es el idioma se supone que el mensaje que se enviará enDjango: cambiar el idioma del mensaje enviado desde el panel de administración
Una versión corta de lo que estoy 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()
La información de los clientes sobre el lenguaje que utiliza está disponible en lang
. El idioma predeterminado es en-us, las traducciones están en francés (fr) y alemán (de).
¿Hay alguna manera de utilizar la traducción para el idioma especificado en lang
para body
y subject
y luego volver a encender-es? Por ejemplo: lang
es 'de'. El sujeto y el cuerpo deben obtener las cadenas especificadas en los archivos de traducción 'de'.
edit:
encontrado una solución.
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')
Lo que esto se necesita la variable body
, lo traduce al alemán, lo imprime a continuación, devuelve el idioma a Inglés.
Algo así como
body = _("Some text in English")
translation.activate('de')
print "%s" % body
imprime el texto en Inglés sin embargo.
Edit: Oooops, lo siento. Definitivamente hay algo mal en mi cabeza hoy. –
translation.deactivate() podría ser mejor que translation.activate ('en'). –
Gracias. No noté esa función. – yoshi