jquery - Django 国际化与 i18n : choosing language in template using jQuery

标签 jquery django caching internationalization

为了我的 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:它只会重新加载页面,而不会更改语言。

谁能告诉我怎么了?我已经玩了很长时间了,没有找到出路。


编辑 看来这可能是一个缓存问题。在我的点击函数中,我应该清理缓存的页面。但如何呢?或者我应该禁用整个网站的浏览器缓存?我不这么认为...

最佳答案

尝试在处理函数的开头添加一条调试语句(console.log(),甚至一个简单的 alert() 即可),以确保它正在被调用。您是否在 document.ready() 处理程序中添加点击处理程序?

此外,我认为 $.post 函数将执行 AJAX POST,但不会刷新页面,因此您可能根本看不到任何事情发生。尝试使用 Firebug/Chrome 开发者工具检查传出请求以确保。

您可能希望让 click() 处理程序也显式返回一个值(true 表示继续处理点击,false 表示停止)。也许这就是问题的根源:在 Firefox 中,处理程序有时会返回 true,因此链接会被跟踪,而在 Chrome 上,它会返回 false 并执行 POST,但链接未被点击。

关于jquery - Django 国际化与 i18n : choosing language in template using jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3472714/

相关文章:

caching - Tomcat 8 抛出 - org.apache.catalina.webresources.Cache.getResource 无法添加资源

gcc - 将 C 函数对齐到 "odd"地址

c - 什么是 intel 机器中的 VIctim 缓存?我们可以禁用它吗?

javascript - HtmlDivElement 没有方法 'indexOf'

javascript - 如何使用 javascript 删除特定的 div 标签并重置其内容

javascript - 如何使用javascript动态添加jsp页面中的内容?

python - Django AttributeError 'ModelFormOptions' 对象没有属性 'concrete_fields'

python - django-recaptcha 不验证输入

python - 使用 TastyPie 自定义输出 XML(带有属性)?

jquery - 如何从 jQuery 对话框访问发送者对象或按钮?