django - translation.activate() - 无法全局激活

2 投票
1 回答
888 浏览
提问于 2025-04-20 11:18

我正在尝试更改页面的语言。我有一个<select>下拉框,里面有不同的语言选项,用户可以选择语言,这样就会触发一个地址改变,具体代码是:

var lang = $(this).val();
var currentpage = String(window.location.href);
window.location.href = 'changelang/?lang=' + lang + '&back=' + currentpage;

在urls.py文件中,我做了如下设置:

url(r'^changelang/$', 'changelanguage', name='changelanguage'),

在视图函数中,我也进行了相应的处理:

def changelanguage(request):
   lang = request.GET.get('lang')
   back = request.GET.get('back')
   translation.activate(lang)
   return HttpResponseRedirect(back)

我原以为这样可以让所有页面都更改语言,但实际上并没有改变任何语言。

我通过在我的首页函数中进行测试:

def startpage(request):
   translation.activate('en')
   return render(request, 'index.html', {})

确实有变化,但只是在首页有效。

那么,如何才能在一个视图中让所有页面都能激活语言呢?

1 个回答

0

我之前不知道Django已经为我考虑过了:

我通过使用Django自带的 set_language() 函数解决了这个问题,具体可以查看 这里

其实挺简单的!

撰写回答