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 |