У меня есть модель Order, у которой есть действие в панели администратора, которое позволяет администратору отправлять информацию о заказе определенным лицам, перечисленным в этом заказе. У каждого человека установлен язык, и это тот язык, на котором предполагается отправлять сообщение.
Короткая версия того, что я использую:
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, 'customer@example.org', ['admin@example.org'])
email.send()
Информация о клиенте о языке, который он использует, доступна в lang
. Язык по умолчанию en-us, переводы на французский (fr) и немецкий (de).
Есть ли способ использовать перевод для языка, указанного в lang
для body
и subject
, и затем переключиться обратно на en-us? Например: lang
это «де». Субъект и тело должны получить строки, указанные в файлах перевода 'de'.
редактирование:
Нашел решение.
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')
Для чего нужна переменная body
, переводит ее на немецкий, печатает, а затем возвращает язык на английский.
что-то вроде
body = _("Some text in English")
translation.activate('de')
print "%s" % body
печатает текст на английском языке.