django admin - get_language 获取的是默认语言,而非活动语言

1 投票
2 回答
509 浏览
提问于 2025-04-30 15:04

我有一个自定义的管理员表单验证的JavaScript代码,这段代码放在一个单独的js文件里。

我想根据语言来加载合适的js文件,也就是说,如果LANGUAGE_CODE'es'(西班牙语),那么js文件的名字应该是myjsfile_es.js

我做了以下操作:

class BlogForm(forms.ModelForm):
   class Media:
       js = ('js/custom_%s.js' % get_language(),)

实际页面的URL是:

http://127.0.0.1:8000/es/admin/blog/blog/add/

但是get_language返回的是'en'(英语),所以我最终加载了错误的js文件custom_en.js,而不是es页面需要的。

en是settings.py中的默认语言。

我该如何在admin.py中获取当前使用的语言呢?

暂无标签

2 个回答

-1

你可以通过 django.utils.translation.get_language() 来获取当前的语言。

查看文档了解更多信息:

https://docs.djangoproject.com/en/1.6/topics/i18n/translation/#using-translations-outside-views-and-templates

1

可能这是因为Django会根据浏览器的设置来获取你的语言。我在我的一个项目中也遇到过同样的问题,后来通过使用那个中间件解决了。

# -*- coding: utf-8 -*-


class IgnoreAcceptLanguageMiddleware(object):
   """
   Ignore Accept-Language HTTP headers

   """

    def process_request(self, request):
        if request.META.has_key('HTTP_ACCEPT_LANGUAGE'):
            del request.META['HTTP_ACCEPT_LANGUAGE']

撰写回答