Pass locale to PyLint translator and allow switchable output

This commit is contained in:
Sebastian Serth
2021-01-20 22:41:49 +01:00
parent d791f99dee
commit ae47913ca8
4 changed files with 11 additions and 9 deletions

View File

@ -27,8 +27,8 @@ class Assessor
end
end
def translate_linter(result)
@testing_framework_adapter.translate_linter(result)
def translate_linter(result, locale)
@testing_framework_adapter.translate_linter(result, locale)
end
class Error < RuntimeError; end

View File

@ -41,10 +41,12 @@ class PyLintAdapter < TestingFrameworkAdapter
{count: count, failed: failed, error_messages: concatenated_errors, detailed_linter_results: assertion_error_matches}
end
def self.translate_linter(assessment)
def self.translate_linter(assessment, locale)
# The message will be translated once the results were stored in the database
# See SubmissionScoring for actual function call
I18n.locale = locale
return assessment unless assessment[:detailed_linter_results].present?
assessment[:detailed_linter_results].map! do |message|
@ -71,7 +73,7 @@ class PyLintAdapter < TestingFrameworkAdapter
replacement = {}
end
replacement.merge!(locale: :de, default: message[:result])
replacement.merge!(default: message[:result])
message[:result] = I18n.t("linter.#{severity}.#{name}.replacement", replacement)
message
end
@ -91,7 +93,7 @@ class PyLintAdapter < TestingFrameworkAdapter
def self.get_t(key, default)
# key might be "linter.#{severity}.#{name}.#{key}.#{value}"
# or something like "linter.#{severity}.#{name}.replacement"
translation = I18n.t(key, locale: :de, default: default)
translation = I18n.t(key, default: default)
key.delete_suffix!(".#{default}") # Remove any custom prefix, might have no effect
keys = key.split('.')
final_key = keys.pop
@ -100,7 +102,7 @@ class PyLintAdapter < TestingFrameworkAdapter
false
else
# Read config key
I18n.t(keys.append('log_missing').join('.'), locale: :de, default: true)
I18n.t(keys.append('log_missing').join('.'), default: true)
end
Raven.capture_message({key: key, default: default}.to_json) if translation == default && log_missing
translation

View File

@ -12,7 +12,7 @@ class PyUnitAndPyLintAdapter < TestingFrameworkAdapter
end
end
def translate_linter(result)
PyLintAdapter.translate_linter(result)
def translate_linter(result, locale)
PyLintAdapter.translate_linter(result, locale)
end
end