diff --git a/CHANGES b/CHANGES index 089c57d93..b8a90deca 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ Features added * #2216: Texinputs makefile improvements. * #2170: Support for Chinese language search index. * #2214: Add sphinx.ext.githubpages to publish the docs on GitHub Pages +* #1030: Make page reference names for latex_show_pagerefs translatable Bugs fixed ---------- diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 775bfe462..96d9e03a6 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -46,6 +46,7 @@ HEADER = r'''%% Generated by Sphinx. %(usepackages)s %(contentsname)s %(numfig_format)s +%(pageautorefname)s %(preamble)s \title{%(title)s} @@ -292,6 +293,7 @@ class LaTeXTranslator(nodes.NodeVisitor): 'transition': '\n\n\\bigskip\\hrule{}\\bigskip\n\n', 'figure_align': 'htbp', 'tocdepth': '', + 'pageautorefname': '', } # sphinx specific document classes @@ -302,6 +304,22 @@ class LaTeXTranslator(nodes.NodeVisitor): self.builder = builder self.body = [] + # flags + self.in_title = 0 + self.in_production_list = 0 + self.in_footnote = 0 + self.in_caption = 0 + self.in_container_literal_block = 0 + self.in_term = 0 + self.first_document = 1 + self.this_is_the_title = 1 + self.literal_whitespace = 0 + self.no_contractions = 0 + self.compact_list = 0 + self.first_param = 0 + self.remember_multirow = {} + self.remember_multirowcol = {} + # sort out some elements papersize = builder.config.latex_paper_size + 'paper' if papersize == 'paper': # e.g. command line "-D latex_paper_size=" @@ -366,6 +384,8 @@ class LaTeXTranslator(nodes.NodeVisitor): if getattr(document.settings, 'contentsname', None): self.elements['contentsname'] = \ self.babel_renewcommand('\\contentsname', document.settings.contentsname) + self.elements['pageautorefname'] = \ + self.babel_defmacro('\\pageautorefname', self.encode(_('page'))) self.elements['numfig_format'] = self.generate_numfig_format(builder) # allow the user to override them all self.elements.update(builder.config.latex_elements) @@ -411,21 +431,6 @@ class LaTeXTranslator(nodes.NodeVisitor): self.next_figure_ids = set() self.next_table_ids = set() self.next_literal_ids = set() - # flags - self.in_title = 0 - self.in_production_list = 0 - self.in_footnote = 0 - self.in_caption = 0 - self.in_container_literal_block = 0 - self.in_term = 0 - self.first_document = 1 - self.this_is_the_title = 1 - self.literal_whitespace = 0 - self.no_contractions = 0 - self.compact_list = 0 - self.first_param = 0 - self.remember_multirow = {} - self.remember_multirowcol = {} def pushbody(self, newbody): self.bodystack.append(self.body) @@ -494,6 +499,16 @@ class LaTeXTranslator(nodes.NodeVisitor): return ('%s\\renewcommand{%s}{%s}%s\n' % (prefix, command, definition, suffix)) + def babel_defmacro(self, name, definition): + if self.elements['babel']: + prefix = '\\addto\\extras%s{' % self.babel.get_language() + suffix = '}' + else: # babel is disabled (mainly for Japanese environment) + prefix = '' + suffix = '' + + return ('%s\\def%s{%s}%s\n' % (prefix, name, definition, suffix)) + def generate_numfig_format(self, builder): ret = [] figure = self.builder.config.numfig_format['figure'].split('%s', 1) diff --git a/tests/test_build_latex.py b/tests/test_build_latex.py index aa443e55e..fdd735244 100644 --- a/tests/test_build_latex.py +++ b/tests/test_build_latex.py @@ -288,6 +288,7 @@ def test_babel_with_no_language_settings(app, status, warning): in result) assert '\\addto\\captionsenglish{\\renewcommand{\\figurename}{Fig. }}\n' in result assert '\\addto\\captionsenglish{\\renewcommand{\\tablename}{Table. }}\n' in result + assert '\\addto\\extrasenglish{\\def\\pageautorefname{page}}\n' in result @with_app(buildername='latex', testroot='latex-babel', @@ -306,6 +307,7 @@ def test_babel_with_language_de(app, status, warning): in result) assert '\\addto\\captionsngerman{\\renewcommand{\\figurename}{Fig. }}\n' in result assert '\\addto\\captionsngerman{\\renewcommand{\\tablename}{Table. }}\n' in result + assert '\\addto\\extrasngerman{\\def\\pageautorefname{page}}\n' in result @with_app(buildername='latex', testroot='latex-babel', @@ -324,6 +326,7 @@ def test_babel_with_language_ru(app, status, warning): in result) assert '\\addto\\captionsrussian{\\renewcommand{\\figurename}{Fig. }}\n' in result assert '\\addto\\captionsrussian{\\renewcommand{\\tablename}{Table. }}\n' in result + assert '\\addto\\extrasrussian{\\def\\pageautorefname{page}}\n' in result @with_app(buildername='latex', testroot='latex-babel', @@ -341,6 +344,7 @@ def test_babel_with_language_ja(app, status, warning): assert '\\renewcommand{\\contentsname}{Table of content}\n' in result assert '\\renewcommand{\\figurename}{Fig. }\n' in result assert '\\renewcommand{\\tablename}{Table. }\n' in result + assert '\\def\\pageautorefname{page}\n' in result @with_app(buildername='latex', testroot='latex-babel', @@ -359,6 +363,7 @@ def test_babel_with_unknown_language(app, status, warning): in result) assert '\\addto\\captionsenglish{\\renewcommand{\\figurename}{Fig. }}\n' in result assert '\\addto\\captionsenglish{\\renewcommand{\\tablename}{Table. }}\n' in result + assert '\\addto\\extrasenglish{\\def\\pageautorefname{page}}\n' in result assert "WARNING: no Babel option known for language 'unknown'" in warning.getvalue()