diff --git a/templates/ContentGenerator/Feedback/feedback_email.html.ep b/templates/ContentGenerator/Feedback/feedback_email.html.ep
index 636a7613d5..667e2fb5df 100644
--- a/templates/ContentGenerator/Feedback/feedback_email.html.ep
+++ b/templates/ContentGenerator/Feedback/feedback_email.html.ep
@@ -1,21 +1,18 @@
% use WeBWorK::Utils qw(decodeAnswers);
% use WeBWorK::Utils::Sets qw(format_set_name_display);
%
+% my $yes = maketext('yes');
+% my $no = maketext('no');
+%
- % if ($problem) {
- Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at
- <%= $ce->{institutionName} %> (sent from
- <%= link_to format_set_name_display($set->set_id) . ', #' . $problem->problem_id => $emailableURL %>).
- % } elsif ($set) {
- Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at
- <%= $ce->{institutionName} %>
- (sent from <%= link_to format_set_name_display($set->set_id) => $emailableURL %>).
- % } else {
- Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at
- <%= $ce->{institutionName} %> (sent from <%= link_to 'this page' => $emailableURL %>).
- % }
+ <%== maketext('Message from [_1] ([_2]) via WeBWorK at [_3] (sent from [_4]).',
+ $user->full_name, $user->user_id, $ce->{institutionName},
+ $problem ? link_to(format_set_name_display($set->set_id) . ', #' . $problem->problem_id, $emailableURL)
+ : $set ? link_to(format_set_name_display($set->set_id), $emailableURL)
+ : link_to('this page', $emailableURL)
+ ) =%>
% if ($numRecipients > 1) {
<%= maketext('Message delivered to multiple recipients. Consider using reply-all.') =%>
@@ -35,19 +32,20 @@
| Data about the problem |
+ background-color: lightgray" colspan="2"><%= maketext('Data about the problem') %>
% my @rows = (
- % [ 'Problem ID', $problem->problem_id ],
- % [ 'Source file', $problem->source_file ],
- % [ 'Value', $problem->value ],
- % [ 'Max attempts', $problem->max_attempts == -1 ? 'unlimited' : $problem->max_attempts ],
- % [ 'Random seed', $problem->problem_seed ],
- % [ 'Status', $problem->status ],
- % [ 'Attempted', $problem->attempted ? 'yes' : 'no' ],
- % [ 'Correct attempts', $problem->num_correct ],
- % [ 'Incorrect attempts', $problem->num_incorrect ]
+ % [ maketext('Problem ID'), $problem->problem_id ],
+ % [ maketext('Source file'), $problem->source_file ],
+ % [ maketext('Value'), $problem->value ],
+ % [ maketext('Max attempts'),
+ % $problem->max_attempts == -1 ? 'unlimited' : $problem->max_attempts ],
+ % [ maketext('Random seed'), $problem->problem_seed ],
+ % [ maketext('Status'), $problem->status ],
+ % [ maketext('Attempted'), $problem->attempted ? $yes : $no ],
+ % [ maketext('Correct attempts'), $problem->num_correct ],
+ % [ maketext('Incorrect attempts'), $problem->num_incorrect ]
% );
% for (@rows) {
@@ -57,20 +55,26 @@
% }
% my %last_answer = decodeAnswers($problem->last_answer);
- | Last submission: |
+
+ <%= maketext('Last submission:') =%>
+ |
% if (%last_answer) {
-
- % for my $key (sort keys %last_answer) {
- % if ($last_answer{$key}) {
-
- | <%= $key %>: |
- <%= $last_answer{$key} %> |
-
- % }
- % }
- |
+
+
+ % for my $key (sort keys %last_answer) {
+ % if ($last_answer{$key}) {
+
+ | <%= $key %>: |
+
+ <%= $last_answer{$key} %>
+ |
+
+ % }
+ % }
+
+ |
% } else {
- none |
+ <%= maketext('none') %> |
% }
@@ -80,28 +84,28 @@
| Data about the assignment |
+ background-color: lightgray" colspan="2"><%= maketext('Data about the assignment') %>
% my @rows = (
- % [ 'Set ID', $set->set_id ],
- % [ 'Set header file', $set->set_header ],
- % [ 'Hardcopy header file', $set->hardcopy_header ],
- % [ 'Open date', $c->formatDateTime($set->open_date) ],
- % [ 'Close date', $c->formatDateTime($set->due_date) ],
- % [ 'Answer date', $c->formatDateTime($set->answer_date) ],
- % [ 'Visible', $set->visible ? 'yes' : 'no' ],
- % [ 'Assignment type', $set->assignment_type ]
+ % [ maketext('Set ID'), $set->set_id ],
+ % [ maketext('Set header file'), $set->set_header ],
+ % [ maketext('Hardcopy header file'), $set->hardcopy_header ],
+ % [ maketext('Open date'), $c->formatDateTime($set->open_date) ],
+ % [ maketext('Close date'), $c->formatDateTime($set->due_date) ],
+ % [ maketext('Answer date'), $c->formatDateTime($set->answer_date) ],
+ % [ maketext('Visible'), $set->visible ? $yes : $no ],
+ % [ maketext('Assignment type'), $set->assignment_type ]
% );
% if ($set->assignment_type =~ /gateway/) {
% push @rows, (
- % [ 'Attempts per version', $set->attempts_per_version ],
- % [ 'Time interval', $set->time_interval ],
- % [ 'Versions per interval', $set->versions_per_interval ],
- % [ 'Version time limit', $set->version_time_limit ],
- % [ 'Version creation time', $c->formatDateTime($set->version_creation_time) ],
- % [ 'Problem randorder', $set->problem_randorder ],
- % [ 'Version last attempt time', $set->version_last_attempt_time ]
+ % [ maketext('Attempts per version'), $set->attempts_per_version ],
+ % [ maketext('Time interval'), $set->time_interval ],
+ % [ maketext('Versions per interval'), $set->versions_per_interval ],
+ % [ maketext('Version time limit'), $set->version_time_limit ],
+ % [ maketext('Version creation time'), $c->formatDateTime($set->version_creation_time) ],
+ % [ maketext('Problem randorder'), $set->problem_randorder ],
+ % [ maketext('Version last attempt time'), $set->version_last_attempt_time ]
% );
% }
% for (@rows) {
@@ -116,16 +120,20 @@
% if ($problem && $verbosity >= 1) {
- | Data about the problem processor |
+
+ |
+ <%= maketext('Data about the problem processor') =%>
+ |
+
% my @rows = (
- % [ 'Display Mode', param('displayMode') ],
- % [ 'Show Old Answers', param('showOldAnswers') ? 'yes' : 'no' ],
- % [ 'Show Correct Answers', param('showCorrectAnswers') ? 'yes' : 'no' ],
- % [ 'Show Hints', param('showHints') ? 'yes' : 'no' ],
- % [ 'Show Solutions', param('showSolutions') ? 'yes' : 'no' ]
+ % [ maketext('Display Mode'), param('displayMode') ],
+ % [ maketext('Show Old Answers'), param('showOldAnswers') ? $yes : $no ],
+ % [ maketext('Show Correct Answers'), param('showCorrectAnswers') ? $yes : $no ],
+ % [ maketext('Show Hints'), param('showHints') ? $yes : $no ],
+ % [ maketext('Show Solutions'), param('showSolutions') ? $yes : $no ]
% );
% for (@rows) {
@@ -141,26 +149,26 @@
| Data about the user |
+ background-color: lightgray" colspan="2"><%= maketext('Data about the user') %>
% my @rows = (
- % [ 'User ID', $user->user_id ],
- % [ 'Name', $user->full_name ],
- % [ 'Email', $user->email_address ]
+ % [ maketext('User ID'), $user->user_id ],
+ % [ maketext('Name'), $user->full_name ],
+ % [ maketext('Email'), $user->email_address ]
% );
% unless ($ce->{blockStudentIDinFeedback}) { push @rows, ['Student ID', $user->student_id]; }
% my $status_name = $ce->status_abbrev_to_name($user->status);
% my $status_string =
% defined $status_name
% ? "$status_name ('" . $user->status . q{')}
- % : $user->status . ' (unknown status abbreviation)';
+ % : maketext('[_1] (unknown status abbreviation)', $user->status);
% push @rows, (
- % [ 'Status', $status_string ],
- % [ 'Section', $user->section ],
- % [ 'Recitation', $user->recitation ],
- % [ 'Comment', $user->comment ],
- % [ 'IP Address', $remote_host ]
+ % [ maketext('Status'), $status_string ],
+ % [ maketext('Section'), $user->section ],
+ % [ maketext('Recitation'), $user->recitation ],
+ % [ maketext('Comment'), $user->comment ],
+ % [ maketext('IP Address'), $remote_host ]
%);
% for (@rows) {
@@ -175,7 +183,7 @@
| Data about the environment |
+ background-color: lightgray" colspan="2"><%= maketext('Data about the environment') %>
<%= dumper($ce) %> |
diff --git a/templates/ContentGenerator/Feedback/feedback_email.txt.ep b/templates/ContentGenerator/Feedback/feedback_email.txt.ep
index 2ac4cbccfc..5de552e159 100644
--- a/templates/ContentGenerator/Feedback/feedback_email.txt.ep
+++ b/templates/ContentGenerator/Feedback/feedback_email.txt.ep
@@ -1,14 +1,15 @@
% use WeBWorK::Utils qw(decodeAnswers);
% use WeBWorK::Utils::Sets qw(format_set_name_display);
%
-Message from <%= $user->full_name %> (<%= $user->user_id %>) via WeBWorK at <%= $ce->{institutionName} %>.
+<%= maketext('Message from [_1] ([_2]) via WeBWorK at [_3].',
+ $user->full_name, $user->user_id, $ce->{institutionName}) %>
% if ($problem) {
-Feedback sent from <%= format_set_name_display($set->set_id) . ', #' . $problem->problem_id %>:
+<%= maketext('Feedback sent from [_1]:', format_set_name_display($set->set_id) . ', #' . $problem->problem_id) %>
% } elsif ($set) {
-Feedback sent from <%= format_set_name_display($set->set_id) %>:
+<%= maketext('Feedback sent from [_1]:', format_set_name_display($set->set_id)) %>
% } else {
-Feedback sent from:
+<%= maketext('Feedback sent from:') %>
% }
<%== $emailableURL %>
% if ($numRecipients > 1) {
@@ -17,92 +18,92 @@ Feedback sent from:
% }
% if ($feedback) {
-<%== $user->full_name %> (<%== $user->user_id %>) wrote:
+<%= maketext('[_1] ([_2]) wrote:', $user->full_name, $user->user_id) %>
<%== $feedback %>
% }
% if ($problem && $verbosity >= 1) {
-***** Data about the problem: *****
+***** <%= maketext('Data about the problem:') %> *****
-Problem ID: <%== $problem->problem_id %>
-Source file: <%== $problem->source_file %>
-Value: <%== $problem->value %>
-Max attempts <%== $problem->max_attempts == -1 ? 'unlimited' : $problem->max_attempts %>
-Random seed: <%== $problem->problem_seed %>
-Status: <%== $problem->status %>
-Attempted: <%== $problem->attempted ? 'yes' : 'no' %>
-Number of correct attempts: <%== $problem->num_correct %>
-Number of incorrect attempts: <%== $problem->num_incorrect %>
+<%= maketext('Problem ID:') %> <%== $problem->problem_id %>
+<%= maketext('Source file:') %> <%== $problem->source_file %>
+<%= maketext('Value:') %> <%== $problem->value %>
+<%= maketext('Max attempts') %> <%== $problem->max_attempts == -1 ? 'unlimited' : $problem->max_attempts %>
+<%= maketext('Random seed:') %> <%== $problem->problem_seed %>
+<%= maketext('Status:') %> <%== $problem->status %>
+<%= maketext('Attempted:') %> <%== $problem->attempted ? 'yes' : 'no' %>
+<%= maketext('Number of correct attempts:') %> <%== $problem->num_correct %>
+<%= maketext('Number of incorrect attempts:') %> <%== $problem->num_incorrect %>
% my %last_answer = decodeAnswers($problem->last_answer);
% if (%last_answer) {
-Last submission:
- % for my $key (sort keys %last_answer) {
- % if ($last_answer{$key}) {
+<%= maketext('Last submission:') %>
+ % for my $key (sort keys %last_answer) {
+ % if ($last_answer{$key}) {
<%== $key %>: <%== $last_answer{$key} %>
+ % }
% }
- % }
% } else {
-Last submission: none
+<%= maketext('Last submission:') =%> <%= maketext('none') %>
% }
% }
% if ($set && $verbosity >= 1) {
-***** Data about the assignment: *****
+***** <%= maketext('Data about the assignment:') %> *****
-Set ID: <%== $set->set_id %>
-Set header file: <%== $set->set_header %>
-Hardcopy header file: <%== $set->hardcopy_header %>
-Open date: <%== $c->formatDateTime($set->open_date) %>
-Due date: <%== $c->formatDateTime($set->due_date) %>
-Answer date: <%== $c->formatDateTime($set->answer_date) %>
-Visible: <%== $set->visible ? 'yes' : 'no' %>
-Assignment type: <%== $set->assignment_type %>
+<%= maketext('Set ID:') %> <%== $set->set_id %>
+<%= maketext('Set header file:') %> <%== $set->set_header %>
+<%= maketext('Hardcopy header file:') %> <%== $set->hardcopy_header %>
+<%= maketext('Open date:') %> <%== $c->formatDateTime($set->open_date) %>
+<%= maketext('Due date:') %> <%== $c->formatDateTime($set->due_date) %>
+<%= maketext('Answer date:') %> <%== $c->formatDateTime($set->answer_date) %>
+<%= maketext('Visible:') %> <%== $set->visible ? 'yes' : 'no' %>
+<%= maketext('Assignment type:') %> <%== $set->assignment_type %>
% if ($set->assignment_type =~ /gateway/) {
-Attempts per version: <%== $set->attempts_per_version %>
-Time interval: <%== $set->time_interval %>
-Versions per interval: <%== $set->versions_per_interval %>
-Version time limit: <%== $set->version_time_limit %>
-Version creation time: <%== $c->formatDateTime($set->version_creation_time) %>
-Problem randorder: <%== $set->problem_randorder %>
-Version last attempt time: <%== $set->version_last_attempt_time %>
+<%= maketext('Attempts per version:') %> <%== $set->attempts_per_version %>
+<%= maketext('Time interval:') %> <%== $set->time_interval %>
+<%= maketext('Versions per interval:') %> <%== $set->versions_per_interval %>
+<%= maketext('Version time limit:') %> <%== $set->version_time_limit %>
+<%= maketext('Version creation time:') %> <%== $c->formatDateTime($set->version_creation_time) %>
+<%= maketext('Problem randorder:') %> <%== $set->problem_randorder %>
+<%= maketext('Version last attempt time:') %> <%== $set->version_last_attempt_time %>
% }
% }
% if ($problem && $verbosity >= 1) {
-***** Data about the problem processor: *****
+***** <%= maketext('Data about the problem processor:') %> *****
-Display Mode: <%== param('displayMode') %>
-Show Old Answers: <%== param('showOldAnswers') ? 'yes' : 'no' %>
-Show Correct Answers: <%== param('showCorrectAnswers') ? 'yes' : 'no' %>
-Show Hints: <%== param('showHints') ? 'yes' : 'no' %>
-Show Solutions: <%== param('showSolutions') ? 'yes' : 'no' %>
+<%= maketext('Display Mode:') %> <%== param('displayMode') %>
+<%= maketext('Show Old Answers:') %> <%== param('showOldAnswers') ? 'yes' : 'no' %>
+<%= maketext('Show Correct Answers:') %> <%== param('showCorrectAnswers') ? 'yes' : 'no' %>
+<%= maketext('Show Hints:') %> <%== param('showHints') ? 'yes' : 'no' %>
+<%= maketext('Show Solutions:') %> <%== param('showSolutions') ? 'yes' : 'no' %>
% }
% if ($user && $verbosity >= 1) {
-***** Data about the user: *****
+***** <%= maketext('Data about the user:') %> *****
-User ID: <%== $user->user_id %>
-Name: <%== $user->full_name %>
-Email: <%== $user->email_address %>
+<%= maketext('User ID:') %> <%== $user->user_id %>
+<%= maketext('Name:') %> <%== $user->full_name %>
+<%= maketext('Email:') %> <%== $user->email_address %>
% unless ($ce->{blockStudentIDinFeedback}) {
-Student ID: <%== $user->student_id %>
+<%= maketext('Student ID:') %> <%== $user->student_id %>
% }
% my $status_name = $ce->status_abbrev_to_name($user->status);
%my $status_string =
% defined $status_name
% ? "$status_name ('" . $user->status . q{')}
- % : $user->status . ' (unknown status abbreviation)';
-Status: <%== $status_string %>
-Section: <%== $user->section %>
-Recitation: <%== $user->recitation %>
-Comment: <%== $user->comment %>
-IP Address: <%== $remote_host %>:<%== $c->tx->remote_port || 'UNKNOWN' %>
+ % : maketext('[_1] (unknown status abbreviation)', $user->status);
+<%= maketext('Status:') %> <%== $status_string %>
+<%= maketext('Section:') %> <%== $user->section %>
+<%= maketext('Recitation:') %> <%== $user->recitation %>
+<%= maketext('Comment:') %> <%== $user->comment %>
+<%= maketext('IP Address:') %> <%== $remote_host %>:<%== $c->tx->remote_port || 'UNKNOWN' %>
% }
% if ($verbosity >= 2) {
-Data about the environment
+<%= maketext('Data about the environment') %>
<%== dumper($ce) %>
% }