summaryrefslogtreecommitdiff
path: root/sphinx/builders/gettext.py
diff options
context:
space:
mode:
authorkou <kou@cozmixng.org>2011-05-08 17:32:41 +0900
committerkou <kou@cozmixng.org>2011-05-08 17:32:41 +0900
commitcb83c6d3b626b81ee77a0dfe48dc41f6202e8409 (patch)
tree8c554724c8c90c777f65af74109e28a0cc95f1cd /sphinx/builders/gettext.py
parent4b8ac4aeadc640c222d97bc103783f8ebfc4e951 (diff)
downloadsphinx-cb83c6d3b626b81ee77a0dfe48dc41f6202e8409.tar.gz
[i18n] don't generate duplicated msgid.
Diffstat (limited to 'sphinx/builders/gettext.py')
-rw-r--r--sphinx/builders/gettext.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/sphinx/builders/gettext.py b/sphinx/builders/gettext.py
index 1ff92360..732b7af6 100644
--- a/sphinx/builders/gettext.py
+++ b/sphinx/builders/gettext.py
@@ -67,7 +67,9 @@ class I18nBuilder(Builder):
catalog = self.catalogs[docname.split(SEP, 1)[0]]
for node, msg in extract_messages(doctree):
- catalog.setdefault(node.uid, msg)
+ if not msg in catalog:
+ catalog[msg] = []
+ catalog[msg].append(node.uid)
class MessageCatalogBuilder(I18nBuilder):
@@ -93,11 +95,12 @@ class MessageCatalogBuilder(I18nBuilder):
pofile = open(pofn, 'w', encoding='utf-8')
try:
pofile.write(POHEADER % data)
- for uid, message in messages.iteritems():
+ for message, uids in messages.iteritems():
# message contains *one* line of text ready for translation
message = message.replace(u'\\', ur'\\'). \
replace(u'"', ur'\"')
- pomsg = u'#%s\nmsgid "%s"\nmsgstr ""\n\n' % (uid, message)
- pofile.write(pomsg)
+ for uid in uids:
+ pofile.write(u'# %s\n' % uid)
+ pofile.write(u'msgid "%s"\nmsgstr ""\n\n' % message)
finally:
pofile.close()