在Django中有什么像request.LANGUAGE_CODE语言环境文化吗?

问题描述:

request.LANGUAGE_CODE告诉我用户选择了什么语言。如英语的en或德语的de在Django中有什么像request.LANGUAGE_CODE语言环境文化吗?

但我如何获得文化代码?如英国英语为GB,美式英语为us

非常感谢,

Django的国际化背景处理器( “django.core.context_processors.i18n”)将您的语言设置为您的上下文。这让你做的东西,如:

<form action="{% url 'set_language' %}" method="post"> 
{% csrf_token %} 
<input name="next" type="hidden" value="{{ redirect_to }}" /> 
<select name="language"> 
{% get_language_info_list for LANGUAGES as languages %} 
{% for language in languages %} 
<option value="{{ language.code }}">{{ language.name_local }} ({{ language.code }})</option> 
{% endfor %} 
</select> 
<input type="submit" value="Go" /> 
</form> 

https://docs.djangoproject.com/en/dev/topics/i18n/translation/#django.conf.urls.i18n.set_language

这也是有效增加方言,如看看这篇文章:

Django: How to add Chinese support to the application

+0

谢谢你。最初我尝试根据浏览器HTTP_ACCEPTED_LANGUAGE设置应用语言和文化设置。但这似乎有点片面。也许我应该允许用户将他们最喜欢的语言保存在数据库中,并且每次从那里获取它。让我先玩一下...... :) – Houman 2012-08-13 19:43:44

request.META['HTTP_ACCEPT_LANGUAGE']。但是,这是由客户端(通常是网页浏览器)设置的,因此在某些情况下可能不会设置或设置正确。唯一的防呆方法是要求用户选择他们的首选语言,然后使用该设置。但是,如果站点使用正确的语言并不重要,并且希望它在没有干预的情况下为用户“正常工作”,那么使用HTTP_ACCEPT_LANGUAGE标头就没问题。您甚至可以将两种方法结合起来,以便用户可以切换,如果他们更喜欢使用与检测到的语言不同的语言。