some translation stuff
[wolnelektury.git] / apps / modeltranslation / models.py
diff --git a/apps/modeltranslation/models.py b/apps/modeltranslation/models.py
new file mode 100644 (file)
index 0000000..739c897
--- /dev/null
@@ -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.")