Browse Source

Save plugin translations in translations cache

Peter Justin 7 years ago
parent
commit
02422b9048
2 changed files with 29 additions and 10 deletions
  1. 28 10
      flaskbb/utils/translations.py
  2. 1 0
      setup.py

+ 28 - 10
flaskbb/utils/translations.py

@@ -16,6 +16,7 @@ import babel
 from flask import current_app
 
 from flask_babelplus import Domain, get_locale
+from flask_babelplus.utils import get_state
 
 
 logger = logging.getLogger(__name__)
@@ -37,19 +38,36 @@ class FlaskBBDomain(Domain):
         object if used outside of the request or if a translation cannot be
         found.
         """
-        translations = super(FlaskBBDomain, self).get_translations()
+        state = get_state(silent=True)
+
+        if state is None:
+            return babel.support.NullTranslations()
+
         locale = get_locale()
-        # now load and add the plugin translations
-        for plugin in self.plugin_translations:
-            logger.debug("Loading plugin translation from: {}".format(plugin))
-            plugin_translation = babel.support.Translations.load(
-                dirname=plugin,
-                locales=locale,
-                domain="messages"
+        cache = self.get_translations_cache()
+        translations = cache.get(str(locale))
+
+        # load them into the cache
+        if translations is None:
+            dirname = self.get_translations_path(state.app)
+            translations = babel.support.Translations.load(
+                dirname,
+                locale,
+                domain=self.domain
             )
-            translations.add(plugin_translation)
+            # now load and add the plugin translations
+            for plugin in self.plugin_translations:
+                logger.debug("Loading plugin translation from: "
+                             "{}".format(plugin))
+                plugin_translation = babel.support.Translations.load(
+                    dirname=plugin,
+                    locales=locale,
+                    domain="messages"
+                )
+                translations.add(plugin_translation)
+
+            self.cache[str(locale)] = translations
 
-        self.cache[str(locale)] = translations
         return translations
 
 

+ 1 - 0
setup.py

@@ -9,6 +9,7 @@ Quickstart
 ----------
 
 .. code:: bash
+
     # Install the FlaskBB package and it's dependencies
     $ pip install -e .