48 lines
1.1 KiB
Python
48 lines
1.1 KiB
Python
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()
|