aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/DB/ResultSet/State.pm
diff options
context:
space:
mode:
authorMatthew Somerville <matthew-github@dracos.co.uk>2017-09-14 21:01:56 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2017-09-15 12:57:57 +0100
commitdc7613329c275cd158fdde8faf1c0e301f5b7202 (patch)
tree646589f4a09b1a1db389b2daf873f1df1d59cdd5 /perllib/FixMyStreet/DB/ResultSet/State.pm
parent4314930e68ba48bef78be308020f626cee3f09b5 (diff)
Fix issues with Open/Closed translated too early.v2.2
It was possible for _hardcoded_states to be reached with no locale selected (e.g. bin/update-all-reports), causing an error trying to translate Open/Closed. But translating those there wasn't correct, because that would then be cached and returned even if a different language was being used. Caching was ignored in testing, which did not help. We no longer translate the state names in their objects, only upon display at the point that we will know the locale. We can't simply return the translation of Open/Closed because there may be entries in the translation table as well.
Diffstat (limited to 'perllib/FixMyStreet/DB/ResultSet/State.pm')
-rw-r--r--perllib/FixMyStreet/DB/ResultSet/State.pm12
1 files changed, 9 insertions, 3 deletions
diff --git a/perllib/FixMyStreet/DB/ResultSet/State.pm b/perllib/FixMyStreet/DB/ResultSet/State.pm
index 8b6a8963e..ac13ec2a4 100644
--- a/perllib/FixMyStreet/DB/ResultSet/State.pm
+++ b/perllib/FixMyStreet/DB/ResultSet/State.pm
@@ -7,8 +7,9 @@ use Memcached;
sub _hardcoded_states {
my $rs = shift;
- my $open = $rs->new({ id => -1, label => 'confirmed', type => 'open', name => _("Open") });
- my $closed = $rs->new({ id => -2, label => 'closed', type => 'closed', name => _("Closed") });
+ # These are translated on use, not here
+ my $open = $rs->new({ id => -1, label => 'confirmed', type => 'open', name => "Open" });
+ my $closed = $rs->new({ id => -2, label => 'closed', type => 'closed', name => "Closed" });
return ($open, $closed);
}
@@ -23,7 +24,7 @@ sub states {
my $rs = shift;
my $states = Memcached::get('states');
- if ($states && !FixMyStreet->test_mode) {
+ if ($states) {
# Need to reattach schema
$states->[0]->result_source->schema( $rs->result_source->schema ) if $states->[0];
return $states;
@@ -62,10 +63,15 @@ sub display {
'fixed - council' => _("Fixed - Council"),
'fixed - user' => _("Fixed - User"),
};
+ my $translate_now = {
+ confirmed => _("Open"),
+ closed => _("Closed"),
+ };
$label = 'fixed' if $single_fixed && $label =~ /^fixed - (council|user)$/;
return $unchanging->{$label} if $unchanging->{$label};
my ($state) = $rs->_filter(sub { $_->label eq $label });
return $label unless $state;
+ $state->name($translate_now->{$label}) if $translate_now->{$label};
return $state->msgstr;
}