Django从数据库加载LANGUAGES参数

问题描述:

我想通过加载数据库中的值来动态设置我的LANGUAGES变量。Django从数据库加载LANGUAGES参数

比方说,我有这样的

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

一个表,我想定义这些语言:

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

我需要从表中加载所有语言,并在定义它们设置文件。现在我不认为在设置文件中运行查询是个好主意。

这种方式还允许我在运行中激活和禁用语言(例如,如果语言文件包含语法错误)。

我真的不知道如何开始。我已经搜索了很多谷歌,但我找不到任何人需要这个系统(这可能是,这也是没有必要的)

对此的任何建议?

对于这一点:

这样也让我激活和动态禁用语言(例如,如果一个语言文件含有语法错误)。

我建议不要这样做,因为您不应该在运行时更改设置: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