gpt4 book ai didi

python - Django 切换,对于一段代码,切换语言以便以一种语言完成翻译

转载 作者:太空狗 更新时间:2023-10-29 17:35:25 25 4
gpt4 key购买 nike

我有一个 django 项目,它使用一个工作进程向用户发送电子邮件。工作进程监听 rabbitmq 服务器并获取有关要发送的电子邮件、模板变量、要发送到的电子邮件地址等的所有详细信息。电子邮件正文是使用 django 模板和 render_to_string 创建的。 .

但是我想将其国际化。我们的一些用户将使用英语网站,一些用户将使用其他语言。他们应该收到用他们的语言写的电子邮件。我已经尝试 i18n 电子邮件工作进程(使用 django.utils.translations.ugettext/ugettext_lazy),以便电子邮件主题和电子邮件正文具有 _(...)或 {% blocktrans %} resp.

然而,由于电子邮件是在不同的后台工作进程中呈现和发送的,所以正常的 django language detection process似乎不适用。没有用户 session ,没有 cookie 或没有供它查看的 http header 。向rabbitmq服务器发送消息时,我可以存储语言代码

但是我如何告诉 django/gettext 在某一点使用该语言。

例如我发送电子邮件的函数可能如下所示:

def send_email(details):
lang = details['lang']
name = details['name']
email_address = details['email_address']

switch_gettext_to_this_language_what_goes_here(lang):
# ?????
email_subject = _("Welcome to $SITE")

我要输入什么来将 django translations/gettext 切换到特定的语言代码,以便 _() 将使用该语言代码?

最佳答案

正如@SteveMayne 在评论中指出的(但值得回答),您现在可以使用上下文管理器 translation.override(适用于 Django 1.6,未检查早期版本):

from django.utils import translation
print(_("Hello")) # Will print to Hello if default = 'en'

# Make a block where the language will be Danish
with translation.override('dk'):
print(_("Hello")) # print "Hej"

它基本上使用与@bitrut answer 相同的东西,但它是内置在 Django 中的,因此它减少了依赖性......

关于python - Django 切换,对于一段代码,切换语言以便以一种语言完成翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5258715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com