diff --git a/Doc/lib/libgettext.tex b/Doc/lib/libgettext.tex
index 593d964..e41f8bf 100644
--- a/Doc/lib/libgettext.tex
+++ b/Doc/lib/libgettext.tex
@@ -219,13 +219,16 @@
 \end{funcdesc}
 
 \begin{funcdesc}{install}{domain\optional{, localedir\optional{, unicode
-			  \optional{, codeset}}}}
+			  \optional{, codeset\optional{, names}}}}}
 This installs the function \function{_} in Python's builtin namespace,
 based on \var{domain}, \var{localedir}, and \var{codeset} which are
 passed to the function \function{translation()}.  The \var{unicode}
 flag is passed to the resulting translation object's \method{install}
 method.
 
+For the \var{names} parameter, please see the description of the
+translation object's \method{install} method.
+
 As seen below, you usually mark the strings in your application that are
 candidates for translation, by wrapping them in a call to the
 \function{_()} function, like this:
@@ -239,6 +242,7 @@
 of your application.  
 
 \versionchanged[Added the \var{codeset} parameter]{2.4}
+\versionchanged[Added the \var{names} parameter]{2.5}
 \end{funcdesc}
 
 \subsubsection{The \class{NullTranslations} class}
@@ -332,12 +336,21 @@
 \versionadded{2.4}
 \end{methoddesc}
 
-\begin{methoddesc}[NullTranslations]{install}{\optional{unicode}}
+\begin{methoddesc}[NullTranslations]{install}{\optional{unicode
+                                              \optional{, names}}}
 If the \var{unicode} flag is false, this method installs
 \method{self.gettext()} into the built-in namespace, binding it to
 \samp{_}.  If \var{unicode} is true, it binds \method{self.ugettext()}
 instead.  By default, \var{unicode} is false.
 
+If the \var{names} parameter is given, it must be a sequence containing
+the names of functions you want to install in the builtin namespace in
+addition to \function{_()}. Supported names are \code{'gettext'} (bound
+to \method{self.gettext()} or \method{self.ugettext()} according to the
+\var{unicode} flag), \code{'ngettext'} (bound to \method{self.ngettext()}
+or \method{self.ungettext()} according to the \var{unicode} flag),
+\code{'lgettext'} and \code{'lngettext'}.
+
 Note that this is only one way, albeit the most convenient way, to
 make the \function{_} function available to your application.  Because it
 affects the entire application globally, and specifically the built-in
@@ -353,6 +366,8 @@
 
 This puts \function{_} only in the module's global namespace and so
 only affects calls within this module.
+
+\versionchanged[Added the \var{names} parameter]{2.5}
 \end{methoddesc}
 
 \subsubsection{The \class{GNUTranslations} class}
diff --git a/Lib/gettext.py b/Lib/gettext.py
index a20c6f1..90ebc51 100644
--- a/Lib/gettext.py
+++ b/Lib/gettext.py
@@ -239,9 +239,19 @@
     def set_output_charset(self, charset):
         self._output_charset = charset
 
-    def install(self, unicode=False):
+    def install(self, unicode=False, names=None):
         import __builtin__
         __builtin__.__dict__['_'] = unicode and self.ugettext or self.gettext
+        if hasattr(names, "__contains__"):
+            if "gettext" in names:
+                __builtin__.__dict__['gettext'] = __builtin__.__dict__['_']
+            if "ngettext" in names:
+                __builtin__.__dict__['ngettext'] = (unicode and self.ungettext
+                                                             or self.ngettext)
+            if "lgettext" in names:
+                __builtin__.__dict__['lgettext'] = self.lgettext
+            if "lngettext" in names:
+                __builtin__.__dict__['lngettext'] = self.lngettext
 
 
 class GNUTranslations(NullTranslations):
@@ -479,9 +489,9 @@
     return result
 
 
-def install(domain, localedir=None, unicode=False, codeset=None):
+def install(domain, localedir=None, unicode=False, codeset=None, names=None):
     t = translation(domain, localedir, fallback=True, codeset=codeset)
-    t.install(unicode)
+    t.install(unicode, names)
 
 
 
diff --git a/Lib/test/test_gettext.py b/Lib/test/test_gettext.py
index 517dfc0..76253de 100644
--- a/Lib/test/test_gettext.py
+++ b/Lib/test/test_gettext.py
@@ -145,6 +145,14 @@
         # Try unicode return type
         t.install(unicode=True)
         eq(_('mullusk'), 'bacon')
+        # Test installation of other methods
+        import __builtin__
+        t.install(unicode=True, names=["gettext", "lgettext"])
+        eq(_, t.ugettext)
+        eq(__builtin__.gettext, t.ugettext)
+        eq(lgettext, t.lgettext)
+        del __builtin__.gettext
+        del __builtin__.lgettext
 
 
 class GettextTestCase2(GettextBaseTest):
diff --git a/Misc/NEWS b/Misc/NEWS
index 47bb57a..95d13ba 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -366,6 +366,9 @@
 Library
 -------
 
+- Patch #1349274: gettext.install() now optionally installs additional
+  translation functions other than _() in the builtin namespace.
+
 - Patch #1337756: fileinput now accepts Unicode filenames.
 
 - Patch #1373643: The chunk module can now read chunks larger than
