1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from babel import support
- from flask import current_app
- from flask import request
- from flask_babel import get_locale
- from wtforms.i18n import messages_path
- __all__ = ("Translations", "translations")
- def _get_translations():
- """Returns the correct gettext translations.
- Copy from flask-babel with some modifications.
- """
- if not request:
- return None
- # babel should be in extensions for get_locale
- if "babel" not in current_app.extensions:
- return None
- translations = getattr(request, "wtforms_translations", None)
- if translations is None:
- translations = support.Translations.load(
- messages_path(), [get_locale()], domain="wtforms"
- )
- request.wtforms_translations = translations
- return translations
- class Translations:
- def gettext(self, string):
- t = _get_translations()
- return string if t is None else t.ugettext(string)
- def ngettext(self, singular, plural, n):
- t = _get_translations()
- if t is None:
- return singular if n == 1 else plural
- return t.ungettext(singular, plural, n)
- translations = Translations()
|