Python Django开关语言,具有i18n模式和普通url_模式
我必须为一个应用程序做切换语言,这个应用程序有一些i18n模式的url,比如所有我们想用前缀翻译的页面,以便有好的SEO,以及其他我们不想在url中有前缀的页面 所以我把这两种模式分开,直到一切都好了,当我在做表单来处理switch语言时,我只面临以下问题: 这是我的表格:Python Django开关语言,具有i18n模式和普通url_模式,python,django,python-2.7,internationalization,django-i18n,Python,Django,Python 2.7,Internationalization,Django I18n,我必须为一个应用程序做切换语言,这个应用程序有一些i18n模式的url,比如所有我们想用前缀翻译的页面,以便有好的SEO,以及其他我们不想在url中有前缀的页面 所以我把这两种模式分开,直到一切都好了,当我在做表单来处理switch语言时,我只面临以下问题: 这是我的表格: <form action="{% url 'set_language' %}" method="POST" class="langform" style="display:none;"> {% csrf_toke
<form action="{% url 'set_language' %}" method="POST" class="langform" style="display:none;">
{% csrf_token %}
<input name="next" type="hidden" value="{{ request.get_full_path|strip_lang }}" />
<input name="language" id="language" type="hidden" value="" />
</form>
此筛选器的目标是监视url是否具有语言前缀。如果是,则将其删除,以便在下一个值中仅包含不带前缀的url
这个过滤器的输出是这样的:如果我们在/fr/pages/default,它将是/pages/default/
我点击了切换语言,但没有任何效果。它仍然是同一种语言。所以我删除了一条斜线,但它是404,因为它不是正确的路径
我能做些什么来管理我拥有的两种URL??一个有URL前缀,一个没有
在某些情况下,这种语言很容易被激活
提前感谢 好的,所以我设法让它工作了,我只需要在我的链接中添加{%language lang_code%} 现在我有了我的URL,它正在使用一个通用的下一个值
<ul class="lang-switch">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
{% language lang_code %}
<li><a href="#" rel="{{ language.code }}">{{ language.code|upper }}</a></li>
{% endlanguage %}
{% endfor %}
</ul>
对我有用
<ul class="lang-switch">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
{% language lang_code %}
<li><a href="#" rel="{{ language.code }}">{{ language.code|upper }}</a></li>
{% endlanguage %}
{% endfor %}
</ul>
$('.lang-switch li a').click(function (e) {
e.preventDefault;
var lang = $(this).attr('rel');
$('.langform #language').val(lang);
$('.langform').submit();
});
@register.filter(name="strip_lang")
def strip_lang(value):
lang = get_language()
return value.replace('/{0}/'.format(lang), '/')