Browse files

Fixed #8033 -- Explained app registry error during translation setup

Thanks Tim Graham and Aymeric Augustin for the review.
  • Loading branch information...
1 parent 21c496e commit 9618d68b345fe69c787f8426b07e920e647e05f3 @claudep claudep committed Jun 21, 2014
4 django/apps/
@@ -4,7 +4,7 @@
import threading
import warnings
-from django.core.exceptions import ImproperlyConfigured
+from django.core.exceptions import AppRegistryNotReady, ImproperlyConfigured
from django.utils import lru_cache
from django.utils.deprecation import RemovedInDjango19Warning
from django.utils._os import upath
@@ -116,7 +116,7 @@ def check_ready(self):
Raises an exception if the registry isn't ready.
if not self.ready:
- raise RuntimeError("App registry isn't ready yet.")
+ raise AppRegistryNotReady()
def get_app_configs(self):
5 django/core/
@@ -12,6 +12,11 @@ class DjangoRuntimeWarning(RuntimeWarning):
+class AppRegistryNotReady(Exception):
+ """The django.apps registry is not populated yet"""
+ pass
class ObjectDoesNotExist(Exception):
"""The requested object does not exist"""
silent_variable_failure = True
10 django/utils/translation/
@@ -11,6 +11,7 @@
from django.apps import apps
from django.conf import settings
+from django.core.exceptions import AppRegistryNotReady
from django.dispatch import receiver
from django.test.signals import setting_changed
from django.utils.deprecation import RemovedInDjango19Warning
@@ -160,7 +161,14 @@ def _init_translation_catalog(self):
def _add_installed_apps_translations(self):
"""Merges translations from each installed app."""
- for app_config in reversed(list(apps.get_app_configs())):
+ try:
+ app_configs = reversed(list(apps.get_app_configs()))
+ except AppRegistryNotReady:
+ raise 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.")
+ for app_config in app_configs:
localedir = os.path.join(app_config.path, 'locale')
translation = self._new_gnu_trans(localedir)
6 docs/ref/applications.txt
@@ -382,9 +382,9 @@ Troubleshooting
Here are some common problems that you may encounter during initialization:
-* ``RuntimeError: App registry isn't ready yet.`` This happens when importing
- an application configuration or a models module triggers code that depends
- on the app registry.
+* ``AppRegistryNotReady`` This happens when importing an application
+ configuration or a models module triggers code that depends on the app
+ registry.
For example, :func:`~django.utils.translation.ugettext()` uses the app
registry to look up translation catalogs in applications. To translate at
2 docs/releases/1.7.txt
@@ -934,7 +934,7 @@ script with::
>>> import django
>>> django.setup()
-Otherwise, you will hit ``RuntimeError: App registry isn't ready yet.``
+Otherwise, you will hit an ``AppRegistryNotReady`` exception.
App registry consistency

0 comments on commit 9618d68

Please sign in to comment.