在 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)
虽然很简单,但语言是线程范围的,因为一个线程服务于一个请求,而请求知道该语言。
我只是很好奇。 Django 运行以下行:
email_body = get_template("applicant/email_with_token.txt").render(Context())
它从基于 class 的视图的 form_valid()
运行它。新上下文是基于常规 python 字典创建的。没有传递来自视图、用户、会话等的参数...在模板内部有 {% load i18n %}
和一堆 context/variables.
不过,Django 会识别当前会话的语言并应用适当的翻译。
那么,它从哪里知道会话语言呢?
"...决定在当前线程上下文中安装什么翻译对象" (source)
虽然很简单,但语言是线程范围的,因为一个线程服务于一个请求,而请求知道该语言。