diff --git a/jinja2/ext.py b/jinja2/ext.py
index c35a9c2..5d2251d 100644
--- a/jinja2/ext.py
+++ b/jinja2/ext.py
@@ -15,7 +15,7 @@
 from jinja2.environment import get_spontaneous_environment
 from jinja2.runtime import Undefined, concat
 from jinja2.exceptions import TemplateAssertionError, TemplateSyntaxError
-from jinja2.utils import import_string, Markup
+from jinja2.utils import contextfunction, import_string, Markup
 
 
 # the only real useful gettext functions for a Jinja template.  Note
@@ -74,14 +74,14 @@
         )
 
 
-class TransExtension(Extension):
+class InternationalizationExtension(Extension):
     """This extension adds gettext support to Jinja."""
     tags = set(['trans'])
 
     def __init__(self, environment):
         Extension.__init__(self, environment)
         environment.globals.update({
-            '_':        lambda x: x,
+            '_':        contextfunction(lambda c, x: c['gettext'](x)),
             'gettext':  lambda x: x,
             'ngettext': lambda s, p, n: (s, p)[n != 1]
         })
@@ -284,11 +284,11 @@
         if not extension:
             continue
         extension = import_string(extension)
-        if extension is TransExtension:
+        if extension is InternationalizationExtension:
             have_trans_extension = True
         extensions.append(extension)
     if not have_trans_extension:
-        extensions.append(TransExtension)
+        extensions.append(InternationalizationExtension)
 
     environment = get_spontaneous_environment(
         options.get('block_start_string', '{%'),
@@ -310,3 +310,8 @@
     node = environment.parse(fileobj.read().decode(encoding))
     for lineno, func, message in extract_from_ast(node, keywords):
         yield lineno, func, message, []
+
+
+#: nicer import names
+i18n = InternationalizationExtension
+cache = CacheExtension
