如何在language.code中包含该区域?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在language.code中包含该区域?相关的知识,希望对你有一定的参考价值。

我正在为Django构建一个语言切换器。有很多例子,但它们似乎都没有解决我遇到的问题。我总是得到语言代码的简短版本。而不是en-us我得到en

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}

  <a href="/{{ language.code }}{{ request.get_full_path|slice:'6:' }}"
     class="{% if language.code == LANGUAGE_CODE %}selected{% endif %}"
     lang="{{ language.code }}">
      {{ language.name }}
  </a>
{% endfor %}

我在settings.py的语言被指定为:

LANGUAGES = (
    ('en-us', _('English')),
    ('fr-ca', _('French (Canada)')),
)

我以为{{ language.code }}会给我en-usfr-ca。相反,我得到enfr。只是为了确保我检查LANGUAGE_CODE是否有效,它确实按预期返回en-us。它只是get_language_info_list似乎不适合我。

我觉得我在这里错过了一些非常简单的东西。

答案

您要查找的数据位于LANGUAGE_CODE变量中。你已经得到了它:

{% get_current_language as LANGUAGE_CODE %}

它将以lang-region格式返回值,例如:en-us。

这是文档,以防你正在寻找更多这样的变量:https://docs.djangoproject.com/en/2.1/topics/i18n/translation/#get-current-language

另一答案

解决方案结果很简单。即使我多次阅读文档,在Nazkter的回答可能是我需要的那天早上再次阅读,谢谢!

事实证明:

{% get_language_info_list for LANGUAGES as languages %}

不需要。更简单的版本是:

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% for CODE, NAME in LANGUAGES %}

  <a href="/{{ CODE }}{{ request.get_full_path|slice:'6:' }}"
     class="mx-3 {% if CODE == LANGUAGE_CODE %}selected{% endif %}"
     lang="{{ CODE }}">{{ NAME }}</a>
{% endfor %}

请注意,这仅适用于完整语言代码,例如en-us,因为我们使用slice:'6'

以上是关于如何在language.code中包含该区域?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Jenkins作业执行中包含域用户

如何在 asp.net 页面中包含外部 html 文件

如何在 GraphQL 中包含突变请求元数据?

在 Spring Data 存储库中包含域对象安全 @PostFilter 可分页端点

OpenGL:如何裁剪 2D 区域以避免将带有 GlutBitmap 的文本打印出该区域?

如何在 CQL 命令中包含输入参数 - 源代码