i18n: check equality of tail '::'-ness between msgid and msgstr
authorFUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Sat, 15 Feb 2014 18:40:39 +0900
changeset 20514 410c80539c5c
parent 20513 dcd3bebf4786
child 20515 6afbfb9b1af1
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.
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):