Python django i18n-获取不同语言的当前路径
我正在使用Django开发一个i18n站点,提供多种语言。我想在base.html中创建一个模式,以便用户可以在任何地方切换语言 我设法做了这样的事Python django i18n-获取不同语言的当前路径,python,django,django-templates,django-i18n,django-template-filters,Python,Django,Django Templates,Django I18n,Django Template Filters,我正在使用Django开发一个i18n站点,提供多种语言。我想在base.html中创建一个模式,以便用户可以在任何地方切换语言 我设法做了这样的事 <div class="modal-body"> {% get_available_languages as languages %} {% for lang_code, lang_name in languages %} {% language lang_code %} <a href="
<div class="modal-body">
{% get_available_languages as languages %}
{% for lang_code, lang_name in languages %}
{% language lang_code %}
<a href="{% url 'home' %}" class="btn lang-btn {% ifequal request.LANGUAGE_CODE lang_code %}selected{% endifequal %}">{{lang_code|lang_name}}</a>
{% endlanguage %}
{% endfor %}
</div>
它不包括i18n url模式
有没有办法用request.path来定向当前url
目标
在/foo/
中时:/ja/foo/
/en/foo/
/fr/foo/
在/bar/
中时:/ja/bar/
/en/bar/
/fr/bar/
提前谢谢 此问题中讨论了此主题: 在我的项目中,我使用这个简单的模板标记(取自),它以另一种语言返回当前视图的URL
foo/templatetags/i18n_url.py
:
from django import template
from django.urls import translate_url
register = template.Library()
@register.simple_tag(takes_context=True)
def change_lang(context, lang: str, *args, **kwargs):
path = context['request'].path
return translate_url(path, lang)
{% load i18n_urls %}
<ul>
<li>
<a href="{% change_lang 'en' %}">EN</a>
</li>
<li>
<a href="{% change_lang 'cs' %}">CS</a>
</li>
<li>
<a href="{% change_lang 'de' %}">DE</a>
</li>
</ul>
some_template.html
:
from django import template
from django.urls import translate_url
register = template.Library()
@register.simple_tag(takes_context=True)
def change_lang(context, lang: str, *args, **kwargs):
path = context['request'].path
return translate_url(path, lang)
{% load i18n_urls %}
<ul>
<li>
<a href="{% change_lang 'en' %}">EN</a>
</li>
<li>
<a href="{% change_lang 'cs' %}">CS</a>
</li>
<li>
<a href="{% change_lang 'de' %}">DE</a>
</li>
</ul>
{%load i18n_url%}
-
-
-
请注意,
translate\u url
功能未记录在Django官方文档中。以下是此函数的源代码:。此问题将讨论此主题:
在我的项目中,我使用这个简单的模板标记(取自),它以另一种语言返回当前视图的URL
foo/templatetags/i18n_url.py
:
from django import template
from django.urls import translate_url
register = template.Library()
@register.simple_tag(takes_context=True)
def change_lang(context, lang: str, *args, **kwargs):
path = context['request'].path
return translate_url(path, lang)
{% load i18n_urls %}
<ul>
<li>
<a href="{% change_lang 'en' %}">EN</a>
</li>
<li>
<a href="{% change_lang 'cs' %}">CS</a>
</li>
<li>
<a href="{% change_lang 'de' %}">DE</a>
</li>
</ul>
some_template.html
:
from django import template
from django.urls import translate_url
register = template.Library()
@register.simple_tag(takes_context=True)
def change_lang(context, lang: str, *args, **kwargs):
path = context['request'].path
return translate_url(path, lang)
{% load i18n_urls %}
<ul>
<li>
<a href="{% change_lang 'en' %}">EN</a>
</li>
<li>
<a href="{% change_lang 'cs' %}">CS</a>
</li>
<li>
<a href="{% change_lang 'de' %}">DE</a>
</li>
</ul>
{%load i18n_url%}
-
-
-
请注意,
translate\u url
功能未记录在Django官方文档中。以下是此函数的源代码:。我使用了您的代码并最终实现了它。当我清除{%language%}
模板标记并只调整您的代码片段时,它就起作用了。谢谢我用了你的代码,终于成功了。当我清除{%language%}
模板标记并只调整您的代码片段时,它就起作用了。谢谢