diff options
| author | kou <kou@cozmixng.org> | 2011-05-08 17:48:38 +0900 |
|---|---|---|
| committer | kou <kou@cozmixng.org> | 2011-05-08 17:48:38 +0900 |
| commit | 08d4a098ae836eb93e230acdbf84b46580f0e980 (patch) | |
| tree | 74b6580fecfb1753cf8fc10c636b2d04c55640b8 /sphinx | |
| parent | cb83c6d3b626b81ee77a0dfe48dc41f6202e8409 (diff) | |
| download | sphinx-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.py | 13 |
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() |
