summaryrefslogtreecommitdiff
path: root/sphinx
diff options
context:
space:
mode:
authorkou <kou@cozmixng.org>2011-05-08 17:48:38 +0900
committerkou <kou@cozmixng.org>2011-05-08 17:48:38 +0900
commit08d4a098ae836eb93e230acdbf84b46580f0e980 (patch)
tree74b6580fecfb1753cf8fc10c636b2d04c55640b8 /sphinx
parentcb83c6d3b626b81ee77a0dfe48dc41f6202e8409 (diff)
downloadsphinx-08d4a098ae836eb93e230acdbf84b46580f0e980.tar.gz
[i18n] support reference line.
From "3 The Format of PO Files" at http://www.gnu.org/s/hello/manual/gettext/PO-Files.html :: Comment lines starting with #: contain references to the program's source code. The reference comment is useful to jump to the source position. GNU gettext tools support the reference comment. e.g.: po-mode.el binds "s" key to "po-cycle-source-reference" that opens a source position in a new buffer.
Diffstat (limited to 'sphinx')
-rw-r--r--sphinx/builders/gettext.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py
index 732b7af6..f030750e 100644
--- a/sphinx/builders/gettext.py
+++ b/sphinx/builders/gettext.py
@@ -69,7 +69,10 @@ class I18nBuilder(Builder):
for node, msg in extract_messages(doctree):
if not msg in catalog:
catalog[msg] = []
- catalog[msg].append(node.uid)
+ if node.source and node.line:
+ position = {"source": node.source,
+ "line": node.line}
+ catalog[msg].append(position)
class MessageCatalogBuilder(I18nBuilder):
@@ -95,12 +98,14 @@ class MessageCatalogBuilder(I18nBuilder):
pofile = open(pofn, 'w', encoding='utf-8')
try:
pofile.write(POHEADER % data)
- for message, uids in messages.iteritems():
+ for message, positions in messages.iteritems():
# message contains *one* line of text ready for translation
message = message.replace(u'\\', ur'\\'). \
replace(u'"', ur'\"')
- for uid in uids:
- pofile.write(u'# %s\n' % uid)
+ for position in positions:
+ source = path.relpath(position["source"], self.outdir)
+ line = position["line"]
+ pofile.write(u'#: %s:%d\n' % (source, line))
pofile.write(u'msgid "%s"\nmsgstr ""\n\n' % message)
finally:
pofile.close()