2017-03-22 114 views
0

有没有什么方法可以在settings.py中动态改变LANGUAGE_CODE变量的值(单击按钮(发送请求))?根据用户动态设置或更改默认语言 - Django

我希望用户将自己的“默认语言”设置为他们的帐户

现在用户可以使用下拉列表选择他们的首选语言,并且网站翻译得非常完美,而且由于Django采用浏览器的语言,用户在重新打开浏览器后不需要重新选择语言来自同一浏览器的网站。

但是,当他们从不同的浏览器打开网站,默认语言又是“英语”,因为在settings.py的LANGUAGE_CODE变量设置为en-us的。

所以我想要做的是让每个用户都有一个选项来选择他们想要的语言作为默认值。我想通过制作另一个(类似的)下拉菜单并要求用户选择他们想要的语言作为“默认”并按下按钮来完成此操作,并且在保存时,我想将LANGUAGE_CODE的值更改为所选的一个由用户(即动态地改变它)。但我不知道如何动态改变LANGUAGE_CODE的值。

此外,这种方法还有一个问题。再说就算我能够动态地改变这种LANGUAGE_CODE变量,它将使该网站有选择的语言为默认所有用户不仅对谁改变了它,根据Django的文档是一个特定的用户:

LANGUAGE_CODE:

  • 如果locale中间件不使用,它决定哪种翻译是提供给所有用户。

我研究了很多,但找不到解决方案。我对国际化非常陌生。请帮忙。

回答

2

当然有,那就是翻译的整点。你通过思考“默认”语言来迷惑自己;按照定义,他们选择的东西不是默认的。

Django文档解释了如何明确地为用户提供set the active language。您可以完全按照您的描述进行设置。

您可能还希望在登录时重新设置此值,同样通过传递用户配置文件中的值。

+0

非常感谢你的回答。这是我所寻找的东西:D –

0

ü需要包括{%负载的i18n%}在每个模板文件并在以往文本的/ var必须是在合适的语言传递{%反%}

example.html的

{% load i18n %} 
... 
... 
<title>{% trans "This is the title." %}</title> 
<title>{% trans myvar %}</title> 

请参阅Django文档对于相同的: https://docs.djangoproject.com/en/1.10/topics/i18n/

+0

你完全误解了我的问题。我的项目中已包含所有这些内容。翻译都很好。我想要的是能够根据用户的需要动态设置“默认”语言。 –