aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Allan Webber <cwebber@dustycloud.org>2011-08-10 10:48:02 -0500
committerChristopher Allan Webber <cwebber@dustycloud.org>2011-08-10 10:48:02 -0500
commit1c266dc328cd6fb1e0275d104a6e8fbceeb187fc (patch)
tree80ae2f549589294e6084b1d5633c4d99fd921980
parent7bc2d2e313336759d77e4dbf9f4a6ced711a5bf1 (diff)
downloadmediagoblin-1c266dc328cd6fb1e0275d104a6e8fbceeb187fc.tar.lz
mediagoblin-1c266dc328cd6fb1e0275d104a6e8fbceeb187fc.tar.xz
mediagoblin-1c266dc328cd6fb1e0275d104a6e8fbceeb187fc.zip
Utilities to lazily translate strings and also fake a translation for extraction
-rw-r--r--mediagoblin/util.py48
1 files changed, 47 insertions, 1 deletions
diff --git a/mediagoblin/util.py b/mediagoblin/util.py
index ed7be841..b46c65d9 100644
--- a/mediagoblin/util.py
+++ b/mediagoblin/util.py
@@ -28,11 +28,13 @@ import copy
import wtforms
from babel.localedata import exists
+from babel.support import LazyProxy
import jinja2
import translitcodec
from webob import Response, exc
from lxml.html.clean import Cleaner
import markdown
+from wtforms.form import Form
from mediagoblin import mg_globals
from mediagoblin import messages
@@ -94,7 +96,7 @@ def get_jinja_env(template_loader, locale):
template_env.install_gettext_callables(
mg_globals.translations.ugettext,
- mg_globals.translations.ngettext)
+ mg_globals.translations.ungettext)
# All templates will know how to ...
# ... fetch all waiting messages and remove them from the queue
@@ -494,6 +496,50 @@ def pass_to_ugettext(*args, **kwargs):
*args, **kwargs)
+def lazy_pass_to_ugettext(*args, **kwargs):
+ """
+ Lazily pass to ugettext.
+
+ This is useful if you have to define a translation on a module
+ level but you need it to not translate until the time that it's
+ used as a string.
+ """
+ return LazyProxy(pass_to_ugettext, *args, **kwargs)
+
+
+def pass_to_ngettext(*args, **kwargs):
+ """
+ Pass a translation on to the appropriate ngettext method.
+
+ The reason we can't have a global ngettext method is because
+ mg_globals gets swapped out by the application per-request.
+ """
+ return mg_globals.translations.ngettext(
+ *args, **kwargs)
+
+
+def lazy_pass_to_ngettext(*args, **kwargs):
+ """
+ Lazily pass to ngettext.
+
+ This is useful if you have to define a translation on a module
+ level but you need it to not translate until the time that it's
+ used as a string.
+ """
+ return LazyProxy(pass_to_ngettext, *args, **kwargs)
+
+
+def fake_ugettext_passthrough(string):
+ """
+ Fake a ugettext call for extraction's sake ;)
+
+ In wtforms there's a separate way to define a method to translate
+ things... so we just need to mark up the text so that it can be
+ extracted, not so that it's actually run through gettext.
+ """
+ return string
+
+
PAGINATION_DEFAULT_PER_PAGE = 30
class Pagination(object):