Commits

Takayuki Shimizukawa committed a8fa3db

Fix gettext does not extract glossary terms. Closes #1090

Comments (0)

Files changed (5)

 Release 1.2 (in development)
 ============================
 
+* #1090: Fix gettext does not extract glossary terms.
+
 * #1070: Avoid un-pickling issues when running Python 3 and the saved
   environment was created under Python 2.
 

sphinx/domains/std.py

 from sphinx.domains import Domain, ObjType
 from sphinx.directives import ObjectDescription
 from sphinx.util import ws_re
-from sphinx.util.nodes import clean_astext, make_refnode
+from sphinx.util.nodes import clean_astext, make_refnode, set_source_info
 from sphinx.util.compat import Directive
 
 
             # make a single "term" node with all the terms, separated by termsep
             # nodes (remove the dangling trailing separator)
             term = nodes.term('', '', *termnodes[:-1])
+            set_source_info(self, term)
+            term.rawsource = term.astext()
             term['ids'].extend(ids)
             term['names'].extend(ids)
             term += system_messages

tests/roots/test-intl/glossary_terms.po

+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) 2012, foof
+# This file is distributed under the same license as the foo package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: sphinx 1.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-01-29 14:10\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 glossary terms"
+msgstr "I18N WITH GLOSSARY TERMS"
+
+msgid "Some term"
+msgstr "SOME TERM"
+
+msgid "The corresponding glossary"
+msgstr "THE CORRESPONDING GLOSSARY"
+
+msgid "Some other term"
+msgstr "SOME OTHER TERM"
+
+msgid "The corresponding glossary #2"
+msgstr "THE CORRESPONDING GLOSSARY #2"

tests/roots/test-intl/glossary_terms.txt

+:tocdepth: 2
+
+i18n with glossary terms
+========================
+
+.. glossary::
+
+   Some term
+      The corresponding glossary
+
+   Some other term
+      The corresponding glossary #2
+

tests/test_intl.py

 
 
 @with_intl_app(buildername='text')
+def test_i18n_glossary_terms(app):
+    # regression test for #1090
+    app.builder.build(['glossary_terms'])
+    result = (app.outdir / 'glossary_terms.txt').text(encoding='utf-8')
+    expect = (u"\nI18N WITH GLOSSARY TERMS"
+              u"\n************************\n"
+              u"\nSOME TERM"
+              u"\n   THE CORRESPONDING GLOSSARY\n"
+              u"\nSOME OTHER TERM"
+              u"\n   THE CORRESPONDING GLOSSARY #2\n")
+
+    assert result == expect
+
+
+@with_intl_app(buildername='text')
 def test_seealso(app):
     app.builder.build(['seealso'])
     result = (app.outdir / 'seealso.txt').text(encoding='utf-8')
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.