在 render() 上,Django 如何知道选择哪种语言?

On render(), how does Django know which language to pick?

我只是很好奇。 Django 运行以下行:

email_body = get_template("applicant/email_with_token.txt").render(Context())

它从基于 class 的视图的 form_valid() 运行它。新上下文是基于常规 python 字典创建的。没有传递来自视图、用户、会话等的参数...在模板内部有 {% load i18n %} 和一堆 context/variables.

不过,Django 会识别当前会话的语言并应用适当的翻译。

那么,它从哪里知道会话语言呢?

"...决定在当前线程上下文中安装什么翻译对象" (source)

虽然很简单,但语言是线程范围的,因为一个线程服务于一个请求,而请求知道该语言。