Fix switch_locale to return the block result

This commit is contained in:
Sebastian Serth
2021-06-28 16:08:24 +02:00
parent 4e8033f5d4
commit d08707f62e
3 changed files with 10 additions and 9 deletions

View File

@ -75,8 +75,8 @@ class ApplicationController < ActionController::Base
def switch_locale(&action) def switch_locale(&action)
session[:locale] = params[:custom_locale] || params[:locale] || session[:locale] session[:locale] = params[:custom_locale] || params[:locale] || session[:locale]
locale = session[:locale] || I18n.default_locale locale = session[:locale] || I18n.default_locale
I18n.with_locale(locale, &action)
Sentry.set_extras(locale: locale) Sentry.set_extras(locale: locale)
I18n.with_locale(locale, &action)
end end
private :switch_locale private :switch_locale

View File

@ -57,13 +57,14 @@ module SubmissionScoring
private :execute_test_file private :execute_test_file
def feedback_message(file, output) def feedback_message(file, output)
set_locale switch_locale do
if output[:score] == Assessor::MAXIMUM_SCORE && output[:file_role] == 'teacher_defined_test' if output[:score] == Assessor::MAXIMUM_SCORE && output[:file_role] == 'teacher_defined_test'
I18n.t('exercises.implement.default_test_feedback') I18n.t('exercises.implement.default_test_feedback')
elsif output[:score] == Assessor::MAXIMUM_SCORE && output[:file_role] == 'teacher_defined_linter' elsif output[:score] == Assessor::MAXIMUM_SCORE && output[:file_role] == 'teacher_defined_linter'
I18n.t('exercises.implement.default_linter_feedback') I18n.t('exercises.implement.default_linter_feedback')
else else
render_markdown(file.feedback_message) render_markdown(file.feedback_message)
end
end end
end end

View File

@ -35,7 +35,7 @@ describe ApplicationController do
expect_redirect(:root) expect_redirect(:root)
end end
describe '#set_locale' do describe '#switch_locale' do
let(:locale) { :de } let(:locale) { :de }
context 'when specifying a locale' do context 'when specifying a locale' do