From ae47913ca8705af851dea1d717f5e01601e2137b Mon Sep 17 00:00:00 2001 From: Sebastian Serth Date: Wed, 20 Jan 2021 22:41:49 +0100 Subject: [PATCH] Pass locale to PyLint translator and allow switchable output --- app/controllers/concerns/submission_scoring.rb | 2 +- lib/assessor.rb | 4 ++-- lib/py_lint_adapter.rb | 10 ++++++---- lib/py_unit_and_py_lint_adapter.rb | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/controllers/concerns/submission_scoring.rb b/app/controllers/concerns/submission_scoring.rb index 516db7c8..2b535e0d 100644 --- a/app/controllers/concerns/submission_scoring.rb +++ b/app/controllers/concerns/submission_scoring.rb @@ -33,7 +33,7 @@ module SubmissionScoring if file.teacher_defined_linter? 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! filename = t('exercises.implement.not_graded', locale: :de) if file.weight.zero? diff --git a/lib/assessor.rb b/lib/assessor.rb index e18661b8..5e018dfa 100644 --- a/lib/assessor.rb +++ b/lib/assessor.rb @@ -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 diff --git a/lib/py_lint_adapter.rb b/lib/py_lint_adapter.rb index e45a46f5..64d9cec2 100644 --- a/lib/py_lint_adapter.rb +++ b/lib/py_lint_adapter.rb @@ -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 diff --git a/lib/py_unit_and_py_lint_adapter.rb b/lib/py_unit_and_py_lint_adapter.rb index 52dbe74e..bdac31c4 100644 --- a/lib/py_unit_and_py_lint_adapter.rb +++ b/lib/py_unit_and_py_lint_adapter.rb @@ -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