X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/d467f1fa349730919e9fe906287e63563c888063..891b9e3b7ecaedc9ac32bc941400a267c77482a0:/apps/modeltranslation/models.py diff --git a/apps/modeltranslation/models.py b/apps/modeltranslation/models.py new file mode 100644 index 000000000..739c89706 --- /dev/null +++ b/apps/modeltranslation/models.py @@ -0,0 +1,44 @@ +# -*- 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. +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.")