[PATCH 4 of 4] i18n: merge i18n comments of translatable texts correctly

FUJIWARA Katsunori foozy at lares.dti.ne.jp
Fri Aug 24 14:20:45 EDT 2018


# HG changeset patch
# User FUJIWARA Katsunori <foozy at lares.dti.ne.jp>
# Date 1534916276 -32400
#      Wed Aug 22 14:37:56 2018 +0900
# Node ID 341fa53ab3c4c8fb2d009e413fe9555c275a817c
# Parent  9550ea4f1d737a7f3d79fbf2e1aa173497f75d4b
# Available At https://bitbucket.org/foozy/mercurial-wip
#              hg pull https://bitbucket.org/foozy/mercurial-wip -r 341fa53ab3c4
# EXP-Topic filemerge-followup
i18n: merge i18n comments of translatable texts correctly

Before this patch, i18n comments of translatable texts are lost at
creation of hg.pot file, if:

  - same translatable text appears multiple times,
  - the 1st appearance does not have i18n comment, and
  - any of rest has it

For example, previous patch for filemerge.py adds translatable texts
with i18n comments, but these comments are lost, because:

  - automatically added texts in docstring of internal merge tools are
    picked up earlier than these translatable texts, because of
    location in filemerge.py

  - but docstring has no i18n comment

This patch makes addentry() of posplit merge i18n comments of later
translatable texts, in order to keep them at creation of hg.pot.

diff --git a/i18n/posplit b/i18n/posplit
--- a/i18n/posplit
+++ b/i18n/posplit
@@ -15,6 +15,14 @@ def addentry(po, entry, cache):
     e = cache.get(entry.msgid)
     if e:
         e.occurrences.extend(entry.occurrences)
+
+        # merge comments from entry
+        for comment in entry.comment.split('\n'):
+            if comment and comment not in e.comment:
+                if not e.comment:
+                    e.comment = comment
+                else:
+                    e.comment += '\n' + comment
     else:
         po.append(entry)
         cache[entry.msgid] = entry


More information about the Mercurial-devel mailing list