summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNozomu Kaneko <nozom.kaneko@gmail.com>2013-02-04 09:03:34 +0900
committerNozomu Kaneko <nozom.kaneko@gmail.com>2013-02-04 09:03:34 +0900
commitf0a89991c3310eb61386a103297f608960bcd76e (patch)
tree9d92ba294d740f4309ed965d2bb51de44d644772
parent2ce5da1c1866e2bc52d97fa2118d82590e302ae3 (diff)
downloadsphinx-f0a89991c3310eb61386a103297f608960bcd76e.tar.gz
make versionmodified translatable
-rw-r--r--sphinx/directives/other.py10
-rw-r--r--tests/roots/test-intl/contents.txt1
-rw-r--r--tests/roots/test-intl/versionchange.po33
-rw-r--r--tests/roots/test-intl/versionchange.txt16
-rw-r--r--tests/test_intl.py33
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'])