如何将该地区包括在语言代码?

2024-04-27 04:39:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为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似乎对我不起作用。你知道吗

我觉得我错过了一些非常简单的东西。你知道吗


Tags: info语言forgetascodefrlanguage
2条回答

您要查找的数据位于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

结果证明,解决办法很简单。尽管我读了好几遍文档,但在纳兹克特的回答之后的第二天早上再看一遍可能是我所需要的,谢谢!你知道吗

结果发现:

{% 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'。你知道吗

相关问题 更多 >