# HG changeset patch
# User Georg Brandl <georg@python.org>
# Date 1351590528 -3600
# Node ID ffb145b7884fc926d6a68f4aaeede1d4964f727c
# Parent  2c107bc997e8817c451ba24089766eefb6e60fc3
Closes #998: fix manpage writer in expectation of docutils 0.10 API change

diff --git a/sphinx/writers/manpage.py b/sphinx/writers/manpage.py
--- a/sphinx/writers/manpage.py
+++ b/sphinx/writers/manpage.py
@@ -72,6 +72,11 @@
         # since self.append_header() is never called, need to do this here
         self.body.append(MACRO_DEF)
 
+        # Overwrite admonition label translations with our own
+        for label, translation in admonitionlabels.items():
+            self.language.labels[label] = self.deunicode(translation)
+
+
     # overwritten -- added quotes around all .TH arguments
     def header(self):
         tmpl = (".TH \"%(title_upper)s\" \"%(manual_section)s\""
@@ -193,12 +198,6 @@
     def depart_seealso(self, node):
         self.depart_admonition(node)
 
-    # overwritten -- use our own label translations
-    def visit_admonition(self, node, name=None):
-        if name:
-            self.body.append('.IP %s\n' %
-                             self.deunicode(admonitionlabels.get(name, name)))
-
     def visit_productionlist(self, node):
         self.ensure_eol()
         names = []
