0

我想通過加載數據庫中的值來動態設置我的LANGUAGES變量。Django從數據庫加載LANGUAGES參數

比方說,我有這樣的

COLUMN_NAME 
----------- 
id 
name 
identifier 
active 

一個表,我想定義這些語言:

LANGUAGES = (
    ('en', _('English')), 
    ('de', _('German')), 
    ('fr', _('French')), 
) 

我需要從表中加載所有語言,並在定義它們設置文件。現在我不認爲在設置文件中運行查詢是個好主意。

這種方式還允許我在運行中激活和禁用語言(例如,如果語言文件包含語法錯誤)。

我真的不知道如何開始。我已經搜索了很多谷歌,但我找不到任何人需要這個系統(這可能是,這也是沒有必要的)

對此的任何建議?

回答

1

對於這一點:

這樣也讓我激活和動態禁用語言(例如,如果一個語言文件含有語法錯誤)。

我建議不要這樣做,因爲您不應該在運行時更改設置:https://docs.djangoproject.com/en/1.7/topics/settings/#altering-settings-at-runtime

您可能要考慮的一種策略是在django.middleware.locale.LocaleMiddleware中重寫process_request,以將LANGUAGE_CODE設置爲默認值,例如EN,如果它不是表中的活動語言。

class CustomLocaleMiddleware(LocaleMiddleware): 
    def process_request(self, request): 
     ... 
     lang = languages.objects.get(identifier=translation.get_language()) 
     if lang: 
      if not lang.active: 
       request.LANGUAGE_CODE = 'en' 
      else: 
       request.LANGUAGE_CODE = translation.get_language() 
     else: 
      request.LANGUAGE_CODE = translation.get_language() 

您想以補償像EN-US喜歡的語言代碼,去在

+0

謝謝,這解決了這個問題:)另外,歡迎計算器 – 2014-09-06 07:12:08

+0

謝謝你的歡迎馬克西姆!很高興幫助! – Zach 2014-09-07 23:06:16