没有请求对象的 Django 翻译

Django translation without request object

我正在翻译我的 Django 应用程序,其中有一个推送通知模块。从该模块,我向用户的移动设备发送一个文本字段。由于这些通知的触发器不是正确的 HTTP 请求(带有 "request" 对象),因此 Django 翻译字符串的默认方式不起作用。

我在每个用户配置文件上都有一个字段及其首选语言,所以我认为我应该编写某种中间件来匹配该字段及其正确的翻译。

有什么办法吗?

您正在寻找 translation.override 上下文管理器:

language = user.get_language()
with translation.override(language):
    # Translate your message here.