diff options
| author | Nozomu Kaneko <nozom.kaneko@gmail.com> | 2013-02-04 09:03:34 +0900 |
|---|---|---|
| committer | Nozomu Kaneko <nozom.kaneko@gmail.com> | 2013-02-04 09:03:34 +0900 |
| commit | f0a89991c3310eb61386a103297f608960bcd76e (patch) | |
| tree | 9d92ba294d740f4309ed965d2bb51de44d644772 | |
| parent | 2ce5da1c1866e2bc52d97fa2118d82590e302ae3 (diff) | |
| download | sphinx-f0a89991c3310eb61386a103297f608960bcd76e.tar.gz | |
make versionmodified translatable
| -rw-r--r-- | sphinx/directives/other.py | 10 | ||||
| -rw-r--r-- | tests/roots/test-intl/contents.txt | 1 | ||||
| -rw-r--r-- | tests/roots/test-intl/versionchange.po | 33 | ||||
| -rw-r--r-- | tests/roots/test-intl/versionchange.txt | 16 | ||||
| -rw-r--r-- | tests/test_intl.py | 33 |
5 files changed, 92 insertions, 1 deletions
diff --git a/sphinx/directives/other.py b/sphinx/directives/other.py index 50188ea4..e8955d16 100644 --- a/sphinx/directives/other.py +++ b/sphinx/directives/other.py @@ -194,12 +194,20 @@ class VersionChange(Directive): if len(self.arguments) == 2: inodes, messages = self.state.inline_text(self.arguments[1], self.lineno+1) - node.append(nodes.paragraph('', '', *inodes)) + para = nodes.paragraph(self.arguments[1], '', *inodes) + set_source_info(self, para) + node.append(para) else: messages = [] if self.content: self.state.nested_parse(self.content, self.content_offset, node) if len(node): + if isinstance(node[0], nodes.paragraph) and node[0].rawsource: + content = nodes.inline(node[0].rawsource, translatable=True) + content.source = node[0].source + content.line = node[0].line + content += node[0].children + node[0].replace_self(nodes.paragraph('', '', content)) node[0].insert(0, nodes.inline('', '%s: ' % text)) else: para = nodes.paragraph('', '', nodes.inline('', '%s.' % text)) diff --git a/tests/roots/test-intl/contents.txt b/tests/roots/test-intl/contents.txt index a3c0e354..b08fc361 100644 --- a/tests/roots/test-intl/contents.txt +++ b/tests/roots/test-intl/contents.txt @@ -19,4 +19,5 @@ CONTENTS role_xref glossary_terms glossary_terms_inconsistency + versionchange docfields diff --git a/tests/roots/test-intl/versionchange.po b/tests/roots/test-intl/versionchange.po new file mode 100644 index 00000000..911d3d9f --- /dev/null +++ b/tests/roots/test-intl/versionchange.po @@ -0,0 +1,33 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2010, Georg Brandl & Team +# This file is distributed under the same license as the Sphinx <Tests> package. +# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: sphinx 1.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2012-12-15 03:17\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "i18n with versionchange" +msgstr "I18N WITH VERSIONCHANGE" + +msgid "This is the *first* paragraph of deprecated." +msgstr "THIS IS THE *FIRST* PARAGRAPH OF DEPRECATED." + +msgid "This is the *second* paragraph of deprecated." +msgstr "THIS IS THE *SECOND* PARAGRAPH OF DEPRECATED." + +msgid "This is the *first* paragraph of versionadded." +msgstr "THIS IS THE *FIRST* PARAGRAPH OF VERSIONADDED." + +msgid "This is the *first* paragraph of versionchanged." +msgstr "THIS IS THE *FIRST* PARAGRAPH OF VERSIONCHANGED." + diff --git a/tests/roots/test-intl/versionchange.txt b/tests/roots/test-intl/versionchange.txt new file mode 100644 index 00000000..4c57e14e --- /dev/null +++ b/tests/roots/test-intl/versionchange.txt @@ -0,0 +1,16 @@ +:tocdepth: 2 + +i18n with versionchange +============================ + +.. deprecated:: 1.0 + This is the *first* paragraph of deprecated. + + This is the *second* paragraph of deprecated. + +.. versionadded:: 1.0 + This is the *first* paragraph of versionadded. + +.. versionchanged:: 1.0 + + This is the *first* paragraph of versionchanged. diff --git a/tests/test_intl.py b/tests/test_intl.py index 77b5a561..4ae430ca 100644 --- a/tests/test_intl.py +++ b/tests/test_intl.py @@ -389,6 +389,39 @@ def test_i18n_index_entries(app): assert re.search(expr, result, re.M) +@with_intl_app(buildername='html', cleanenv=True) +def test_versionchange(app): + app.builder.build(['versionchange']) + result = (app.outdir / 'versionchange.html').text(encoding='utf-8') + + def get_content(result, name): + matched = re.search(r'<div class="%s">\n*(.*?)</div>' % name, + result, re.DOTALL) + if matched: + return matched.group(1) + else: + return '' + + expect1 = ( + u"""<p><span>Deprecated since version 1.0: </span>""" + u"""THIS IS THE <em>FIRST</em> PARAGRAPH OF DEPRECATED.</p>\n""" + u"""<p>THIS IS THE <em>SECOND</em> PARAGRAPH OF DEPRECATED.</p>\n""") + matched_content = get_content(result, "deprecated") + assert expect1 == matched_content + + expect2 = ( + u"""<p><span>New in version 1.0: </span>""" + u"""THIS IS THE <em>FIRST</em> PARAGRAPH OF VERSIONADDED.</p>\n""") + matched_content = get_content(result, "versionadded") + assert expect2 == matched_content + + expect3 = ( + u"""<p><span>Changed in version 1.0: </span>""" + u"""THIS IS THE <em>FIRST</em> PARAGRAPH OF VERSIONCHANGED.</p>\n""") + matched_content = get_content(result, "versionchanged") + assert expect3 == matched_content + + @with_intl_app(buildername='text', cleanenv=True) def test_i18n_docfields(app): app.builder.build(['docfields']) |
