summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cpanfile.snapshot40
-rwxr-xr-xlib/Travelynx.pm58
-rwxr-xr-xlib/Travelynx/Model/Journeys.pm108
-rw-r--r--share/locales/de_DE.po76
-rw-r--r--share/locales/en_GB.po76
-rw-r--r--share/locales/reference.md110
-rw-r--r--templates/_checked_in.html.ep6
-rw-r--r--templates/_public_status_card.html.ep4
-rw-r--r--templates/year_in_review.html.ep44
9 files changed, 390 insertions, 132 deletions
diff --git a/cpanfile.snapshot b/cpanfile.snapshot
index a3beeed..59230b4 100644
--- a/cpanfile.snapshot
+++ b/cpanfile.snapshot
@@ -1502,18 +1502,18 @@ DISTRIBUTIONS
Exporter 5.57
ExtUtils::MakeMaker 0
perl 5.008
- IO-Socket-SSL-2.095
- pathname: S/SU/SULLR/IO-Socket-SSL-2.095.tar.gz
+ IO-Socket-SSL-2.098
+ pathname: S/SU/SULLR/IO-Socket-SSL-2.098.tar.gz
provides:
- IO::Socket::SSL 2.095
+ IO::Socket::SSL 2.098
IO::Socket::SSL::Intercept 2.056
- IO::Socket::SSL::OCSP_Cache 2.095
- IO::Socket::SSL::OCSP_Resolver 2.095
+ IO::Socket::SSL::OCSP_Cache 2.098
+ IO::Socket::SSL::OCSP_Resolver 2.098
IO::Socket::SSL::PublicSuffix undef
- IO::Socket::SSL::SSL_Context 2.095
- IO::Socket::SSL::SSL_HANDLE 2.095
- IO::Socket::SSL::Session_Cache 2.095
- IO::Socket::SSL::Trace 2.095
+ IO::Socket::SSL::SSL_Context 2.098
+ IO::Socket::SSL::SSL_HANDLE 2.098
+ IO::Socket::SSL::Session_Cache 2.098
+ IO::Socket::SSL::Trace 2.098
IO::Socket::SSL::Utils 2.015
requirements:
ExtUtils::MakeMaker 0
@@ -2714,18 +2714,18 @@ DISTRIBUTIONS
TimeDate 1.21
requirements:
ExtUtils::MakeMaker 0
- Travel-Status-DE-DBRIS-0.20
- pathname: D/DE/DERF/Travel-Status-DE-DBRIS-0.20.tar.gz
+ Travel-Status-DE-DBRIS-0.22
+ pathname: D/DE/DERF/Travel-Status-DE-DBRIS-0.22.tar.gz
provides:
- Travel::Status::DE::DBRIS 0.20
- Travel::Status::DE::DBRIS::Formation 0.20
- Travel::Status::DE::DBRIS::Formation::Carriage 0.20
- Travel::Status::DE::DBRIS::Formation::Group 0.20
- Travel::Status::DE::DBRIS::Formation::Sector 0.20
- Travel::Status::DE::DBRIS::Journey 0.20
- Travel::Status::DE::DBRIS::JourneyAtStop 0.20
- Travel::Status::DE::DBRIS::Location 0.20
- Travel::Status::DE::DBRIS::Operators 0.20
+ Travel::Status::DE::DBRIS 0.22
+ Travel::Status::DE::DBRIS::Formation 0.22
+ Travel::Status::DE::DBRIS::Formation::Carriage 0.22
+ Travel::Status::DE::DBRIS::Formation::Group 0.22
+ Travel::Status::DE::DBRIS::Formation::Sector 0.22
+ Travel::Status::DE::DBRIS::Journey 0.22
+ Travel::Status::DE::DBRIS::JourneyAtStop 0.22
+ Travel::Status::DE::DBRIS::Location 0.22
+ Travel::Status::DE::DBRIS::Operators 0.22
requirements:
Carp 0
Class::Accessor 0.16
diff --git a/lib/Travelynx.pm b/lib/Travelynx.pm
index 7b5cf99..a83af39 100755
--- a/lib/Travelynx.pm
+++ b/lib/Travelynx.pm
@@ -466,6 +466,64 @@ sub startup {
);
$self->helper(
+ 'LT' => sub {
+ my ( $self, $minutes ) = @_;
+
+ my @ret;
+
+ if ( $minutes >= 14 * 24 * 60 ) {
+ push( @ret,
+ int( $minutes / ( 7 * 24 * 60 ) ) . q{ }
+ . $self->L('LT.weeks') );
+ }
+ elsif ( $minutes >= 7 * 24 * 60 ) {
+ push( @ret, '1 ' . $self->L('LT.week') );
+ }
+ $minutes %= 7 * 24 * 60;
+
+ if ( $minutes >= 2 * 24 * 60 ) {
+ push( @ret,
+ int( $minutes / ( 24 * 60 ) ) . q{ }
+ . $self->L('LT.days') );
+ }
+ elsif ( $minutes >= 24 * 60 ) {
+ push( @ret, '1 ' . $self->L('LT.day') );
+ }
+ $minutes %= 24 * 60;
+
+ if ( $minutes >= 2 * 60 ) {
+ push( @ret,
+ int( $minutes / 60 ) . q{ } . $self->L('LT.hours') );
+ }
+ elsif ( $minutes >= 60 ) {
+ push( @ret, '1 ' . $self->L('LT.hour') );
+ }
+ $minutes %= 60;
+
+ if ( $minutes >= 2 ) {
+ push( @ret, "$minutes " . $self->L('LT.minutes') );
+ }
+ elsif ($minutes) {
+ push( @ret, '1 ' . $self->L('LT.minute') );
+ }
+
+ if ( @ret == 0 ) {
+ return $self->L('LT.zero-minutes');
+ }
+
+ if ( @ret == 1 ) {
+ return $ret[0];
+ }
+
+ my $last = pop(@ret);
+ return
+ join( ', ', @ret )
+ . $self->L( @ret > 1 ? 'LT.final-and' : 'LT.and' )
+ . " $last";
+ }
+ );
+
+ $self->helper(
'now' => sub {
return DateTime->now( time_zone => 'Europe/Berlin' );
}
diff --git a/lib/Travelynx/Model/Journeys.pm b/lib/Travelynx/Model/Journeys.pm
index b6c9793..ea3461c 100755
--- a/lib/Travelynx/Model/Journeys.pm
+++ b/lib/Travelynx/Model/Journeys.pm
@@ -50,56 +50,6 @@ sub epoch_to_dt {
);
}
-# TODO turn into a travelynx helper called from templates so that
-# loc_handle is available for localization
-sub min_to_human {
- my ( $self, $minutes ) = @_;
-
- my @ret;
-
- if ( $minutes >= 14 * 24 * 60 ) {
- push( @ret, int( $minutes / ( 7 * 24 * 60 ) ) . ' Wochen' );
- }
- elsif ( $minutes >= 7 * 24 * 60 ) {
- push( @ret, '1 Woche' );
- }
- $minutes %= 7 * 24 * 60;
-
- if ( $minutes >= 2 * 24 * 60 ) {
- push( @ret, int( $minutes / ( 24 * 60 ) ) . ' Tage' );
- }
- elsif ( $minutes >= 24 * 60 ) {
- push( @ret, '1 Tag' );
- }
- $minutes %= 24 * 60;
-
- if ( $minutes >= 2 * 60 ) {
- push( @ret, int( $minutes / 60 ) . ' Stunden' );
- }
- elsif ( $minutes >= 60 ) {
- push( @ret, '1 Stunde' );
- }
- $minutes %= 60;
-
- if ( $minutes >= 2 ) {
- push( @ret, "$minutes Minuten" );
- }
- elsif ($minutes) {
- push( @ret, '1 Minute' );
- }
-
- if ( @ret == 0 ) {
- return '0 Minuten';
- }
-
- if ( @ret == 1 ) {
- return $ret[0];
- }
-
- my $last = pop(@ret);
- return join( ', ', @ret ) . " und $last";
-}
-
sub new {
my ( $class, %opt ) = @_;
@@ -1674,7 +1624,7 @@ sub compute_review {
$review{traveling_percentage_year}
= sprintf( "%.1f%%", $min_total * 100 / 525948.77 );
$review{traveling_percentage_year} =~ tr{.}{,};
- $review{traveling_time_year} = $self->min_to_human($min_total);
+ $review{traveling_time_year} = $min_total;
if (@linetypes) {
$review{typical_type_1} = $linetypes[0][0];
@@ -1689,24 +1639,18 @@ sub compute_review {
elsif ( @stops == 2 ) {
$review{typical_stops_2} = [ $stops[0][0], $stops[1][0] ];
}
- $review{typical_time}
- = $self->min_to_human( $stats->{min_travel_real} / $stats->{num_trains} );
+ $review{typical_time} = $stats->{min_travel_real} / $stats->{num_trains};
$review{typical_km}
= sprintf( '%.0f', $stats->{km_route} / $stats->{num_trains} );
$review{typical_kmh} = sprintf( '%.0f',
$stats->{km_route} / ( $stats->{min_travel_real} / 60 ) );
$review{typical_delay_dep}
= sprintf( '%.0f', $stats->{delay_dep} / $stats->{num_trains} );
- $review{typical_delay_dep_h}
- = $self->min_to_human( $review{typical_delay_dep} );
$review{typical_delay_arr}
= sprintf( '%.0f', $stats->{delay_arr} / $stats->{num_trains} );
- $review{typical_delay_arr_h}
- = $self->min_to_human( $review{typical_delay_arr} );
if ($longest_t) {
- $review{longest_t_time}
- = $self->min_to_human( $longest_t->{rt_duration} / 60 );
+ $review{longest_t_min} = $longest_t->{rt_duration} / 60;
$review{longest_t_type} = $longest_t->{type};
$review{longest_t_lineno} = $longest_t->{line} // $longest_t->{no};
$review{longest_t_from} = $longest_t->{from_name};
@@ -1724,8 +1668,7 @@ sub compute_review {
}
if ($shortest_t) {
- $review{shortest_t_time}
- = $self->min_to_human( $shortest_t->{rt_duration} / 60 );
+ $review{shortest_t_min} = $shortest_t->{rt_duration} / 60;
$review{shortest_t_type} = $shortest_t->{type};
$review{shortest_t_lineno} = $shortest_t->{line} // $shortest_t->{no};
$review{shortest_t_from} = $shortest_t->{from_name};
@@ -1745,12 +1688,10 @@ sub compute_review {
}
if ($most_delayed) {
- $review{most_delayed_type} = $most_delayed->{type};
- $review{most_delayed_delay_dep}
- = $self->min_to_human( $most_delayed->{delay_dep} );
- $review{most_delayed_delay_arr}
- = $self->min_to_human( $most_delayed->{delay_arr} );
- $review{most_delayed_lineno} = $most_delayed->{line}
+ $review{most_delayed_type} = $most_delayed->{type};
+ $review{most_delayed_delay_dep} = $most_delayed->{delay_dep};
+ $review{most_delayed_delay_arr} = $most_delayed->{delay_arr};
+ $review{most_delayed_lineno} = $most_delayed->{line}
// $most_delayed->{no};
$review{most_delayed_from} = $most_delayed->{from_name};
$review{most_delayed_to} = $most_delayed->{to_name};
@@ -1758,17 +1699,13 @@ sub compute_review {
}
if ($most_delay) {
- $review{most_delay_type} = $most_delay->{type};
- $review{most_delay_delay_dep} = $most_delay->{delay_dep};
- $review{most_delay_delay_arr} = $most_delay->{delay_arr};
- $review{most_delay_sched_time}
- = $self->min_to_human( $most_delay->{sched_duration} / 60 );
- $review{most_delay_real_time}
- = $self->min_to_human( $most_delay->{rt_duration} / 60 );
+ $review{most_delay_type} = $most_delay->{type};
+ $review{most_delay_delay_dep} = $most_delay->{delay_dep};
+ $review{most_delay_delay_arr} = $most_delay->{delay_arr};
+ $review{most_delay_sched_time} = $most_delay->{sched_duration} / 60;
+ $review{most_delay_real_time} = $most_delay->{rt_duration} / 60;
$review{most_delay_delta}
- = $self->min_to_human(
- ( $most_delay->{rt_duration} - $most_delay->{sched_duration} )
- / 60 );
+ = ( $most_delay->{rt_duration} - $most_delay->{sched_duration} ) / 60;
$review{most_delay_lineno} = $most_delay->{line} // $most_delay->{no};
$review{most_delay_from} = $most_delay->{from_name};
$review{most_delay_to} = $most_delay->{to_name};
@@ -1776,17 +1713,14 @@ sub compute_review {
}
if ($most_undelay) {
- $review{most_undelay_type} = $most_undelay->{type};
- $review{most_undelay_delay_dep} = $most_undelay->{delay_dep};
- $review{most_undelay_delay_arr} = $most_undelay->{delay_arr};
- $review{most_undelay_sched_time}
- = $self->min_to_human( $most_undelay->{sched_duration} / 60 );
- $review{most_undelay_real_time}
- = $self->min_to_human( $most_undelay->{rt_duration} / 60 );
+ $review{most_undelay_type} = $most_undelay->{type};
+ $review{most_undelay_delay_dep} = $most_undelay->{delay_dep};
+ $review{most_undelay_delay_arr} = $most_undelay->{delay_arr};
+ $review{most_undelay_sched_time} = $most_undelay->{sched_duration} / 60;
+ $review{most_undelay_real_time} = $most_undelay->{rt_duration} / 60;
$review{most_undelay_delta}
- = $self->min_to_human(
- ( $most_undelay->{sched_duration} - $most_undelay->{rt_duration} )
- / 60 );
+ = ( $most_undelay->{sched_duration} - $most_undelay->{rt_duration} )
+ / 60;
$review{most_undelay_lineno} = $most_undelay->{line}
// $most_undelay->{no};
$review{most_undelay_from} = $most_undelay->{from_name};
diff --git a/share/locales/de_DE.po b/share/locales/de_DE.po
index ed09017..dbe6248 100644
--- a/share/locales/de_DE.po
+++ b/share/locales/de_DE.po
@@ -46,6 +46,43 @@ msgid "header.error"
msgstr "Fehler"
#
+# LT (localized duration)
+#
+
+msgid "LT.weeks"
+msgstr "Wochen"
+
+msgid "LT.week"
+msgstr "Woche"
+
+msgid "LT.days"
+msgstr "Tage"
+
+msgid "LT.day"
+msgstr "Tag"
+
+msgid "LT.hours"
+msgstr "Stunden"
+
+msgid "LT.hour"
+msgstr "Stunde"
+
+msgid "LT.minutes"
+msgstr "Minuten"
+
+msgid "LT.minute"
+msgstr "Minute"
+
+msgid "LT.zero-minutes"
+msgstr "0 Minuten"
+
+msgid "LT.final-and"
+msgstr " und"
+
+msgid "LT.and"
+msgstr " und"
+
+#
# Templates
#
@@ -697,6 +734,45 @@ msgstr " "
msgid "review.cancelled-percent.post"
msgstr " deiner geplanten Fahrten sind ausgefallen."
+msgid "review.most-delayed.pre"
+msgstr "Mit"
+
+msgid "review.most-delayed.mid"
+msgstr " hatte"
+
+msgid "review.most-delayed.post"
+msgstr " die größte Verspätung."
+
+msgid "review.most-delay.pre"
+msgstr "Die Fahrt mit"
+
+msgid "review.most-delay.from"
+msgstr "von"
+
+msgid "review.most-delay.to"
+msgstr "nach"
+
+msgid "review.most-delay.mid"
+msgstr "verlief besonders gemächlich: sie dauerte"
+
+msgid "review.most-delay.post"
+msgstr " länger als geplant."
+
+msgid "review.most-undelay.pre"
+msgstr "In"
+
+msgid "review.most-undelay.from"
+msgstr "wurde hingegen Vmax ausgereizt und die Strecke von"
+
+msgid "review.most-undelay.to"
+msgstr "nach"
+
+msgid "review.most-undelay.mid"
+msgstr " "
+
+msgid "review.most-undelay.post"
+msgstr " schneller absolviert als vorgesehen."
+
# _checked_in.html.ep, _public_status_card.html.ep
msgid "status.is-checked-in"
diff --git a/share/locales/en_GB.po b/share/locales/en_GB.po
index f5dbfb2..5299e68 100644
--- a/share/locales/en_GB.po
+++ b/share/locales/en_GB.po
@@ -46,6 +46,43 @@ msgid "header.error"
msgstr "Error"
#
+# LT (localized duration)
+#
+
+msgid "LT.weeks"
+msgstr "weeks"
+
+msgid "LT.week"
+msgstr "week"
+
+msgid "LT.days"
+msgstr "days"
+
+msgid "LT.day"
+msgstr "day"
+
+msgid "LT.hours"
+msgstr "hours"
+
+msgid "LT.hour"
+msgstr "hour"
+
+msgid "LT.minutes"
+msgstr "minutes"
+
+msgid "LT.minute"
+msgstr "minute"
+
+msgid "LT.zero-minutes"
+msgstr "0 minutes"
+
+msgid "LT.final-and"
+msgstr ", and"
+
+msgid "LT.and"
+msgstr " and"
+
+#
# Templates
#
@@ -693,6 +730,45 @@ msgstr " "
msgid "review.cancelled-percent.post"
msgstr " of your trips were cancelled."
+msgid "review.most-delayed.pre"
+msgstr "With"
+
+msgid "review.most-delayed.mid"
+msgstr ", "
+
+msgid "review.most-delayed.post"
+msgstr " effortlessly took the first place."
+
+msgid "review.most-delay.pre"
+msgstr "The trip with"
+
+msgid "review.most-delay.from"
+msgstr "from"
+
+msgid "review.most-delay.to"
+msgstr "to"
+
+msgid "review.most-delay.mid"
+msgstr "was super serene: it took"
+
+msgid "review.most-delay.post"
+msgstr " longer than scheduled."
+
+msgid "review.most-undelay.pre"
+msgstr "On the other hand,"
+
+msgid "review.most-undelay.from"
+msgstr "took the handle to the table and managed to go from"
+
+msgid "review.most-undelay.to"
+msgstr "to"
+
+msgid "review.most-undelay.mid"
+msgstr " an impressive"
+
+msgid "review.most-undelay.post"
+msgstr " faster than anticipated."
+
# _checked_in.html.ep, _public_status_card.html.ep
msgid "status.is-checked-in"
diff --git a/share/locales/reference.md b/share/locales/reference.md
index 9254813..17d7a95 100644
--- a/share/locales/reference.md
+++ b/share/locales/reference.md
@@ -2,9 +2,9 @@
* de-DE: 100.0% complete (0 missing)
* en-GB: 100.0% complete (0 missing)
-* fr-FR: 22.3% complete (206 missing)
-* hu-HU: 61.5% complete (102 missing)
-* pl-PL: 70.6% complete (78 missing)
+* fr-FR: 21.2% complete (219 missing)
+* hu-HU: 58.6% complete (115 missing)
+* pl-PL: 67.3% complete (91 missing)
###
@@ -1820,6 +1820,110 @@ Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n>=2 && n<=4 && (n<10 || n>=20) ? 1
* hu-HU *missing*
* pl-PL *missing*
+### review.most-delayed.pre
+
+* de-DE: Mit
+* en-GB: With
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delayed.mid
+
+* de-DE: hatte
+* en-GB: ,
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delayed.post
+
+* de-DE: die größte Verspätung.
+* en-GB: effortlessly took the first place.
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delay.pre
+
+* de-DE: Die Fahrt mit
+* en-GB: The trip with
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delay.from
+
+* de-DE: von
+* en-GB: from
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delay.to
+
+* de-DE: nach
+* en-GB: to
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delay.mid
+
+* de-DE: verlief besonders gemächlich: sie dauerte
+* en-GB: was super serene: it took
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-delay.post
+
+* de-DE: länger als geplant.
+* en-GB: longer than scheduled.
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-undelay.pre
+
+* de-DE: In
+* en-GB: On the other hand,
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-undelay.from
+
+* de-DE: wurde hingegen Vmax ausgereizt und die Strecke von
+* en-GB: took the handle to the table and managed to go from
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-undelay.to
+
+* de-DE: nach
+* en-GB: to
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-undelay.mid
+
+* de-DE:
+* en-GB: an impressive
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
+### review.most-undelay.post
+
+* de-DE: schneller absolviert als vorgesehen.
+* en-GB: faster than anticipated.
+* fr-FR *missing*
+* hu-HU *missing*
+* pl-PL *missing*
+
## _checked_in.html.ep, _public_status_card.html.ep
### status.is-checked-in
diff --git a/templates/_checked_in.html.ep b/templates/_checked_in.html.ep
index 659abff..e509549 100644
--- a/templates/_checked_in.html.ep
+++ b/templates/_checked_in.html.ep
@@ -19,20 +19,20 @@
data-dest="<%= $journey->{arr_name} %>"
>
% if ($journey->{boarding_countdown} > 60) {
- <%= L('status.boarding-in.pre') %> <%= journeys->min_to_human(int($journey->{boarding_countdown} / 60)) %> <%= L('status.boarding-in.post') %><br/>
+ <%= L('status.boarding-in.pre') %> <%= LT(int($journey->{boarding_countdown} / 60)) %> <%= L('status.boarding-in.post') %><br/>
% }
% elsif ($journey->{boarding_countdown} > 0) {
<%= L('status.boarding-soon') %><br/>
% }
% if ($journey->{departure_countdown} > 60) {
- <%= L('status.departure-in.pre') %> <%= journeys->min_to_human(int($journey->{departure_countdown} / 60)) %> <%= L('status.departure-in.post') %>
+ <%= L('status.departure-in.pre') %> <%= LT(int($journey->{departure_countdown} / 60)) %> <%= L('status.departure-in.post') %>
% }
% elsif ($journey->{departure_countdown} > 0) {
%= L('status.departure-soon')
% }
% elsif (defined $journey->{arrival_countdown}) {
% if ($journey->{arrival_countdown} > 60) {
- <%= L('status.arrival-in.pre') %> <%= journeys->min_to_human(int($journey->{arrival_countdown} / 60)) %> <%= L('status.arrival-in.post') %>
+ <%= L('status.arrival-in.pre') %> <%= LT(int($journey->{arrival_countdown} / 60)) %> <%= L('status.arrival-in.post') %>
% }
% elsif ($journey->{arrival_countdown} > 0) {
%= L('status.arrival-soon')
diff --git a/templates/_public_status_card.html.ep b/templates/_public_status_card.html.ep
index ca5ddf8..834f9a8 100644
--- a/templates/_public_status_card.html.ep
+++ b/templates/_public_status_card.html.ep
@@ -34,14 +34,14 @@
% }
data-arrival="<%= $journey->{real_arrival}->epoch %>">
% if ($journey->{departure_countdown} > 60) {
- Abfahrt in <%= journeys->min_to_human(int($journey->{departure_countdown} / 60)) %>
+ Abfahrt in <%= LT(int($journey->{departure_countdown} / 60)) %>
% }
% elsif ($journey->{departure_countdown} > 0) {
Abfahrt in weniger als einer Minute
% }
% elsif (defined $journey->{arrival_countdown}) {
% if ($journey->{arrival_countdown} > 60) {
- <%= L('status.arrival-in.pre') %> <%= journeys->min_to_human(int($journey->{arrival_countdown} / 60)) %> <%= L('status.arrival-in.post') %>
+ <%= L('status.arrival-in.pre') %> <%= LT(int($journey->{arrival_countdown} / 60)) %> <%= L('status.arrival-in.post') %>
% }
% elsif ($journey->{arrival_countdown} > 0) {
%= L('status.arrival-soon')
diff --git a/templates/year_in_review.html.ep b/templates/year_in_review.html.ep
index 527cc56..db8aca3 100644
--- a/templates/year_in_review.html.ep
+++ b/templates/year_in_review.html.ep
@@ -17,12 +17,12 @@
% if ($review->{traveling_min_total} > 525) {
%= L('review.travel-time.pre')
<strong><%= $review->{traveling_percentage_year} %> <%= L('review.travel-time.of-year') %></strong>
- (<%= $review->{traveling_time_year} %>)
+ (<%= LT($review->{traveling_time_year}) %>)
%= L('review.travel-time.post')
% }
% else {
%= L('review.travel-time.pre')
- <strong><%= $review->{traveling_time_year} %></strong>
+ <strong><%= LT($review->{traveling_time_year}) %></strong>
%= L('review.travel-time.post')
% }
</p>
@@ -67,7 +67,7 @@
</p>
<p>
%= L('review.time-distance.pre')
- <strong><%= $review->{typical_time} %></strong>
+ <strong><%= LT($review->{typical_time}) %></strong>
%= L('review.time-distance.mid')
<strong><%= $review->{typical_km} %> km</strong> (<%= $review->{typical_kmh} %> km/h)<%= L('review.time-distance.post') %>
</p>
@@ -80,17 +80,17 @@
<p>
% if ($review->{typical_delay_arr} < $review->{typical_delay_dep}) {
%= L('review.delay-decreasing.pre')
- <strong><%= $review->{typical_delay_dep_h} %></strong>
+ <strong><%= LT($review->{typical_delay_dep}) %></strong>
%= L('review.delay-decreasing.mid')
- <strong><%= $review->{typical_delay_arr_h} %></strong><%= L('review.delay-decreasing.post') %>
+ <strong><%= LT($review->{typical_delay_arr}) %></strong><%= L('review.delay-decreasing.post') %>
% }
% elsif ($review->{typical_delay_arr} == $review->{typical_delay_dep}) {
%= L('review.delay-constant.pre')
- <strong><%= $review->{typical_delay_dep_h} %></strong><%= L('review.delay-constant.post') %>
+ <strong><%= LT($review->{typical_delay_dep}) %></strong><%= L('review.delay-constant.post') %>
% }
% else {
%= L('review.delay-increasing.pre')
- <strong><%= $review->{typical_delay_dep_h} %></strong>
+ <strong><%= LT($review->{typical_delay_dep}) %></strong>
%= L('review.delay-increasing.mid')
<strong>+<%= $review->{typical_delay_arr} %></strong><%= L('review.delay-increasing.post') %>
% }
@@ -103,7 +103,7 @@
<p>
<a href="/journey/<%= $review->{longest_t_id} %>"><%= L('review.high-scores.longest-trip.link') %></a>:
%= L('review.high-scores.longest-trip.pre')
- <strong><%= $review->{longest_t_time} %></strong>
+ <strong><%= LT($review->{longest_t_min}) %></strong>
%= L('review.high-scores.with')
<strong><%= $review->{longest_t_type} %> <%= $review->{longest_t_lineno} %></strong>
%= L('review.high-scores.from')
@@ -135,7 +135,7 @@
<p>
<a href="/journey/<%= $review->{shortest_t_id} %>"><%= L('review.high-scores.shortest-trip.link') %></a>:
%= L('review.high-scores.shortest-trip.pre')
- <strong><%= $review->{shortest_t_time} %></strong>
+ <strong><%= LT($review->{shortest_t_min}) %></strong>
%= L('review.high-scores.with')
<strong><%= $review->{shortest_t_type} %> <%= $review->{shortest_t_lineno} %></strong>
%= L('review.high-scores.from')
@@ -203,22 +203,32 @@
</p>
% if ($review->{most_delayed_id}) {
<p>
- Mit <strong><%= $review->{most_delayed_delay_arr} %></strong> hatte <a href="/journey/<%= $review->{most_delayed_id} %>"><%= $review->{most_delayed_type} %> <%= $review->{most_delayed_lineno} %></a> <%= $review->{most_delayed_from} %> → <%= $review->{most_delayed_to} %> die größte Verspätung.
+ %= L('review.most-delayed.pre')
+ <strong><%= LT($review->{most_delayed_delay_arr}) %></strong><%= L('review.most-delayed.mid') %>
+ <a href="/journey/<%= $review->{most_delayed_id} %>"><%= $review->{most_delayed_type} %> <%= $review->{most_delayed_lineno} %></a> <%= $review->{most_delayed_from} %> → <%= $review->{most_delayed_to} %><%= L('review.most-delayed.post') %>
</p>
% }
% if ($review->{most_delay_id}) {
<p>
- Die Fahrt mit <a href="/journey/<%= $review->{most_delay_id} %>"><%= $review->{most_delay_type} %> <%= $review->{most_delay_lineno} %></a>
- von <%= $review->{most_delay_from} %> nach <%= $review->{most_delay_to} %> verlief besonders gemächlich:
- sie dauerte <strong><%= $review->{most_delay_delta} %></strong> länger als geplant.
+ %= L('review.most-delay.pre')
+ <a href="/journey/<%= $review->{most_delay_id} %>"><%= $review->{most_delay_type} %> <%= $review->{most_delay_lineno} %></a>
+ %= L('review.most-delay.from')
+ %= $review->{most_delay_from}
+ %= L('review.most-delay.to')
+ %= $review->{most_delay_to}
+ %= L('review.most-delay.mid')
+ <strong><%= LT($review->{most_delay_delta}) %></strong><%= L('review.most-delay.post') %>
</p>
% }
% if ($review->{most_undelay_id}) {
<p>
- In <a href="/journey/<%= $review->{most_undelay_id} %>"><%= $review->{most_undelay_type} %> <%= $review->{most_undelay_lineno} %></a>
- wurde hingegen Vmax ausgereizt und die Strecke von
- <%= $review->{most_undelay_from} %> nach <%= $review->{most_undelay_to} %>
- <strong><%= $review->{most_undelay_delta} %></strong> schneller absolviert als vorgesehen.
+ %= L('review.most-undelay.pre')
+ <a href="/journey/<%= $review->{most_undelay_id} %>"><%= $review->{most_undelay_type} %> <%= $review->{most_undelay_lineno} %></a>
+ %= L('review.most-undelay.from')
+ %= $review->{most_undelay_from}
+ %= L('review.most-undelay.to')
+ %= $review->{most_undelay_to}
+ <strong><%= LT($review->{most_undelay_delta}) %></strong><%= L('review.most-undelay.post') %>
</p>
% }
</div>