Patchwork [4,of,4] i18n: merge i18n comments of translatable texts correctly

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Aug. 24, 2018, 6:20 p.m.
Message ID <341fa53ab3c4c8fb2d00.1535134845@blacknile>
Download mbox | patch
Permalink /patch/34033/
State Accepted
Headers show

Comments

Katsunori FUJIWARA - Aug. 24, 2018, 6:20 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@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.

Patch

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