Patchwork [1,of,2] i18n: check equality of tail '::'-ness between msgid and msgstr

login
register
mail settings
Submitter Katsunori FUJIWARA
Date Jan. 19, 2014, 2:35 p.m.
Message ID <74b805dc8a967c8c4830.1390142102@vm-debian.dzone.foozy.private>
Download mbox | patch
Permalink /patch/3385/
State Superseded
Headers show

Comments

Katsunori FUJIWARA - Jan. 19, 2014, 2:35 p.m.
# HG changeset patch
# User FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
# Date 1390141993 -32400
#      Sun Jan 19 23:33:13 2014 +0900
# Node ID 74b805dc8a967c8c48308e0c53a24940645dabd3
# Parent  4988e42465370f1458b2ddd9bf2760f3f881b3ce
i18n: check equality of tail '::'-ness between msgid and msgstr

Document generation by runrst in "doc" directory may succeed silently,
even though there is the translated message missing tail '::'. In this
case, it uses "<blockquote>" instead of "<pre>" to surround succeeding
text block unexpectedly in generated HTML file.

This patch adds the checker to check equality of tail '::'-ness
between msgid and msgstr.

To detect also msgstr unexpectedly ending with '::', this checker
doesn't have matching regexp against msgid, and is applied on all
msgid/msgstr pairs.

This checker is categorized as "warning" level, because problem
detected by this is not so serious for usual Mercurial usage.

Patch

diff --git a/i18n/check-translation.py b/i18n/check-translation.py
--- a/i18n/check-translation.py
+++ b/i18n/check-translation.py
@@ -66,6 +66,28 @@ 
 def warningchecker(msgidpat=None):
     return checker('warning', msgidpat)
 
+@warningchecker()
+def taildoublecolons(pe):
+    """Check equality of tail '::'-ness between msgid and msgstr
+
+    >>> pe = polib.POEntry(
+    ...     msgid ='ends with ::',
+    ...     msgstr='ends with ::')
+    >>> for e in taildoublecolons(pe): print e
+    >>> pe = polib.POEntry(
+    ...     msgid ='ends with ::',
+    ...     msgstr='ends without double-colons')
+    >>> for e in taildoublecolons(pe): print e
+    tail '::'-ness differs between msgid and msgstr
+    >>> pe = polib.POEntry(
+    ...     msgid ='ends without double-colons',
+    ...     msgstr='ends with ::')
+    >>> for e in taildoublecolons(pe): print e
+    tail '::'-ness differs between msgid and msgstr
+    """
+    if pe.msgid.endswith('::') != pe.msgstr.endswith('::'):
+        yield "tail '::'-ness differs between msgid and msgstr"
+
 ####################
 
 def check(pofile, fatal=True, warning=False):