Pass locale to PyLint translator and allow switchable output
This commit is contained in:
@ -33,7 +33,7 @@ module SubmissionScoring
|
|||||||
|
|
||||||
if file.teacher_defined_linter?
|
if file.teacher_defined_linter?
|
||||||
LinterCheckRun.create_from(testrun, assessment)
|
LinterCheckRun.create_from(testrun, assessment)
|
||||||
assessment = assessor.translate_linter(assessment)
|
assessment = assessor.translate_linter(assessment, session[:locale])
|
||||||
|
|
||||||
# replace file name with hint if linter is not used for grading. Refactor!
|
# replace file name with hint if linter is not used for grading. Refactor!
|
||||||
filename = t('exercises.implement.not_graded', locale: :de) if file.weight.zero?
|
filename = t('exercises.implement.not_graded', locale: :de) if file.weight.zero?
|
||||||
|
@ -27,8 +27,8 @@ class Assessor
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def translate_linter(result)
|
def translate_linter(result, locale)
|
||||||
@testing_framework_adapter.translate_linter(result)
|
@testing_framework_adapter.translate_linter(result, locale)
|
||||||
end
|
end
|
||||||
|
|
||||||
class Error < RuntimeError; end
|
class Error < RuntimeError; end
|
||||||
|
@ -41,10 +41,12 @@ class PyLintAdapter < TestingFrameworkAdapter
|
|||||||
{count: count, failed: failed, error_messages: concatenated_errors, detailed_linter_results: assertion_error_matches}
|
{count: count, failed: failed, error_messages: concatenated_errors, detailed_linter_results: assertion_error_matches}
|
||||||
end
|
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
|
# The message will be translated once the results were stored in the database
|
||||||
# See SubmissionScoring for actual function call
|
# See SubmissionScoring for actual function call
|
||||||
|
|
||||||
|
I18n.locale = locale
|
||||||
|
|
||||||
return assessment unless assessment[:detailed_linter_results].present?
|
return assessment unless assessment[:detailed_linter_results].present?
|
||||||
|
|
||||||
assessment[:detailed_linter_results].map! do |message|
|
assessment[:detailed_linter_results].map! do |message|
|
||||||
@ -71,7 +73,7 @@ class PyLintAdapter < TestingFrameworkAdapter
|
|||||||
replacement = {}
|
replacement = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
replacement.merge!(locale: :de, default: message[:result])
|
replacement.merge!(default: message[:result])
|
||||||
message[:result] = I18n.t("linter.#{severity}.#{name}.replacement", replacement)
|
message[:result] = I18n.t("linter.#{severity}.#{name}.replacement", replacement)
|
||||||
message
|
message
|
||||||
end
|
end
|
||||||
@ -91,7 +93,7 @@ class PyLintAdapter < TestingFrameworkAdapter
|
|||||||
def self.get_t(key, default)
|
def self.get_t(key, default)
|
||||||
# key might be "linter.#{severity}.#{name}.#{key}.#{value}"
|
# key might be "linter.#{severity}.#{name}.#{key}.#{value}"
|
||||||
# or something like "linter.#{severity}.#{name}.replacement"
|
# 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
|
key.delete_suffix!(".#{default}") # Remove any custom prefix, might have no effect
|
||||||
keys = key.split('.')
|
keys = key.split('.')
|
||||||
final_key = keys.pop
|
final_key = keys.pop
|
||||||
@ -100,7 +102,7 @@ class PyLintAdapter < TestingFrameworkAdapter
|
|||||||
false
|
false
|
||||||
else
|
else
|
||||||
# Read config key
|
# Read config key
|
||||||
I18n.t(keys.append('log_missing').join('.'), locale: :de, default: true)
|
I18n.t(keys.append('log_missing').join('.'), default: true)
|
||||||
end
|
end
|
||||||
Raven.capture_message({key: key, default: default}.to_json) if translation == default && log_missing
|
Raven.capture_message({key: key, default: default}.to_json) if translation == default && log_missing
|
||||||
translation
|
translation
|
||||||
|
@ -12,7 +12,7 @@ class PyUnitAndPyLintAdapter < TestingFrameworkAdapter
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def translate_linter(result)
|
def translate_linter(result, locale)
|
||||||
PyLintAdapter.translate_linter(result)
|
PyLintAdapter.translate_linter(result, locale)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Reference in New Issue
Block a user