Django中的locale文化有什么类似request.LANGUAGE_CODE吗?

时间:2012-08-13 18:21:16

标签: django

request.LANGUAGE_CODE告诉我用户选择的语言。例如英语为en,德语为de

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

非常感谢,

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

Django i18n上下文处理器(“django.core.context_processors.i18n”)将您的LANGUAGES设置添加到您的上下文中。这让你做的事情如下:

<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