Hi Andreas,
On 12/03/2014 01:34 PM, Andreas Kuhne wrote:
> I am trying to migrate our current website to django 1.7.
>
> Currently we are using a plugin called django-dbgettext to get parts of our
> database translated (we are running in 10 different languages). The problem
> is that django-dbgettext starts by going through all of the models and does
> this before the translation framework is running. So I get an exception
> during startup that says:
> "django.core.exceptions.AppRegistryNotReady: The translation infrastructure
> cannot be initialized before the apps registry is ready. Check that you
> don't make non-lazy gettext calls at import time."
>
> The problem seems to be that the classes are loaded before the models are
> correctly loaded and the translation framework is running. All of the
> classes use ugettext_lazy, but the stack trace includes ugettext.
>
> I want to rewrite the django-dbgettext plugin so that it goes through the
> code AFTER the models are correctly loaded. I don't know how to do this
> however. Is there anyway of running code after django is fully initialized?
Indeed there is! See
https://docs.djangoproject.com/en/dev/ref/applications/#django.apps.AppConfig.ready
> Django admin should do the same thing, it also has a autodiscover()
> function and I was wondering why this doesn't happen with django admin?
> Could this be a good place to start looking for a solution?
Yes, admin.autodiscover now runs in the admin's AppConfig.ready() in
Django 1.7, so that would have been a good place to start looking :-)
Carl