2014-10-30 98 views
1

我有一个自定义的管理表单验证js代码在单独的js文件中。django admin - get_language获取默认语言,不活动一个

我想呈现相应的js文件,这意味着如果LANGUAGE_CODE'es',js文件应当与myjsfile_es.js

我到底:

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

实际的网址是:

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

get_language'en'所以我最终得到了错误的js文件custom_en.jses页面,

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

我该如何在admin.py中获得活动语言?

回答

-1

你可以从django.utils.translation.get_language()

检查文档获取当前语言:

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

+0

请阅读我的问题,这恰恰是不适合我 – doniyor 2014-10-30 13:38:47

+0

工作这是Django的怪异行为。还有两个关于get_language的附加方法。可能是他们帮助'get_language_from_path','get_language_from_request', – Naveed 2014-10-30 13:43:34

+0

是的,但其他两个方法需要一个路径或请求对象,我不知道如何进入admin.py – doniyor 2014-10-30 13:45:12

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'] 
+0

为什么你要删除''HTTP_ACCEPT_LANGUAGE'',我需要它在其他地方,我只需要访问请求对象在admin.py – doniyor 2014-10-30 14:35:28

+1

对不起,这是另一个问题,误解你的问题。有很多你的问题的答案:http://stackoverflow.com/questions/2683689/django-access-request-object-from-admins-form-clean – kpacn 2014-10-30 14:56:07

+0

哦,真棒,谢谢你:) – doniyor 2014-10-30 15:11:13