eric6/Plugins/CheckerPlugins/CodeStyleChecker/translations.py

changeset 7613
382f89c11e27
parent 7611
d546c4e72f52
child 7639
422fd05e9c91
equal deleted inserted replaced
7612:ca1ce1e0fcff 7613:382f89c11e27
10 10
11 from PyQt5.QtCore import QCoreApplication 11 from PyQt5.QtCore import QCoreApplication
12 12
13 from Globals import translate 13 from Globals import translate
14 14
15 __all__ = ["getTranslatedMessage"] 15 from .Security.translations import (
16 16 _securityMessages, _securityMessagesSampleArgs
17 )
18
19 # TODO: separate this huge dict into separate translations per checker type
17 _messages = { 20 _messages = {
18 ################################################################## 21 ##################################################################
19 ## pycodestyle messages 22 ## pycodestyle messages
20 ################################################################## 23 ##################################################################
21 "E101": QCoreApplication.translate( 24 "E101": QCoreApplication.translate(
1075 "A999": ["SyntaxError", "Invalid Syntax"], 1078 "A999": ["SyntaxError", "Invalid Syntax"],
1076 1079
1077 "FIXWRITE_ERROR": ["IOError"], 1080 "FIXWRITE_ERROR": ["IOError"],
1078 } 1081 }
1079 1082
1080 1083 messageCatalogs = (
1081 def getTranslatedMessage(messageCode, messageArgs): 1084 _messages,
1085 _securityMessages,
1086 )
1087
1088 messageSampleArgsCatalog = (
1089 _messages_sample_args,
1090 _securityMessagesSampleArgs,
1091 )
1092
1093
1094 def getTranslatedMessage(messageCode, messageArgs, example=False):
1082 """ 1095 """
1083 Module function to get a translated and formatted message for a 1096 Module function to get a translated and formatted message for a
1084 given message ID. 1097 given message ID.
1085 1098
1086 @param messageCode the message code 1099 @param messageCode the message code
1087 @type str 1100 @type str
1088 @param messageArgs list of arguments or a single integer value to format 1101 @param messageArgs list of arguments or a single integer value to format
1089 the message 1102 the message
1090 @type list or int 1103 @type list or int
1104 @param example flag indicating a translated message filled with example
1105 data is requested (messageArgs is ignored if given)
1106 @type bool
1091 @return translated and formatted message 1107 @return translated and formatted message
1092 @rtype str 1108 @rtype str
1093 """ 1109 """
1094 if messageCode.startswith("S"): 1110 if example:
1095 from .Security import translations as s_translations 1111 for argsCatalog in messageSampleArgsCatalog:
1096 return s_translations.getTranslatedMessage(messageCode, messageArgs) 1112 if messageCode in argsCatalog:
1097 1113 args = argsCatalog[messageCode]
1098 elif messageCode in _messages: 1114 break
1099 if isinstance(messageArgs, int):
1100 # Retranslate with correct plural form
1101 return _messages[messageCode](messageArgs)
1102 else: 1115 else:
1103 return _messages[messageCode].format(*messageArgs) 1116 args = None
1104
1105 else: 1117 else:
1106 return QCoreApplication.translate( 1118 args = messageArgs
1107 "CodeStyleFixer", " no message defined for code '{0}'" 1119
1108 ).format(messageCode) 1120 for catalog in messageCatalogs:
1121 if messageCode in catalog:
1122 if args is None:
1123 return catalog[messageCode]
1124 elif isinstance(args, int):
1125 # Retranslate with correct plural form
1126 return catalog[messageCode](args)
1127 else:
1128 return catalog[messageCode].format(*args)
1129 else:
1130 if example:
1131 return None
1132 else:
1133 return QCoreApplication.translate(
1134 "CodeStyleChecker",
1135 "No message defined for code '{0}'."
1136 ).format(messageCode)
1137
1138
1139 def getMessageCodes():
1140 """
1141 Module function to get a list of known message codes.
1142
1143 @return list of known message codes
1144 @rtype set of str
1145 """
1146 knownCodes = []
1147 for catalog in messageCatalogs:
1148 knownCodes += list(catalog.keys())
1149 return {c.split(".", 1)[0] for c in knownCodes}
1109 1150
1110 # 1151 #
1111 # eflag: noqa = M201 1152 # eflag: noqa = M201

eric ide

mercurial