[i18n] don't generate duplicated msgid.

This commit is contained in:
Kouhei Sutou 2011-05-08 17:32:41 +09:00
parent c1c6a806c8
commit 0d610fcff4

View File

@ -67,7 +67,9 @@ class I18nBuilder(Builder):
catalog = self.catalogs[docname.split(SEP, 1)[0]] catalog = self.catalogs[docname.split(SEP, 1)[0]]
for node, msg in extract_messages(doctree): 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): class MessageCatalogBuilder(I18nBuilder):
@ -93,11 +95,12 @@ class MessageCatalogBuilder(I18nBuilder):
pofile = open(pofn, 'w', encoding='utf-8') pofile = open(pofn, 'w', encoding='utf-8')
try: try:
pofile.write(POHEADER % data) 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 contains *one* line of text ready for translation
message = message.replace(u'\\', ur'\\'). \ message = message.replace(u'\\', ur'\\'). \
replace(u'"', ur'\"') replace(u'"', ur'\"')
pomsg = u'#%s\nmsgid "%s"\nmsgstr ""\n\n' % (uid, message) for uid in uids:
pofile.write(pomsg) pofile.write(u'# %s\n' % uid)
pofile.write(u'msgid "%s"\nmsgstr ""\n\n' % message)
finally: finally:
pofile.close() pofile.close()