eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py

changeset 7613
382f89c11e27
parent 7611
d546c4e72f52
child 7639
422fd05e9c91
--- 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

eric ide

mercurial