File indexing completed on 2024-12-01 13:47:54
0001 # -*- coding: UTF-8 -*- 0002 0003 """ 0004 Check catalogs covering Docbook 4.x documents for various problems. 0005 0006 Documented in C{doc/user/sieving.docbook}. 0007 0008 @author: Chusslove Illich (Часлав Илић) <caslav.ilic@gmx.net> 0009 @license: GPLv3 0010 """ 0011 0012 from pology import _, n_ 0013 from pology.markup import check_docbook4_msg 0014 from pology.msgreport import report_on_msg_hl, report_msg_content 0015 from pology.msgreport import report_msg_to_lokalize 0016 from pology.report import report 0017 from pology.sieve import add_param_poeditors 0018 0019 0020 def setup_sieve (p): 0021 0022 p.set_desc(_("@info sieve discription", 0023 "Check catalogs covering Docbook 4.x documents for various problems." 0024 )) 0025 0026 p.add_param("showmsg", bool, defval=False, 0027 desc=_("@info sieve parameter discription", 0028 "Also show the full message which has a problem." 0029 )) 0030 add_param_poeditors(p) 0031 0032 0033 class Sieve (object): 0034 0035 def __init__ (self, params): 0036 0037 self.showmsg = params.showmsg 0038 self.lokalize = params.lokalize 0039 0040 # Indicators to the caller: 0041 self.caller_sync = False # no need to sync catalogs to the caller 0042 self.caller_monitored = False # no need for monitored messages 0043 0044 self.check = check_docbook4_msg(strict=False, entities=None) 0045 0046 self.nproblems = 0 0047 0048 0049 def process (self, msg, cat): 0050 0051 # Check only translated messages. 0052 if not msg.translated: 0053 return 0054 0055 highlight = self.check(msg, cat) 0056 self.nproblems += sum(len(x[2]) for x in highlight) 0057 0058 # Report problems. 0059 if highlight: 0060 if self.showmsg: 0061 report_msg_content(msg, cat, showmsg=self.showmsg, 0062 highlight=highlight, delim=("-" * 20)) 0063 else: 0064 report_on_msg_hl(highlight, msg, cat) 0065 if self.lokalize: 0066 report_msg_to_lokalize(msg, cat, highlight) 0067 0068 0069 def finalize (self): 0070 0071 if self.nproblems > 0: 0072 msg = n_("@info:progress", 0073 "Found %(num)d problem in Docbook translations.", 0074 "Found %(num)d problems in Docbook translations.", 0075 num=self.nproblems) 0076 report("===== " + msg) 0077