【问题标题】:Is there anything like request.LANGUAGE_CODE for locale culture in Django?Django 中是否有类似 request.LANGUAGE_CODE 的语言环境文化?
【发布时间】:2012-08-13 18:21:16
【问题描述】:

request.LANGUAGE_CODE 告诉我用户选择了哪种语言。例如en 用于英语或de 用于德语。

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

非常感谢,

【问题讨论】:

    标签: django


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      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

      【讨论】:

      • 谢谢。最初,我尝试根据他们的浏览器 HTTP_ACCEPTED_LANGUAGE 设置应用语言和文化设置。但这似乎有点不稳定。也许我应该允许用户将他们喜欢的语言保存在数据库中,并且每次都从那里获取它。让我先玩一会……:)
      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多