Source

django-modeltranslation / modeltranslation / models.py

Full commit
# -*- coding: utf-8 -*-
import sys

from django.conf import settings
from django.core.exceptions import ImproperlyConfigured
from django.db import models

from modeltranslation.translator import translator

# Every model registered with the modeltranslation.translator.translator
# is patched to contain additional localized versions for every
# field specified in the model's translation options.

# Import the project's global "translation.py" which registers model
# classes and their translation options with the translator object.
# TODO: Rename setting to MODELTRANSLATION_TRANSLATION_REGISTRY.
if getattr(settings, 'TRANSLATION_REGISTRY', False):
    try:
        __import__(settings.TRANSLATION_REGISTRY, {}, {}, [''])
    except ImportError:
        sys.stderr.write("modeltranslation: Can't import module '%s'.\n"
                         "(If the module exists, it's causing an "
                         "ImportError somehow.)\n" %\
                         settings.TRANSLATION_REGISTRY)
        # For some reason ImportErrors raised in translation.py or in modules
        # that are included from there become swallowed. Work around this
        # problem by printing the traceback explicitly.
        import traceback
        traceback.print_exc()

    # After importing all translation modules, all translation classes are
    # registered with the translator.
    if settings.DEBUG:
        try:
            if sys.argv[1] in ('runserver', 'runserver_plus'):
                translated_model_names = ', '.join(
                    t.__name__ for t in translator._registry.keys())
                print('modeltranslation: Registered %d models for '
                      'translation (%s).' % (len(translator._registry),
                                             translated_model_names))
        except IndexError:
            pass
else:
    raise ImproperlyConfigured("You haven't set the TRANSLATION_REGISTRY "
                               "setting yet.")