2014-10-30 68 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