# HG changeset patch # User FUJIWARA Katsunori # Date 1392457239 -32400 # Node ID 410c80539c5c2fdf41f5d451730c55c7641cb9ca # Parent dcd3bebf478607bd821d8617fc74b7edebd99fe8 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 "
" instead of "
" 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.

diff -r dcd3bebf4786 -r 410c80539c5c i18n/check-translation.py
--- a/i18n/check-translation.py	Sat Feb 15 15:28:32 2014 +0100
+++ b/i18n/check-translation.py	Sat Feb 15 18:40:39 2014 +0900
@@ -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):