Loading lib/Travelynx.pm +58 −0 Original line number Diff line number Diff line Loading @@ -465,6 +465,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' ); Loading lib/Travelynx/Model/Journeys.pm +21 −87 Original line number Diff line number Diff line Loading @@ -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 ) = @_; Loading Loading @@ -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]; Loading @@ -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}; Loading @@ -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}; Loading @@ -1746,10 +1689,8 @@ 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_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}; Loading @@ -1761,14 +1702,10 @@ sub compute_review { $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_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}; Loading @@ -1779,14 +1716,11 @@ sub compute_review { $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_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}; Loading share/locales/de_DE.po +37 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,43 @@ msgstr "automatisch" 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 # Loading share/locales/en_GB.po +37 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,43 @@ msgstr "auto" 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 # Loading templates/_checked_in.html.ep +3 −3 Original line number Diff line number Diff line Loading @@ -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') Loading Loading
lib/Travelynx.pm +58 −0 Original line number Diff line number Diff line Loading @@ -465,6 +465,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' ); Loading
lib/Travelynx/Model/Journeys.pm +21 −87 Original line number Diff line number Diff line Loading @@ -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 ) = @_; Loading Loading @@ -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]; Loading @@ -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}; Loading @@ -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}; Loading @@ -1746,10 +1689,8 @@ 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_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}; Loading @@ -1761,14 +1702,10 @@ sub compute_review { $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_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}; Loading @@ -1779,14 +1716,11 @@ sub compute_review { $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_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}; Loading
share/locales/de_DE.po +37 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,43 @@ msgstr "automatisch" 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 # Loading
share/locales/en_GB.po +37 −0 Original line number Diff line number Diff line Loading @@ -45,6 +45,43 @@ msgstr "auto" 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 # Loading
templates/_checked_in.html.ep +3 −3 Original line number Diff line number Diff line Loading @@ -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') Loading