为了国际化我的 Django 项目,我使用 Django 的 i18n 功能,我非常喜欢它。
在模板中设置语言,不要像这个例子一样使用表单:
<form action="{{site_url}}i18n/setlang/" method="post">
<input name="next" type="hidden" value="" />
<select name="language">
{% for language in languages %}
<option value="{{language.0}}">{{language.1}}</option>
{% endfor %}
</select>
<input type="submit" value="Ok" />
</form>
我想使用简单的纯文本链接,就像这样:
{% for language in languages %}
{% ifnotequal language.0 lang %}
<a href="{{site_url}}i18n/setlang/" >{{language.1}}</a>{% else %}{{language.1}}
{% endifnotequal %}
...
{% endfor %}
为了让之前的模板片段发挥作用,我创建了以下jQuery函数:
var languageLink = $('#language-choser > a');
languageLink.click(function(e){
var languageURL = languageLink.attr('href');
var languageNow = languageLink.text();
var lang = (languageNow=='English') ? 'en' : 'es';
$.post(languageURL, {next: "", language:lang});
});
这个函数在Firefox中可以工作,但在Chrome中却不能切换语言,并且只会简单地重新加载页面。有人能告诉我问题出在哪里吗?我已经尝试了很长时间,但没有找到解决办法。
编辑:看起来可能是缓存问题。在我的点击函数中,我应该清除缓存的页面。但如何操作呢?还是应该禁用整个站点的浏览器缓存吗?我觉得不是这样…