0

Я хочу динамически изменять динамические переменные LANGUAGES, загружая значения из базы данных.Django загружает параметр LANGUAGES из базы данных

Скажем, у меня есть таблица вроде этого

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

и я хотел бы определить эти языки:

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

я должен был бы загрузить все языки из таблицы и определить их в файл настроек. теперь я не думаю, что выполнение запроса в файле настроек является хорошей идеей.

Этот способ также позволяет мне активировать и отключать языки «на лету» (если, например, языковой файл содержит грамматические ошибки).

Я действительно не знал бы, как начать с этого. Я много искал в google, но я не могу найти никого, кто бы нуждался в этой системе (возможно, это тоже не нужно)

любые рекомендации по этому вопросу?

ответ

1

С этой точки:

Этот способ также позволяет мне активировать и отключать языки на лету (если, например, языковой файл содержит грамматические ошибки).

Я бы рекомендовал не делать этого, потому что вы не должны изменять настройки во время выполнения: https://docs.djangoproject.com/en/1.7/topics/settings/#altering-settings-at-runtime.

Одна стратегия, которую вы можете рассмотреть, является переопределением process_request в django.middleware.locale.LocaleMiddleware, чтобы установить 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() 

Вы хотели бы, чтобы компенсировать предпочтенные коды языка, как ан-нас-де-в

+0

Спасибо, это решить это :) Кроме того, добро пожаловать в StackOverflow –

+0

Спасибо за прием Максим! Рад, что это помогло! – Zach

Смежные вопросы