From 7bcd02c3b12c68bf54dd06364ffc307acca97622 Mon Sep 17 00:00:00 2001 From: Toni Erdmann Date: Sun, 19 May 2019 21:52:12 +0200 Subject: [PATCH] first code for issue #70 --- bin/ptna-routes.pl | 265 +++---- locale/de/LC_MESSAGES/ptna.mo | Bin 26025 -> 26025 bytes locale/fr/LC_MESSAGES/ptna.mo | Bin 20206 -> 20206 bytes modules/RoutesList.pm | 287 ++++++- po/de.po | 334 ++++---- po/fr.po | 334 ++++---- po/ptna.pot | 334 ++++---- test/multiple-ref-type-issue-70-Routes.txt | 66 ++ test/multiple-ref-type-issue-70.expect | 168 ++++ test/multiple-ref-type-issue-70.osm | 868 +++++++++++++++++++++ 10 files changed, 1964 insertions(+), 692 deletions(-) create mode 100644 test/multiple-ref-type-issue-70-Routes.txt create mode 100644 test/multiple-ref-type-issue-70.expect create mode 100644 test/multiple-ref-type-issue-70.osm diff --git a/bin/ptna-routes.pl b/bin/ptna-routes.pl index af2ed09..6593f55 100755 --- a/bin/ptna-routes.pl +++ b/bin/ptna-routes.pl @@ -911,17 +911,9 @@ $table_headers_printed++; } - @list_of_matching_relation_ids = search_matching_relations( 'ref' => $entryref->{'ref'}, - 'ref-or-list' => $entryref->{'ref-or-list'}, - 'ref-and-list' => $entryref->{'ref-and-list'}, - 'route_type' => $entryref->{'route'}, - 'section' => $section, - 'operator' => $entryref->{'operator'}, - 'from' => $entryref->{'from'}, - 'from-list' => $entryref->{'from-list'}, - 'to' => $entryref->{'to'}, - 'to-list' => $entryref->{'to-list'}, - ); + @list_of_matching_relation_ids = SearchMatchingRelations( 'SearchListRef' => $PT_relations_with_ref{$section}, + 'EntryRef' => $entryref, + ); $number_of_matching_entries = scalar @list_of_matching_relation_ids; @@ -934,7 +926,7 @@ printf STDERR "%s Found: Relation-ID %s, Type: %s, Ref: %s, RouteType: %s\n", get_time(), $relation_id, $RELATIONS{$relation_id}->{'tag'}->{'type'}, $RELATIONS{$relation_id}->{'tag'}->{'ref'}, $RELATIONS{$relation_id}->{'tag'}->{$RELATIONS{$relation_id}->{'tag'}->{'type'}} if ( $debug ); if ( $i == 0 ) { - printTableSubHeader( 'ref-or-list' => $entryref->{'ref-or-list'}, # is a pointer to an array: ('23') or also ('43', 'E43') for multiple 'ref' values + printTableSubHeader( 'ref-or-list' => $entryref->{'ref-or-list'}, # is a pointer to an array: ('23') or also ('43', 'E43') for multiple 'ref' values 'network' => $relation_ptr->{'tag'}->{'network'}, # take 'network' value from first relation, undef outside this for-loop 'pt_type' => $entryref->{'route'}, 'colour' => $relation_ptr->{'tag'}->{'colour'}, # take 'colour' value from first relation, undef outside this for-loop @@ -1049,6 +1041,9 @@ foreach $relation_id ( @relation_ids ) { $relation_ptr = $RELATIONS{$relation_id}; + @{$relation_ptr->{'__issues__'}} = (); # just in case that this route has already been analyzed before (--multiple-ref-type-enries=allow) + @{$relation_ptr->{'__notes__'}} = (); # just in case that this route has already been analyzed before (--multiple-ref-type-enries=allow) + $status = analyze_relation( $relation_ptr, $relation_id ); printTableLine( 'ref' => $relation_ptr->{'tag'}->{'ref'}, @@ -1122,6 +1117,9 @@ keys(%{$PT_relations_with_ref{$section}->{$ref}->{$type}->{$route_type}})) ) { $relation_ptr = $PT_relations_with_ref{$section}->{$ref}->{$type}->{$route_type}->{$relation_id}; + @{$relation_ptr->{'__issues__'}} = (); # just in case that this route has already been analyzed before (--multiple-ref-type-enries=allow) + @{$relation_ptr->{'__notes__'}} = (); # just in case that this route has already been analyzed before (--multiple-ref-type-enries=allow) + $status = analyze_relation( $relation_ptr, $relation_id ); printTableLine( 'ref' => $relation_ptr->{'tag'}->{'ref'}, @@ -1380,19 +1378,23 @@ sub match_ref_and_pt_type { ############################################################################################# +# +# return a list of matching route and route-master relations +# +############################################################################################# + -sub search_matching_relations { +sub SearchMatchingRelations { my %hash = ( @_ ); - my $ExpRef = $hash{'ref'}; - my $ExpRefOrList = $hash{'ref-or-list'}; - my $ExpRefAndList = $hash{'ref-and-list'}; # currently no used - my $ExpRouteType = $hash{'route_type'}; - my $section = $hash{'section'} || 'positive'; - my $ExpOperator = $hash{'operator'} || ''; - my $ExpFrom = $hash{'from'} || ''; - my $ExpFromList = $hash{'from-list'}; - my $ExpTo = $hash{'to'} || ''; - my $ExpToList = $hash{'to-list'}; + + my $SearchListRef = $hash{'SearchListRef'}; + my $EntryRef = $hash{'EntryRef'}; + + my $ExpRef = $EntryRef->{'ref'} || ''; + my $ExpRefOrList = $EntryRef->{'ref-or-list'}; + my $ExpRouteType = $EntryRef->{'route'} || ''; + my $RelRef = undef; + my $RelRouteType = undef; my $RelOperator = undef; my $RelFrom = undef; my $RelTo = undef; @@ -1404,172 +1406,97 @@ sub search_matching_relations { my %selected_route_masters = (); my %selected_routes = (); - my $number_of_ref_type = 1; - my $number_of_ref_type_operator = 1; - my $handle_multiple = $multiple_ref_type_entries; - my @ExpRefOrArray = (); - my @ExpRefAndArray = (); # currently no used - my @ExpFromArray = (); - my @ExpToArray = (); if ( $ExpRefOrList ) { @ExpRefOrArray = @{$ExpRefOrList}; } elsif ( $ExpRef ) { push( @ExpRefOrArray, $ExpRef ); } - if ( $ExpFromList ) { - @ExpFromArray = @{$ExpFromList}; - } elsif ( $ExpFrom ) { - push( @ExpFromArray, $ExpFrom ); - } - if ( $ExpToList ) { - @ExpToArray = @{$ExpToList}; - } elsif ( $ExpRef ) { - push( @ExpToArray, $ExpTo ); - } - - if ( scalar @ExpRefOrArray && $ExpRouteType ) { - foreach $ExpRef ( @ExpRefOrArray ) { - $number_of_ref_type = RoutesList::RefTypeCount( $ExpRef, $ExpRouteType ); - $number_of_ref_type_operator = RoutesList::RefTypeOperatorCount( $ExpRef, $ExpRouteType, $ExpOperator ); - - my $relations_for_this_route_type = scalar(keys(%{$PT_relations_with_ref{$section}->{$ExpRef}->{'route_master'}->{$ExpRouteType}})) + - scalar(keys(%{$PT_relations_with_ref{$section}->{$ExpRef}->{'route'}->{$ExpRouteType}})); - if ( $relations_for_this_route_type ) { - foreach my $type ( 'route', 'route_master' ) { - # - # check 'route' first - # so that in case of a neded to check 'from' and 'to', 'route_master' can rely on 'route' information. - # i.e. if 'route' is selected, then it's 'route_master' also? - # - if ( $PT_relations_with_ref{$section}->{$ExpRef}->{$type} && $PT_relations_with_ref{$section}->{$ExpRef}->{$type}->{$ExpRouteType} ) { - foreach my $rel_id ( sort( { $PT_relations_with_ref{$section}->{$ExpRef}->{$type}->{$ExpRouteType}->{$a}->{'__sort_name__'} cmp - $PT_relations_with_ref{$section}->{$ExpRef}->{$type}->{$ExpRouteType}->{$b}->{'__sort_name__'} } - keys(%{$PT_relations_with_ref{$section}->{$ExpRef}->{$type}->{$ExpRouteType}})) ) { - printf STDERR "Relation %s, __sort_name__ = %s\n", $rel_id, $RELATIONS{$rel_id}->{'__sort_name__'} if ( $debug ); - if ( $number_of_ref_type > 1 && $handle_multiple eq 'analyze' ) { - # - # for this 'ref' and 'route_type' we have more than one entry in the CSV file - # i.e. there are doubled lines (example: DE-HB-VBN: bus routes 256, 261, 266, ... appear twice in different areas of the network) - # we should be able to distinguish them by their 'operator' values - # this requires the operator to be stated in the CSV file as Expected Operator and the tag 'operator' being set in the relation - # - $RelOperator = $RELATIONS{$rel_id}->{'tag'}->{'operator'} || ''; - - if ( $ExpOperator && $RelOperator ) { - if ( $ExpOperator eq $RelOperator ) { - if ( $number_of_ref_type_operator > 1 ) { - printf STDERR "%s Checking %s relation %s, 'ref' %s and 'operator' %s, count %d\n", get_time(), $type, $rel_id, $ExpRef, $ExpOperator, $number_of_ref_type_operator if ( $debug ); - - # - # check also from and to - # - $RelFrom = $RELATIONS{$rel_id}->{'tag'}->{'from'} || ''; - $RelTo = $RELATIONS{$rel_id}->{'tag'}->{'to'} || ''; - - if ( ( scalar @ExpFromArray || scalar @ExpToArray ) && - ( $RelFrom || $RelTo ) ) { - # minimum one of each pair must be defined + if ( $SearchListRef ) { + + if ( scalar @ExpRefOrArray && $ExpRouteType ) { - $match = undef; - foreach $ExpFrom ( @ExpFromArray ) { - if ( $ExpFrom ) { - if ( $RelFrom ) { - if ( $ExpFrom =~ m/\Q$RelFrom\E/ ) { - $match = "$ExpFrom =~ m/$RelFrom/"; - last; - } elsif ( $RelFrom =~ m/\Q$ExpFrom\E/ ) { - $match = "$RelFrom =~ m/$ExpFrom/"; - last; - } - } - if ( $RelTo ) { - if ( $ExpFrom =~ m/\Q$RelTo\E/ ) { - $match = "$ExpFrom =~ m/$RelTo/"; - last; - } elsif ( $RelTo =~ m/\Q$ExpFrom\E/ ) { - $match = "$RelTo =~ m/$ExpFrom/"; - last; - } - } - } - } - if ( !defined($match) ) { - foreach $ExpTo ( @ExpToArray ) { - if ( $ExpTo ) { - if ( $RelFrom ) { - if ( $ExpTo =~ m/\Q$RelFrom\E/ ) { - $match = "$ExpTo =~ m/$RelFrom/"; - last; - } elsif ( $RelFrom =~ m/\Q$ExpTo\E/ ) { - $match = "$RelFrom =~ m/$ExpTo/"; - last; - } - } - if ( $RelTo ) { - if ( $ExpTo =~ m/\Q$RelTo\E/ ) { - $match = "$ExpTo =~ m/$RelTo/"; - last; - } elsif ( $RelTo =~ m/\Q$ExpTo\E/ ) { - $match = "$RelTo =~ m/$ExpTo/"; - last; - } - } - } - } - } - if ( $match ) { - printf STDERR "%s Selecting relation %s, 'ref' %s and 'operator' %s: match for From/To\n", get_time(), $rel_id, $ExpRef, $ExpOperator if ( $debug ); - } else { - printf STDERR "%s Skipping relation %s, 'ref' %s and 'operator' %s: no match for From/To\n", get_time(), $rel_id, $ExpRef, $ExpOperator if ( $debug ); - next; - } - } else { - $match = undef; - if ( $type eq 'route_master' ) { - printf STDERR "%s Route-Master w/o values: %s\n", get_time(), $rel_id if ( $debug ); - # route_masters usually don't have 'from' or 'to' set: let's try something different - foreach my $member_rel_ref ( @{$RELATIONS{$rel_id}->{'route_master_relation'}} ) { - printf STDERR "%s Route-Master w/o values: %s - check Member %s\n", get_time(), $rel_id, $member_rel_ref->{'ref'} if ( $debug ); - if ( $selected_routes{$member_rel_ref->{'ref'}} ) { - # member route has been selected, from and/or to match, so let's assume, the route_aster matches as well - $match = $member_rel_ref->{'ref'}; - last; - } - } - } - if ( $match ) { - printf STDERR "%s Selecting relation %s, 'ref' %s and 'operator' %s: match for From/To\n", get_time(), $rel_id, $ExpRef, $ExpOperator if ( $debug ); - } else { - printf STDERR "%s Skipping relation %s, 'ref' %s and 'operator' %s: not enough values set for a comparison of From/To\n", get_time(), $rel_id, $ExpRef, $ExpOperator if ( $debug ); - next; - } + foreach my $ExpRefPart ( @ExpRefOrArray ) { + + my $relations_for_this_route_type = scalar(keys(%{$SearchListRef->{$ExpRefPart}->{'route_master'}->{$ExpRouteType}})) + + scalar(keys(%{$SearchListRef->{$ExpRefPart}->{'route'}->{$ExpRouteType}})); + if ( $relations_for_this_route_type ) { + + foreach my $type ( 'route', 'route_master' ) { + # + # check 'route' first + # so that in case of a need to check 'from' and 'to', 'route_master' can rely on 'route' information. + # i.e. if 'route' is selected, then it's 'route_master' also? + # + if ( $SearchListRef->{$ExpRefPart}->{$type} && $SearchListRef->{$ExpRefPart}->{$type}->{$ExpRouteType} ) { + foreach my $rel_id ( sort( { $SearchListRef->{$ExpRefPart}->{$type}->{$ExpRouteType}->{$a}->{'__sort_name__'} cmp + $SearchListRef->{$ExpRefPart}->{$type}->{$ExpRouteType}->{$b}->{'__sort_name__'} } + keys(%{$SearchListRef->{$ExpRefPart}->{$type}->{$ExpRouteType}})) ) { + printf STDERR "Relation %s, __sort_name__ = %s\n", $rel_id, $RELATIONS{$rel_id}->{'__sort_name__'} if ( $debug ); + + $RelRef = $RELATIONS{$rel_id}->{'tag'}->{'ref'} || ''; + $RelRouteType = $RELATIONS{$rel_id}->{'tag'}->{$type} || ''; + $RelOperator = $RELATIONS{$rel_id}->{'tag'}->{'operator'} || ''; + $RelFrom = $RELATIONS{$rel_id}->{'tag'}->{'from'} || ''; + $RelTo = $RELATIONS{$rel_id}->{'tag'}->{'to'} || ''; + + printf STDERR "%s Checking %s relation %s, 'ref' %s and 'operator' %s \n", get_time(), $type, $rel_id, $ExpRefPart, $RelOperator if ( $debug ); + + $match = RoutesList::RelationMatchesExpected( 'rel-id' => $rel_id, + 'rel-ref' => $RelRef, + 'rel-route-type' => $RelRouteType, + 'rel-operator' => $RelOperator, + 'rel-from' => $RelFrom, + 'rel-to' => $RelTo, + 'EntryRef' => $EntryRef, + 'multiple_ref_type_entries' => $multiple_ref_type_entries, + ); + printf STDERR "%s Checking == %s\n", get_time(), $match if ( $debug ); + + if ( !$match ) { + if ( $type eq 'route_master' ) { + + # route_masters usually don't have 'from' or 'to' set: let's try something different in case we don't have a direct match + + printf STDERR "%s Route-Master w/o values: %s\n", get_time(), $rel_id if ( $debug ); + + foreach my $member_rel_ref ( @{$RELATIONS{$rel_id}->{'route_master_relation'}} ) { + printf STDERR "%s Route-Master w/o values: %s - check Member %s\n", get_time(), $rel_id, $member_rel_ref->{'ref'} if ( $debug ); + if ( $selected_routes{$member_rel_ref->{'ref'}} ) { + # member route has been selected, from and/or to match, so let's assume, the route_master matches as well + $match = $member_rel_ref->{'ref'}; + last; } } - } else { - printf STDERR "%s Skipping relation %s, 'ref' %s: 'operator' does not match expected operator (%s vs %s)\n", get_time(), $rel_id, $ExpRef, $RelOperator, $ExpOperator if ( $debug ); - next; } } - else { - printf STDERR "%s Skipping relation %s, 'ref' %s: Relation: 'operator' = '%s', CSV file: 'operator' = '%s'\n", get_time(), $rel_id, $ExpRef, $RelOperator, $ExpOperator if ( $debug ); - next; + if ( $match ) { + if ( $type eq 'route_master' ) { + push( @route_master_list, $rel_id ) unless ( $selected_route_masters{$rel_id} ); + $selected_route_masters{$rel_id} = 1; +# +# # members of selected route_masters also match +# +# foreach my $member_rel_ref ( @{$RELATIONS{$rel_id}->{'route_master_relation'}} ) { +# printf STDERR "%s Relations of seletced Route-Master also match: %s - Member %s\n", get_time(), $rel_id, $member_rel_ref->{'ref'} if ( $debug ); +# push( @route_list, $member_rel_ref->{'ref'} ) unless ( $selected_routes{$member_rel_ref->{'ref'}} ); +# $selected_routes{$member_rel_ref->{'ref'}} = 1; +# } + } else { + push( @route_list, $rel_id ) unless ( $selected_routes{$rel_id} ); + $selected_routes{$rel_id} = 1; + } } - } - if ( $type eq 'route_master' ) { - push( @route_master_list, $rel_id ) unless ( $selected_route_masters{$rel_id} ); - $selected_route_masters{$rel_id} = 1; - } else { - push( @route_list, $rel_id ) unless ( $selected_routes{$rel_id} ); - $selected_routes{$rel_id} = 1; } } } } } } + } else { + printf STDERR "%s SearchMatchingRelations(): no Search List specified\n", get_time(); } return ( @route_master_list, @route_list ); diff --git a/locale/de/LC_MESSAGES/ptna.mo b/locale/de/LC_MESSAGES/ptna.mo index 3b8eb49a9f011bfa11e974b5473311499588ca5e..2ed9e55a0e2f4175a70544a59398bb96eb487e75 100644 GIT binary patch delta 23 ecmZ2^nsMc6#tlm59EO$(Mut|V2Aj3a>-7L*E(b{f delta 23 ecmZ2^nsMc6#tlm590n!|M#fe~CY!a)>-7L)`Uge; diff --git a/locale/fr/LC_MESSAGES/ptna.mo b/locale/fr/LC_MESSAGES/ptna.mo index ce37f1ec67d0abf3727419c17d216f7edf7cfec8..fa9e9bd96fa449f786932720d723b842d69f9f3f 100644 GIT binary patch delta 23 ecmaDim+{?P#tpGr9EO$(Mut|V2Afm0I#mE`BL~v} delta 23 ecmaDim+{?P#tpGr90n!|M#fe~CYw{WI#mE_?+4HT diff --git a/modules/RoutesList.pm b/modules/RoutesList.pm index fcb6f13..c546fdc 100755 --- a/modules/RoutesList.pm +++ b/modules/RoutesList.pm @@ -10,13 +10,8 @@ use utf8; binmode STDOUT, ":utf8"; binmode STDERR, ":utf8"; -#use Exporter; -#use base qw (Exporter); -#use Data::Dumper; use Encode; -#our @EXPORT_OK = qw( ReadRoutes ); - #################################################################################################################### # @@ -31,6 +26,12 @@ my %seen_ref_type = (); my %seen_ref_type_operator = (); my %seen_ref_type_operator_fromto = (); +my $CSV_separator = ';'; +my $OR_separator = '\|'; +my $REF_separator = '\/'; +my $Debug = undef; +my $Verbose = undef; + ############################################################################################# # # read the CSV Routes file information about 'ref', 'type', ... @@ -57,6 +58,12 @@ sub ReadRoutes { my ($ExpRef,$ExpRouteType,$ExpComment,$ExpFrom,$ExpTo,$ExpOperator); my @rest = (); + $CSV_separator = $csv_separator; + $OR_separator = $or_separator; + $REF_separator = $ref_separator; + $Debug = $debug; + $Verbose = $verbose; + if ( $ref_list_supported ) { map { $supported_routes_types{$_} = 1; } @{$ref_list_supported}; } @@ -107,8 +114,8 @@ sub ReadRoutes { ($ExpRef,$ExpRouteType,$ExpComment,$ExpFrom,$ExpTo,@rest) = split( $csv_separator, $_ ); } - $hashref->{'ref'} = $ExpRef || ''; # 'ref' - $hashref->{'route'} = $ExpRouteType || ''; # 'route/route_master' + $hashref->{'ref'} = $ExpRef || ''; # 'ref'= + $hashref->{'route'} = $ExpRouteType || ''; # 'route/route_master'= $hashref->{'comment'} = $ExpComment || ''; # routes file comment $hashref->{'from'} = $ExpFrom || ''; # 'from' $hashref->{'to'} = $ExpTo || ''; # 'to' @@ -138,18 +145,17 @@ sub ReadRoutes { $seen_ref_type{$reflistentry}->{$ExpRouteType}++; #printf STDERR "seen_ref_type{%s}->{%s} = %d\n", $reflistentry, $ExpRouteType, $seen_ref_type{$reflistentry}->{$ExpRouteType} if ( $debug ); - if ( $ExpOperator ) { - $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{$ExpOperator} = 0 unless ( $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{$ExpOperator} ); - $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{$ExpOperator}++; - #printf STDERR "seen_ref_type_operator{%s}->{%s}->{%s} = %d\n", $reflistentry, $ExpRouteType, $ExpOperator, $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{$ExpOperator} if ( $debug ); - - $seen_ref_type_operator_fromto{$reflistentry}->{$ExpRouteType}->{$ExpOperator}->{$ExpFrom.';'.$ExpTo} = 0 unless ( $seen_ref_type_operator_fromto{$reflistentry}->{$ExpRouteType}->{$ExpOperator}->{$ExpFrom.';'.$ExpTo} ); - $seen_ref_type_operator_fromto{$reflistentry}->{$ExpRouteType}->{$ExpOperator}->{$ExpFrom.';'.$ExpTo}++; - } + $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{'ExpOperator='.$ExpOperator} = 0 unless ( $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{'ExpOperator='.$ExpOperator} ); + $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{'ExpOperator='.$ExpOperator}++; + #printf STDERR "seen_ref_type_operator{%s}->{%s}->{%s} = %d\n", $reflistentry, $ExpRouteType, $ExpOperator, $seen_ref_type_operator{$reflistentry}->{$ExpRouteType}->{'ExpOperator='.$ExpOperator} if ( $debug ); + + $seen_ref_type_operator_fromto{$reflistentry}->{$ExpRouteType}->{'ExpOperator='.$ExpOperator}->{'['.$ExpFrom.'];['.$ExpTo.']'} = 1; + if ( $ExpFrom ) { my @from_list = split( $or_separator, $ExpFrom ); $hashref->{'from-list'} = \@from_list; } + if ( $ExpTo ) { my @to_list = split( $or_separator, $ExpTo ); $hashref->{'to-list'} = \@to_list; @@ -231,7 +237,7 @@ sub ReadRoutes { ############################################################################################# # -# return a list (array) fileds of the CSV line +# return a list (array) fields of the CSV line # https://stackoverflow.com/questions/3065095/how-do-i-efficiently-parse-a-csv-file-in-perl # @@ -303,7 +309,7 @@ sub RefTypeCount { ############################################################################################# # -# return whether the combination of 'ref' and 'type' is in the list +# return how many combinations with identical 'ref' and 'type' and 'operator' are in the list # ############################################################################################# @@ -312,16 +318,253 @@ sub RefTypeOperatorCount { my $route_type = shift; my $operator = shift; - if ( $ref && $route_type && $operator && - $seen_ref{$ref} && - $seen_ref_type{$ref} && $seen_ref_type{$ref}->{$route_type} && - $seen_ref_type_operator{$ref} && $seen_ref_type_operator{$ref}->{$route_type} && $seen_ref_type_operator{$ref}->{$route_type}->{$operator} ) { + if ( $ref && $route_type && + $seen_ref{$ref} && + $seen_ref_type{$ref} && $seen_ref_type{$ref}->{$route_type} && + $seen_ref_type_operator{$ref} && $seen_ref_type_operator{$ref}->{$route_type} && + $seen_ref_type_operator{$ref}->{$route_type}->{'ExpOperator='.$operator} ) { + + return $seen_ref_type_operator{$ref}->{$route_type}->{'ExpOperator='.$operator}; + + } + + return 0; +} + + +############################################################################################# +# +# return combinations with identical 'ref' and 'type' and 'operator' from the list +# +############################################################################################# + +sub GetRefTypeOperatorFromAndTo { + my $RelRef = shift; + my $RelRouteType = shift; + my $RelOperator = shift; + my $RelFrom = shift; + my $RelTo = shift; + + my @ret_list = (); + + my $CombFrom = undef; + my $CombTo = undef; + my @CombFromArray = (); + my @CombToArray = (); + + my $match = undef; + + printf STDERR "%s GetRefTypeOperatorFromAndTo( %s, %s, %s, %s, %s );\n", get_time(), $RelRef, $RelRouteType, $RelOperator, $RelFrom, $RelTo if ( $Debug ); + + if ( $RelRef && + $RelRouteType && + $seen_ref_type_operator_fromto{$RelRef} && + $seen_ref_type_operator_fromto{$RelRef}->{$RelRouteType} && + $seen_ref_type_operator_fromto{$RelRef}->{$RelRouteType}->{'ExpOperator='.$RelOperator} ) { + + foreach my $combination ( sort ( keys ( %{$seen_ref_type_operator_fromto{$RelRef}->{$RelRouteType}->{'ExpOperator='.$RelOperator}} ) ) ) { + + printf STDERR "%s GetRefTypeOperatorFromAndTo(): checking combination '%s' with OR\n", get_time(), $combination if ( $Debug ); + + if ( $combination =~ m/^\[(.*?)\];\[(.*?)\]$/ ) { + + $CombFrom = $1; + $CombTo = $2; + + @CombFromArray = split( $OR_separator, $CombFrom ); + @CombToArray = split( $OR_separator, $CombTo ); + + if ( ( scalar @CombFromArray || scalar @CombToArray ) && + ( $RelFrom || $RelTo ) ) { + # minimum one of each pair must be defined + + $match = undef; + foreach $CombFrom ( @CombFromArray ) { + if ( $CombFrom ) { + if ( $RelFrom ) { + if ( $CombFrom =~ m/\Q$RelFrom\E/ ) { + $match = "$CombFrom =~ m/$RelFrom/"; + last; + } elsif ( $RelFrom =~ m/\Q$CombFrom\E/ ) { + $match = "$RelFrom =~ m/$CombFrom/"; + last; + } + } + if ( $RelTo ) { + if ( $CombFrom =~ m/\Q$RelTo\E/ ) { + $match = "$CombFrom =~ m/$RelTo/"; + last; + } elsif ( $RelTo =~ m/\Q$CombFrom\E/ ) { + $match = "$RelTo =~ m/$CombFrom/"; + last; + } + } + } + } + if ( !defined($match) ) { + foreach $CombTo ( @CombToArray ) { + if ( $CombTo ) { + if ( $RelFrom ) { + if ( $CombTo =~ m/\Q$RelFrom\E/ ) { + $match = "$CombTo =~ m/$RelFrom/"; + last; + } elsif ( $RelFrom =~ m/\Q$CombTo\E/ ) { + $match = "$RelFrom =~ m/$CombTo/"; + last; + } + } + if ( $RelTo ) { + if ( $CombTo =~ m/\Q$RelTo\E/ ) { + $match = "$CombTo =~ m/$RelTo/"; + last; + } elsif ( $RelTo =~ m/\Q$CombTo\E/ ) { + $match = "$RelTo =~ m/$CombTo/"; + last; + } + } + } + } + } + if ( $match ) { + printf STDERR "%s GetRefTypeOperatorFromAndTo(): selecting combination 'ref' = '%s' and 'operator' = '%s': match = '%s'\n", get_time(), $RelRef, $RelOperator, $match if ( $Debug ); + push( @ret_list, $combination ); + } else { + printf STDERR "%s GetRefTypeOperatorFromAndTo(): skipping combination 'ref' = '%s' and 'operator' = '%s': NO match\n", get_time(), $RelRef, $RelOperator if ( $Debug ); + } + } + } + } + + # check whether we had a single match using 'from' OR 'to' - return $seen_ref_type_operator{$ref}->{$route_type}->{$operator}; + if ( scalar(@ret_list) > 1 ) { + # + # no, there is more than one match, let's try 'from' AND 'to' + + my $from_match = ''; + my $to_match = ''; + my @second_list = @ret_list; + @ret_list = (); + + foreach my $combination ( @second_list ) { + + printf STDERR "%s GetRefTypeOperatorFromAndTo(): checking combination '%s' with AND\n", get_time(), $combination if ( $Debug ); + + if ( $combination =~ m/^\[.*$RelFrom.*\];\[.*$RelTo.*\]$/ || + $combination =~ m/^\[.*$RelTo.*\];\[.*$RelFrom.*\]$/ ) { + printf STDERR "%s GetRefTypeOperatorFromAndTo(): selecting combination 'ref' = '%s' and 'operator' = '%s': from-match = '%s', to-match = '%s' with combination = '%s'\n", get_time(), $RelRef, $RelOperator, $from_match, $to_match, $combination if ( $Debug ); + push( @ret_list, $combination ); + } else { + printf STDERR "%s GetRefTypeOperatorFromAndTo(): skipping combination 'ref' = '%s' and 'operator' = '%s': NO match for 'from' = '%s' AND 'to' = '%s' with combination = '%s'\n", get_time(), $RelRef, $RelOperator, $from_match, $to_match, $combination if ( $Debug ); + } + } + } + + } + + return @ret_list; +} + + +############################################################################################# +# +# return whether the combination of 'ref' and 'type' is in the list +# +############################################################################################# + +sub RelationMatchesExpected { + my %hash = ( @_ ); + + my $RelRef = $hash{'rel-ref'} || ''; + my $RelRouteType = $hash{'rel-route-type'} || ''; + my $RelOperator = $hash{'rel-operator'} || ''; + my $RelFrom = $hash{'rel-from'} || ''; + my $RelTo = $hash{'rel-to'} || ''; + my $RelID = $hash{'rel-id'} || ''; + my $EntryRef = $hash{'EntryRef'}; + my $handle_multiple = $hash{'multiple_ref_type_entries'} || 'analyze'; + + return 0 unless ( $EntryRef ); + + my $ExpOperator = $EntryRef->{'operator'} || ''; + my $ExpFrom = $EntryRef->{'from'} || ''; + my $ExpTo = $EntryRef->{'to'} || ''; + + my $number_of_ref_type = RefTypeCount( $RelRef, $RelRouteType ); + my $number_of_ref_type_operator = 0; + + my $match = undef; + + printf STDERR "%s Checking %s relation %s, 'ref' %s and 'operator' %s, ref-type-count %d\n", get_time(), $RelRouteType, $RelID, $RelRef, $RelOperator, $number_of_ref_type if ( $Debug ); + + if ( $number_of_ref_type > 1 && $handle_multiple eq 'analyze' ) { + + # + # for this 'ref' and 'route_type' we have more than one entry in the CSV file + # i.e. there are doubled lines (example: DE-HB-VBN: bus routes 256, 261, 266, ... appear twice in different areas of the network) + # we should be able to distinguish them by their 'operator' values + # this requires the operator to be stated in the CSV file as Expected Operator and the tag 'operator' being set in the relation + # + + if ( $ExpOperator eq $RelOperator ) { + + $number_of_ref_type_operator = RefTypeOperatorCount( $RelRef, $RelRouteType, $RelOperator ); + + if ( $number_of_ref_type_operator > 1 ) { + + my $ExpectedCombination = '['.$ExpFrom.'];['.$ExpTo.']'; + + printf STDERR "%s Checking %s relation %s, 'ref'= '%s' and 'operator'= '%s', ref-type-operator-count = '%d': expected combination: = '%s'\n", get_time(), $RelRouteType, $RelID, $RelRef, $RelOperator, $number_of_ref_type_operator, $ExpectedCombination if ( $Debug ); + + my @CombinationsWithMatchingFromAndTo = GetRefTypeOperatorFromAndTo( $RelRef, $RelRouteType, $RelOperator, $RelFrom, $RelTo, $ExpectedCombination ); + + if ( scalar(@CombinationsWithMatchingFromAndTo) == 0 ) { + + printf STDERR "%s Skipping relation %s, 'ref' = '%s' and 'operator' = '%s': NO match for from = '%s' and/or 'to' = '%s'\n", get_time(), $RelID, $RelRef, $RelOperator, $RelFrom, $RelTo if ( $Debug ); + return 0; + + } elsif ( scalar(@CombinationsWithMatchingFromAndTo) == 1 ) { + + if ( $CombinationsWithMatchingFromAndTo[0] eq $ExpectedCombination ) { + printf STDERR "%s Selecting relation %s, 'ref' = '%s' and 'operator' = '%s': EXACT match for from = '%s' and/or 'to' = '%s'\n", get_time(), $RelID, $RelRef, $RelOperator, $RelFrom, $RelTo if ( $Debug ); + return 1; + } else { + printf STDERR "%s skipping relation %s, 'ref' = '%s' and 'operator' = '%s': match = '%s', not the expected one = '%s'\n", get_time(), $RelID, $RelRef, $RelOperator, $match, $ExpectedCombination if ( $Debug ); + return 0; + } + + } else { + printf STDERR "%s Skipping relation %s, 'ref' = '%s' and 'operator' = '%s': TOO MANY matches (%d) for from = '%s' and 'to' = '%s'\n", get_time(), $RelID, $RelRef, $RelOperator, scalar(@CombinationsWithMatchingFromAndTo), $RelFrom, $RelTo if ( $Debug ); + return 0; + + } + } else { + printf STDERR "%s Selecting relation %s, 'ref' %s 'operator' matches single expected operator (%s vs %s)\n", get_time(), $RelID, $RelRef, $RelOperator, $RelOperator if ( $Debug ); + return 1; + } + } else { + printf STDERR "%s Skipping relation %s, 'ref' %s: 'operator' does not match expected operator (%s vs %s)\n", get_time(), $RelID, $RelRef, $RelOperator, $RelOperator if ( $Debug ); + return 0; + } + } else { + # we do not have multiple entries or we are not interested to distinguish between them + printf STDERR "%s Selecting relation %s, 'ref' %s and 'operator' %s: no multiple entries\n", get_time(), $RelID, $RelRef, $RelOperator if ( $Debug ); + return 1; } return 0; } + + +############################################################################################# + +sub get_time { + + my ($sec,$min,$hour,$day,$month,$year) = localtime(); + + return sprintf( "%04d-%02d-%02d %02d:%02d:%02d", $year+1900, $month+1, $day, $hour, $min, $sec ); +} + diff --git a/po/de.po b/po/de.po index 79a3a85..13ab6c1 100644 --- a/po/de.po +++ b/po/de.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: osm-ToniE@web.de\n" -"POT-Creation-Date: 2019-05-04 23:24+0200\n" +"POT-Creation-Date: 2019-05-19 21:50+0200\n" "PO-Revision-Date: 2019-04-05 14:25+0000\n" "Last-Translator: ToniE , 2019\n" "Language-Team: German (https://www.transifex.com/jungle-bus/teams/97874/" @@ -153,41 +153,41 @@ msgstr "Seilbahn" msgid "Funicular" msgstr "Drahtseilbahn" -#: ../bin/ptna-routes.pl:987 +#: ../bin/ptna-routes.pl:979 #, perl-format msgid "Missing route for ref='%s' and route='%s'" msgstr "Fehlende Linie für 'ref' = '%s' und 'route' = '%s'" -#: ../bin/ptna-routes.pl:994 +#: ../bin/ptna-routes.pl:986 msgid "' or ref='" msgstr "' oder ref='" #. xgettext: This section will list all routes which could not be clearly assigned because the combination of "ref;type" appears more than once and information like 'operator', 'from' and 'to' is missing -#: ../bin/ptna-routes.pl:1045 +#: ../bin/ptna-routes.pl:1037 msgid "Not clearly assigned routes" msgstr "Nicht eindeutig zugeordnete Linien" -#: ../bin/ptna-routes.pl:1100 +#: ../bin/ptna-routes.pl:1095 msgid "Other Public Transport Lines" msgstr "Andere ÖPNV Linien" -#: ../bin/ptna-routes.pl:1102 +#: ../bin/ptna-routes.pl:1097 msgid "Public Transport Lines" msgstr "ÖPNV Linien" -#: ../bin/ptna-routes.pl:1169 +#: ../bin/ptna-routes.pl:1167 msgid "Public Transport Lines without 'ref'" msgstr "ÖPNV Linien ohne 'ref'-Wert" -#: ../bin/ptna-routes.pl:1220 +#: ../bin/ptna-routes.pl:1218 msgid "More Relations" msgstr "Weitere Relationen" -#: ../bin/ptna-routes.pl:1258 +#: ../bin/ptna-routes.pl:1256 msgid "Details for 'network'-Values" msgstr "Details zu 'network'-Werten" -#: ../bin/ptna-routes.pl:1655 +#: ../bin/ptna-routes.pl:1582 #, perl-format msgid "" "Route-Master has more Routes than actually match (%d versus %d) in the given " @@ -202,7 +202,7 @@ msgstr[1] "" "Route-Master haben mehr Routen als im Datensatz tatsächlich passend gefunden " "wurden (%d gegenüber %d)" -#: ../bin/ptna-routes.pl:1660 +#: ../bin/ptna-routes.pl:1587 #, perl-format msgid "" "Route-Master has less Routes than actually match (%d versus %d) in the given " @@ -217,11 +217,11 @@ msgstr[1] "" "Route-Master haben weniger Routen als im Datensatz tatsächlich passend " "gefunden wurden (%d gegenüber %d)" -#: ../bin/ptna-routes.pl:1701 ../bin/ptna-routes.pl:1945 +#: ../bin/ptna-routes.pl:1628 ../bin/ptna-routes.pl:1872 msgid "There is more than one Route-Master" msgstr "Es existiert mehr als ein Route-Master" -#: ../bin/ptna-routes.pl:1763 +#: ../bin/ptna-routes.pl:1690 #, perl-format msgid "" "Route might be listed with 'ref' = '%s' in a different section or in section " @@ -230,7 +230,7 @@ msgstr "" "Route ist unter der 'ref' = '%s' möglicherweise in einem anderen Abschnitt " "oder im Abschnitt 'Nicht eindeutig zugeordnete Linien' gelistet: %s" -#: ../bin/ptna-routes.pl:1771 +#: ../bin/ptna-routes.pl:1698 #, perl-format msgid "" "Route has different 'operator' = '%s' than Route-Master 'operator' = '%s': %s" @@ -238,7 +238,7 @@ msgstr "" "Route hat einen anderen 'operator' = '%s' Wert als der Route-Master " "'operator' = '%s': %s" -#: ../bin/ptna-routes.pl:1780 +#: ../bin/ptna-routes.pl:1707 #, perl-format msgid "" "Route has 'operator' = '%s' value which is considered as not relevant: %s" @@ -246,7 +246,7 @@ msgstr "" "Route hat einen 'operator' = '%s' Wert, der als irrelevant betrachtet wird: " "%s" -#: ../bin/ptna-routes.pl:1789 +#: ../bin/ptna-routes.pl:1716 #, perl-format msgid "" "Route has different 'network' = '%s' than Route-Master 'network' = '%s': %s" @@ -254,14 +254,14 @@ msgstr "" "Route hat einen anderen 'network' = '%s' Wert als der Route-Master 'network' " "= '%s': %s" -#: ../bin/ptna-routes.pl:1798 +#: ../bin/ptna-routes.pl:1725 #, perl-format msgid "" "Route has 'network' = '%s' value which is considered as not relevant: %s" msgstr "" "Route hat einen 'network' = '%s' Wert, der als irrelevant betrachtet wird: %s" -#: ../bin/ptna-routes.pl:1807 ../bin/ptna-routes.pl:2045 +#: ../bin/ptna-routes.pl:1734 ../bin/ptna-routes.pl:1972 #, perl-format msgid "" "Route has different 'ref' = '%s' than Route-Master 'ref' = '%s' - this " @@ -270,18 +270,18 @@ msgstr "" "Route hat einen anderen 'ref' = '%s' Wert als der Route-Master 'ref' = '%s - " "das sollte vermieden werden': %s" -#: ../bin/ptna-routes.pl:1816 +#: ../bin/ptna-routes.pl:1743 #, perl-format msgid "Route has not matching 'ref' = '%s': %s" msgstr "Route hat unpassenden 'ref' = '%s' Wert: %s" -#: ../bin/ptna-routes.pl:1825 +#: ../bin/ptna-routes.pl:1752 #, perl-format msgid "Route exists in the given data set but 'ref' tag is not set: %s" msgstr "" "Route existiert im geladenen Datensatz, 'ref' ist aber nicht gesetzt: %s" -#: ../bin/ptna-routes.pl:1834 +#: ../bin/ptna-routes.pl:1761 #, perl-format msgid "" "Route has different 'route' = '%s' than Route-Master 'route_master' = '%s': " @@ -290,38 +290,38 @@ msgstr "" "Route hat einen anderen 'route' = '%s' Wert als der Route-Master 'route' = " "'%s': %s" -#: ../bin/ptna-routes.pl:1844 +#: ../bin/ptna-routes.pl:1771 #, perl-format msgid "Route has 'route' = '%s' value which is considered as not relevant: %s" msgstr "" "Route hat einen 'route' = '%s' Wert, der als irrelevant betrachtet wird: %s" -#: ../bin/ptna-routes.pl:1852 +#: ../bin/ptna-routes.pl:1779 #, perl-format msgid "Route: 'route' tag is not set: %s" msgstr "Route: 'route' ist nicht gesetzt: %s" -#: ../bin/ptna-routes.pl:1862 +#: ../bin/ptna-routes.pl:1789 #, perl-format msgid "Route: 'type' = '%s' is not 'route': %s" msgstr "Route: 'type' = '%s' ist nicht 'route': %s" -#: ../bin/ptna-routes.pl:1871 +#: ../bin/ptna-routes.pl:1798 #, perl-format msgid "Route: 'type' tag is not set: %s" msgstr "Route: 'type' ist nicht gesetzt: %s" -#: ../bin/ptna-routes.pl:1882 +#: ../bin/ptna-routes.pl:1809 #, perl-format msgid "Route does not exist in the given data set: %s" msgstr "Route wurde im geladenen Datensatz nicht gefunden: %s" -#: ../bin/ptna-routes.pl:1894 +#: ../bin/ptna-routes.pl:1821 #, perl-format msgid "Route is not member of Route-Master: %s" msgstr "Route ist nicht Element des Route-Masters: %s" -#: ../bin/ptna-routes.pl:1953 +#: ../bin/ptna-routes.pl:1880 #, perl-format msgid "" "Route-Master might be listed with 'ref' = '%s' in a different section or in " @@ -331,7 +331,7 @@ msgstr "" "anderen Abschnitt oder im Abschnitt 'Nicht eindeutig zugeordnete Linien' " "gelistet: %s" -#: ../bin/ptna-routes.pl:1958 +#: ../bin/ptna-routes.pl:1885 #, perl-format msgid "" "Route-Master might be listed with unknown 'ref' in section 'Public Transport " @@ -340,26 +340,26 @@ msgstr "" "Route-Master ist mit undefiniertem 'ref' Wert möglicherweise im Abschnitt " "'ÖPNV Linien ohne 'ref'-Wert' gelistet: %s" -#: ../bin/ptna-routes.pl:1982 +#: ../bin/ptna-routes.pl:1909 #, perl-format msgid "This Route is direct member of more than one Route-Master: %s" msgstr "Die Route ist direktes Element von mehr als einem Route-Master: %s" -#: ../bin/ptna-routes.pl:1991 +#: ../bin/ptna-routes.pl:1918 msgid "Multiple Routes but no Route-Master" msgstr "Mehrere Routen aber kein Route-Master" -#: ../bin/ptna-routes.pl:1998 +#: ../bin/ptna-routes.pl:1925 msgid "Multiple Routes but this Route is not a member of any Route-Master" msgstr "" "Mehrere Routen aber diese Route ist nicht Element eines existierenden Route-" "Masters" -#: ../bin/ptna-routes.pl:2009 +#: ../bin/ptna-routes.pl:1936 msgid "This Route is not a member of any Route-Master" msgstr "Diese Route ist nicht Element eines existierenden Route-Masters" -#: ../bin/ptna-routes.pl:2026 +#: ../bin/ptna-routes.pl:1953 #, perl-format msgid "" "'route' = '%s' of Route does not fit to 'route_master' = '%s' of Route-" @@ -368,12 +368,12 @@ msgstr "" "'route' = '%s' der Route passt nicht zu 'route_master' = '%s' des Route-" "Masters: %s" -#: ../bin/ptna-routes.pl:2053 +#: ../bin/ptna-routes.pl:1980 #, perl-format msgid "Route-Master has not matching 'ref' = '%s': %s" msgstr "Route-Master hat unpassenden 'ref' = '%s' Wert: %s" -#: ../bin/ptna-routes.pl:2063 +#: ../bin/ptna-routes.pl:1990 #, perl-format msgid "" "'network' = '%s' of Route does not fit to 'network' = '%s' of Route-Master: " @@ -382,39 +382,39 @@ msgstr "" "'network' = '%s' der Route passt nicht zu 'network' = '%s' des Route-" "Masters: %s" -#: ../bin/ptna-routes.pl:2082 +#: ../bin/ptna-routes.pl:2009 #, perl-format msgid "'colour' of Route does not fit to 'colour' of Route-Master: %s" msgstr "'colour' der Route passt nicht zu 'colour' des Route-Masters: %s" -#: ../bin/ptna-routes.pl:2090 +#: ../bin/ptna-routes.pl:2017 #, perl-format msgid "'colour' of Route is set but 'colour' of Route-Master is not set: %s" msgstr "" "'colour' der Route ist gesetzt aber 'colour' des Route-Masters ist nicht " "gesetzt: %s" -#: ../bin/ptna-routes.pl:2098 +#: ../bin/ptna-routes.pl:2025 #, perl-format msgid "'colour' of Route is not set but 'colour' of Route-Master is set: %s" msgstr "" "'colour' der Route ist nicht gesetzt aber 'colour' des Route-Masters ist " "gesetzt: %s" -#: ../bin/ptna-routes.pl:2109 +#: ../bin/ptna-routes.pl:2036 msgid "Multiple Routes but 'public_transport:version' is not set to '2'" msgstr "" "Mehrere Routen aber 'public_transport:version' ist nicht auf '2' gesetzt" -#: ../bin/ptna-routes.pl:2181 +#: ../bin/ptna-routes.pl:2108 msgid "'ref' is not set" msgstr "'ref' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:2189 +#: ../bin/ptna-routes.pl:2116 msgid "'name' is not set" msgstr "'name' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:2255 +#: ../bin/ptna-routes.pl:2182 #, perl-format msgid "" "'network' = '%s' includes the separator value ';' (semi-colon) with " @@ -423,7 +423,7 @@ msgstr "" "'network' = '%s' enthält das Trennzeichen ';' (Semikolon) mit umgebendem " "Leerzeichen" -#: ../bin/ptna-routes.pl:2263 +#: ../bin/ptna-routes.pl:2190 #, perl-format msgid "" "'network' = '%s': ',' (comma) as separator value should be replaced by " @@ -432,88 +432,88 @@ msgstr "" "'network' = '%s': ',' (Komma) als Trennzeichen sollte durch ';' (Semikolon, " "ohne Leerzeichen) ersetzt werden" -#: ../bin/ptna-routes.pl:2272 +#: ../bin/ptna-routes.pl:2199 #, perl-format msgid "'network' = '%s' should be short form" msgstr "'network' = '%s' sollte in Kurzform angegeben werden" -#: ../bin/ptna-routes.pl:2277 +#: ../bin/ptna-routes.pl:2204 #, perl-format msgid "'network' = '%s' should be long form" msgstr "'network' = '%s' sollte in Langform angegeben werden" -#: ../bin/ptna-routes.pl:2324 ../bin/ptna-routes.pl:4780 +#: ../bin/ptna-routes.pl:2251 ../bin/ptna-routes.pl:4707 msgid "'network' is not set" msgstr "'network' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:2333 +#: ../bin/ptna-routes.pl:2260 #, perl-format msgid "'colour' has unknown value '%s'" msgstr "'colour' hat einen unbekannten Wert '%s'" -#: ../bin/ptna-routes.pl:2343 +#: ../bin/ptna-routes.pl:2270 #, perl-format msgid "'%s' is long form" msgstr "'%s' ist Langform" -#: ../bin/ptna-routes.pl:2348 +#: ../bin/ptna-routes.pl:2275 #, perl-format msgid "'%s' matches long form" msgstr "'%s' passt zur Langform" -#: ../bin/ptna-routes.pl:2406 +#: ../bin/ptna-routes.pl:2333 msgid "Route-Master without Route(s)" msgstr "Route-Master ohne Route(n)" -#: ../bin/ptna-routes.pl:2408 +#: ../bin/ptna-routes.pl:2335 msgid "Route-Master with Relation(s) unequal to 'route'" msgstr "Route-Master mit Relation(en) ungleich 'route'" -#: ../bin/ptna-routes.pl:2409 +#: ../bin/ptna-routes.pl:2336 msgid "Route-Master with Way(s)" msgstr "Route-Master mit Way(s)" -#: ../bin/ptna-routes.pl:2410 +#: ../bin/ptna-routes.pl:2337 msgid "Route-Master with Node(s)" msgstr "Route-Master mit Node(s)" -#: ../bin/ptna-routes.pl:2413 +#: ../bin/ptna-routes.pl:2340 msgid "'public_transport:version' is not set to '2'" msgstr "'public_transport:version' ist nicht '2'" -#: ../bin/ptna-routes.pl:2418 ../bin/ptna-routes.pl:2468 +#: ../bin/ptna-routes.pl:2345 ../bin/ptna-routes.pl:2395 msgid "'public_transport:version' is not set" msgstr "'public_transport:version' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:2446 +#: ../bin/ptna-routes.pl:2373 msgid "Route without Way(s)" msgstr "Route ohne Way(s)" -#: ../bin/ptna-routes.pl:2447 +#: ../bin/ptna-routes.pl:2374 msgid "Route with only 1 Way" msgstr "Route mit nur einem Way" -#: ../bin/ptna-routes.pl:2448 +#: ../bin/ptna-routes.pl:2375 msgid "Route without Node(s)" msgstr "Route ohne Node(s)" -#: ../bin/ptna-routes.pl:2449 +#: ../bin/ptna-routes.pl:2376 msgid "Route with only 1 Node" msgstr "Route mit nur einem Node" -#: ../bin/ptna-routes.pl:2450 +#: ../bin/ptna-routes.pl:2377 msgid "Route with Relation(s)" msgstr "Route mit Relation(en)" -#: ../bin/ptna-routes.pl:2454 +#: ../bin/ptna-routes.pl:2381 msgid "'public_transport:version' is neither '1' nor '2'" msgstr "'public_transport:version' ist weder '1' noch '2'" -#: ../bin/ptna-routes.pl:2463 +#: ../bin/ptna-routes.pl:2390 msgid "Skipping further analysis ..." msgstr "Weitere Analyse wird übersprungen ..." -#: ../bin/ptna-routes.pl:2626 +#: ../bin/ptna-routes.pl:2553 msgid "" "PTv2 route: first way is a oneway road and ends in a 'stop_position' of this " "route and there is no exit. Is the route sorted in reverse order?" @@ -522,7 +522,7 @@ msgstr "" "'stop_position' und es geht nicht mehr weiter. Sind die Wege der Route " "falsch herum sortiert?" -#: ../bin/ptna-routes.pl:2632 +#: ../bin/ptna-routes.pl:2559 #, perl-format msgid "PTv2 route: has a gap, consists of %d segments. Gap appears at way" msgid_plural "" @@ -534,14 +534,14 @@ msgstr[1] "" "PTv2 Route: hat Lücken, besteht aus %d Segmenten. Die Lücken sind bei den " "Wegen" -#: ../bin/ptna-routes.pl:2634 ../bin/ptna-routes.pl:2654 -#: ../bin/ptna-routes.pl:2674 ../bin/ptna-routes.pl:4242 -#: ../bin/ptna-routes.pl:4468 ../bin/ptna-routes.pl:4496 +#: ../bin/ptna-routes.pl:2561 ../bin/ptna-routes.pl:2581 +#: ../bin/ptna-routes.pl:2601 ../bin/ptna-routes.pl:4169 +#: ../bin/ptna-routes.pl:4395 ../bin/ptna-routes.pl:4423 #, perl-format msgid "%s: %s and %d more ..." msgstr "%s: %s und %d mehr ..." -#: ../bin/ptna-routes.pl:2641 +#: ../bin/ptna-routes.pl:2568 #, perl-format msgid "" "PTv2 route: incorrect order of 'stop_position', 'platform' and 'way' (stop/" @@ -550,24 +550,24 @@ msgstr "" "PTv2 Route: falsche Reihenfolge von 'stop_position', 'platform' und 'way': " "'stop_position'/'platform' müssen vor allen 'way' kommen" -#: ../bin/ptna-routes.pl:2645 +#: ../bin/ptna-routes.pl:2572 msgid "entire roundabout but uses only segments" msgid_plural "entire roundabouts but uses only segments" msgstr[0] "kompletten Kreisverkehr von dem aber nur Teile benutzt werden" msgstr[1] "komplette Kreisverkehre von denen aber nur Teile benutzt werden" -#: ../bin/ptna-routes.pl:2646 +#: ../bin/ptna-routes.pl:2573 #, perl-format msgid "PTv2 route: includes %d %s" msgstr "PTv2 Route: enthält %d %s" -#: ../bin/ptna-routes.pl:2652 +#: ../bin/ptna-routes.pl:2579 msgid "PTv2 route: using oneway way in wrong direction" msgid_plural "PTv2 route: using oneway ways in wrong direction" msgstr[0] "PTv2 Route: Einbahnstraße wird in der falschen Richtung benutzt" msgstr[1] "PTv2 Route: Einbahnstraßen werden in der falschen Richtung benutzt" -#: ../bin/ptna-routes.pl:2661 +#: ../bin/ptna-routes.pl:2588 msgid "PTv2 route: using motorway_link way without entering a motorway way:" msgid_plural "" "PTv2 route: using motorway_link ways without entering a motorway way:" @@ -578,22 +578,22 @@ msgstr[1] "" "PTv2 Route: es werden 'motorway_link' Straßen benutzt ohne vorher oder " "nachher eine 'motorway' Straße benutzt zu haben:" -#: ../bin/ptna-routes.pl:2668 +#: ../bin/ptna-routes.pl:2595 msgid "PTv2 route: roundabout appears twice, following itself" msgid_plural "PTv2 route: roundabouts appear twice, following themselves" msgstr[0] "PTv2 Route: Kreisverkehr tritt doppelt auf, direkt nach sich selbst" msgstr[1] "" "PTv2 Route: Kreisverkehre treten doppelt auf, direkt nach sich selbst" -#: ../bin/ptna-routes.pl:2730 +#: ../bin/ptna-routes.pl:2657 msgid "first node of oneway way has 'role' = 'stop_exit_only'" msgstr "Der erste Punkt einer Einbahnstraße hat die 'role' = 'stop_exit_only'" -#: ../bin/ptna-routes.pl:2734 +#: ../bin/ptna-routes.pl:2661 msgid "last node of oneway way has 'role' = 'stop_entry_only'" msgstr "Der letzte Punkt einer Einbahstraße hat die 'role' = 'stop_entry_only'" -#: ../bin/ptna-routes.pl:2746 +#: ../bin/ptna-routes.pl:2673 msgid "" "first node of way has 'role' = 'stop_exit_only'. Is the route sorted in " "reverse order?" @@ -601,7 +601,7 @@ msgstr "" "Der erste Punkt des Fahrweges hat die 'role' = 'stop_exit_only'. Sind die " "Wege der Route falsch herum sortiert?" -#: ../bin/ptna-routes.pl:2752 +#: ../bin/ptna-routes.pl:2679 msgid "" "last node of way has 'role' = 'stop_entry_only'. Is the route sorted in " "reverse order?" @@ -609,22 +609,22 @@ msgstr "" "Der letzte Punkt des Fahrweges hat die 'role' = 'stop_entry_only'. Sind die " "Wege der Route falsch herum sortiert?" -#: ../bin/ptna-routes.pl:2758 +#: ../bin/ptna-routes.pl:2685 msgid "'public_transport' = 'stop_position' is not part of way" msgstr "'public_transport' = 'stop_position' liegt nicht auf dem Fahrweg" -#: ../bin/ptna-routes.pl:2770 +#: ../bin/ptna-routes.pl:2697 #, perl-format msgid "missing '%s' = 'yes' on 'public_transport' = 'stop_position'" msgstr "Fehlende Angabe '%s' = 'yes' an 'public_transport' = 'stop_position'" -#: ../bin/ptna-routes.pl:2778 ../bin/ptna-routes.pl:2826 -#: ../bin/ptna-routes.pl:3070 ../bin/ptna-routes.pl:3138 +#: ../bin/ptna-routes.pl:2705 ../bin/ptna-routes.pl:2753 +#: ../bin/ptna-routes.pl:2997 ../bin/ptna-routes.pl:3065 #, perl-format msgid "mismatch between 'role' = '%s' and 'public_transport' = '%s'" msgstr "Konflikt zwischen 'role' = '%s' und 'public_transport' = '%s'" -#: ../bin/ptna-routes.pl:2785 +#: ../bin/ptna-routes.pl:2712 #, perl-format msgid "" "'role' = '%s' and %s: consider setting 'public_transport' = 'stop_position'" @@ -632,47 +632,47 @@ msgstr "" "'role' = '%s' und %s: 'public_transport' = 'stop_position' sollte gesetzt " "werden" -#: ../bin/ptna-routes.pl:2790 ../bin/ptna-routes.pl:2795 -#: ../bin/ptna-routes.pl:2838 ../bin/ptna-routes.pl:2843 -#: ../bin/ptna-routes.pl:3074 ../bin/ptna-routes.pl:3142 +#: ../bin/ptna-routes.pl:2717 ../bin/ptna-routes.pl:2722 +#: ../bin/ptna-routes.pl:2765 ../bin/ptna-routes.pl:2770 +#: ../bin/ptna-routes.pl:3001 ../bin/ptna-routes.pl:3069 #, perl-format msgid "'role' = '%s' but 'public_transport' is not set" msgstr "'role' = '%s' aber 'public_transport' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:2802 +#: ../bin/ptna-routes.pl:2729 msgid "'public_transport' = 'platform' is part of way" msgstr "'public_transport' = 'platform' liegt auf dem Fahrweg" -#: ../bin/ptna-routes.pl:2833 +#: ../bin/ptna-routes.pl:2760 #, perl-format msgid "'role' = '%s' and %s: consider setting 'public_transport' = 'platform'" msgstr "" "'role' = '%s' und %s: 'public_transport' = 'platform' sollte gesetzt werden" -#: ../bin/ptna-routes.pl:2850 ../bin/ptna-routes.pl:3080 -#: ../bin/ptna-routes.pl:3148 +#: ../bin/ptna-routes.pl:2777 ../bin/ptna-routes.pl:3007 +#: ../bin/ptna-routes.pl:3075 #, perl-format msgid "wrong 'role' = '%s'" msgstr "falsche 'role' = '%s'" -#: ../bin/ptna-routes.pl:2855 ../bin/ptna-routes.pl:3086 -#: ../bin/ptna-routes.pl:3153 +#: ../bin/ptna-routes.pl:2782 ../bin/ptna-routes.pl:3013 +#: ../bin/ptna-routes.pl:3080 msgid "empty 'role'" msgstr "Leere 'role'" -#: ../bin/ptna-routes.pl:2864 ../bin/ptna-routes.pl:3096 -#: ../bin/ptna-routes.pl:3162 +#: ../bin/ptna-routes.pl:2791 ../bin/ptna-routes.pl:3023 +#: ../bin/ptna-routes.pl:3089 #, perl-format msgid "PTv2 route: %s: %s and %d more ..." msgstr "PTv2 Route: %s: %s und %d mehr ..." -#: ../bin/ptna-routes.pl:2866 ../bin/ptna-routes.pl:3099 -#: ../bin/ptna-routes.pl:3164 +#: ../bin/ptna-routes.pl:2793 ../bin/ptna-routes.pl:3026 +#: ../bin/ptna-routes.pl:3091 #, perl-format msgid "PTv2 route: %s: %s" msgstr "PTv2 Route: %s: %s" -#: ../bin/ptna-routes.pl:2888 +#: ../bin/ptna-routes.pl:2815 #, perl-format msgid "" "PTv2 route: first node of way is not the first stop position of this route: " @@ -681,7 +681,7 @@ msgstr "" "PTv2 Route: der erste Punkt des Fahrweges ist nicht die erste " "'stop_position' der Route: %s gegenüber %s" -#: ../bin/ptna-routes.pl:2933 ../bin/ptna-routes.pl:2943 +#: ../bin/ptna-routes.pl:2860 ../bin/ptna-routes.pl:2870 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the first way, except " @@ -690,7 +690,7 @@ msgstr "" "PTv2 Route: auf dem ersten Weg der Route gibt es keine 'stop_position' außer " "dem letzten Punkt, der aber auch der erste Punkt des zweiten Weges ist: %s" -#: ../bin/ptna-routes.pl:2936 +#: ../bin/ptna-routes.pl:2863 #, perl-format msgid "" "PTv2 route: first stop position on first way is not the first stop position " @@ -699,21 +699,21 @@ msgstr "" "PTv2 Route: die erste 'stop_position' auf dem ersten Weg ist nicht die erste " "'stop_position' der Route: %s gegenüber %s" -#: ../bin/ptna-routes.pl:2947 +#: ../bin/ptna-routes.pl:2874 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the first way: %s" msgstr "" "PTv2 Route: es gibt keine 'stop_position' auf dem ersten Weg der Route: %s" -#: ../bin/ptna-routes.pl:2951 +#: ../bin/ptna-routes.pl:2878 #, perl-format msgid "PTv2 route: first node of way is not a stop position of this route: %s" msgstr "" "PTv2 Route: der erste Punkt des Weges ist keine 'stop_position' dieser " "Route: %s" -#: ../bin/ptna-routes.pl:2970 +#: ../bin/ptna-routes.pl:2897 #, perl-format msgid "" "PTv2 route: last node of way is not the last stop position of this route: %s " @@ -722,7 +722,7 @@ msgstr "" "PTv2 Route: der letzte Punkt des Fahrweges ist nicht die letzte " "'stop_position' der Route: %s gegenüber %s" -#: ../bin/ptna-routes.pl:3015 ../bin/ptna-routes.pl:3025 +#: ../bin/ptna-routes.pl:2942 ../bin/ptna-routes.pl:2952 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the last way, except " @@ -731,7 +731,7 @@ msgstr "" "PTv2 Route: auf dem letzte Weg der Route gibt es keine 'stop_position' außer " "dem ersten Punkt, der aber auch der letzte Punkt des vorletzten Weges ist: %s" -#: ../bin/ptna-routes.pl:3018 +#: ../bin/ptna-routes.pl:2945 #, perl-format msgid "" "PTv2 route: last stop position on last way is not the last stop position of " @@ -740,70 +740,70 @@ msgstr "" "PTv2 Route: die letzte 'stop_position' auf dem letzten Weg ist nicht die " "letzte 'stop_position' der Route: %s gegenüber %s" -#: ../bin/ptna-routes.pl:3029 +#: ../bin/ptna-routes.pl:2956 #, perl-format msgid "PTv2 route: there is no stop position of this route on the last way: %s" msgstr "" "PTv2 Route: es gibt keine 'stop_position' auf dem letzten Weg der Route: %s" -#: ../bin/ptna-routes.pl:3033 +#: ../bin/ptna-routes.pl:2960 #, perl-format msgid "PTv2 route: last node of way is not a stop position of this route: %s" msgstr "" "PTv2 Route: der letzte Punkt des Weges ist keine 'stop_position' dieser " "Route: %s" -#: ../bin/ptna-routes.pl:4032 +#: ../bin/ptna-routes.pl:3959 msgid "PTv2 route: 'name' includes deprecated '<=>'" msgstr "PTv2 Route: 'name' enthält unübliches '<=>'" -#: ../bin/ptna-routes.pl:4037 +#: ../bin/ptna-routes.pl:3964 msgid "PTv2 route: 'name' includes deprecated '==>'" msgstr "PTv2 Route: 'name' enthält unübliches '==>'" -#: ../bin/ptna-routes.pl:4088 +#: ../bin/ptna-routes.pl:4015 #, perl-format msgid "PTv2 route: '%s' is not part of 'name' (derived from '%s' = '%s')" msgstr "" "PTv2 Route: '%s' ist nicht Teil von 'name' (hergeleitet von '%s' = '%s')" -#: ../bin/ptna-routes.pl:4094 +#: ../bin/ptna-routes.pl:4021 msgid "PTv2 route: 'ref' is not part of 'name'" msgstr "PTv2 Route: 'ref' ist nicht Teil von 'name'" -#: ../bin/ptna-routes.pl:4103 +#: ../bin/ptna-routes.pl:4030 #, perl-format msgid "PTv2 route: from-part ('%s') of 'name' is not part of 'from' = '%s'" msgstr "" "PTv2 Route: Der 'Von'-Anteil ('%s') von 'name' ist nicht Teil von 'from' = " "'%s'" -#: ../bin/ptna-routes.pl:4107 +#: ../bin/ptna-routes.pl:4034 #, perl-format msgid "PTv2 route: 'from' = '%s' is not part of 'name'" msgstr "PTv2 Route: 'from' = '%s' ist nicht Teil von 'name'" -#: ../bin/ptna-routes.pl:4112 +#: ../bin/ptna-routes.pl:4039 msgid "PTv2 route: 'from' is not set" msgstr "PTv2 Route: 'from' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:4120 +#: ../bin/ptna-routes.pl:4047 #, perl-format msgid "PTv2 route: to-part ('%s') of 'name' is not part of 'to' = '%s'" msgstr "" "PTv2 Route: Der 'Nach'-Anteil ('%s') von 'name' ist nicht Teil von 'to' = " "'%s'" -#: ../bin/ptna-routes.pl:4124 +#: ../bin/ptna-routes.pl:4051 #, perl-format msgid "PTv2 route: 'to' = '%s' is not part of 'name'" msgstr "PTv2 Route: 'to' = '%s' ist nicht Teil von 'name'" -#: ../bin/ptna-routes.pl:4129 +#: ../bin/ptna-routes.pl:4056 msgid "PTv2 route: 'to' is not set" msgstr "PTv2 Route: 'to' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:4141 +#: ../bin/ptna-routes.pl:4068 #, perl-format msgid "" "PTv2 route: 'via' is set: %d. via-part ('%s') of 'name' is not equal to %d. " @@ -812,37 +812,37 @@ msgstr "" "PTv2 Route: 'via' ist gesetzt: der %d. 'Über'-Anteil ('%s') von 'name' ist " "nicht gleich dem %d. via-Teil = '%s'" -#: ../bin/ptna-routes.pl:4146 +#: ../bin/ptna-routes.pl:4073 #, perl-format msgid "PTv2 route: there are more via-parts in 'name' (%d) than in 'via' (%d) " msgstr "" "PTv2 Route: es gibt mehr 'Über'-Anteile in 'name (%d) als in 'via' (%d)" -#: ../bin/ptna-routes.pl:4149 +#: ../bin/ptna-routes.pl:4076 #, perl-format msgid "PTv2 route: there are less via-parts in 'name' (%d) than in 'via' (%d) " msgstr "" "PTv2 Route: es gibt weniger 'Über'-Anteile in 'name (%d) als in 'via' (%d)" -#: ../bin/ptna-routes.pl:4154 +#: ../bin/ptna-routes.pl:4081 msgid "PTv2 route: 'name' has more than one '=>' but 'via' is not set" msgstr "" "PTv2 Route: 'name' enthält mehr als ein '=>', aber 'via' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:4160 +#: ../bin/ptna-routes.pl:4087 msgid "" "PTv2 route: 'name' should be similar to the form '... ref ...: from => to'" msgstr "" "PTv2 Route: 'name' sollte annähernd die Form '... ref ...: from => to' haben" -#: ../bin/ptna-routes.pl:4162 +#: ../bin/ptna-routes.pl:4089 msgid "" "PTv2 route: 'name' should (at least) be of the form '... ref ...: from => to'" msgstr "" "PTv2 Route: 'name' sollte (mindest) von der Form '... ref ...: from => to' " "sein" -#: ../bin/ptna-routes.pl:4208 +#: ../bin/ptna-routes.pl:4135 #, perl-format msgid "" "Route: restricted access (%s) to way without 'psv'='yes', '%s'='yes', " @@ -857,7 +857,7 @@ msgstr[1] "" "Route: eingeschränkte Befahrbarkeit (%s) auf Wegen ohne dass 'psv' = 'yes', " "'%s' = 'yes', '%s' = 'designated', oder ... angegeben ist: %s" -#: ../bin/ptna-routes.pl:4239 +#: ../bin/ptna-routes.pl:4166 msgid "Route: 'highway' = 'bus_stop' is set on way. Allowed on nodes only!" msgid_plural "" "Route: 'highway' = 'bus_stop' is set on ways. Allowed on nodes only!" @@ -868,11 +868,11 @@ msgstr[1] "" "Route: 'highway' = 'bus_stop' ist auf mehreren 'way' gesetzt. Dieses Tag ist " "nur auf Nodes erlaubt." -#: ../bin/ptna-routes.pl:4314 +#: ../bin/ptna-routes.pl:4241 msgid "separate multiple values by ';' (semi-colon) without blank" msgstr "trenne mehrere Werte durch ';' (Semikolon) ohne Leerzeichen" -#: ../bin/ptna-routes.pl:4316 +#: ../bin/ptna-routes.pl:4243 #, perl-format msgid "" "'route_ref' = '%s' of stop does not include 'ref' = '%s' value of this route" @@ -881,7 +881,7 @@ msgstr "" "'route_ref' = '%s' der Haltestelle enthält nicht den 'ref' = '%s' Wert " "dieser Route%s" -#: ../bin/ptna-routes.pl:4323 +#: ../bin/ptna-routes.pl:4250 #, perl-format msgid "" "'route_ref' = '%s' of stop includes the separator value ';' (semi-colon) " @@ -890,7 +890,7 @@ msgstr "" "'route_ref' = '%s' der Haltestelle enthält das Trennzeichen ';' (Semikolon) " "mit umgebendem Leerzeichen" -#: ../bin/ptna-routes.pl:4326 +#: ../bin/ptna-routes.pl:4253 #, perl-format msgid "" "'route_ref' = '%s' of stop: ',' (comma) as separator value should be " @@ -899,20 +899,20 @@ msgstr "" "'route_ref' = '%s' der Haltestelle: ',' (Komma) als Trennzeichen sollte " "durch ';' (Semikolon, ohne Leerzeichen) ersetzt werden" -#: ../bin/ptna-routes.pl:4332 +#: ../bin/ptna-routes.pl:4259 #, perl-format msgid "'%s' = '%s' of stop should be deleted, 'route_ref' = '%s' exists" msgstr "" "'%s' = '%s' der Haltestelle sollte gelöscht werden, 'route_ref' = '%s' " "existiert" -#: ../bin/ptna-routes.pl:4341 +#: ../bin/ptna-routes.pl:4268 #, perl-format msgid "(consider adding '%s' to the 'route_ref' tag of the stop)" msgstr "" "(füge gegebenenfalls '%s' zum Merkmal 'route_ref' der Haltestelle hinzu)" -#: ../bin/ptna-routes.pl:4342 ../bin/ptna-routes.pl:4370 +#: ../bin/ptna-routes.pl:4269 ../bin/ptna-routes.pl:4297 #, perl-format msgid "" "'ref' = '%s' of stop should represent the reference of the stop, but " @@ -921,54 +921,54 @@ msgstr "" "'ref' = '%s' der Haltestelle sollte die Referenz der Haltestelle sein, " "enthält aber die 'ref' = '%s' dieser Route %s" -#: ../bin/ptna-routes.pl:4360 +#: ../bin/ptna-routes.pl:4287 #, perl-format msgid "'%s' = '%s' of stop should be replaced by 'route_ref' = '%s'" msgstr "" "'%s' = '%s' der Haltestelle sollte durch 'route_ref' = '%s' ersetzt werden" -#: ../bin/ptna-routes.pl:4369 +#: ../bin/ptna-routes.pl:4296 #, perl-format msgid "(consider creating a 'route_ref' = '%s' tag for the stop)" msgstr "(erzeuge gegebenenfalls 'route_ref' = '%s' für die Haltestelle)" -#: ../bin/ptna-routes.pl:4384 ../bin/ptna-routes.pl:4394 -#: ../bin/ptna-routes.pl:4404 ../bin/ptna-routes.pl:4414 -#: ../bin/ptna-routes.pl:4424 +#: ../bin/ptna-routes.pl:4311 ../bin/ptna-routes.pl:4321 +#: ../bin/ptna-routes.pl:4331 ../bin/ptna-routes.pl:4341 +#: ../bin/ptna-routes.pl:4351 #, perl-format msgid "Route: %s: %s and %d more ..." msgstr "Route: %s: %s und %d mehr ..." -#: ../bin/ptna-routes.pl:4386 ../bin/ptna-routes.pl:4396 -#: ../bin/ptna-routes.pl:4406 ../bin/ptna-routes.pl:4416 -#: ../bin/ptna-routes.pl:4426 +#: ../bin/ptna-routes.pl:4313 ../bin/ptna-routes.pl:4323 +#: ../bin/ptna-routes.pl:4333 ../bin/ptna-routes.pl:4343 +#: ../bin/ptna-routes.pl:4353 #, perl-format msgid "Route: %s: %s" msgstr "Route: %s: %s" -#: ../bin/ptna-routes.pl:4466 +#: ../bin/ptna-routes.pl:4393 msgid "Error in input data: insufficient data for ways" msgstr "Fehler in den Inputdaten: nicht genügend Daten für 'ways'" -#: ../bin/ptna-routes.pl:4494 +#: ../bin/ptna-routes.pl:4421 msgid "Error in input data: insufficient data for nodes" msgstr "Fehler in den Inputdaten: nicht genügend Daten für 'nodes'" -#: ../bin/ptna-routes.pl:4563 +#: ../bin/ptna-routes.pl:4490 msgid "Date of Data" msgstr "Datum der Daten" -#: ../bin/ptna-routes.pl:4571 +#: ../bin/ptna-routes.pl:4498 msgid "Hints" msgstr "Hinweise" -#: ../bin/ptna-routes.pl:4574 +#: ../bin/ptna-routes.pl:4501 msgid "The data will be updated when the result of the analysis has changed." msgstr "" "Die Daten werden gegebenenfalls nur aktualisiert, wenn sich das Ergebnis der " "Analyse geändert hat." -#: ../bin/ptna-routes.pl:4577 +#: ../bin/ptna-routes.pl:4504 msgid "" "An explanation of the error texts can be found in the documentation at 'Check'." @@ -976,23 +976,23 @@ msgstr "" "Eine Erläuterung der Fehlertexte ist in der Dokumentation unter Prüfungen zu finden." -#: ../bin/ptna-routes.pl:4615 +#: ../bin/ptna-routes.pl:4542 msgid "Contents" msgstr "Inhalt" -#: ../bin/ptna-routes.pl:4708 +#: ../bin/ptna-routes.pl:4635 msgid "This section lists further relations of the environment of the routes:" msgstr "Dieser Abschnitt enthält weitere Relationen aus dem Umfeld der Linien:" -#: ../bin/ptna-routes.pl:4711 +#: ../bin/ptna-routes.pl:4638 msgid "potentially wrong 'route' or 'route_master' values?" msgstr "evtl. falsche 'route' oder 'route_master' Werte?" -#: ../bin/ptna-routes.pl:4713 +#: ../bin/ptna-routes.pl:4640 msgid "e.g. 'route' = 'suspended_bus' instead of 'route' = 'bus'" msgstr "z.B. 'route' = 'suspended_bus' statt 'route' = 'bus'" -#: ../bin/ptna-routes.pl:4716 +#: ../bin/ptna-routes.pl:4643 msgid "" "but also 'type' = 'network', 'type' = 'set' or 'route' = 'network', i.e. a " "collection of all routes and route-masters belonging to the 'network'." @@ -1000,7 +1000,7 @@ msgstr "" "aber auch 'type' = 'network', 'type' = 'set' oder 'route' = 'network', d.h. " "eine Sammlung aller zum 'network' gehörenden Route und Route-Master." -#: ../bin/ptna-routes.pl:4718 +#: ../bin/ptna-routes.pl:4645 msgid "" "such collections are strictly spoken errors, since " "relations shall not represent collections:" @@ -1008,7 +1008,7 @@ msgstr "" "solche Sammlungen sind streng genommen Fehler, da " "Relationen keinen Sammlungen darstellen sollen:" -#: ../bin/ptna-routes.pl:4719 +#: ../bin/ptna-routes.pl:4646 msgid "" " Relations/Relations are not Categories" @@ -1016,7 +1016,7 @@ msgstr "" " Relationen sind keine Kategorien" -#: ../bin/ptna-routes.pl:4725 +#: ../bin/ptna-routes.pl:4652 msgid "" "The following values and combinations have been found in the provided data " "but they will not be listed here. " @@ -1024,29 +1024,29 @@ msgstr "" "Die folgenden Werte bzw. Kombinationen wurden in den Inputdaten gefunden, " "werden hier aber nicht angezeigt. " -#: ../bin/ptna-routes.pl:4726 +#: ../bin/ptna-routes.pl:4653 msgid "" "They represent so called 'well defined' values and are not considered as " "errors." msgstr "Sie gelten als 'wohl definierte' Werte und nicht als Fehler." -#: ../bin/ptna-routes.pl:4764 +#: ../bin/ptna-routes.pl:4691 msgid "The contents of the 'network' tag will be searched for:" msgstr "Der Inhalt von 'network' wird nach den folgenden Werten durchsucht:" -#: ../bin/ptna-routes.pl:4787 +#: ../bin/ptna-routes.pl:4714 msgid "The contents of the 'operator' tag will be searched for:" msgstr "Der Inhalt von 'operator' wird nach den folgenden Werten durchsucht:" -#: ../bin/ptna-routes.pl:4797 +#: ../bin/ptna-routes.pl:4724 msgid "'operator' is not set" msgstr "'operator' ist nicht gesetzt" -#: ../bin/ptna-routes.pl:4811 +#: ../bin/ptna-routes.pl:4738 msgid "Considered 'network'-Values" msgstr "Berücksichtigte 'network'-Werte" -#: ../bin/ptna-routes.pl:4814 +#: ../bin/ptna-routes.pl:4741 msgid "" "This section lists the 'network'-values which have been considered; i.e. " "which match to one of the values above." @@ -1054,19 +1054,19 @@ msgstr "" "Dieser Abschnitt listet die 'network'-Werte auf, die berücksichtigt wurden, " "d.h. die einen der oben aufgeführten Werte enthalten." -#: ../bin/ptna-routes.pl:4831 ../bin/ptna-routes.pl:4857 -#: ../bin/ptna-routes.pl:4894 +#: ../bin/ptna-routes.pl:4758 ../bin/ptna-routes.pl:4784 +#: ../bin/ptna-routes.pl:4821 msgid "and more ..." msgstr "und mehr ..." -#: ../bin/ptna-routes.pl:4839 +#: ../bin/ptna-routes.pl:4766 msgid "" "This section lists the 'operator'-values which have not been considered. " msgstr "" "Dieser Abschnitt listet die 'operator'-Werte auf, die nicht berücksichtigt " "wurden. " -#: ../bin/ptna-routes.pl:4840 ../bin/ptna-routes.pl:4877 +#: ../bin/ptna-routes.pl:4767 ../bin/ptna-routes.pl:4804 msgid "" "They might include typos in values which otherwise should have been " "considered. " @@ -1074,18 +1074,18 @@ msgstr "" "Es liegen eventuell Tippfehler in Werten vor, die ansonsten zu " "berücksichtigen wären. " -#: ../bin/ptna-routes.pl:4873 +#: ../bin/ptna-routes.pl:4800 msgid "Not Considered 'network'-Values" msgstr "Nicht berücksichtigte 'network'-Werte" -#: ../bin/ptna-routes.pl:4876 +#: ../bin/ptna-routes.pl:4803 msgid "" "This section lists the 'network'-values which have not been considered. " msgstr "" "Dieser Abschnitt listet die 'network'-Werte auf, die nicht berücksichtigt " "wurden. " -#: ../modules/RoutesList.pm:161 +#: ../modules/RoutesList.pm:167 #, perl-format msgid "" "Route-Type is not supported: '%s'. Line %s of Routes-Data. Contents of line: " @@ -1094,7 +1094,7 @@ msgstr "" "Fahrzeugtyp wird nicht unterstützt: '%s'. Zeile %s der Routen-Daten. Inhalt " "der Zeile: '%s'" -#: ../modules/RoutesList.pm:167 +#: ../modules/RoutesList.pm:173 #, perl-format msgid "Route-Type is not set. Line %s of Routes-Data. Contents of line: '%s'" msgstr "" diff --git a/po/fr.po b/po/fr.po index d0f9071..d4260ca 100644 --- a/po/fr.po +++ b/po/fr.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: osm-ToniE@web.de\n" -"POT-Creation-Date: 2019-05-04 23:24+0200\n" +"POT-Creation-Date: 2019-05-19 21:50+0200\n" "PO-Revision-Date: 2019-05-04 23:34+0200\n" "Last-Translator: osm-ToniE \n" "Language-Team: French (https://www.transifex.com/jungle-bus/teams/97874/" @@ -153,41 +153,41 @@ msgstr "Téléphérique/Télécabine/Télésiège" msgid "Funicular" msgstr "Funiculaire" -#: ../bin/ptna-routes.pl:987 +#: ../bin/ptna-routes.pl:979 #, perl-format msgid "Missing route for ref='%s' and route='%s'" msgstr "Parcours manquant avec ref='%s' et route='%s'" -#: ../bin/ptna-routes.pl:994 +#: ../bin/ptna-routes.pl:986 msgid "' or ref='" msgstr "' ou ref='" #. xgettext: This section will list all routes which could not be clearly assigned because the combination of "ref;type" appears more than once and information like 'operator', 'from' and 'to' is missing -#: ../bin/ptna-routes.pl:1045 +#: ../bin/ptna-routes.pl:1037 msgid "Not clearly assigned routes" msgstr "Des parcours qu'on ne peut pas clairement assigner" -#: ../bin/ptna-routes.pl:1100 +#: ../bin/ptna-routes.pl:1095 msgid "Other Public Transport Lines" msgstr "Autres lignes de transport en commun" -#: ../bin/ptna-routes.pl:1102 +#: ../bin/ptna-routes.pl:1097 msgid "Public Transport Lines" msgstr "Lignes de transport en commun" -#: ../bin/ptna-routes.pl:1169 +#: ../bin/ptna-routes.pl:1167 msgid "Public Transport Lines without 'ref'" msgstr "Lignes de transport en commun sans 'ref'" -#: ../bin/ptna-routes.pl:1220 +#: ../bin/ptna-routes.pl:1218 msgid "More Relations" msgstr "Autres relations" -#: ../bin/ptna-routes.pl:1258 +#: ../bin/ptna-routes.pl:1256 msgid "Details for 'network'-Values" msgstr "Détails des valeurs pour le tag 'network'" -#: ../bin/ptna-routes.pl:1655 +#: ../bin/ptna-routes.pl:1582 #, perl-format msgid "" "Route-Master has more Routes than actually match (%d versus %d) in the given " @@ -201,7 +201,7 @@ msgstr[1] "" "Les lignes ont plus de parcours (%d au lieu de %d) que dans les données " "sources" -#: ../bin/ptna-routes.pl:1660 +#: ../bin/ptna-routes.pl:1587 #, perl-format msgid "" "Route-Master has less Routes than actually match (%d versus %d) in the given " @@ -215,11 +215,11 @@ msgstr[1] "" "Les lignes ont moins de parcours (%d au lieu de %d) que dans les données " "sources" -#: ../bin/ptna-routes.pl:1701 ../bin/ptna-routes.pl:1945 +#: ../bin/ptna-routes.pl:1628 ../bin/ptna-routes.pl:1872 msgid "There is more than one Route-Master" msgstr "Il y a plus d'une route_master" -#: ../bin/ptna-routes.pl:1763 +#: ../bin/ptna-routes.pl:1690 #, perl-format msgid "" "Route might be listed with 'ref' = '%s' in a different section or in section " @@ -229,14 +229,14 @@ msgstr "" "ou dans une section qui n'a 'Pas de parcours clairement assigné' de cette " "analyse : %s" -#: ../bin/ptna-routes.pl:1771 +#: ../bin/ptna-routes.pl:1698 #, perl-format msgid "" "Route has different 'operator' = '%s' than Route-Master 'operator' = '%s': %s" msgstr "" "Le parcours a l'opérateur '%s' alors que la ligne a l'opérateur '%s' : %s" -#: ../bin/ptna-routes.pl:1780 +#: ../bin/ptna-routes.pl:1707 #, perl-format msgid "" "Route has 'operator' = '%s' value which is considered as not relevant: %s" @@ -244,13 +244,13 @@ msgstr "" "La ligne a la valeur 'operator' = '%s' qui n'est pas considérée comme " "pertinente : %s" -#: ../bin/ptna-routes.pl:1789 +#: ../bin/ptna-routes.pl:1716 #, perl-format msgid "" "Route has different 'network' = '%s' than Route-Master 'network' = '%s': %s" msgstr "Le parcours a le réseau '%s' alors que la ligne a le réseau '%s' : %s" -#: ../bin/ptna-routes.pl:1798 +#: ../bin/ptna-routes.pl:1725 #, perl-format msgid "" "Route has 'network' = '%s' value which is considered as not relevant: %s" @@ -258,7 +258,7 @@ msgstr "" "La ligne a la valeur 'network' = '%s' qui n'est pas considérée comme " "pertinente : %s" -#: ../bin/ptna-routes.pl:1807 ../bin/ptna-routes.pl:2045 +#: ../bin/ptna-routes.pl:1734 ../bin/ptna-routes.pl:1972 #, perl-format msgid "" "Route has different 'ref' = '%s' than Route-Master 'ref' = '%s' - this " @@ -267,19 +267,19 @@ msgstr "" "Le parcours a le code de ligne ref= '%s' alors que la ligne a le code de " "ligne ref= '%s', cela devrait être évité : %s" -#: ../bin/ptna-routes.pl:1816 +#: ../bin/ptna-routes.pl:1743 #, perl-format msgid "Route has not matching 'ref' = '%s': %s" msgstr "La ligne n'a pas de 'ref' = '%s' correspondant : %s" -#: ../bin/ptna-routes.pl:1825 +#: ../bin/ptna-routes.pl:1752 #, perl-format msgid "Route exists in the given data set but 'ref' tag is not set: %s" msgstr "" "Le parcours existe dans la zone extraite mais son code de ligne 'ref' n'est " "pas défini : %s" -#: ../bin/ptna-routes.pl:1834 +#: ../bin/ptna-routes.pl:1761 #, perl-format msgid "" "Route has different 'route' = '%s' than Route-Master 'route_master' = '%s': " @@ -288,39 +288,39 @@ msgstr "" "Le parcours a le mode 'route' = '%s' alors que la ligne a le mode " "'route_master' = '%s' : %s " -#: ../bin/ptna-routes.pl:1844 +#: ../bin/ptna-routes.pl:1771 #, perl-format msgid "Route has 'route' = '%s' value which is considered as not relevant: %s" msgstr "" "La ligne a la valeur 'route' = '%s' qui n'est pas considérée comme " "pertinente : %s" -#: ../bin/ptna-routes.pl:1852 +#: ../bin/ptna-routes.pl:1779 #, perl-format msgid "Route: 'route' tag is not set: %s" msgstr "Parcours: le mode 'route' n'est pas défini : %s" -#: ../bin/ptna-routes.pl:1862 +#: ../bin/ptna-routes.pl:1789 #, perl-format msgid "Route: 'type' = '%s' is not 'route': %s" msgstr "Parcours : l'attribut 'type' = '%s' n'est par 'route' : %s" -#: ../bin/ptna-routes.pl:1871 +#: ../bin/ptna-routes.pl:1798 #, perl-format msgid "Route: 'type' tag is not set: %s" msgstr "Parcours: le tag 'type' n'est pas défini : %s" -#: ../bin/ptna-routes.pl:1882 +#: ../bin/ptna-routes.pl:1809 #, perl-format msgid "Route does not exist in the given data set: %s" msgstr "Le parcours n'existe pas dans le jeu de données source : %s" -#: ../bin/ptna-routes.pl:1894 +#: ../bin/ptna-routes.pl:1821 #, perl-format msgid "Route is not member of Route-Master: %s" msgstr "Le parcours route n'est pas membre de la ligne route_master %s" -#: ../bin/ptna-routes.pl:1953 +#: ../bin/ptna-routes.pl:1880 #, perl-format msgid "" "Route-Master might be listed with 'ref' = '%s' in a different section or in " @@ -330,7 +330,7 @@ msgstr "" "autre section ou dans une section qui n'a 'Pas de parcours clairement " "assigné' de cette analyse : %s" -#: ../bin/ptna-routes.pl:1958 +#: ../bin/ptna-routes.pl:1885 #, perl-format msgid "" "Route-Master might be listed with unknown 'ref' in section 'Public Transport " @@ -339,24 +339,24 @@ msgstr "" "La ligne route_master est peut-être renseignée avec un 'ref' inconnu dans la " "section 'Lignes de transport en commun sans 'ref'' de cette analyse : %s" -#: ../bin/ptna-routes.pl:1982 +#: ../bin/ptna-routes.pl:1909 #, perl-format msgid "This Route is direct member of more than one Route-Master: %s" msgstr "Le parcours fait partie de plusieurs lignes : %s" -#: ../bin/ptna-routes.pl:1991 +#: ../bin/ptna-routes.pl:1918 msgid "Multiple Routes but no Route-Master" msgstr "Plusieurs parcours mais pas de route_master" -#: ../bin/ptna-routes.pl:1998 +#: ../bin/ptna-routes.pl:1925 msgid "Multiple Routes but this Route is not a member of any Route-Master" msgstr "Plusieurs parcours mais ce parcours n'est membre d'aucun route_master" -#: ../bin/ptna-routes.pl:2009 +#: ../bin/ptna-routes.pl:1936 msgid "This Route is not a member of any Route-Master" msgstr "Ce parcours n'est membre d'aucun route_master" -#: ../bin/ptna-routes.pl:2026 +#: ../bin/ptna-routes.pl:1953 #, perl-format msgid "" "'route' = '%s' of Route does not fit to 'route_master' = '%s' of Route-" @@ -365,12 +365,12 @@ msgstr "" "Le mode 'route'=%s du parcours ne correspond pas au mode 'route_master'=%s " "de la ligne : %s" -#: ../bin/ptna-routes.pl:2053 +#: ../bin/ptna-routes.pl:1980 #, perl-format msgid "Route-Master has not matching 'ref' = '%s': %s" msgstr "La ligne n'a pas d'attribut 'ref' = '%s' correspondant : %s" -#: ../bin/ptna-routes.pl:2063 +#: ../bin/ptna-routes.pl:1990 #, perl-format msgid "" "'network' = '%s' of Route does not fit to 'network' = '%s' of Route-Master: " @@ -379,40 +379,40 @@ msgstr "" "Le réseau 'network'=%s du parcours ne correspond pas au réseau 'network'= %s " "de la ligne : %s" -#: ../bin/ptna-routes.pl:2082 +#: ../bin/ptna-routes.pl:2009 #, perl-format msgid "'colour' of Route does not fit to 'colour' of Route-Master: %s" msgstr "" "La couleur 'colour' du parcours ne correspond pas à la couleur de la ligne : " "%s" -#: ../bin/ptna-routes.pl:2090 +#: ../bin/ptna-routes.pl:2017 #, perl-format msgid "'colour' of Route is set but 'colour' of Route-Master is not set: %s" msgstr "" "La couleur 'colour' du parcours est définie mais pas celle de la ligne : %s" -#: ../bin/ptna-routes.pl:2098 +#: ../bin/ptna-routes.pl:2025 #, perl-format msgid "'colour' of Route is not set but 'colour' of Route-Master is set: %s" msgstr "" "La couleur 'colour' de la ligne est définie mais pas celle du parcours : %s" -#: ../bin/ptna-routes.pl:2109 +#: ../bin/ptna-routes.pl:2036 msgid "Multiple Routes but 'public_transport:version' is not set to '2'" msgstr "" "Plusieurs parcours mais le tag 'public_transport:version' est différent de " "'2'" -#: ../bin/ptna-routes.pl:2181 +#: ../bin/ptna-routes.pl:2108 msgid "'ref' is not set" msgstr "Le tag 'ref' n'est pas défini" -#: ../bin/ptna-routes.pl:2189 +#: ../bin/ptna-routes.pl:2116 msgid "'name' is not set" msgstr "Le tag 'name' n'est pas défini" -#: ../bin/ptna-routes.pl:2255 +#: ../bin/ptna-routes.pl:2182 #, perl-format msgid "" "'network' = '%s' includes the separator value ';' (semi-colon) with " @@ -421,7 +421,7 @@ msgstr "" "L'attribut 'network' = '%s' de cet arrêt comprend des espaces en trop autour " "du séparateur ';' (point-virgule) " -#: ../bin/ptna-routes.pl:2263 +#: ../bin/ptna-routes.pl:2190 #, perl-format msgid "" "'network' = '%s': ',' (comma) as separator value should be replaced by " @@ -430,88 +430,88 @@ msgstr "" "L'attribut 'network' = '%s' : la ',' (virgule) comme valeur de séparateur " "devrait être remplacée par un ';' (point-virgule) sans espace" -#: ../bin/ptna-routes.pl:2272 +#: ../bin/ptna-routes.pl:2199 #, perl-format msgid "'network' = '%s' should be short form" msgstr "'network' = '%s' devrait être la forme courte" -#: ../bin/ptna-routes.pl:2277 +#: ../bin/ptna-routes.pl:2204 #, perl-format msgid "'network' = '%s' should be long form" msgstr "'network' = '%s' devrait être la forme longue" -#: ../bin/ptna-routes.pl:2324 ../bin/ptna-routes.pl:4780 +#: ../bin/ptna-routes.pl:2251 ../bin/ptna-routes.pl:4707 msgid "'network' is not set" msgstr "Le tag 'network' n'est pas défini" -#: ../bin/ptna-routes.pl:2333 +#: ../bin/ptna-routes.pl:2260 #, perl-format msgid "'colour' has unknown value '%s'" msgstr "La couleur 'colour' a une valeur inconnue : %s" -#: ../bin/ptna-routes.pl:2343 +#: ../bin/ptna-routes.pl:2270 #, perl-format msgid "'%s' is long form" msgstr "'%s' est en forme longue" -#: ../bin/ptna-routes.pl:2348 +#: ../bin/ptna-routes.pl:2275 #, perl-format msgid "'%s' matches long form" msgstr "'%s' correspond à la forme longue" -#: ../bin/ptna-routes.pl:2406 +#: ../bin/ptna-routes.pl:2333 msgid "Route-Master without Route(s)" msgstr "Ligne sans parcours" -#: ../bin/ptna-routes.pl:2408 +#: ../bin/ptna-routes.pl:2335 msgid "Route-Master with Relation(s) unequal to 'route'" msgstr "Ligne avec des relations qui ne sont pas de type 'route'" -#: ../bin/ptna-routes.pl:2409 +#: ../bin/ptna-routes.pl:2336 msgid "Route-Master with Way(s)" msgstr "La route_master ne devrait pas contenir de chemin(s)" -#: ../bin/ptna-routes.pl:2410 +#: ../bin/ptna-routes.pl:2337 msgid "Route-Master with Node(s)" msgstr "Ligne route_master avec des points" -#: ../bin/ptna-routes.pl:2413 +#: ../bin/ptna-routes.pl:2340 msgid "'public_transport:version' is not set to '2'" msgstr "Le tag 'public_transport:version' ne vaut pas 2" -#: ../bin/ptna-routes.pl:2418 ../bin/ptna-routes.pl:2468 +#: ../bin/ptna-routes.pl:2345 ../bin/ptna-routes.pl:2395 msgid "'public_transport:version' is not set" msgstr "Le tag 'public_transport:version' n'est pas défini" -#: ../bin/ptna-routes.pl:2446 +#: ../bin/ptna-routes.pl:2373 msgid "Route without Way(s)" msgstr "Parcours sans tracé(s)" -#: ../bin/ptna-routes.pl:2447 +#: ../bin/ptna-routes.pl:2374 msgid "Route with only 1 Way" msgstr "Ligne avec seulement un chemin" -#: ../bin/ptna-routes.pl:2448 +#: ../bin/ptna-routes.pl:2375 msgid "Route without Node(s)" msgstr "Ligne sans point" -#: ../bin/ptna-routes.pl:2449 +#: ../bin/ptna-routes.pl:2376 msgid "Route with only 1 Node" msgstr "Ligne avec seulement un point" -#: ../bin/ptna-routes.pl:2450 +#: ../bin/ptna-routes.pl:2377 msgid "Route with Relation(s)" msgstr "Ligne sans relation" -#: ../bin/ptna-routes.pl:2454 +#: ../bin/ptna-routes.pl:2381 msgid "'public_transport:version' is neither '1' nor '2'" msgstr "'public_transport:version' n'est ni '1' ni '2'" -#: ../bin/ptna-routes.pl:2463 +#: ../bin/ptna-routes.pl:2390 msgid "Skipping further analysis ..." msgstr "Omission des analyses suivantes…" -#: ../bin/ptna-routes.pl:2626 +#: ../bin/ptna-routes.pl:2553 msgid "" "PTv2 route: first way is a oneway road and ends in a 'stop_position' of this " "route and there is no exit. Is the route sorted in reverse order?" @@ -520,7 +520,7 @@ msgstr "" "un 'stop_position' de cette ligne et n'a pas de sortie. La ligne serait-elle " "triée en sens inverse ?" -#: ../bin/ptna-routes.pl:2632 +#: ../bin/ptna-routes.pl:2559 #, perl-format msgid "PTv2 route: has a gap, consists of %d segments. Gap appears at way" msgid_plural "" @@ -532,14 +532,14 @@ msgstr[1] "" "Ligne PTv2 : a des trous, consistant en %d segments. Les trous apparaissent " "sur les chemins" -#: ../bin/ptna-routes.pl:2634 ../bin/ptna-routes.pl:2654 -#: ../bin/ptna-routes.pl:2674 ../bin/ptna-routes.pl:4242 -#: ../bin/ptna-routes.pl:4468 ../bin/ptna-routes.pl:4496 +#: ../bin/ptna-routes.pl:2561 ../bin/ptna-routes.pl:2581 +#: ../bin/ptna-routes.pl:2601 ../bin/ptna-routes.pl:4169 +#: ../bin/ptna-routes.pl:4395 ../bin/ptna-routes.pl:4423 #, perl-format msgid "%s: %s and %d more ..." msgstr "%s : %s et %d en plus…" -#: ../bin/ptna-routes.pl:2641 +#: ../bin/ptna-routes.pl:2568 #, perl-format msgid "" "PTv2 route: incorrect order of 'stop_position', 'platform' and 'way' (stop/" @@ -548,269 +548,269 @@ msgstr "" "Ligne PTv2 : ordre incorrect de 'stop_position', 'platform' et 'way' (arrêt " "après le chemin)" -#: ../bin/ptna-routes.pl:2645 +#: ../bin/ptna-routes.pl:2572 msgid "entire roundabout but uses only segments" msgid_plural "entire roundabouts but uses only segments" msgstr[0] "rond-point complet mais n'utilise que des segments" msgstr[1] "rond-point complets mais n'utilise que des segments" -#: ../bin/ptna-routes.pl:2646 +#: ../bin/ptna-routes.pl:2573 #, perl-format msgid "PTv2 route: includes %d %s" msgstr "Ligne PTv2 : contient %d %s" -#: ../bin/ptna-routes.pl:2652 +#: ../bin/ptna-routes.pl:2579 msgid "PTv2 route: using oneway way in wrong direction" msgid_plural "PTv2 route: using oneway ways in wrong direction" msgstr[0] "Ligne PTv2 : utilise un sens-unique dans le mauvais sens" msgstr[1] "Ligne PTv2 : utilise des sens-uniques dans le mauvais sens" -#: ../bin/ptna-routes.pl:2661 +#: ../bin/ptna-routes.pl:2588 msgid "PTv2 route: using motorway_link way without entering a motorway way:" msgid_plural "" "PTv2 route: using motorway_link ways without entering a motorway way:" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2668 +#: ../bin/ptna-routes.pl:2595 msgid "PTv2 route: roundabout appears twice, following itself" msgid_plural "PTv2 route: roundabouts appear twice, following themselves" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2730 +#: ../bin/ptna-routes.pl:2657 msgid "first node of oneway way has 'role' = 'stop_exit_only'" msgstr "" -#: ../bin/ptna-routes.pl:2734 +#: ../bin/ptna-routes.pl:2661 msgid "last node of oneway way has 'role' = 'stop_entry_only'" msgstr "" -#: ../bin/ptna-routes.pl:2746 +#: ../bin/ptna-routes.pl:2673 msgid "" "first node of way has 'role' = 'stop_exit_only'. Is the route sorted in " "reverse order?" msgstr "" -#: ../bin/ptna-routes.pl:2752 +#: ../bin/ptna-routes.pl:2679 msgid "" "last node of way has 'role' = 'stop_entry_only'. Is the route sorted in " "reverse order?" msgstr "" -#: ../bin/ptna-routes.pl:2758 +#: ../bin/ptna-routes.pl:2685 msgid "'public_transport' = 'stop_position' is not part of way" msgstr "" -#: ../bin/ptna-routes.pl:2770 +#: ../bin/ptna-routes.pl:2697 #, perl-format msgid "missing '%s' = 'yes' on 'public_transport' = 'stop_position'" msgstr "" -#: ../bin/ptna-routes.pl:2778 ../bin/ptna-routes.pl:2826 -#: ../bin/ptna-routes.pl:3070 ../bin/ptna-routes.pl:3138 +#: ../bin/ptna-routes.pl:2705 ../bin/ptna-routes.pl:2753 +#: ../bin/ptna-routes.pl:2997 ../bin/ptna-routes.pl:3065 #, perl-format msgid "mismatch between 'role' = '%s' and 'public_transport' = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:2785 +#: ../bin/ptna-routes.pl:2712 #, perl-format msgid "" "'role' = '%s' and %s: consider setting 'public_transport' = 'stop_position'" msgstr "" -#: ../bin/ptna-routes.pl:2790 ../bin/ptna-routes.pl:2795 -#: ../bin/ptna-routes.pl:2838 ../bin/ptna-routes.pl:2843 -#: ../bin/ptna-routes.pl:3074 ../bin/ptna-routes.pl:3142 +#: ../bin/ptna-routes.pl:2717 ../bin/ptna-routes.pl:2722 +#: ../bin/ptna-routes.pl:2765 ../bin/ptna-routes.pl:2770 +#: ../bin/ptna-routes.pl:3001 ../bin/ptna-routes.pl:3069 #, perl-format msgid "'role' = '%s' but 'public_transport' is not set" msgstr "Le role vaut %s mais le tag 'public_transport' n'est pas défini" -#: ../bin/ptna-routes.pl:2802 +#: ../bin/ptna-routes.pl:2729 msgid "'public_transport' = 'platform' is part of way" msgstr "" -#: ../bin/ptna-routes.pl:2833 +#: ../bin/ptna-routes.pl:2760 #, perl-format msgid "'role' = '%s' and %s: consider setting 'public_transport' = 'platform'" msgstr "" -#: ../bin/ptna-routes.pl:2850 ../bin/ptna-routes.pl:3080 -#: ../bin/ptna-routes.pl:3148 +#: ../bin/ptna-routes.pl:2777 ../bin/ptna-routes.pl:3007 +#: ../bin/ptna-routes.pl:3075 #, perl-format msgid "wrong 'role' = '%s'" msgstr "mauvais role : '%s' " -#: ../bin/ptna-routes.pl:2855 ../bin/ptna-routes.pl:3086 -#: ../bin/ptna-routes.pl:3153 +#: ../bin/ptna-routes.pl:2782 ../bin/ptna-routes.pl:3013 +#: ../bin/ptna-routes.pl:3080 msgid "empty 'role'" msgstr "'role' vide" -#: ../bin/ptna-routes.pl:2864 ../bin/ptna-routes.pl:3096 -#: ../bin/ptna-routes.pl:3162 +#: ../bin/ptna-routes.pl:2791 ../bin/ptna-routes.pl:3023 +#: ../bin/ptna-routes.pl:3089 #, perl-format msgid "PTv2 route: %s: %s and %d more ..." msgstr "Parcours PTv2 : %s : %s et %d autres ..." -#: ../bin/ptna-routes.pl:2866 ../bin/ptna-routes.pl:3099 -#: ../bin/ptna-routes.pl:3164 +#: ../bin/ptna-routes.pl:2793 ../bin/ptna-routes.pl:3026 +#: ../bin/ptna-routes.pl:3091 #, perl-format msgid "PTv2 route: %s: %s" msgstr "Parcours PTv2 : %s : %s" -#: ../bin/ptna-routes.pl:2888 +#: ../bin/ptna-routes.pl:2815 #, perl-format msgid "" "PTv2 route: first node of way is not the first stop position of this route: " "%s versus %s" msgstr "" -#: ../bin/ptna-routes.pl:2933 ../bin/ptna-routes.pl:2943 +#: ../bin/ptna-routes.pl:2860 ../bin/ptna-routes.pl:2870 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the first way, except " "the last node == first node of next way: %s" msgstr "" -#: ../bin/ptna-routes.pl:2936 +#: ../bin/ptna-routes.pl:2863 #, perl-format msgid "" "PTv2 route: first stop position on first way is not the first stop position " "of this route: %s versus %s" msgstr "" -#: ../bin/ptna-routes.pl:2947 +#: ../bin/ptna-routes.pl:2874 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the first way: %s" msgstr "" -#: ../bin/ptna-routes.pl:2951 +#: ../bin/ptna-routes.pl:2878 #, perl-format msgid "PTv2 route: first node of way is not a stop position of this route: %s" msgstr "" -#: ../bin/ptna-routes.pl:2970 +#: ../bin/ptna-routes.pl:2897 #, perl-format msgid "" "PTv2 route: last node of way is not the last stop position of this route: %s " "versus %s" msgstr "" -#: ../bin/ptna-routes.pl:3015 ../bin/ptna-routes.pl:3025 +#: ../bin/ptna-routes.pl:2942 ../bin/ptna-routes.pl:2952 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the last way, except " "the first node == last node of previous way: %s" msgstr "" -#: ../bin/ptna-routes.pl:3018 +#: ../bin/ptna-routes.pl:2945 #, perl-format msgid "" "PTv2 route: last stop position on last way is not the last stop position of " "this route: %s versus %s" msgstr "" -#: ../bin/ptna-routes.pl:3029 +#: ../bin/ptna-routes.pl:2956 #, perl-format msgid "PTv2 route: there is no stop position of this route on the last way: %s" msgstr "" -#: ../bin/ptna-routes.pl:3033 +#: ../bin/ptna-routes.pl:2960 #, perl-format msgid "PTv2 route: last node of way is not a stop position of this route: %s" msgstr "" -#: ../bin/ptna-routes.pl:4032 +#: ../bin/ptna-routes.pl:3959 msgid "PTv2 route: 'name' includes deprecated '<=>'" msgstr "" -#: ../bin/ptna-routes.pl:4037 +#: ../bin/ptna-routes.pl:3964 msgid "PTv2 route: 'name' includes deprecated '==>'" msgstr "" -#: ../bin/ptna-routes.pl:4088 +#: ../bin/ptna-routes.pl:4015 #, perl-format msgid "PTv2 route: '%s' is not part of 'name' (derived from '%s' = '%s')" msgstr "" -#: ../bin/ptna-routes.pl:4094 +#: ../bin/ptna-routes.pl:4021 msgid "PTv2 route: 'ref' is not part of 'name'" msgstr "Parcours PTv2 : le nom 'name' devrait contenir le code de ligne 'ref'" -#: ../bin/ptna-routes.pl:4103 +#: ../bin/ptna-routes.pl:4030 #, perl-format msgid "PTv2 route: from-part ('%s') of 'name' is not part of 'from' = '%s'" msgstr "" "Parcours PTv2 : l'origine de ligne précisée dans le nom ('%s') ne correspond " "pas à l'origine dans le tag 'from'='%s'" -#: ../bin/ptna-routes.pl:4107 +#: ../bin/ptna-routes.pl:4034 #, perl-format msgid "PTv2 route: 'from' = '%s' is not part of 'name'" msgstr "" "Parcours PTv2 : le nom 'name' devrait contenir l'origine de la ligne 'from' " "= '%s'" -#: ../bin/ptna-routes.pl:4112 +#: ../bin/ptna-routes.pl:4039 msgid "PTv2 route: 'from' is not set" msgstr "Parcours PTv2 : Le tag 'from' n'est pas défini" -#: ../bin/ptna-routes.pl:4120 +#: ../bin/ptna-routes.pl:4047 #, perl-format msgid "PTv2 route: to-part ('%s') of 'name' is not part of 'to' = '%s'" msgstr "" "Parcours PTv2 : la destination de ligne précisée dans le nom ('%s') ne " "correspond pas à la destination dans le tag 'to'='%s'" -#: ../bin/ptna-routes.pl:4124 +#: ../bin/ptna-routes.pl:4051 #, perl-format msgid "PTv2 route: 'to' = '%s' is not part of 'name'" msgstr "" "Parcours PTv2 : le nom 'name' devrait contenir la destination de la ligne " "'to' = '%s'" -#: ../bin/ptna-routes.pl:4129 +#: ../bin/ptna-routes.pl:4056 msgid "PTv2 route: 'to' is not set" msgstr "Parcours PTv2 : Le tag 'to' n'est pas défini" -#: ../bin/ptna-routes.pl:4141 +#: ../bin/ptna-routes.pl:4068 #, perl-format msgid "" "PTv2 route: 'via' is set: %d. via-part ('%s') of 'name' is not equal to %d. " "via-value = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:4146 +#: ../bin/ptna-routes.pl:4073 #, perl-format msgid "PTv2 route: there are more via-parts in 'name' (%d) than in 'via' (%d) " msgstr "" -#: ../bin/ptna-routes.pl:4149 +#: ../bin/ptna-routes.pl:4076 #, perl-format msgid "PTv2 route: there are less via-parts in 'name' (%d) than in 'via' (%d) " msgstr "" -#: ../bin/ptna-routes.pl:4154 +#: ../bin/ptna-routes.pl:4081 msgid "PTv2 route: 'name' has more than one '=>' but 'via' is not set" msgstr "" "Parcours PTv2 : le nom comporte plusieurs '=>' mais le tag 'via' n'est pas " "renseigné" -#: ../bin/ptna-routes.pl:4160 +#: ../bin/ptna-routes.pl:4087 msgid "" "PTv2 route: 'name' should be similar to the form '... ref ...: from => to'" msgstr "" "Parcours PTv2 : le nom devrait être sous la forme '... ref ...: from => to'" -#: ../bin/ptna-routes.pl:4162 +#: ../bin/ptna-routes.pl:4089 msgid "" "PTv2 route: 'name' should (at least) be of the form '... ref ...: from => to'" msgstr "" "Parcours PTv2 : le nom devrait être sous la forme (ou ressembler à) '... " "ref ...: from => to'" -#: ../bin/ptna-routes.pl:4208 +#: ../bin/ptna-routes.pl:4135 #, perl-format msgid "" "Route: restricted access (%s) to way without 'psv'='yes', '%s'='yes', " @@ -821,7 +821,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:4239 +#: ../bin/ptna-routes.pl:4166 msgid "Route: 'highway' = 'bus_stop' is set on way. Allowed on nodes only!" msgid_plural "" "Route: 'highway' = 'bus_stop' is set on ways. Allowed on nodes only!" @@ -832,12 +832,12 @@ msgstr[1] "" "Parcours : le tag 'highway'='bus_stop' est placé sur des chemins. Seuls les " "noeuds peuvent être des arrêts de bus !" -#: ../bin/ptna-routes.pl:4314 +#: ../bin/ptna-routes.pl:4241 msgid "separate multiple values by ';' (semi-colon) without blank" msgstr "" "Séparer les différentes valeurs par des ';' (point-virgule) sans espaces" -#: ../bin/ptna-routes.pl:4316 +#: ../bin/ptna-routes.pl:4243 #, perl-format msgid "" "'route_ref' = '%s' of stop does not include 'ref' = '%s' value of this route" @@ -846,7 +846,7 @@ msgstr "" "Le tag 'route_ref'='%s' de cet arrêt ne comprend pas le tag 'ref'='%s' de ce " "parcours %s" -#: ../bin/ptna-routes.pl:4323 +#: ../bin/ptna-routes.pl:4250 #, perl-format msgid "" "'route_ref' = '%s' of stop includes the separator value ';' (semi-colon) " @@ -855,7 +855,7 @@ msgstr "" "Le tag 'route_ref' = '%s' de cet arrêt comprend des espaces en trop autour " "du séparateur ';' (point-virgule) " -#: ../bin/ptna-routes.pl:4326 +#: ../bin/ptna-routes.pl:4253 #, perl-format msgid "" "'route_ref' = '%s' of stop: ',' (comma) as separator value should be " @@ -864,20 +864,20 @@ msgstr "" "Remplacer les ',' (virgule) par des ';' (point-virgule) comme séparateur " "dans le tag 'route_ref'='%s' de cet arrêt, sans espaces." -#: ../bin/ptna-routes.pl:4332 +#: ../bin/ptna-routes.pl:4259 #, perl-format msgid "'%s' = '%s' of stop should be deleted, 'route_ref' = '%s' exists" msgstr "" "'%s'='%s' doit être supprimé sur cet arrêt car 'route_ref' = '%s' est déjà " "présent" -#: ../bin/ptna-routes.pl:4341 +#: ../bin/ptna-routes.pl:4268 #, perl-format msgid "(consider adding '%s' to the 'route_ref' tag of the stop)" msgstr "" "(ajouter '%s' au tag 'route_ref' de cet arrêt serait peut-être plus adapté)" -#: ../bin/ptna-routes.pl:4342 ../bin/ptna-routes.pl:4370 +#: ../bin/ptna-routes.pl:4269 ../bin/ptna-routes.pl:4297 #, perl-format msgid "" "'ref' = '%s' of stop should represent the reference of the stop, but " @@ -886,53 +886,53 @@ msgstr "" "Le tag 'ref'='%s' sur un arrêt doit correspondre au numéro de l'arrêt, mais " "semble être le numéro de la ligne, 'ref'='%s' du parcours %s" -#: ../bin/ptna-routes.pl:4360 +#: ../bin/ptna-routes.pl:4287 #, perl-format msgid "'%s' = '%s' of stop should be replaced by 'route_ref' = '%s'" msgstr "'%s'='%s' de cet arrêt devrait être remplacé par 'route_ref' = '%s'" -#: ../bin/ptna-routes.pl:4369 +#: ../bin/ptna-routes.pl:4296 #, perl-format msgid "(consider creating a 'route_ref' = '%s' tag for the stop)" msgstr "" "(le tag 'route_ref' = '%s' serait peut-être plus adapté pour cet arrêt)" -#: ../bin/ptna-routes.pl:4384 ../bin/ptna-routes.pl:4394 -#: ../bin/ptna-routes.pl:4404 ../bin/ptna-routes.pl:4414 -#: ../bin/ptna-routes.pl:4424 +#: ../bin/ptna-routes.pl:4311 ../bin/ptna-routes.pl:4321 +#: ../bin/ptna-routes.pl:4331 ../bin/ptna-routes.pl:4341 +#: ../bin/ptna-routes.pl:4351 #, perl-format msgid "Route: %s: %s and %d more ..." msgstr "Parcours : %s : %s et %d en plus ..." -#: ../bin/ptna-routes.pl:4386 ../bin/ptna-routes.pl:4396 -#: ../bin/ptna-routes.pl:4406 ../bin/ptna-routes.pl:4416 -#: ../bin/ptna-routes.pl:4426 +#: ../bin/ptna-routes.pl:4313 ../bin/ptna-routes.pl:4323 +#: ../bin/ptna-routes.pl:4333 ../bin/ptna-routes.pl:4343 +#: ../bin/ptna-routes.pl:4353 #, perl-format msgid "Route: %s: %s" msgstr "Parcours : %s:%s" -#: ../bin/ptna-routes.pl:4466 +#: ../bin/ptna-routes.pl:4393 msgid "Error in input data: insufficient data for ways" msgstr "Erreur dans les données d'entrée : pas assez de chemins (ways)" -#: ../bin/ptna-routes.pl:4494 +#: ../bin/ptna-routes.pl:4421 msgid "Error in input data: insufficient data for nodes" msgstr "Erreur dans les données d'entrée : pas assez de noeuds (nodes)" -#: ../bin/ptna-routes.pl:4563 +#: ../bin/ptna-routes.pl:4490 msgid "Date of Data" msgstr "Date des données" -#: ../bin/ptna-routes.pl:4571 +#: ../bin/ptna-routes.pl:4498 msgid "Hints" msgstr "" -#: ../bin/ptna-routes.pl:4574 +#: ../bin/ptna-routes.pl:4501 msgid "The data will be updated when the result of the analysis has changed." msgstr "" "Le tableau sera mis à jour quand les résultats de l'analyse auront changé." -#: ../bin/ptna-routes.pl:4577 +#: ../bin/ptna-routes.pl:4504 msgid "" "An explanation of the error texts can be found in the documentation at 'Check'." @@ -940,24 +940,24 @@ msgstr "" "Une explication sur chaque erreur peut être trouvée dans la documentation." -#: ../bin/ptna-routes.pl:4615 +#: ../bin/ptna-routes.pl:4542 msgid "Contents" msgstr "Résultats" -#: ../bin/ptna-routes.pl:4708 +#: ../bin/ptna-routes.pl:4635 msgid "This section lists further relations of the environment of the routes:" msgstr "Cette section liste d'autres relations à proximité :" -#: ../bin/ptna-routes.pl:4711 +#: ../bin/ptna-routes.pl:4638 msgid "potentially wrong 'route' or 'route_master' values?" msgstr "" "des modes de transports erronés dans les tags 'route' et 'route_master' ?" -#: ../bin/ptna-routes.pl:4713 +#: ../bin/ptna-routes.pl:4640 msgid "e.g. 'route' = 'suspended_bus' instead of 'route' = 'bus'" msgstr "par exemple 'route'='suspended_bus' au lieu de 'route'='bus'" -#: ../bin/ptna-routes.pl:4716 +#: ../bin/ptna-routes.pl:4643 msgid "" "but also 'type' = 'network', 'type' = 'set' or 'route' = 'network', i.e. a " "collection of all routes and route-masters belonging to the 'network'." @@ -965,7 +965,7 @@ msgstr "" "ou des relations utilisées comme des collections d'objets : " "'type'='network', 'type'='set' ou encore 'route'='network'" -#: ../bin/ptna-routes.pl:4718 +#: ../bin/ptna-routes.pl:4645 msgid "" "such collections are strictly spoken errors, since " "relations shall not represent collections:" @@ -973,7 +973,7 @@ msgstr "" "il s'agit d'erreurs car les relations ne doivent pas " "représenter des catégories:" -#: ../bin/ptna-routes.pl:4719 +#: ../bin/ptna-routes.pl:4646 msgid "" " Relations/Relations are not Categories" @@ -982,7 +982,7 @@ msgstr "" "Les_relations_ne_sont_pas_des_cat%C3%A9gories\">https://wiki.openstreetmap." "org/wiki/FR:Relations/Les_relations_ne_sont_pas_des_cat%C3%A9gories " -#: ../bin/ptna-routes.pl:4725 +#: ../bin/ptna-routes.pl:4652 msgid "" "The following values and combinations have been found in the provided data " "but they will not be listed here. " @@ -990,30 +990,30 @@ msgstr "" "Les valeurs suivantes ont été trouvées dans les données mais ne sont pas " "listées ici." -#: ../bin/ptna-routes.pl:4726 +#: ../bin/ptna-routes.pl:4653 msgid "" "They represent so called 'well defined' values and are not considered as " "errors." msgstr "" "Il s'agit de valeur 'admises' qui ne sont pas considérées comme des erreurs." -#: ../bin/ptna-routes.pl:4764 +#: ../bin/ptna-routes.pl:4691 msgid "The contents of the 'network' tag will be searched for:" msgstr "Valeurs du tag 'network' utilisées :" -#: ../bin/ptna-routes.pl:4787 +#: ../bin/ptna-routes.pl:4714 msgid "The contents of the 'operator' tag will be searched for:" msgstr "Valeurs du tag 'operator' utilisées :" -#: ../bin/ptna-routes.pl:4797 +#: ../bin/ptna-routes.pl:4724 msgid "'operator' is not set" msgstr "le tag 'operator' n'est pas défini" -#: ../bin/ptna-routes.pl:4811 +#: ../bin/ptna-routes.pl:4738 msgid "Considered 'network'-Values" msgstr "Valeurs du tag 'network' prises en compte" -#: ../bin/ptna-routes.pl:4814 +#: ../bin/ptna-routes.pl:4741 msgid "" "This section lists the 'network'-values which have been considered; i.e. " "which match to one of the values above." @@ -1021,43 +1021,43 @@ msgstr "" "Cette section liste les valeurs du tag 'network' qui ont été prises en " "compte car elles sont identiques aux valeurs ci-dessus." -#: ../bin/ptna-routes.pl:4831 ../bin/ptna-routes.pl:4857 -#: ../bin/ptna-routes.pl:4894 +#: ../bin/ptna-routes.pl:4758 ../bin/ptna-routes.pl:4784 +#: ../bin/ptna-routes.pl:4821 msgid "and more ..." msgstr "et d'autres ..." -#: ../bin/ptna-routes.pl:4839 +#: ../bin/ptna-routes.pl:4766 msgid "" "This section lists the 'operator'-values which have not been considered. " msgstr "" "Cette section liste les valeurs du tag 'operator' qui n'ont pas été prises " "en compte." -#: ../bin/ptna-routes.pl:4840 ../bin/ptna-routes.pl:4877 +#: ../bin/ptna-routes.pl:4767 ../bin/ptna-routes.pl:4804 msgid "" "They might include typos in values which otherwise should have been " "considered. " msgstr "Cela correspond par exemples à des fautes d'orthographe ou des typos." -#: ../bin/ptna-routes.pl:4873 +#: ../bin/ptna-routes.pl:4800 msgid "Not Considered 'network'-Values" msgstr "Valeurs du tag 'network' non prises en compte" -#: ../bin/ptna-routes.pl:4876 +#: ../bin/ptna-routes.pl:4803 msgid "" "This section lists the 'network'-values which have not been considered. " msgstr "" "Cette section liste les valeurs du tag 'network' qui n'ont pas été prises en " "compte" -#: ../modules/RoutesList.pm:161 +#: ../modules/RoutesList.pm:167 #, perl-format msgid "" "Route-Type is not supported: '%s'. Line %s of Routes-Data. Contents of line: " "'%s'" msgstr "" -#: ../modules/RoutesList.pm:167 +#: ../modules/RoutesList.pm:173 #, perl-format msgid "Route-Type is not set. Line %s of Routes-Data. Contents of line: '%s'" msgstr "" diff --git a/po/ptna.pot b/po/ptna.pot index 6bbabff..7bf1130 100644 --- a/po/ptna.pot +++ b/po/ptna.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: ptna 1.0.0\n" "Report-Msgid-Bugs-To: osm-ToniE@web.de\n" -"POT-Creation-Date: 2019-05-04 23:24+0200\n" +"POT-Creation-Date: 2019-05-19 21:50+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -146,41 +146,41 @@ msgstr "" msgid "Funicular" msgstr "" -#: ../bin/ptna-routes.pl:987 +#: ../bin/ptna-routes.pl:979 #, perl-format msgid "Missing route for ref='%s' and route='%s'" msgstr "" -#: ../bin/ptna-routes.pl:994 +#: ../bin/ptna-routes.pl:986 msgid "' or ref='" msgstr "" #. xgettext: This section will list all routes which could not be clearly assigned because the combination of "ref;type" appears more than once and information like 'operator', 'from' and 'to' is missing -#: ../bin/ptna-routes.pl:1045 +#: ../bin/ptna-routes.pl:1037 msgid "Not clearly assigned routes" msgstr "" -#: ../bin/ptna-routes.pl:1100 +#: ../bin/ptna-routes.pl:1095 msgid "Other Public Transport Lines" msgstr "" -#: ../bin/ptna-routes.pl:1102 +#: ../bin/ptna-routes.pl:1097 msgid "Public Transport Lines" msgstr "" -#: ../bin/ptna-routes.pl:1169 +#: ../bin/ptna-routes.pl:1167 msgid "Public Transport Lines without 'ref'" msgstr "" -#: ../bin/ptna-routes.pl:1220 +#: ../bin/ptna-routes.pl:1218 msgid "More Relations" msgstr "" -#: ../bin/ptna-routes.pl:1258 +#: ../bin/ptna-routes.pl:1256 msgid "Details for 'network'-Values" msgstr "" -#: ../bin/ptna-routes.pl:1655 +#: ../bin/ptna-routes.pl:1582 #, perl-format msgid "" "Route-Master has more Routes than actually match (%d versus %d) in the given " @@ -191,7 +191,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:1660 +#: ../bin/ptna-routes.pl:1587 #, perl-format msgid "" "Route-Master has less Routes than actually match (%d versus %d) in the given " @@ -202,274 +202,274 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:1701 ../bin/ptna-routes.pl:1945 +#: ../bin/ptna-routes.pl:1628 ../bin/ptna-routes.pl:1872 msgid "There is more than one Route-Master" msgstr "" -#: ../bin/ptna-routes.pl:1763 +#: ../bin/ptna-routes.pl:1690 #, perl-format msgid "" "Route might be listed with 'ref' = '%s' in a different section or in section " "'Not clearly assigned routes' of this analysis: %s" msgstr "" -#: ../bin/ptna-routes.pl:1771 +#: ../bin/ptna-routes.pl:1698 #, perl-format msgid "" "Route has different 'operator' = '%s' than Route-Master 'operator' = '%s': %s" msgstr "" -#: ../bin/ptna-routes.pl:1780 +#: ../bin/ptna-routes.pl:1707 #, perl-format msgid "" "Route has 'operator' = '%s' value which is considered as not relevant: %s" msgstr "" -#: ../bin/ptna-routes.pl:1789 +#: ../bin/ptna-routes.pl:1716 #, perl-format msgid "" "Route has different 'network' = '%s' than Route-Master 'network' = '%s': %s" msgstr "" -#: ../bin/ptna-routes.pl:1798 +#: ../bin/ptna-routes.pl:1725 #, perl-format msgid "" "Route has 'network' = '%s' value which is considered as not relevant: %s" msgstr "" -#: ../bin/ptna-routes.pl:1807 ../bin/ptna-routes.pl:2045 +#: ../bin/ptna-routes.pl:1734 ../bin/ptna-routes.pl:1972 #, perl-format msgid "" "Route has different 'ref' = '%s' than Route-Master 'ref' = '%s' - this " "should be avoided: %s" msgstr "" -#: ../bin/ptna-routes.pl:1816 +#: ../bin/ptna-routes.pl:1743 #, perl-format msgid "Route has not matching 'ref' = '%s': %s" msgstr "" -#: ../bin/ptna-routes.pl:1825 +#: ../bin/ptna-routes.pl:1752 #, perl-format msgid "Route exists in the given data set but 'ref' tag is not set: %s" msgstr "" -#: ../bin/ptna-routes.pl:1834 +#: ../bin/ptna-routes.pl:1761 #, perl-format msgid "" "Route has different 'route' = '%s' than Route-Master 'route_master' = '%s': " "%s" msgstr "" -#: ../bin/ptna-routes.pl:1844 +#: ../bin/ptna-routes.pl:1771 #, perl-format msgid "Route has 'route' = '%s' value which is considered as not relevant: %s" msgstr "" -#: ../bin/ptna-routes.pl:1852 +#: ../bin/ptna-routes.pl:1779 #, perl-format msgid "Route: 'route' tag is not set: %s" msgstr "" -#: ../bin/ptna-routes.pl:1862 +#: ../bin/ptna-routes.pl:1789 #, perl-format msgid "Route: 'type' = '%s' is not 'route': %s" msgstr "" -#: ../bin/ptna-routes.pl:1871 +#: ../bin/ptna-routes.pl:1798 #, perl-format msgid "Route: 'type' tag is not set: %s" msgstr "" -#: ../bin/ptna-routes.pl:1882 +#: ../bin/ptna-routes.pl:1809 #, perl-format msgid "Route does not exist in the given data set: %s" msgstr "" -#: ../bin/ptna-routes.pl:1894 +#: ../bin/ptna-routes.pl:1821 #, perl-format msgid "Route is not member of Route-Master: %s" msgstr "" -#: ../bin/ptna-routes.pl:1953 +#: ../bin/ptna-routes.pl:1880 #, perl-format msgid "" "Route-Master might be listed with 'ref' = '%s' in a different section or in " "section 'Not clearly assigned routes' of this analysis: %s" msgstr "" -#: ../bin/ptna-routes.pl:1958 +#: ../bin/ptna-routes.pl:1885 #, perl-format msgid "" "Route-Master might be listed with unknown 'ref' in section 'Public Transport " "Lines without 'ref'' of this analysis: %s" msgstr "" -#: ../bin/ptna-routes.pl:1982 +#: ../bin/ptna-routes.pl:1909 #, perl-format msgid "This Route is direct member of more than one Route-Master: %s" msgstr "" -#: ../bin/ptna-routes.pl:1991 +#: ../bin/ptna-routes.pl:1918 msgid "Multiple Routes but no Route-Master" msgstr "" -#: ../bin/ptna-routes.pl:1998 +#: ../bin/ptna-routes.pl:1925 msgid "Multiple Routes but this Route is not a member of any Route-Master" msgstr "" -#: ../bin/ptna-routes.pl:2009 +#: ../bin/ptna-routes.pl:1936 msgid "This Route is not a member of any Route-Master" msgstr "" -#: ../bin/ptna-routes.pl:2026 +#: ../bin/ptna-routes.pl:1953 #, perl-format msgid "" "'route' = '%s' of Route does not fit to 'route_master' = '%s' of Route-" "Master: %s" msgstr "" -#: ../bin/ptna-routes.pl:2053 +#: ../bin/ptna-routes.pl:1980 #, perl-format msgid "Route-Master has not matching 'ref' = '%s': %s" msgstr "" -#: ../bin/ptna-routes.pl:2063 +#: ../bin/ptna-routes.pl:1990 #, perl-format msgid "" "'network' = '%s' of Route does not fit to 'network' = '%s' of Route-Master: " "%s" msgstr "" -#: ../bin/ptna-routes.pl:2082 +#: ../bin/ptna-routes.pl:2009 #, perl-format msgid "'colour' of Route does not fit to 'colour' of Route-Master: %s" msgstr "" -#: ../bin/ptna-routes.pl:2090 +#: ../bin/ptna-routes.pl:2017 #, perl-format msgid "'colour' of Route is set but 'colour' of Route-Master is not set: %s" msgstr "" -#: ../bin/ptna-routes.pl:2098 +#: ../bin/ptna-routes.pl:2025 #, perl-format msgid "'colour' of Route is not set but 'colour' of Route-Master is set: %s" msgstr "" -#: ../bin/ptna-routes.pl:2109 +#: ../bin/ptna-routes.pl:2036 msgid "Multiple Routes but 'public_transport:version' is not set to '2'" msgstr "" -#: ../bin/ptna-routes.pl:2181 +#: ../bin/ptna-routes.pl:2108 msgid "'ref' is not set" msgstr "" -#: ../bin/ptna-routes.pl:2189 +#: ../bin/ptna-routes.pl:2116 msgid "'name' is not set" msgstr "" -#: ../bin/ptna-routes.pl:2255 +#: ../bin/ptna-routes.pl:2182 #, perl-format msgid "" "'network' = '%s' includes the separator value ';' (semi-colon) with " "sourrounding blank" msgstr "" -#: ../bin/ptna-routes.pl:2263 +#: ../bin/ptna-routes.pl:2190 #, perl-format msgid "" "'network' = '%s': ',' (comma) as separator value should be replaced by " "';' (semi-colon) without blank" msgstr "" -#: ../bin/ptna-routes.pl:2272 +#: ../bin/ptna-routes.pl:2199 #, perl-format msgid "'network' = '%s' should be short form" msgstr "" -#: ../bin/ptna-routes.pl:2277 +#: ../bin/ptna-routes.pl:2204 #, perl-format msgid "'network' = '%s' should be long form" msgstr "" -#: ../bin/ptna-routes.pl:2324 ../bin/ptna-routes.pl:4780 +#: ../bin/ptna-routes.pl:2251 ../bin/ptna-routes.pl:4707 msgid "'network' is not set" msgstr "" -#: ../bin/ptna-routes.pl:2333 +#: ../bin/ptna-routes.pl:2260 #, perl-format msgid "'colour' has unknown value '%s'" msgstr "" -#: ../bin/ptna-routes.pl:2343 +#: ../bin/ptna-routes.pl:2270 #, perl-format msgid "'%s' is long form" msgstr "" -#: ../bin/ptna-routes.pl:2348 +#: ../bin/ptna-routes.pl:2275 #, perl-format msgid "'%s' matches long form" msgstr "" -#: ../bin/ptna-routes.pl:2406 +#: ../bin/ptna-routes.pl:2333 msgid "Route-Master without Route(s)" msgstr "" -#: ../bin/ptna-routes.pl:2408 +#: ../bin/ptna-routes.pl:2335 msgid "Route-Master with Relation(s) unequal to 'route'" msgstr "" -#: ../bin/ptna-routes.pl:2409 +#: ../bin/ptna-routes.pl:2336 msgid "Route-Master with Way(s)" msgstr "" -#: ../bin/ptna-routes.pl:2410 +#: ../bin/ptna-routes.pl:2337 msgid "Route-Master with Node(s)" msgstr "" -#: ../bin/ptna-routes.pl:2413 +#: ../bin/ptna-routes.pl:2340 msgid "'public_transport:version' is not set to '2'" msgstr "" -#: ../bin/ptna-routes.pl:2418 ../bin/ptna-routes.pl:2468 +#: ../bin/ptna-routes.pl:2345 ../bin/ptna-routes.pl:2395 msgid "'public_transport:version' is not set" msgstr "" -#: ../bin/ptna-routes.pl:2446 +#: ../bin/ptna-routes.pl:2373 msgid "Route without Way(s)" msgstr "" -#: ../bin/ptna-routes.pl:2447 +#: ../bin/ptna-routes.pl:2374 msgid "Route with only 1 Way" msgstr "" -#: ../bin/ptna-routes.pl:2448 +#: ../bin/ptna-routes.pl:2375 msgid "Route without Node(s)" msgstr "" -#: ../bin/ptna-routes.pl:2449 +#: ../bin/ptna-routes.pl:2376 msgid "Route with only 1 Node" msgstr "" -#: ../bin/ptna-routes.pl:2450 +#: ../bin/ptna-routes.pl:2377 msgid "Route with Relation(s)" msgstr "" -#: ../bin/ptna-routes.pl:2454 +#: ../bin/ptna-routes.pl:2381 msgid "'public_transport:version' is neither '1' nor '2'" msgstr "" -#: ../bin/ptna-routes.pl:2463 +#: ../bin/ptna-routes.pl:2390 msgid "Skipping further analysis ..." msgstr "" -#: ../bin/ptna-routes.pl:2626 +#: ../bin/ptna-routes.pl:2553 msgid "" "PTv2 route: first way is a oneway road and ends in a 'stop_position' of this " "route and there is no exit. Is the route sorted in reverse order?" msgstr "" -#: ../bin/ptna-routes.pl:2632 +#: ../bin/ptna-routes.pl:2559 #, perl-format msgid "PTv2 route: has a gap, consists of %d segments. Gap appears at way" msgid_plural "" @@ -477,270 +477,270 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2634 ../bin/ptna-routes.pl:2654 -#: ../bin/ptna-routes.pl:2674 ../bin/ptna-routes.pl:4242 -#: ../bin/ptna-routes.pl:4468 ../bin/ptna-routes.pl:4496 +#: ../bin/ptna-routes.pl:2561 ../bin/ptna-routes.pl:2581 +#: ../bin/ptna-routes.pl:2601 ../bin/ptna-routes.pl:4169 +#: ../bin/ptna-routes.pl:4395 ../bin/ptna-routes.pl:4423 #, perl-format msgid "%s: %s and %d more ..." msgstr "" -#: ../bin/ptna-routes.pl:2641 +#: ../bin/ptna-routes.pl:2568 #, perl-format msgid "" "PTv2 route: incorrect order of 'stop_position', 'platform' and 'way' (stop/" "platform after way)" msgstr "" -#: ../bin/ptna-routes.pl:2645 +#: ../bin/ptna-routes.pl:2572 msgid "entire roundabout but uses only segments" msgid_plural "entire roundabouts but uses only segments" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2646 +#: ../bin/ptna-routes.pl:2573 #, perl-format msgid "PTv2 route: includes %d %s" msgstr "" -#: ../bin/ptna-routes.pl:2652 +#: ../bin/ptna-routes.pl:2579 msgid "PTv2 route: using oneway way in wrong direction" msgid_plural "PTv2 route: using oneway ways in wrong direction" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2661 +#: ../bin/ptna-routes.pl:2588 msgid "PTv2 route: using motorway_link way without entering a motorway way:" msgid_plural "" "PTv2 route: using motorway_link ways without entering a motorway way:" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2668 +#: ../bin/ptna-routes.pl:2595 msgid "PTv2 route: roundabout appears twice, following itself" msgid_plural "PTv2 route: roundabouts appear twice, following themselves" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:2730 +#: ../bin/ptna-routes.pl:2657 msgid "first node of oneway way has 'role' = 'stop_exit_only'" msgstr "" -#: ../bin/ptna-routes.pl:2734 +#: ../bin/ptna-routes.pl:2661 msgid "last node of oneway way has 'role' = 'stop_entry_only'" msgstr "" -#: ../bin/ptna-routes.pl:2746 +#: ../bin/ptna-routes.pl:2673 msgid "" "first node of way has 'role' = 'stop_exit_only'. Is the route sorted in " "reverse order?" msgstr "" -#: ../bin/ptna-routes.pl:2752 +#: ../bin/ptna-routes.pl:2679 msgid "" "last node of way has 'role' = 'stop_entry_only'. Is the route sorted in " "reverse order?" msgstr "" -#: ../bin/ptna-routes.pl:2758 +#: ../bin/ptna-routes.pl:2685 msgid "'public_transport' = 'stop_position' is not part of way" msgstr "" -#: ../bin/ptna-routes.pl:2770 +#: ../bin/ptna-routes.pl:2697 #, perl-format msgid "missing '%s' = 'yes' on 'public_transport' = 'stop_position'" msgstr "" -#: ../bin/ptna-routes.pl:2778 ../bin/ptna-routes.pl:2826 -#: ../bin/ptna-routes.pl:3070 ../bin/ptna-routes.pl:3138 +#: ../bin/ptna-routes.pl:2705 ../bin/ptna-routes.pl:2753 +#: ../bin/ptna-routes.pl:2997 ../bin/ptna-routes.pl:3065 #, perl-format msgid "mismatch between 'role' = '%s' and 'public_transport' = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:2785 +#: ../bin/ptna-routes.pl:2712 #, perl-format msgid "" "'role' = '%s' and %s: consider setting 'public_transport' = 'stop_position'" msgstr "" -#: ../bin/ptna-routes.pl:2790 ../bin/ptna-routes.pl:2795 -#: ../bin/ptna-routes.pl:2838 ../bin/ptna-routes.pl:2843 -#: ../bin/ptna-routes.pl:3074 ../bin/ptna-routes.pl:3142 +#: ../bin/ptna-routes.pl:2717 ../bin/ptna-routes.pl:2722 +#: ../bin/ptna-routes.pl:2765 ../bin/ptna-routes.pl:2770 +#: ../bin/ptna-routes.pl:3001 ../bin/ptna-routes.pl:3069 #, perl-format msgid "'role' = '%s' but 'public_transport' is not set" msgstr "" -#: ../bin/ptna-routes.pl:2802 +#: ../bin/ptna-routes.pl:2729 msgid "'public_transport' = 'platform' is part of way" msgstr "" -#: ../bin/ptna-routes.pl:2833 +#: ../bin/ptna-routes.pl:2760 #, perl-format msgid "'role' = '%s' and %s: consider setting 'public_transport' = 'platform'" msgstr "" -#: ../bin/ptna-routes.pl:2850 ../bin/ptna-routes.pl:3080 -#: ../bin/ptna-routes.pl:3148 +#: ../bin/ptna-routes.pl:2777 ../bin/ptna-routes.pl:3007 +#: ../bin/ptna-routes.pl:3075 #, perl-format msgid "wrong 'role' = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:2855 ../bin/ptna-routes.pl:3086 -#: ../bin/ptna-routes.pl:3153 +#: ../bin/ptna-routes.pl:2782 ../bin/ptna-routes.pl:3013 +#: ../bin/ptna-routes.pl:3080 msgid "empty 'role'" msgstr "" -#: ../bin/ptna-routes.pl:2864 ../bin/ptna-routes.pl:3096 -#: ../bin/ptna-routes.pl:3162 +#: ../bin/ptna-routes.pl:2791 ../bin/ptna-routes.pl:3023 +#: ../bin/ptna-routes.pl:3089 #, perl-format msgid "PTv2 route: %s: %s and %d more ..." msgstr "" -#: ../bin/ptna-routes.pl:2866 ../bin/ptna-routes.pl:3099 -#: ../bin/ptna-routes.pl:3164 +#: ../bin/ptna-routes.pl:2793 ../bin/ptna-routes.pl:3026 +#: ../bin/ptna-routes.pl:3091 #, perl-format msgid "PTv2 route: %s: %s" msgstr "" -#: ../bin/ptna-routes.pl:2888 +#: ../bin/ptna-routes.pl:2815 #, perl-format msgid "" "PTv2 route: first node of way is not the first stop position of this route: " "%s versus %s" msgstr "" -#: ../bin/ptna-routes.pl:2933 ../bin/ptna-routes.pl:2943 +#: ../bin/ptna-routes.pl:2860 ../bin/ptna-routes.pl:2870 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the first way, except " "the last node == first node of next way: %s" msgstr "" -#: ../bin/ptna-routes.pl:2936 +#: ../bin/ptna-routes.pl:2863 #, perl-format msgid "" "PTv2 route: first stop position on first way is not the first stop position " "of this route: %s versus %s" msgstr "" -#: ../bin/ptna-routes.pl:2947 +#: ../bin/ptna-routes.pl:2874 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the first way: %s" msgstr "" -#: ../bin/ptna-routes.pl:2951 +#: ../bin/ptna-routes.pl:2878 #, perl-format msgid "PTv2 route: first node of way is not a stop position of this route: %s" msgstr "" -#: ../bin/ptna-routes.pl:2970 +#: ../bin/ptna-routes.pl:2897 #, perl-format msgid "" "PTv2 route: last node of way is not the last stop position of this route: %s " "versus %s" msgstr "" -#: ../bin/ptna-routes.pl:3015 ../bin/ptna-routes.pl:3025 +#: ../bin/ptna-routes.pl:2942 ../bin/ptna-routes.pl:2952 #, perl-format msgid "" "PTv2 route: there is no stop position of this route on the last way, except " "the first node == last node of previous way: %s" msgstr "" -#: ../bin/ptna-routes.pl:3018 +#: ../bin/ptna-routes.pl:2945 #, perl-format msgid "" "PTv2 route: last stop position on last way is not the last stop position of " "this route: %s versus %s" msgstr "" -#: ../bin/ptna-routes.pl:3029 +#: ../bin/ptna-routes.pl:2956 #, perl-format msgid "PTv2 route: there is no stop position of this route on the last way: %s" msgstr "" -#: ../bin/ptna-routes.pl:3033 +#: ../bin/ptna-routes.pl:2960 #, perl-format msgid "PTv2 route: last node of way is not a stop position of this route: %s" msgstr "" -#: ../bin/ptna-routes.pl:4032 +#: ../bin/ptna-routes.pl:3959 msgid "PTv2 route: 'name' includes deprecated '<=>'" msgstr "" -#: ../bin/ptna-routes.pl:4037 +#: ../bin/ptna-routes.pl:3964 msgid "PTv2 route: 'name' includes deprecated '==>'" msgstr "" -#: ../bin/ptna-routes.pl:4088 +#: ../bin/ptna-routes.pl:4015 #, perl-format msgid "PTv2 route: '%s' is not part of 'name' (derived from '%s' = '%s')" msgstr "" -#: ../bin/ptna-routes.pl:4094 +#: ../bin/ptna-routes.pl:4021 msgid "PTv2 route: 'ref' is not part of 'name'" msgstr "" -#: ../bin/ptna-routes.pl:4103 +#: ../bin/ptna-routes.pl:4030 #, perl-format msgid "PTv2 route: from-part ('%s') of 'name' is not part of 'from' = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:4107 +#: ../bin/ptna-routes.pl:4034 #, perl-format msgid "PTv2 route: 'from' = '%s' is not part of 'name'" msgstr "" -#: ../bin/ptna-routes.pl:4112 +#: ../bin/ptna-routes.pl:4039 msgid "PTv2 route: 'from' is not set" msgstr "" -#: ../bin/ptna-routes.pl:4120 +#: ../bin/ptna-routes.pl:4047 #, perl-format msgid "PTv2 route: to-part ('%s') of 'name' is not part of 'to' = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:4124 +#: ../bin/ptna-routes.pl:4051 #, perl-format msgid "PTv2 route: 'to' = '%s' is not part of 'name'" msgstr "" -#: ../bin/ptna-routes.pl:4129 +#: ../bin/ptna-routes.pl:4056 msgid "PTv2 route: 'to' is not set" msgstr "" -#: ../bin/ptna-routes.pl:4141 +#: ../bin/ptna-routes.pl:4068 #, perl-format msgid "" "PTv2 route: 'via' is set: %d. via-part ('%s') of 'name' is not equal to %d. " "via-value = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:4146 +#: ../bin/ptna-routes.pl:4073 #, perl-format msgid "PTv2 route: there are more via-parts in 'name' (%d) than in 'via' (%d) " msgstr "" -#: ../bin/ptna-routes.pl:4149 +#: ../bin/ptna-routes.pl:4076 #, perl-format msgid "PTv2 route: there are less via-parts in 'name' (%d) than in 'via' (%d) " msgstr "" -#: ../bin/ptna-routes.pl:4154 +#: ../bin/ptna-routes.pl:4081 msgid "PTv2 route: 'name' has more than one '=>' but 'via' is not set" msgstr "" -#: ../bin/ptna-routes.pl:4160 +#: ../bin/ptna-routes.pl:4087 msgid "" "PTv2 route: 'name' should be similar to the form '... ref ...: from => to'" msgstr "" -#: ../bin/ptna-routes.pl:4162 +#: ../bin/ptna-routes.pl:4089 msgid "" "PTv2 route: 'name' should (at least) be of the form '... ref ...: from => to'" msgstr "" -#: ../bin/ptna-routes.pl:4208 +#: ../bin/ptna-routes.pl:4135 #, perl-format msgid "" "Route: restricted access (%s) to way without 'psv'='yes', '%s'='yes', " @@ -751,206 +751,206 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:4239 +#: ../bin/ptna-routes.pl:4166 msgid "Route: 'highway' = 'bus_stop' is set on way. Allowed on nodes only!" msgid_plural "" "Route: 'highway' = 'bus_stop' is set on ways. Allowed on nodes only!" msgstr[0] "" msgstr[1] "" -#: ../bin/ptna-routes.pl:4314 +#: ../bin/ptna-routes.pl:4241 msgid "separate multiple values by ';' (semi-colon) without blank" msgstr "" -#: ../bin/ptna-routes.pl:4316 +#: ../bin/ptna-routes.pl:4243 #, perl-format msgid "" "'route_ref' = '%s' of stop does not include 'ref' = '%s' value of this route" "%s" msgstr "" -#: ../bin/ptna-routes.pl:4323 +#: ../bin/ptna-routes.pl:4250 #, perl-format msgid "" "'route_ref' = '%s' of stop includes the separator value ';' (semi-colon) " "with sourrounding blank" msgstr "" -#: ../bin/ptna-routes.pl:4326 +#: ../bin/ptna-routes.pl:4253 #, perl-format msgid "" "'route_ref' = '%s' of stop: ',' (comma) as separator value should be " "replaced by ';' (semi-colon) without blank" msgstr "" -#: ../bin/ptna-routes.pl:4332 +#: ../bin/ptna-routes.pl:4259 #, perl-format msgid "'%s' = '%s' of stop should be deleted, 'route_ref' = '%s' exists" msgstr "" -#: ../bin/ptna-routes.pl:4341 +#: ../bin/ptna-routes.pl:4268 #, perl-format msgid "(consider adding '%s' to the 'route_ref' tag of the stop)" msgstr "" -#: ../bin/ptna-routes.pl:4342 ../bin/ptna-routes.pl:4370 +#: ../bin/ptna-routes.pl:4269 ../bin/ptna-routes.pl:4297 #, perl-format msgid "" "'ref' = '%s' of stop should represent the reference of the stop, but " "includes the 'ref' ='%s' of this route %s" msgstr "" -#: ../bin/ptna-routes.pl:4360 +#: ../bin/ptna-routes.pl:4287 #, perl-format msgid "'%s' = '%s' of stop should be replaced by 'route_ref' = '%s'" msgstr "" -#: ../bin/ptna-routes.pl:4369 +#: ../bin/ptna-routes.pl:4296 #, perl-format msgid "(consider creating a 'route_ref' = '%s' tag for the stop)" msgstr "" -#: ../bin/ptna-routes.pl:4384 ../bin/ptna-routes.pl:4394 -#: ../bin/ptna-routes.pl:4404 ../bin/ptna-routes.pl:4414 -#: ../bin/ptna-routes.pl:4424 +#: ../bin/ptna-routes.pl:4311 ../bin/ptna-routes.pl:4321 +#: ../bin/ptna-routes.pl:4331 ../bin/ptna-routes.pl:4341 +#: ../bin/ptna-routes.pl:4351 #, perl-format msgid "Route: %s: %s and %d more ..." msgstr "" -#: ../bin/ptna-routes.pl:4386 ../bin/ptna-routes.pl:4396 -#: ../bin/ptna-routes.pl:4406 ../bin/ptna-routes.pl:4416 -#: ../bin/ptna-routes.pl:4426 +#: ../bin/ptna-routes.pl:4313 ../bin/ptna-routes.pl:4323 +#: ../bin/ptna-routes.pl:4333 ../bin/ptna-routes.pl:4343 +#: ../bin/ptna-routes.pl:4353 #, perl-format msgid "Route: %s: %s" msgstr "" -#: ../bin/ptna-routes.pl:4466 +#: ../bin/ptna-routes.pl:4393 msgid "Error in input data: insufficient data for ways" msgstr "" -#: ../bin/ptna-routes.pl:4494 +#: ../bin/ptna-routes.pl:4421 msgid "Error in input data: insufficient data for nodes" msgstr "" -#: ../bin/ptna-routes.pl:4563 +#: ../bin/ptna-routes.pl:4490 msgid "Date of Data" msgstr "" -#: ../bin/ptna-routes.pl:4571 +#: ../bin/ptna-routes.pl:4498 msgid "Hints" msgstr "" -#: ../bin/ptna-routes.pl:4574 +#: ../bin/ptna-routes.pl:4501 msgid "The data will be updated when the result of the analysis has changed." msgstr "" -#: ../bin/ptna-routes.pl:4577 +#: ../bin/ptna-routes.pl:4504 msgid "" "An explanation of the error texts can be found in the documentation at 'Check'." msgstr "" -#: ../bin/ptna-routes.pl:4615 +#: ../bin/ptna-routes.pl:4542 msgid "Contents" msgstr "" -#: ../bin/ptna-routes.pl:4708 +#: ../bin/ptna-routes.pl:4635 msgid "This section lists further relations of the environment of the routes:" msgstr "" -#: ../bin/ptna-routes.pl:4711 +#: ../bin/ptna-routes.pl:4638 msgid "potentially wrong 'route' or 'route_master' values?" msgstr "" -#: ../bin/ptna-routes.pl:4713 +#: ../bin/ptna-routes.pl:4640 msgid "e.g. 'route' = 'suspended_bus' instead of 'route' = 'bus'" msgstr "" -#: ../bin/ptna-routes.pl:4716 +#: ../bin/ptna-routes.pl:4643 msgid "" "but also 'type' = 'network', 'type' = 'set' or 'route' = 'network', i.e. a " "collection of all routes and route-masters belonging to the 'network'." msgstr "" -#: ../bin/ptna-routes.pl:4718 +#: ../bin/ptna-routes.pl:4645 msgid "" "such collections are strictly spoken errors, since " "relations shall not represent collections:" msgstr "" -#: ../bin/ptna-routes.pl:4719 +#: ../bin/ptna-routes.pl:4646 msgid "" " Relations/Relations are not Categories" msgstr "" -#: ../bin/ptna-routes.pl:4725 +#: ../bin/ptna-routes.pl:4652 msgid "" "The following values and combinations have been found in the provided data " "but they will not be listed here. " msgstr "" -#: ../bin/ptna-routes.pl:4726 +#: ../bin/ptna-routes.pl:4653 msgid "" "They represent so called 'well defined' values and are not considered as " "errors." msgstr "" -#: ../bin/ptna-routes.pl:4764 +#: ../bin/ptna-routes.pl:4691 msgid "The contents of the 'network' tag will be searched for:" msgstr "" -#: ../bin/ptna-routes.pl:4787 +#: ../bin/ptna-routes.pl:4714 msgid "The contents of the 'operator' tag will be searched for:" msgstr "" -#: ../bin/ptna-routes.pl:4797 +#: ../bin/ptna-routes.pl:4724 msgid "'operator' is not set" msgstr "" -#: ../bin/ptna-routes.pl:4811 +#: ../bin/ptna-routes.pl:4738 msgid "Considered 'network'-Values" msgstr "" -#: ../bin/ptna-routes.pl:4814 +#: ../bin/ptna-routes.pl:4741 msgid "" "This section lists the 'network'-values which have been considered; i.e. " "which match to one of the values above." msgstr "" -#: ../bin/ptna-routes.pl:4831 ../bin/ptna-routes.pl:4857 -#: ../bin/ptna-routes.pl:4894 +#: ../bin/ptna-routes.pl:4758 ../bin/ptna-routes.pl:4784 +#: ../bin/ptna-routes.pl:4821 msgid "and more ..." msgstr "" -#: ../bin/ptna-routes.pl:4839 +#: ../bin/ptna-routes.pl:4766 msgid "" "This section lists the 'operator'-values which have not been considered. " msgstr "" -#: ../bin/ptna-routes.pl:4840 ../bin/ptna-routes.pl:4877 +#: ../bin/ptna-routes.pl:4767 ../bin/ptna-routes.pl:4804 msgid "" "They might include typos in values which otherwise should have been " "considered. " msgstr "" -#: ../bin/ptna-routes.pl:4873 +#: ../bin/ptna-routes.pl:4800 msgid "Not Considered 'network'-Values" msgstr "" -#: ../bin/ptna-routes.pl:4876 +#: ../bin/ptna-routes.pl:4803 msgid "" "This section lists the 'network'-values which have not been considered. " msgstr "" -#: ../modules/RoutesList.pm:161 +#: ../modules/RoutesList.pm:167 #, perl-format msgid "" "Route-Type is not supported: '%s'. Line %s of Routes-Data. Contents of line: " "'%s'" msgstr "" -#: ../modules/RoutesList.pm:167 +#: ../modules/RoutesList.pm:173 #, perl-format msgid "Route-Type is not set. Line %s of Routes-Data. Contents of line: '%s'" msgstr "" diff --git a/test/multiple-ref-type-issue-70-Routes.txt b/test/multiple-ref-type-issue-70-Routes.txt new file mode 100644 index 0000000..bf8b9e0 --- /dev/null +++ b/test/multiple-ref-type-issue-70-Routes.txt @@ -0,0 +1,66 @@ +
+#
+# Format:
+#
+# Headers start with '=', '==', '===', '====', ... at the beginning of a line, format is like in the OSM Wiki
+#
+# Simple text starts with '-' at the beginning of a line, format is like in the OSM Wiki, a single '-' will cause a new line (new paragraph).
+# Simple text starts may only be placed directly after a header line.
+#
+# Links: [[...|...]] are interne link like in the OSM Wiki
+#        [... ...] are external links
+#
+# Comments start with '#' at the beginning of a line. '#' inside text is not recognized as the start of a comment.
+#
+# Format of the file: UNIX (LF), UTF-8
+#
+#
+# Cotents in CSV-Format
+#
+# ref;type;comment;from;to;operator
+#
+# - ref       == tag 'ref' of route or route_master
+# - type      == contents of tags 'route' respectively 'route_master'
+# - comment   == can include comments like; Bus, Expressbus, ...  will not be analyze, but simply be printed out
+# - from      == if there is more than one entry with "ref;type" and "operator" is the same, then 'from' and 'to are also used to distinguish between same line number in different cities/villages
+# - to        == if there is more than one entry with "ref;type" and "operator" is the same, then 'from' and 'to are also used to distinguish between same line number in different cities/villages
+# - operator  == if there is more than one entry with "ref;type", then "operator" is used to distinguish between same line number in different cities/villages
+#
+
+
+= Test for issue #??
+
+== multiple appearances of "ref;type" and also "from" or/and "to" appear multiple times, "operator" is identical
+
+RB;train;;Wertheim;Lauda;"DB RegioNetz Verkehrs GmbH;Westfrankenbahn"
+RB;train;;Bad Mergentheim;Würzburg;"DB RegioNetz Verkehrs GmbH;Westfrankenbahn"
+RB;train;;Seckach;Miltenberg;"DB RegioNetz Verkehrs GmbH;Westfrankenbahn"
+RB;train;;Aschaffenburg;Miltenberg;"DB RegioNetz Verkehrs GmbH;Westfrankenbahn"
+RB;train;;Miltenberg;Wertheim;"DB RegioNetz Verkehrs GmbH;Westfrankenbahn"
+
+
+== multiple appearances of "ref;type" and "operator" is not set, but "from" and "to" are set
+
+R1;train;;Augsburg;München;
+R1;train;;Augsburg;Radersdorf;
+
+R6;train;;Augusburg;Dinkelscherben;
+R6;train;;Nürnberg;Treuchtlingen;
+
+R11;train;;Augsburg;Schmiechen;
+R11;train;Rangaubahn;Fürth;Cadolzburg;DB Regio Mittelfranken
+
+
+== multiple appearances with 'or' values and "operator" is not set in both CSV data and in Relations
+
+4;light_rail;;Käfertal|Wallstadt;Oggersheim|Bad Dürkheim;
+4;light_rail;;Lohmannshof;Rathaus;
+
+
+== multiple appearances with 'or' values and "operator" is not set in Relations
+
+4;light_rail;;Käfertal|Wallstadt;Oggersheim|Bad Dürkheim;Rhein-Neckar-Verkehr GmbH
+4;light_rail;;Lohmannshof;Rathaus;moBiel GmbH
+
+
+
\ No newline at end of file diff --git a/test/multiple-ref-type-issue-70.expect b/test/multiple-ref-type-issue-70.expect new file mode 100644 index 0000000..92ced6c --- /dev/null +++ b/test/multiple-ref-type-issue-70.expect @@ -0,0 +1,168 @@ + + + + PTNA - Public Transport Network Analysis + + + + + + + + + +
+

1 Hints

+

+ The data will be updated when the result of the analysis has changed. +

+

+ An explanation of the error texts can be found in the documentation at 'Check'. +

+
+

2 Test for issue #??

+

2.1 multiple appearances of "ref;type" and also "from" or/and "to" appear multiple times, "operator" is identical

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Name (name=)Type (type=)Relation (id=)PTvErrorsNotes
RBFrom: Wertheim; To: Lauda; Operator: DB RegioNetz Verkehrs GmbH;Westfrankenbahn
RB Wertheim <=> Laudaroute_masterRelation -1028082'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Lauda => WertheimrouteRelation -1028062'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Wertheim => LaudarouteRelation -1028072'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RBFrom: Bad Mergentheim; To: Würzburg; Operator: DB RegioNetz Verkehrs GmbH;Westfrankenbahn
RB Bad Mergentheim <=> Würzburgroute_masterRelation -1028142'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Bad Mergentheim => WürzburgrouteRelation -1028122'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Würzburg => Bad MergentheimrouteRelation -1028132'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RBFrom: Seckach; To: Miltenberg; Operator: DB RegioNetz Verkehrs GmbH;Westfrankenbahn
RB Seckach <=> Miltenbergroute_masterRelation -1029082'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Seckach => MiltenbergrouteRelation -1029042'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Miltenberg => SeckachrouteRelation -1028782'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RBFrom: Aschaffenburg; To: Miltenberg; Operator: DB RegioNetz Verkehrs GmbH;Westfrankenbahn
RB Aschaffenburg <=> Miltenbergroute_masterRelation -1029502'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Aschaffenburg => MiltenbergrouteRelation -1029282'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Miltenberg => AschaffenburgrouteRelation -1029462'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RBFrom: Miltenberg; To: Wertheim; Operator: DB RegioNetz Verkehrs GmbH;Westfrankenbahn
RB Miltenberg <=> Wertheimroute_masterRelation -1028112'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Miltenberg => WertheimrouteRelation -1028092'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
RB: Wertheim => MiltenbergrouteRelation -1028102'operator' = 'DB RegioNetz Verkehrs GmbH;Westfrankenbahn'
+ +

2.2 multiple appearances of "ref;type" and "operator" is not set, but "from" and "to" are set

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Name (name=)Type (type=)Relation (id=)PTvErrorsNotes
R1From: Augsburg; To: München
R1 Augsburg <=> Münchenroute_masterRelation -1032492
R1: Augsburg => MünchenrouteRelation -1031662
R1: München => AugsburgrouteRelation -1032452
R1From: Augsburg; To: Radersdorf
R1 Augsburg <=> Radersdorfroute_masterRelation -1033512
R1: Augsburg => RadersdorfrouteRelation -1032992
R1: Radersdorf => AugsburgrouteRelation -1035202
R6From: Augusburg; To: Dinkelscherben
R6 Augsburg <=> Dinkelscherbenroute_masterRelation -1035172
R6: Augsburg => DinkelscherbenrouteRelation -1035132
R6: Dinkelscherben => AugsburgrouteRelation -1033472
R6From: Nürnberg; To: Treuchtlingen
R6 Nürnberg <=> Treuchtlingenroute_masterRelation -1036582
R6: Nürnberg => TreuchtlingenrouteRelation -1036392
R6: Treuchtlingen => NürnbergrouteRelation -1036162
R11From: Augsburg; To: Schmiechen
R11 Augsburg <=> Schmiechenroute_masterRelation -1037262There is more than one Route-Master
R11 Fürth <=> Cadolzburgroute_masterRelation -1038202'note' = ''operator' not set be intention'
There is more than one Route-Master
R11: Augsburg => SchmiechenrouteRelation -1037152There is more than one Route-Master
R11: Schmiechen => AugsburgrouteRelation -1037202There is more than one Route-Master
R11: Fürth => CadolzburgrouteRelation -1037822'note' = ''operator' not set be intention'
There is more than one Route-Master
R11: Cadolzburg => FürthrouteRelation -1038182'note' = ''operator' not set be intention'
There is more than one Route-Master
R11Comment: Rangaubahn; From: Fürth; To: Cadolzburg; Operator: DB Regio Mittelfranken
Missing route for ref='R11' and route='train'
+ +

2.3 multiple appearances with 'or' values and "operator" is not set in both CSV data and in Relations

+ + + + + + + + + + +
Name (name=)Type (type=)Relation (id=)PTvErrorsNotes
4From: Käfertal|Wallstadt; To: Oggersheim|Bad Dürkheim
Missing route for ref='4' and route='light_rail'
4From: Lohmannshof; To: Rathaus
Missing route for ref='4' and route='light_rail'
+ +

2.4 multiple appearances with 'or' values and "operator" is not set in Relations

+ + + + + + + + + + +
Name (name=)Type (type=)Relation (id=)PTvErrorsNotes
4From: Käfertal|Wallstadt; To: Oggersheim|Bad Dürkheim; Operator: Rhein-Neckar-Verkehr GmbH
Missing route for ref='4' and route='light_rail'
4From: Lohmannshof; To: Rathaus; Operator: moBiel GmbH
Missing route for ref='4' and route='light_rail'
+ +
+

3 Details for 'network'-Values

+

3.1 Considered 'network'-Values

+

+This section lists the 'network'-values which have been considered; i.e. which match to one of the values above. +

+ + + + + + + +
Network (network=)NumberRelations
any33Relation 'RB' -102806, Relation 'RB' -102807, Relation 'RB' -102808, Relation 'RB' -102809, Relation 'RB' -102810, Relation 'RB' -102811, Relation 'RB' -102812, Relation 'RB' -102813, Relation 'RB' -102814, Relation 'RB' -102878 and more ...
+ + + diff --git a/test/multiple-ref-type-issue-70.osm b/test/multiple-ref-type-issue-70.osm new file mode 100644 index 0000000..3c500dc --- /dev/null +++ b/test/multiple-ref-type-issue-70.osm @@ -0,0 +1,868 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +