|
@@ -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
|
|
|
|
|
|
|