--- a/eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Mon Jun 08 08:17:14 2020 +0200 +++ b/eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py Mon Jun 08 20:08:27 2020 +0200 @@ -12,8 +12,11 @@ from Globals import translate -__all__ = ["getTranslatedMessage"] +from .Security.translations import ( + _securityMessages, _securityMessagesSampleArgs +) +# TODO: separate this huge dict into separate translations per checker type _messages = { ################################################################## ## pycodestyle messages @@ -1077,8 +1080,18 @@ "FIXWRITE_ERROR": ["IOError"], } +messageCatalogs = ( + _messages, + _securityMessages, +) -def getTranslatedMessage(messageCode, messageArgs): +messageSampleArgsCatalog = ( + _messages_sample_args, + _securityMessagesSampleArgs, +) + + +def getTranslatedMessage(messageCode, messageArgs, example=False): """ Module function to get a translated and formatted message for a given message ID. @@ -1088,24 +1101,52 @@ @param messageArgs list of arguments or a single integer value to format the message @type list or int + @param example flag indicating a translated message filled with example + data is requested (messageArgs is ignored if given) + @type bool @return translated and formatted message @rtype str """ - if messageCode.startswith("S"): - from .Security import translations as s_translations - return s_translations.getTranslatedMessage(messageCode, messageArgs) + if example: + for argsCatalog in messageSampleArgsCatalog: + if messageCode in argsCatalog: + args = argsCatalog[messageCode] + break + else: + args = None + else: + args = messageArgs - elif messageCode in _messages: - if isinstance(messageArgs, int): - # Retranslate with correct plural form - return _messages[messageCode](messageArgs) + for catalog in messageCatalogs: + if messageCode in catalog: + if args is None: + return catalog[messageCode] + elif isinstance(args, int): + # Retranslate with correct plural form + return catalog[messageCode](args) + else: + return catalog[messageCode].format(*args) + else: + if example: + return None else: - return _messages[messageCode].format(*messageArgs) + return QCoreApplication.translate( + "CodeStyleChecker", + "No message defined for code '{0}'." + ).format(messageCode) + + +def getMessageCodes(): + """ + Module function to get a list of known message codes. - else: - return QCoreApplication.translate( - "CodeStyleFixer", " no message defined for code '{0}'" - ).format(messageCode) + @return list of known message codes + @rtype set of str + """ + knownCodes = [] + for catalog in messageCatalogs: + knownCodes += list(catalog.keys()) + return {c.split(".", 1)[0] for c in knownCodes} # # eflag: noqa = M201