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喜欢的语言代码,去在
谢谢,这解决了这个问题:)另外,欢迎计算器 – 2014-09-06 07:12:08
谢谢你的欢迎马克西姆!很高兴帮助! – Zach 2014-09-07 23:06:16