diff options
| author | Michel Etienne | 2015-09-24 14:56:42 +0200 | 
|---|---|---|
| committer | Michel Etienne | 2015-09-24 14:56:42 +0200 | 
| commit | d0ae24fa9d0082a322ed7457090e4dfecf89042f (patch) | |
| tree | 8d101e5017aeac41e95bb81bd5460f77e9419d11 | |
| parent | df9469f96e7ac102e27e682581f3f7b604934578 (diff) | |
| download | chouette-core-d0ae24fa9d0082a322ed7457090e4dfecf89042f.tar.bz2 | |
adapt to Neptune specifications V4
48 files changed, 1389 insertions, 737 deletions
| diff --git a/CHANGELOG.md b/CHANGELOG.md index 6608ab53c..33e761a49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ +# Version 3.1.0 (en cours) +* Nouvelles fonctionnalités +  * Validation GTFS lors de l'import +* Améliorations +  * présentation des rapports d'import/export et validation +  # Version 3.0.1 (en cours)  * Corrections -  * mise en place d'un formulaire de consultation des clés de l'API V1 +  * mise en place d'un formulaire de consultation des clés de l'API V1 (Mantis 38248)  +  * restitution d'erreurs de clonage des arrêts sur clone invalide (Mantis 39159) +  * corrections sur les restrictions hub   # Version 3.0.0 (20/08/15)  * Nouvelles fonctionnalités @@ -115,9 +115,9 @@ gem 'squeel'  gem 'enumerize', '~> 0.10.0' -#gem 'ninoxe', :git => 'https://github.com/afimb/ninoxe.git', :branch => "rails4"  gem 'ninoxe', :git => 'https://github.com/afimb/ninoxe.git' -#gem 'ninoxe', '1.2.0' +#gem 'ninoxe', '1.2.2' +#gem 'ninoxe',:path => '~/workspace/chouette/ninoxe'  gem 'acts_as_list', '~> 0.6.0'  gem "acts_as_tree", '~> 2.1.0', :require => "acts_as_tree" diff --git a/Gemfile.lock b/Gemfile.lock index 58465495e..319c0ce14 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,8 +1,8 @@  GIT    remote: https://github.com/afimb/ninoxe.git -  revision: 0c548adb266659e7aacd9a7b055e6eb9e21baf66 +  revision: 766d2293bde741d34a5b9f23da21e5dc8d66bb2f    specs: -    ninoxe (1.2.0) +    ninoxe (1.2.1)        activerecord (~> 4.1.1)        acts-as-taggable-on (>= 3)        acts_as_list (>= 0.1.6) @@ -106,7 +106,7 @@ GEM      coffee-script-source (1.9.1)      daemons (1.1.9)      database_cleaner (1.4.1) -    dbf (2.0.9) +    dbf (2.0.10)        fastercsv (~> 1.5)      debug_inspector (0.0.2)      deep_cloneable (2.0.2) @@ -150,9 +150,9 @@ GEM      faraday_middleware (0.9.1)        faraday (>= 0.7.4, < 0.10)      fastercsv (1.5.5) -    ffi (1.9.8) -    ffi (1.9.8-java) -    ffi-geos (1.0.0) +    ffi (1.9.10) +    ffi (1.9.10-java) +    ffi-geos (1.1.0)        ffi (>= 1.0.0)      font-awesome-sass (4.2.2)        sass (~> 3.2) @@ -219,8 +219,8 @@ GEM      jruby-rack (1.1.18)      jruby-rack-worker (0.10.0)        jruby-rack (>= 1.1.10) -    json (1.8.2) -    json (1.8.2-java) +    json (1.8.3) +    json (1.8.3-java)      language_engine (0.0.6)        rails (~> 4.1.1)      launchy (2.4.3) @@ -247,9 +247,9 @@ GEM      mime-types (2.4.3)      mimemagic (0.3.0)      mini_portile (0.6.2) -    minitest (5.6.1) +    minitest (5.8.1)      modernizr-rails (2.0.6) -    multi_json (1.11.0) +    multi_json (1.11.2)      multipart-post (2.0.0)      nenv (0.2.0)      net-scp (1.2.1) @@ -365,7 +365,7 @@ GEM      ref (1.0.5)      responders (1.1.2)        railties (>= 3.2, < 4.2) -    rgeo (0.3.20) +    rgeo (0.4.0)      roo (1.13.2)        nokogiri        rubyzip @@ -576,3 +576,6 @@ DEPENDENCIES    warbler    will_paginate (~> 3.0.7)    will_paginate-bootstrap (~> 1.0.1) + +BUNDLED WITH +   1.10.6 diff --git a/app/controllers/access_links_controller.rb b/app/controllers/access_links_controller.rb index 8a01453eb..d590aba00 100644 --- a/app/controllers/access_links_controller.rb +++ b/app/controllers/access_links_controller.rb @@ -17,7 +17,7 @@ class AccessLinksController < ChouetteController    def show      @map = AccessLinkMap.new(resource).with_helpers(self)      @access_point = Chouette::AccessPoint.find(params[:access_point_id]) -    @access_link = Chouette::AccessLink.find(params[:id]) +    #@access_link = Chouette::AccessLink.find(params[:id])      @stop_area = @access_link.stop_area      show! do |format|        format.html {build_breadcrumb :show} @@ -62,6 +62,15 @@ class AccessLinksController < ChouetteController      end    end +  def update +    @access_point = Chouette::AccessPoint.find(params[:access_point_id]) +    @access_link = Chouette::AccessLink.find(params[:id]) +    @stop_area = @access_link.stop_area +    @orientation = @access_link.link_orientation_type +    update! do |success, failure| +      build_breadcrumb :edit +    end +  end    protected diff --git a/app/controllers/lines_controller.rb b/app/controllers/lines_controller.rb index 6533278d2..514c82401 100644 --- a/app/controllers/lines_controller.rb +++ b/app/controllers/lines_controller.rb @@ -83,7 +83,7 @@ class LinesController < ChouetteController    private    def line_params -    params.require(:line).permit( :transport_mode, :network_id, :company_id, :objectid, :object_version, :creation_time, :creator_id, :name, :number, :published_name, :transport_mode_name, :registration_number, :comment, :mobility_restricted_suitability, :int_user_needs, :flexible_service, :group_of_lines, :group_of_line_ids, :group_of_line_tokens, :url, :color, :text_color, { footnotes_attributes: [ :code, :label, :_destroy, :id ] } ) +    params.require(:line).permit( :transport_mode, :network_id, :company_id, :objectid, :object_version, :creation_time, :creator_id, :name, :number, :published_name, :transport_mode_name, :registration_number, :comment, :mobility_restricted_suitability, :int_user_needs, :flexible_service, :group_of_lines, :group_of_line_ids, :group_of_line_tokens, :url, :color, :text_color, :stable_id, { footnotes_attributes: [ :code, :label, :_destroy, :id ] } )    end  end diff --git a/app/controllers/networks_controller.rb b/app/controllers/networks_controller.rb index 5dff116c2..239f022b3 100644 --- a/app/controllers/networks_controller.rb +++ b/app/controllers/networks_controller.rb @@ -42,7 +42,7 @@ class NetworksController < ChouetteController    end    def network_params -    params.require(:network).permit(:objectid, :object_version, :creation_time, :creator_id, :version_date, :description, :name, :registration_number, :source_name, :source_type, :source_identifier, :comment ) +    params.require(:network).permit(:objectid, :object_version, :creation_time, :creator_id, :version_date, :description, :name, :registration_number, :source_name, :source_type_name, :source_identifier, :comment )    end  end diff --git a/app/models/stop_area_copy.rb b/app/models/stop_area_copy.rb index 3401b5fde..0fa56ff68 100644 --- a/app/models/stop_area_copy.rb +++ b/app/models/stop_area_copy.rb @@ -56,7 +56,7 @@ class StopAreaCopy      { :name => self.source.name, # TODO: change ninoxe to avoid that !!!        :area_type => self.area_type.camelcase,        :registration_number => nil, -      :parent_id => copy_is_source_child? ? self.source_id : self.copy.parent_id +      :parent_id => copy_is_source_child? ? self.source_id : nil      }    end @@ -71,11 +71,18 @@ class StopAreaCopy        if self.valid?          Chouette::StopArea.transaction do            copy.update_attributes copy_modfied_attributes -          unless source_modified_attributes.empty? -            source.update_attributes source_modified_attributes -          end +          if copy.valid? +            unless source_modified_attributes.empty? +              source.update_attributes source_modified_attributes +            end +            true +          else +            copy.errors.full_messages.each do |m|  +              errors.add :base, m +            end +            false +          end            end -        true        else          false        end diff --git a/app/views/access_links/_form.html.erb b/app/views/access_links/_form.html.erb index 2ce44542f..d6c0c603e 100644 --- a/app/views/access_links/_form.html.erb +++ b/app/views/access_links/_form.html.erb @@ -4,12 +4,12 @@      <%= form.input :stop_area_id , :as => :hidden %>      <%= form.input :link_orientation_type , :as => :hidden%>      <%= form.input :name %> -    <%= form.input :access_link_type, :as => :select, :collection => Chouette::AccessLink.access_link_types, :include_blank => false, :member_label => Proc.new { |type| t("connection_link_types.label.#{type}") }  %> +    <%= form.input :access_link_type, :as => :select, :collection => Chouette::AccessLink.access_link_types, :include_blank => true, :member_label => Proc.new { |type| t("connection_link_types.label.#{type}") }  %>      <%= form.input :comment %>      <%= form.input :link_distance %> -    <%= form.input :mobility_restricted_suitability,:as => :boolean %> -    <%= form.input :stairs_availability,:as => :boolean %> -    <%= form.input :lift_availability,:as => :boolean %> +    <%= form.input :mobility_restricted_suitability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %> +    <%= form.input :stairs_availability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %> +    <%= form.input :lift_availability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %>      <%= form.input :objectid, :required => !@access_link.new_record?, :input_html => { :title => t("formtastic.titles.access_link.objectid")} %>        <%= form.inputs :name => t('access_links.show.durations') do %>         <%= form.input :default_duration, :as => :extended_time_picker, :size => 8, :step => :seconds, :label => @access_link.human_attribute_name("default_duration"), :input_html => { :class => "form-control input-sm timepicker_seconds", :step => 1}, :wrapper_html => { :class => "input-append bootstrap-timepicker" } %>        diff --git a/app/views/access_links/show.html.erb b/app/views/access_links/show.html.erb index 3999b0287..54f89297e 100644 --- a/app/views/access_links/show.html.erb +++ b/app/views/access_links/show.html.erb @@ -6,7 +6,11 @@    <div class="summary">      <p>        <label><%= @access_link.human_attribute_name("access_link_type") %>: </label> -      <%= t("connection_link_types.label.#{@access_link.access_link_type}") %> +      <% if @access_link.access_link_type.present? %> +        <%= t("connection_link_types.label.#{@access_link.access_link_type}") %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>      <p>        <label><%= @access_link.human_attribute_name("comment") %>: </label> @@ -39,21 +43,33 @@      </p>      <p>        <label class='duration'><%= @access_link.human_attribute_name("mobility_restricted_traveller_duration") %>: </label> -      <% if (@access_link.mobility_restricted_traveller_duration.present?) %> +      <% if (!@access_link.mobility_restricted_traveller_duration.nil?) %>           <%= @access_link.mobility_restricted_traveller_duration.strftime('%Hh %Mm %Ss') %>        <% end %>      </p>      <p>        <label><%= @access_link.human_attribute_name("mobility_restricted_suitability") %>: </label> -      <%= t((@access_link.mobility_restricted_suitability == true).to_s) %> +      <% if (!@access_link.mobility_restricted_suitability.nil?) %> +        <%= t((@access_link.mobility_restricted_suitability == true).to_s) %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>      <p>        <label><%= @access_link.human_attribute_name("stairs_availability") %>: </label> -      <%= t((@access_link.stairs_availability == true).to_s) %> +      <% if (!@access_link.stairs_availability.nil?) %> +         <%= t((@access_link.stairs_availability == true).to_s) %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>      <p>        <label><%= @access_link.human_attribute_name("lift_availability") %>: </label> -      <%= t((@access_link.lift_availability == true).to_s) %> +      <% if (!@access_link.lift_availability.nil?) %> +         <%= t((@access_link.lift_availability == true).to_s) %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>    </div>  </div> diff --git a/app/views/connection_links/_form.erb b/app/views/connection_links/_form.erb index 52f2a94c8..49ca68aef 100644 --- a/app/views/connection_links/_form.erb +++ b/app/views/connection_links/_form.erb @@ -1,12 +1,12 @@  <%= semantic_form_for [@referential, @connection_link] do |form| %>    <%= form.inputs do %>       <%= form.input :name %> -    <%= form.input :connection_link_type, :as => :select, :collection => Chouette::ConnectionLink.connection_link_types, :include_blank => false, :member_label => Proc.new { |type| t("connection_link_types.label.#{type}") }  %> +    <%= form.input :connection_link_type, :as => :select, :collection => Chouette::ConnectionLink.connection_link_types, :include_blank => true, :member_label => Proc.new { |type| t("connection_link_types.label.#{type}") }  %>      <%= form.input :comment %>        <%= form.input :link_distance, :input_html => {  :title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.connection_link.link_distance") } %> -      <%= form.input :mobility_restricted_suitability,:as => :boolean %> -    <%= form.input :stairs_availability,:as => :boolean %> -    <%= form.input :lift_availability,:as => :boolean %> +    <%= form.input :mobility_restricted_suitability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %> +    <%= form.input :stairs_availability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %> +    <%= form.input :lift_availability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %>      <%= form.input :objectid, :required => !@connection_link.new_record?, :input_html => { :title => t("formtastic.titles.connection_link.objectid")} %>      <% end %> diff --git a/app/views/connection_links/show.html.erb b/app/views/connection_links/show.html.erb index 0771caac4..e715953fc 100644 --- a/app/views/connection_links/show.html.erb +++ b/app/views/connection_links/show.html.erb @@ -23,7 +23,7 @@      <p>        <label><%= @connection_link.human_attribute_name("connection_link_type") %>: </label>        <% if @connection_link.connection_link_type.blank? %> -        <%= t("connection_link_types.label.undefined") %> +        <%=t("unknown") %>        <% else %>          <%= t("connection_link_types.label.#{@connection_link.connection_link_type}") %>        <% end %> @@ -65,15 +65,27 @@      </p>      <p>        <label><%= @connection_link.human_attribute_name("mobility_restricted_suitability") %>: </label> -      <%= t((@connection_link.mobility_restricted_suitability == true).to_s) %> +      <% if (!@connection_link.mobility_restricted_suitability.nil?) %> +        <%= t((@connection_link.mobility_restricted_suitability == true).to_s) %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>      <p>        <label><%= @connection_link.human_attribute_name("stairs_availability") %>: </label> -      <%= t((@connection_link.stairs_availability == true).to_s) %> +      <% if (!@connection_link.stairs_availability.nil?) %> +         <%= t((@connection_link.stairs_availability == true).to_s) %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>      <p>        <label><%= @connection_link.human_attribute_name("lift_availability") %>: </label> -      <%= t((@connection_link.lift_availability == true).to_s) %> +      <% if (!@connection_link.lift_availability.nil?) %> +         <%= t((@connection_link.lift_availability == true).to_s) %> +      <% else %> +         <%=t("unknown") %> +      <% end %>      </p>    </div>  </div> diff --git a/app/views/help/introduction.textile b/app/views/help/introduction.textile index 8a30e7e0e..81e0a4284 100644 --- a/app/views/help/introduction.textile +++ b/app/views/help/introduction.textile @@ -16,7 +16,7 @@ D'autres utilisateurs potentiels sont également identifiés : services de l'ét  h3. Ce que vous trouverez dans ce manuel  Vous trouverez dans ce document, toutes les informations nécessaires à la prise en main de l’application.  -Le manuel couvre la version 3.0.1. +Le manuel couvre la version 3.1.0. diff --git a/app/views/lines/_form.erb b/app/views/lines/_form.erb index 58cb7e6e3..442434d3b 100644 --- a/app/views/lines/_form.erb +++ b/app/views/lines/_form.erb @@ -9,6 +9,7 @@      <%= form.input :transport_mode, :as => :select, :collection => Chouette::Line.transport_modes, :include_blank => false, :member_label => Proc.new { |mode| t("transport_modes.label.#{mode}") }  %>      <%= form.input :color, :as => :string %>      <%= form.input :text_color %> +    <%= form.input :stable_id %>      <%= form.input :url %>      <%= form.input :mobility_restricted_suitability, :as => :select, :collection => [[@line.human_attribute_name("accessible"), true], [@line.human_attribute_name("not_accessible"), false]], :include_blank => true %>      <%= form.input :flexible_service, :as => :select, :collection => [[@line.human_attribute_name("on_demaond_fs"), true], [@line.human_attribute_name("regular_fs"), false]], :include_blank => true %> diff --git a/app/views/lines/show.html.erb b/app/views/lines/show.html.erb index 3654840fd..0d9a47142 100644 --- a/app/views/lines/show.html.erb +++ b/app/views/lines/show.html.erb @@ -48,6 +48,11 @@        <%= t("transport_modes.label.#{@line.transport_mode}") %>      </p>      <p> +      <label><%= @line.human_attribute_name("stable_id") %>: </label> +      <%= @line.stable_id %> +    </p> + +    <p>        <label><%= @line.human_attribute_name("url") %>: </label>        <%= @line.url %>      </p> diff --git a/app/views/networks/_form.erb b/app/views/networks/_form.erb index cb9575664..5794794fd 100644 --- a/app/views/networks/_form.erb +++ b/app/views/networks/_form.erb @@ -6,6 +6,7 @@      <%= form.input :version_date, :as => :date_picker %>      <%= form.input :description %>                    <%= form.input :source_name %>               +    <%= form.input :source_type_name, :as => :select, :collection => Chouette::Network.source_type_names, :include_blank => true, :member_label => Proc.new { |mode| t("source_types.label.#{mode}") }  %>      <%= form.input :source_identifier %>                    <%= form.input :objectid, :required => !@network.new_record?, :input_html => { :title => t("formtastic.titles#{format_restriction_for_locales(@referential)}.network.objectid")} %>      <% end %> diff --git a/app/views/networks/show.html.erb b/app/views/networks/show.html.erb index e7b103dda..d61974394 100644 --- a/app/views/networks/show.html.erb +++ b/app/views/networks/show.html.erb @@ -26,6 +26,12 @@        <%= @network.source_name %>      </p>      <p> +      <label><%= Chouette::Network.human_attribute_name("source_type_name") %>: </label> +      <% if @network.source_type_name.present? %> +        <%= t("source_types.label.#{@network.source_type_name}") %> +      <% end %> +    </p> +    <p>        <label><%= Chouette::Network.human_attribute_name("source_identifier") %>: </label>        <%= @network.source_identifier %>      </p> diff --git a/app/views/stop_areas/_form.html.erb b/app/views/stop_areas/_form.html.erb index e34253828..bcbbe2bf9 100644 --- a/app/views/stop_areas/_form.html.erb +++ b/app/views/stop_areas/_form.html.erb @@ -43,9 +43,9 @@      <h3><%= t("stop_areas.stop_area.accessibility") %></h3>      <%= form.inputs do %>        <% if !manage_itl %> -	      <%= form.input :mobility_restricted_suitability,:as => :boolean %> -	      <%= form.input :stairs_availability,:as => :boolean %> -	      <%= form.input :lift_availability,:as => :boolean %> +	    <%= form.input :mobility_restricted_suitability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %> +	    <%= form.input :stairs_availability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %> +	    <%= form.input :lift_availability, :as => :select, :collection => [[t("true"), true], [t("false"), false]], :include_blank => true %>        <% end %>      <% end %>    </div> diff --git a/app/views/stop_areas/show.html.erb b/app/views/stop_areas/show.html.erb index 7ca59cf70..1b3578b65 100644 --- a/app/views/stop_areas/show.html.erb +++ b/app/views/stop_areas/show.html.erb @@ -52,15 +52,27 @@      <% if !manage_itl %>  	    <p>  	      <label><%= @stop_area.human_attribute_name("mobility_restricted_suitability") %>: </label> -	      <%= t((@stop_area.mobility_restricted_suitability == true).to_s) %> +	      <% if (!@stop_area.mobility_restricted_suitability.nil?) %> +	        <%= t((@stop_area.mobility_restricted_suitability == true).to_s) %> +	      <% else %> +	         <%=t("unknown") %> +	      <% end %>  	    </p>  	    <p>  	      <label><%= @stop_area.human_attribute_name("stairs_availability") %>: </label> -	      <%= t((@stop_area.stairs_availability == true).to_s) %> +	      <% if (!@stop_area.stairs_availability.nil?) %> +	         <%= t((@stop_area.stairs_availability == true).to_s) %> +	      <% else %> +	         <%=t("unknown") %> +	      <% end %>  	    </p>  	    <p>  	      <label><%= @stop_area.human_attribute_name("lift_availability") %>: </label> -	      <%= t((@stop_area.lift_availability == true).to_s) %> +	      <% if (!@stop_area.lift_availability.nil?) %> +	         <%= t((@stop_area.lift_availability == true).to_s) %> +	      <% else %> +	         <%=t("unknown") %> +	      <% end %>  	    </p>  	    <p> <label><%= t('stop_areas.show.geographic_data') %> </label></p>  	    <% if @stop_area.long_lat_type == nil %> diff --git a/app/views/vehicle_journeys/_form.html.erb b/app/views/vehicle_journeys/_form.html.erb index 3c175148f..e4b1ce432 100644 --- a/app/views/vehicle_journeys/_form.html.erb +++ b/app/views/vehicle_journeys/_form.html.erb @@ -7,7 +7,7 @@      <%= form.input :comment %>      <%= form.input :transport_mode_name, :as => :select, :collection => Chouette::Line.transport_modes, :include_blank => true, :member_label => Proc.new { |mode| t("transport_modes.label.#{mode}") }  %>      <%= form.input :mobility_restricted_suitability, :as => :select, :collection => [[@vehicle_journey.human_attribute_name("accessible"), true], [@vehicle_journey.human_attribute_name("not_accessible"), false]], :include_blank => true %> -    <%= form.input :flexible_service, :as => :select, :collection => [[@vehicle_journey.human_attribute_name("on_demaond_fs"), true], [@vehicle_journey.human_attribute_name("regular_fs"), false]], :include_blank => true %> +    <%= form.input :flexible_service, :as => :select, :collection => [[@vehicle_journey.human_attribute_name("on_demand_fs"), true], [@vehicle_journey.human_attribute_name("regular_fs"), false]], :include_blank => true %>      <%= form.input :status_value %>      <%= form.input :facility %>      <%= form.input :vehicle_type_identifier%> diff --git a/app/views/vehicle_journeys/show.html.erb b/app/views/vehicle_journeys/show.html.erb index 1e7c99a37..695b5c8b5 100644 --- a/app/views/vehicle_journeys/show.html.erb +++ b/app/views/vehicle_journeys/show.html.erb @@ -46,7 +46,7 @@        <% if @vehicle_journey.flexible_service.nil? %>        <%= @vehicle_journey.human_attribute_name("unspecified_fs") %>        <% elsif @vehicle_journey.flexible_service? %> -      <%= @vehicle_journey.human_attribute_name("on_demaond_fs") %> +      <%= @vehicle_journey.human_attribute_name("on_demand_fs") %>        <% else %>        <%= @vehicle_journey.human_attribute_name("regular_fs") %>        <% end %> diff --git a/config/environment.rb b/config/environment.rb index dd88c63b5..1c2b830ee 100644 --- a/config/environment.rb +++ b/config/environment.rb @@ -5,4 +5,4 @@ require File.expand_path('../application', __FILE__)  Rails.application.initialize!  # Fix version -APP_VERSION = '3.0.1' +APP_VERSION = '3.1.0' diff --git a/config/locales/companies.yml b/config/locales/companies.yml index 9ffbdc0d5..a20f6059f 100644 --- a/config/locales/companies.yml +++ b/config/locales/companies.yml @@ -40,27 +40,27 @@ en:    formtastic:      titles:        company: -        name: "Only alphanumerical or underscore characters." +        name: ""          registration_number: "only alphanumerical or underscore characters "          objectid: "[prefix]:Company:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        neptune:          company: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters "            objectid: "[prefix]:Company:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        netex:          company: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters "            objectid: "[prefix]:Company:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        gtfs:          company: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters "            objectid: "[prefix]:Company:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        hub:          company: -          name: "Only alphanumerical or underscore characters. Maximum length = 75." +          name: "maximum 75 characters"            registration_number: "Positif integer, unique key, of no more than 8 digits."             objectid: "[prefix]:Company:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 3." @@ -106,27 +106,27 @@ fr:    formtastic:      titles:        company: -        name: "Caractères autorisés : alphanumériques et 'souligné'." +        name: ""          registration_number: "caractères autorisés : alphanumériques et 'souligné'"           objectid: "[prefixe]:Company:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        neptune:          company: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"             objectid: "[prefixe]:Company:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        netex:          company: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"             objectid: "[prefixe]:Company:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        gtfs:          company: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"             objectid: "[prefixe]:Company:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        hub:          company: -          name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." +          name: "maximum 75 caractères"            registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres."             objectid: "[prefixe]:Company:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 3." diff --git a/config/locales/compliance_check_results.en.yml b/config/locales/compliance_check_results.en.yml new file mode 100644 index 000000000..9b31f1736 --- /dev/null +++ b/config/locales/compliance_check_results.en.yml @@ -0,0 +1,679 @@ +en: +  compliance_check_results: +    errors: 'Errors' +    file: +      zip_name_prefix: "compliance_check_results" +      summary_errors_file_prefix: "summary_of_tests.csv" +      detailed_errors_file_prefix: "detail_of_errors.csv" +    index: +      line: "Li" +      column: "Col" +  compliance_check_result: +    severities: +      error: "Required" +      warning: "Optional" +      error_txt: "Required" +      warning_txt: "Optional" +    statuses: +      nok: "Error" +      uncheck: "Unavailable" +      ok: "Success" +    details: +      #### level 1 +      ## NEPTUNE +      detail_1_neptune_xml_1: "%{source_label} : %{error_value}" +      detail_1_neptune_xml_2: "%{source_label} : %{error_value}" +       +      ## GTFS +      detail_1_gtfs_csv_1: "TBD" +      detail_1_gtfs_csv_2: "TBD" +      detail_1_gtfs_csv_3: "TBD" +      detail_1_gtfs_csv_6: "HTML tags in field names are not allowed" +      detail_1_gtfs_csv_7: "Extra spaces in field names are not allowed" +      detail_1_gtfs_csv_10: "The first line must comply with CSV" +      detail_1_gtfs_csv_11: "Header fields could not be empty" +      detail_1_gtfs_csv_12: "The header fields could not be duplicated" +      detail_1_gtfs_csv_13: "Line must comply with CSV" +      detail_1_gtfs_csv_14: "A problem occured while reading the file" +      detail_1_gtfs_agency_1: "File missing" +      detail_1_gtfs_agency_2: "Field agency_id required when more than one agency is provided" +      detail_1_gtfs_agency_3: "Field agency_id must be unique" +      detail_1_gtfs_agency_4: "Missing column" +      detail_1_gtfs_agency_5: "Missing value on column" +      detail_1_gtfs_agency_6: "TBD" +      detail_1_gtfs_agency_7: "TBD" +      detail_1_gtfs_agency_8: "TBD" +      detail_1_gtfs_agency_9: "TBD" +      detail_1_gtfs_agency_10: "Extra columns found" +      detail_1_gtfs_agency_11: "File must contains at least one entry" +      detail_1_gtfs_stop_1: "" +      detail_1_gtfs_stop_2: "" +      detail_1_gtfs_stop_3: "" +      detail_1_gtfs_stop_4: "" +      detail_1_gtfs_stop_5: "" +      detail_1_gtfs_stop_6: "" +      detail_1_gtfs_stop_7: "" +      detail_1_gtfs_stop_8: "" +      detail_1_gtfs_stop_9: "" +      detail_1_gtfs_stop_10: "" +      detail_1_gtfs_stop_11: "" +      detail_1_gtfs_stop_12: "" +      detail_1_gtfs_route_1: "" +      detail_1_gtfs_route_2: "" +      detail_1_gtfs_route_3: "" +      detail_1_gtfs_route_4: "" +      detail_1_gtfs_route_5: "" +      detail_1_gtfs_route_6: "" +      detail_1_gtfs_route_7: "" +      detail_1_gtfs_route_8: "" +      detail_1_gtfs_route_9: "" +      detail_1_gtfs_route_10: "" +      detail_1_gtfs_route_11: "" +      detail_1_gtfs_trip_1: "" +      detail_1_gtfs_trip_2: "" +      detail_1_gtfs_trip_3: "" +      detail_1_gtfs_trip_4: "" +      detail_1_gtfs_trip_5: "" +      detail_1_gtfs_trip_6: "" +      detail_1_gtfs_trip_7: "" +      detail_1_gtfs_trip_8: "" +      detail_1_gtfs_trip_9: "" +      detail_1_gtfs_stoptime_1: "" +      detail_1_gtfs_stoptime_2: "" +      detail_1_gtfs_stoptime_3: "" +      detail_1_gtfs_stoptime_4: "" +      detail_1_gtfs_stoptime_5: "" +      detail_1_gtfs_stoptime_6: "" +      detail_1_gtfs_stoptime_7: "" +      detail_1_gtfs_stoptime_8: "" +      detail_1_gtfs_stoptime_9: "" +      detail_1_gtfs_stoptime_10: "" +      detail_1_gtfs_stoptime_11: "" +      detail_1_gtfs_stoptime_12: "" +      detail_1_gtfs_stoptime_13: "" +      detail_1_gtfs_stoptime_14: "" +      detail_1_gtfs_calendar_1: "" +      detail_1_gtfs_calendar_2: "" +      detail_1_gtfs_calendar_3: "" +      detail_1_gtfs_calendar_4: "" +      detail_1_gtfs_calendar_5: "" +      detail_1_gtfs_calendar_6: "" +      detail_1_gtfs_calendar_7: "" +      detail_1_gtfs_calendar_8: "" +      detail_1_gtfs_calendar_9: "" +      detail_1_gtfs_calendar_10: "" +      detail_1_gtfs_calendar_11: "" +      detail_1_gtfs_calendar_12: "" +      detail_1_gtfs_calendar_13: "" +      detail_1_gtfs_calendar_14: "" +      detail_1_gtfs_calendar_15: "" +      detail_1_gtfs_calendardate_2: "" +      detail_1_gtfs_calendardate_3: "" +      detail_1_gtfs_calendardate_4: "" +      detail_1_gtfs_calendardate_5: "" +      detail_1_gtfs_calendardate_6: "" +      detail_1_gtfs_calendardate_7: "" +      detail_1_gtfs_frequency_1: "" +      detail_1_gtfs_frequency_2: "" +      detail_1_gtfs_frequency_3: "" +      detail_1_gtfs_frequency_4: "" +      detail_1_gtfs_frequency_5: "" +      detail_1_gtfs_frequency_6: "" +      detail_1_gtfs_frequency_7: "" +      detail_1_gtfs_transfer_1: "" +      detail_1_gtfs_transfer_2: "" +      detail_1_gtfs_transfer_3: "" +      detail_1_gtfs_transfer_4: "" +      detail_1_gtfs_transfer_5: "" +      detail_1_gtfs_transfer_6: "" +      detail_1_gtfs_shape_1: "" +      detail_1_gtfs_shape_2: "" +      detail_1_gtfs_shape_3: "" +      detail_1_gtfs_shape_4: "" +      detail_1_gtfs_shape_5: "" +      detail_1_gtfs_shape_6: "" +      detail_1_gtfs_shape_7: "" +      detail_1_gtfs_shape_8: "" +       +      #### level 2 +      ## NEPTUNE +      detail_2_neptune_common_1: "L'élément %{source_objectid} a des attributs qui diffèrent entre les différents fichiers qui le définissent" +      detail_2_neptune_common_2: "L'élément %{source_objectid} partage l'attribut RegistrationNumber = %{error_value} avec un autre objet de même type" +      detail_2_neptune_network_1: "La ligne %{source_objectid} est absente de la liste des lignes du réseau %{target_0_objectid}" +      detail_2_neptune_network_2: "Le réseau %{source_objectid} a un type de source non valide : %{error_value}, remplacé par %{reference_value}" +      detail_2_neptune_groupofline_1: "La ligne %{source_objectid} est absente de la liste des lignes du du groupe de lignes %{target_0_objectid}" +      detail_2_neptune_stoparea_1: "Le fils (contains = %{error_value}) de l'arrêt %{source_objectid} n'est pas de type StopArea ni StopPoint" +      detail_2_neptune_stoparea_2: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type StopPlace ou CommercialStopPoint, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" +      detail_2_neptune_stoparea_3: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type BoardingPosition ou Quay, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" +      detail_2_neptune_stoparea_4: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des points d'arrêt de séquence, or un des arrêts contenus (contains = %{target_0_objectid}) est un StopArea arrêt de type %{error_value}" +      detail_2_neptune_stoparea_5: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{error_value}) inexistante" +      detail_2_neptune_stoparea_6: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{target_0_objectid}) qui ne le référence pas en retour (containedIn = %{error_value})" +      detail_2_neptune_itl_1: "Le fils (contains = %{target_0_objectid}) de type %{error_value} ne peut pas être contenu dans l'arrêt %{source_objectid} de type %{reference_value}" +      detail_2_neptune_itl_2: "L'arrêt de type ITL %{source_objectid} n'est pas utilisé" +      detail_2_neptune_itl_3: "L'arrêt areaId = %{error_value} référencé par l'ITL %{source_objectid} n'existe pas" +      detail_2_neptune_itl_4: "L'arrêt areaId = %{target_0_objectid} référencé par l'ITL %{source_objectid} devrait être de type ITL et non de type %{error_value}" +      detail_2_neptune_itl_5: "La référence lineIdShortCut = %{error_value} de l'ITL %{source_objectid} n'est pas cohérente avec la ligne %{target_0_objectid}" +      detail_2_neptune_areacentroid_1: "La position géographique <AreaCentroid> %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" +      detail_2_neptune_areacentroid_2: "La position géographique <AreaCentroid> %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" +      detail_2_neptune_connectionlink_1: "La correspondance %{source_objectid} référence 2 arrêts inexistants" +      detail_2_neptune_accesspoint_1: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{error_value}) inexistant" +      detail_2_neptune_accesspoint_2: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{target_0_objectid}) de type invalide (ITL)" +      detail_2_neptune_accesspoint_3: "L'accès %{source_objectid} n'a pas de lien d'accès" +      detail_2_neptune_accesspoint_4: "L'accès %{source_objectid} de type In a des liens d'accès sortants" +      detail_2_neptune_accesspoint_5: "L'accès %{source_objectid} de type Out a des liens d'accès entrants" +      detail_2_neptune_accesspoint_6: "L'accès %{source_objectid} de type InOut n'a que des liens d'accès entrants ou sortants" +      detail_2_neptune_accesspoint_7: "L'accès %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" +      detail_2_neptune_accesslink_1: "La liaison d'accès %{source_objectid} référence %{error_value} qui n'existe pas" +      detail_2_neptune_accesslink_2: "Sur la liaison d'accès %{source_objectid}, les références startOfLink = %{error_value} et endOfLink = %{reference_value} sont de même type" +      detail_2_neptune_line_1: "La ligne %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value} inexistant" +      detail_2_neptune_line_2: "La ligne %{source_objectid} référence un point d'arrêt <StopPoint> (lineEnd = %{error_value}) inexistant " +      detail_2_neptune_line_3: "La ligne %{source_objectid} référence un point d'arrêt (lineEnd = %{error_value}) qui n'est pas terminus d'une séquence d'arrêts" +      detail_2_neptune_line_4: "La ligne %{source_objectid} référence une séquence d'arrêt (routeId = %{error_value}) inexistante" +      detail_2_neptune_line_5: "La séquence d'arrêts (routeId = %{target_0_objectid}) n'est pas référencée par la ligne %{source_objectid}" +      detail_2_neptune_line_6: "La ligne %{source_objectid} ne renseigne aucun des champs name, number ou publishedName" +      detail_2_neptune_route_1: "La séquence d'arrêts %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" +      detail_2_neptune_route_2: "La séquence d'arrêts %{source_objectid} référence un tronçon (ptLinkId = %{error_value}) inexistant" +      detail_2_neptune_route_3: "La séquence retour (waybackRouteId = %{error_value}) de la séquence d'arrêts %{source_objectid} n'existe pas" +      detail_2_neptune_route_4: "Le tronçon (ptLinkId = %{error_value}) référencé par la séquence d'arrêt %{source_objectid} est partagé avec %{target_0_objectid}" +      detail_2_neptune_route_5: "Le tronçon %{source_objectid} partage un %{reference_value} : %{error_value} avec un autre tronçon" +      detail_2_neptune_route_6_1: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons forme un anneau" +      detail_2_neptune_route_6_2: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons est rompu au tronçon %{target_0_objectid}" +      detail_2_neptune_route_7: "La séquence d'arrêts %{source_objectid} ne référence pas la mission %{target_0_objectid} alors que cette mission référence la séquence d'arrêt" +      detail_2_neptune_route_8: "La mission journeyPatternId = %{target_0_objectid} de la séquence d'arrêts %{source_objectid} utilise des points d'arrêts hors séquence" +      detail_2_neptune_route_9: "Le point d'arrêt (stopPointId = %{target_0_objectid}) de la séquence d'arrêts %{source_objectid} n'est utilisé dans aucune mission" +      detail_2_neptune_route_10: "La séquence retour (waybackRouteId = %{target_0_objectid}) ne référence pas la séquence d'arrêts %{source_objectid} comme retour" +      detail_2_neptune_route_11: "Le sens (%{reference_value}) de la séquence d'arrêt %{source_objectid} n'est pas compatible avec celui (%{error_value}) de la séquence opposée %{target_0_objectid}" +      detail_2_neptune_route_12: "Le départ dans la zone %{reference_value}) de la séquence d'arrêts %{source_objectid} n'est pas dans la même zone que l'arrivée (zone %{error_value} de la séquence retour %{target_0_objectid}" +      detail_2_neptune_ptlink_1: "Le tronçon %{source_objectid} reférence un %{reference_value} = %{error_value} inexistant" +      detail_2_neptune_journeypattern_1: "La mission %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" +      detail_2_neptune_journeypattern_2: "La mission %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value}) inexistant" +      detail_2_neptune_journeypattern_3: "La mission %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" +      detail_2_neptune_stoppoint_1: "Le point d'arrêt %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" +      detail_2_neptune_stoppoint_2: "Le point d'arrêt %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value}) inexistant" +      detail_2_neptune_stoppoint_3: "Le point d'arrêt %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" +      detail_2_neptune_stoppoint_4: "Le point d'arrêt %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" +      detail_2_neptune_timetable_1: "Le calendrier (<Timetable>) %{source_objectid} ne référence aucune course existante" +      detail_2_neptune_timetable_2: "La course %{source_objectid} n'est référencée dans aucun calendrier (<Timetable>)" +      detail_2_neptune_timetable_3: "Le calendrier (<Timetable>) %{source_objectid} contient une période invalide" +      detail_2_neptune_vehiclejourney_1: "La course %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" +      detail_2_neptune_vehiclejourney_2: "La course %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" +      detail_2_neptune_vehiclejourney_3: "La course %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" +      detail_2_neptune_vehiclejourney_4: "La course %{source_objectid} référence un opérateur (operatorId = %{error_value}) inexistant" +      detail_2_neptune_vehiclejourney_5: "La course %{source_objectid} référence une fréquence horaire (timeSlotId = %{error_value}) inexistante" +      detail_2_neptune_vehiclejourney_6: "La course %{source_objectid} référence une mission %{error_value} incompatible de la séquence d'arrêts %{reference_value}" +      detail_2_neptune_vehiclejourney_7: "La mission %{source_objectid} n'est référencée par aucune course" +      detail_2_neptune_vehiclejourney_8: "La course %{source_objectid} doit référencer une mission si la séquence d'arrêt en possède plusieurs" +      detail_2_neptune_vehiclejourneyatstop_1: "La course %{source_objectid} fournit un horaire sur un point d'arrêt (stopPointId = %{error_value}) inexistant" +      detail_2_neptune_vehiclejourneyatstop_2: "Un horaire de la course %{source_objectid} référence une autre course : vehicleJourneyId = %{error_value}" +      detail_2_neptune_vehiclejourneyatstop_3: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts selon l'ordre de la séquence d'arrêts %{error_value}" +      detail_2_neptune_vehiclejourneyatstop_4: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts de sa mission %{error_value}" +      detail_2_neptune_facility_1: "L'équipement %{source_objectid} est situé sur un arrêt inexistant (containedId = %{error_value})" +      detail_2_neptune_facility_2: "L'équipement %{source_objectid} référence un arrêt (stopAreaId = %{error_value}) inexistant" +      detail_2_neptune_facility_3: "L'équipement %{source_objectid} référence une ligne (lineId = %{error_value} inexistante" +      detail_2_neptune_facility_4: "L'équipement %{source_objectid} référence une correspondance (connectionLinkId = %{error_value} inexistante" +      detail_2_neptune_facility_5: "L'équipement %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value} inexistant" +      detail_2_neptune_facility_6: "L'équipement %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" +      ## GTFS +      detail_2_gtfs_common_1: "" +      detail_2_gtfs_common_2: "" +      detail_2_gtfs_common_3: "" +      detail_2_gtfs_agency_1: "" +      detail_2_gtfs_agency_2: "" +      detail_2_gtfs_stop_1: "" +      detail_2_gtfs_stop_2: "" +      detail_2_gtfs_stop_3: "" +      detail_2_gtfs_stop_4: "" +      detail_2_gtfs_stop_5: "" +      detail_2_gtfs_stop_6: "" +      detail_2_gtfs_route_1: "" +      detail_2_gtfs_route_2: "" +      detail_2_gtfs_route_3: "" +      detail_2_gtfs_route_4: "" +      detail_2_gtfs_route_5: "" +      detail_2_gtfs_route_6: "" +      detail_2_gtfs_route_7: "non défini" +      detail_2_gtfs_route_8: "" +      detail_2_gtfs_route_9: "" +      detail_2_gtfs_route_10: "" +      detail_2_gtfs_route_11: "" +      detail_2_gtfs_route_12: "" +      detail_2_gtfs_trip_1: "" +      detail_2_gtfs_trip_2: "" +      detail_2_gtfs_trip_3: "" +      detail_2_gtfs_trip_4: "" +      detail_2_gtfs_trip_5: "" +      detail_2_gtfs_trip_6: "" +      detail_2_gtfs_trip_7: "" +      detail_2_gtfs_stoptime_1: "" +      detail_2_gtfs_stoptime_2: "" +      detail_2_gtfs_stoptime_3: "" +      detail_2_gtfs_stoptime_4: "" +      detail_2_gtfs_stoptime_5: "" +      detail_2_gtfs_stoptime_6: "" +      detail_2_gtfs_stoptime_7: "" +      detail_2_gtfs_stoptime_8: "" +      detail_2_gtfs_stoptime_9: "" +      detail_2_gtfs_calendar_1: "" +      detail_2_gtfs_calendar_2: "" +      detail_2_gtfs_calendar_3: "" +      detail_2_gtfs_calendar_4: "" +      detail_2_gtfs_calendar_5: "" +      detail_2_gtfs_calendar_6: "" +      detail_2_gtfs_frequency_1: "" +      detail_2_gtfs_frequency_2: "" +      detail_2_gtfs_transfer_1: "" +      detail_2_gtfs_transfer_2: "" +       +      #### level 3 +      detail_3_stoparea_1: "L'arrêt %{source_label} (%{source_objectid}) n'est pas géolocalisé" +      detail_3_stoparea_2: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop près de l'arrêt %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" +      detail_3_stoparea_3: "Les arrêts %{source_label} (%{source_objectid} et %{target_0_objectid}) sont desservis par les mêmes lignes" +      detail_3_stoparea_4: "L'arrêt %{source_label} (%{source_objectid}) est en dehors du périmètre de contrôle" +      detail_3_stoparea_5: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" +      detail_3_accesspoint_1: "L'accès %{source_label} (%{source_objectid}) n'est pas géolocalisé" +      detail_3_accesspoint_2: "L'accès %{source_label} (%{source_objectid}) est localisé trop près de l'accès %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" +      detail_3_accesspoint_3: "L'accès %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" +      detail_3_connectionlink_1: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" +      detail_3_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" +      detail_3_connectionlink_3_1: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_connectionlink_3_2: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_connectionlink_3_3: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_connectionlink_3_4: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_accesslink_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" +      detail_3_accesslink_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" +      detail_3_accesslink_3_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_accesslink_3_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_accesslink_3_3: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_accesslink_3_4: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" +      detail_3_line_1: "La ligne %{source_label} (%{source_objectid}) a une ligne homonyme sur le même réseau %{target_0_label} (%{target_0_objectid})" +      detail_3_line_2: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" +      detail_3_route_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), l'arrêt %{target_0_label} (%{target_0_objectid}) est desservi 2 fois consécutivement" +      detail_3_route_2: "Les terminus de la séquence d'arrêt %{source_label} (%{source_objectid}) ne sont pas cohérent avec ceux de sa séquence opposée : l'une part de %{target_0_label} (%{target_0_objectid}) et l'autre arrive à %{target_1_label} (%{target_1_objectid})" +      detail_3_route_3_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} < %{reference_value} " +      detail_3_route_3_2: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} > %{reference_value} " +      detail_3_route_4: "La séquence d'arrêt %{source_label} (%{source_objectid}) utilise la même liste ordonnée d'arrêts que la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" +      detail_3_route_5: "La séquence d'arrêt %{source_label} (%{source_objectid}) peut admettre la séquence %{target_0_label} (%{target_0_objectid}) comme séquence opposée" +      detail_3_route_6: "La séquence d'arrêt %{source_label} (%{source_objectid}) doit avoir un minimum de 2 arrêts" +      detail_3_route_7: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission" +      detail_3_route_8: "La séquence d'arrêt %{source_label} (%{source_objectid}) a %{error_value} arrêts non utilisés par des missions" +      detail_3_route_9: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission desservant l'ensemble de ses arrêts" +      detail_3_journeypattern_1: "La mission %{source_label} (%{source_objectid}) utilise les mêmes arrêts que la mission %{target_0_label} (%{target_0_objectid}) - nombre d'arrêts = %{error_value}" +      detail_3_vehiclejourney_1: "Arrêt %{target_0_label} (%{target_0_objectid}) : durée d'arrêt mesurée %{error_value} > %{reference_value}" +      detail_3_vehiclejourney_2_1: "La course %{source_label} (%{source_objectid}) a des horaires décroissants entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" +      detail_3_vehiclejourney_2_2: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} < %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" +      detail_3_vehiclejourney_2_3: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} > %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" +      detail_3_vehiclejourney_3: "La course %{source_label} (%{source_objectid}) a une variation de progression entre les arrêts %{target_1_label} (%{target_1_objectid}) et %{target_2_label} (%{target_2_objectid}) %{error_value} > %{reference_value} avec la course %{target_0_label} (%{target_0_objectid})" +      detail_3_vehiclejourney_4: "La course %{source_label} (%{source_objectid}) n'a pas de calendrier d'application" +      detail_3_facility_1: "L'équipement %{source_label} (%{source_objectid}) n'est pas géolocalisé" +      detail_3_facility_2: "L'équipement %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{error_value} > %{reference_value}" + +      detail_4_network_1_min_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value}) " +      detail_4_network_1_max_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_network_1_pattern: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_network_1_unique: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) a une valeur partagée avec le réseau %{target_0_label} (%{target_0_objectid})" +      detail_4_company_1_min_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_company_1_max_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_company_1_pattern: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_company_1_unique: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) a une valeur partagée avec le transporteur %{target_0_label} (%{target_0_objectid})" +      detail_4_groupofline_1_min_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_groupofline_1_max_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_groupofline_1_pattern: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_groupofline_1_unique: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) a une valeur partagée avec le groupe de lignes %{target_0_label} (%{target_0_objectid})" +      detail_4_stoparea_1_min_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_stoparea_1_max_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_stoparea_1_pattern: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_stoparea_1_unique: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) a une valeur partagée avec l'arrêt %{target_0_label} (%{target_0_objectid})" +      detail_4_stoparea_2: "L'arrêt physique %{source_label} (%{source_objectid}) n'a pas de parent" +      detail_4_accesspoint_1_min_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_accesspoint_1_max_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_accesspoint_1_pattern: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_accesspoint_1_unique: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le point d'accès %{target_0_label} (%{target_0_objectid})" +      detail_4_accesslink_1_min_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_accesslink_1_max_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_accesslink_1_pattern: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_accesslink_1_unique: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le lien d'accès %{target_0_label} (%{target_0_objectid})" +      detail_4_connectionlink_1_min_size: "L'attribut %{reference_value} de la correspondance  %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_connectionlink_1_max_size: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_connectionlink_1_pattern: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_connectionlink_1_unique: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) a une valeur partagée avec la correspondance %{target_0_label} (%{target_0_objectid})" +      detail_4_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}) au moins l'un des arrêts %{startName} (%{startId}) et %{endName} (%{endId}) n'est pas un arrêt physique" +      detail_4_timetable_1_min_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_timetable_1_max_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_timetable_1_pattern: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_timetable_1_unique: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) a une valeur partagée avec le calendrier %{target_0_label} (%{target_0_objectid})" +      detail_4_line_1_min_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_line_1_max_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_line_1_pattern: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_line_1_unique: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) a une valeur partagée avec la ligne %{target_0_label} (%{target_0_objectid})" +      detail_4_line_2: "La ligne %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" +      detail_4_line_3_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de groupe de lignes" +      detail_4_line_3_2: "La ligne %{source_label} (%{source_objectid}) a plusieurs groupes de lignes" +      detail_4_line_4_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" +      detail_4_line_4_2: "La ligne %{source_label} (%{source_objectid}) a trop de séquences d'arrêts non associées (%{error_value})" +      detail_4_route_1_min_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_route_1_max_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_route_1_pattern: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_route_1_unique: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) a une valeur partagée avec la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" +      detail_4_journeypattern_1_min_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_journeypattern_1_max_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_journeypattern_1_pattern: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_journeypattern_1_unique: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) a une valeur partagée avec la mission %{target_0_label} (%{target_0_objectid})" +      detail_4_vehiclejourney_1_min_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" +      detail_4_vehiclejourney_1_max_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) est trop grand (%{error_value})" +      detail_4_vehiclejourney_1_pattern: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" +      detail_4_vehiclejourney_1_unique: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) a une valeur partagée avec la course %{target_0_label} (%{target_0_objectid})" +      detail_4_vehiclejourney_2: "La course %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" +  activemodel: +    models: +      compliance_check_result: +        zero: "Validation" +        one: "Validation" +        other: "Validation" +    attributes: +      compliance_check_result: +        1-NEPTUNE-XML-1: "Conformité à la syntaxe XML suivant les recommandations du W3C." +        1-NEPTUNE-XML-2: "Conformité au schéma défini par la XSD du profil TRIDENT/NEPTUNE." +        2-NEPTUNE-Common-1: "Unicité des éléments objectId des différents objets d'un lot de fichiers Neptune." +        2-NEPTUNE-Common-2: "Unicité des éléments regitrationNumber des différents objets d'un lot de fichiers Neptune." +        2-NEPTUNE-Network-1: "Correcte référence à des lignes <Line> dans version du réseau <PTNetwork>." +        2-NEPTUNE-Network-2: "Valeur autorisée pour le type de source <SourceType> dans version du réseau <PTNetwork>." +        2-NEPTUNE-GroupOfLine-1: "Correcte référence à des lignes <Line> dans groupe de lignes <GroupOfLine>." +        2-NEPTUNE-StopArea-1: "Correcte référence à des arrêts <StopArea> et/ou à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea>." +        2-NEPTUNE-StopArea-2: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type StopPlace." +        2-NEPTUNE-StopArea-3: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type CommercialStopPoint." +        2-NEPTUNE-StopArea-4: "Correcte référence à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea> de type BoardingPosition ou Quay." +        2-NEPTUNE-StopArea-5: "Correcte référence à une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." +        2-NEPTUNE-StopArea-6: "référenceréciproque d'une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." +        2-NEPTUNE-ITL-1: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type ITL." +        2-NEPTUNE-ITL-2: "Correcte référence à des arrêts <StopArea> de type ITL dans la classe d’objets <ITL>." +        2-NEPTUNE-ITL-3: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <ITL>." +        2-NEPTUNE-ITL-4: "Vérification du type de référence à des arrêts <StopArea> type ITL dans la classe d’objets <ITL>." +        2-NEPTUNE-ITL-5: "Bonne référence à la ligne <Line> dans la classe d’objets <ITL>." +        2-NEPTUNE-AreaCentroid-1: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <AreaCentroid>." +        2-NEPTUNE-AreaCentroid-2: "Vérification du modèle de projection de référence utilisé." +        2-NEPTUNE-ConnectionLink-1: "Correcte référence aux arrêts <StopArea> définissant des tronçons de correspondance <ConnectionLink>." +        2-NEPTUNE-AccessPoint-1: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." +        2-NEPTUNE-AccessPoint-2: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." +        2-NEPTUNE-AccessPoint-3: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>." +        2-NEPTUNE-AccessPoint-4: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> de type 'in'." +        2-NEPTUNE-AccessPoint-5: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'out'." +        2-NEPTUNE-AccessPoint-6: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>  sur les accès de type 'inout'." +        2-NEPTUNE-AccessPoint-7: "Vérification du modèle de projection de référence utilisé." +        2-NEPTUNE-AccessLink-1: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." +        2-NEPTUNE-AccessLink-2: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." +        2-NEPTUNE-Line-1: "Correcte référence au réseau dans l'objet ligne <Line>." +        2-NEPTUNE-Line-2: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." +        2-NEPTUNE-Line-3: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." +        2-NEPTUNE-Line-4: "Correcte référence  aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." +        2-NEPTUNE-Line-5: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." +        2-NEPTUNE-Line-6: "Présence d'au moins une valeur parmi <name>,<number> ou <publishedName> dans l'objet ligne <Line>." +        2-NEPTUNE-Route-1: "Existence des missions <JourneyPattern> référencées par la séquence d'arrêt <ChouetteRoute>." +        2-NEPTUNE-Route-2: "Existence des tronçons commerciaux <PtLink> référencés par la séquence d'arrêt <ChouetteRoute>." +        2-NEPTUNE-Route-3: "Existence de la séquence opposée <ChouetteRoute> référencée par la séquence d'arrêt <ChouetteRoute>." +        2-NEPTUNE-Route-4: "Correcte référence à un tronçon commercial <PtLink> dans une séquence d'arrêts <ChouetteRoute>." +        2-NEPTUNE-Route-5: "Vérification que tous les points d'arrêts sur parcours sont rattachés à une séquence d'arrêts <ChouetteRoute> au départ d'un tronçon commercial <PtLink> et/ou à l'arrivée d'un autre tronçon commercial <PtLink> de la même séquence d'arrêts." +        2-NEPTUNE-Route-6: "Vérification du correct ordonnancement des points d'arrêts sur parcours <StopPoint> dans le chainage des tronçons <PtLink> d'une séquence d'arrêts <ChouetteRoute>." +        2-NEPTUNE-Route-7: "référence mutuelle des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." +        2-NEPTUNE-Route-8: "Cohérence des références aux points d'arrêt des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." +        2-NEPTUNE-Route-9: "Utilité des points d'arrêts sur parcours des séquences d'arrêts <ChouetteRoute>." +        2-NEPTUNE-Route-10: "référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." +        2-NEPTUNE-Route-11: "Cohérence des sens de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." +        2-NEPTUNE-Route-12: "Cohérence des terminus de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." +        2-NEPTUNE-PtLink-1: "Existence des  arrêts <StopPoint> référencés par les  tronçons commerciaux <PTLink>." +        2-NEPTUNE-JourneyPattern-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la mission <JourneyPattern>." +        2-NEPTUNE-JourneyPattern-2: "Existence des arrêts <StopPoint> référencés par la mission <JourneyPattern>." +        2-NEPTUNE-JourneyPattern-3: "Existence de la ligne <Line> référencée par la mission <JourneyPattern>." +        2-NEPTUNE-StopPoint-1: "Existence de la ligne <Line> référencée par l'arrêt <StopPoint>." +        2-NEPTUNE-StopPoint-2: "Existence du réseau <PTNetwork> référence par l'arrêt <StopPoint>." +        2-NEPTUNE-StopPoint-3: "Existence de l'arrêt   <StopArea> référencé par l'arrêt <StopPoint>." +        2-NEPTUNE-StopPoint-4: "Vérification du modèle de projection de référence utilisé." +        2-NEPTUNE-Timetable-1: "Utilité des calendriers." +        2-NEPTUNE-Timetable-2: "Utilité des calendriers." +        2-NEPTUNE-Timetable-2: "Validité des dates de début et de fin des périodes des calendriers" +        2-NEPTUNE-VehicleJourney-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la course <VehicleJourney>." +        2-NEPTUNE-VehicleJourney-2: "Existence de la mission <JourneyPattern> référencée par la course <VehicleJourney>." +        2-NEPTUNE-VehicleJourney-3: "Existence de la ligne <Line> référencée par la course <VehicleJourney>." +        2-NEPTUNE-VehicleJourney-4: "Existence de l'opérateur <Company> référencé par la course <VehicleJourney>." +        2-NEPTUNE-VehicleJourney-5: "Existence de la tranche horaire <TimeSlot> référencée par la course <VehicleJourney>." +        2-NEPTUNE-VehicleJourney-6: "Cohérence entre la course, la mission et la séquence d'arrêts." +        2-NEPTUNE-VehicleJourney-7: "Utilité des missions" +        2-NEPTUNE-VehicleJourney-8: "Mission implicite" +        2-NEPTUNE-VehicleJourneyAtStop-1: "Existence de l'arrêt <StopPoint> référencé par l'horaire <VehicleJourneyAtStop>." +        2-NEPTUNE-VehicleJourneyAtStop-2: "Existence de la course <VehicleJourney> référenceé par l'horaire <VehicleJourneyAtStop>." +        2-NEPTUNE-VehicleJourneyAtStop-3: "adéquation des horaires de la course à la séquence d'arrêts." +        2-NEPTUNE-VehicleJourneyAtStop-4: "adéquation des horaires de la course à la mission." +        2-NEPTUNE-Facility-1: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." +        2-NEPTUNE-Facility-2: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." +        2-NEPTUNE-Facility-3: "Existence de la ligne <Line> référencée par l'équipement <Facility>." +        2-NEPTUNE-Facility-4: "Existence de la correspondance <ConnectionLink> référencée par l'équipement <Facility>." +        2-NEPTUNE-Facility-5: "Existence de l'arrêt <StopPoint> référencé par l'équipement <Facility>." +        2-NEPTUNE-Facility-6: "Vérification du modèle de projection de référence utilisé." + +        ## GTFS +        1-GTFS-CSV-1: "Vérification du format CSV" +        1-GTFS-CSV-2: "Vérification de la présence d'un entête" +        1-GTFS-CSV-3: "Vérification de la casse des noms des colonnes" +        1-GTFS-CSV-6: "Vérification de la non présence de balise HTML" +        1-GTFS-CSV-7: "Vérification de la non présence d'espace en début ou fin de colonne" +        1-GTFS-CSV-10: "Vérification de la syntaxe d'une ligne" +        1-GTFS-CSV-11: "Vérification de la syntaxe des entêtes" +        1-GTFS-CSV-12: "Vérification de la non présence de doublons dans les entêtes" +        1-GTFS-CSV-13: "Vérification de la syntaxe CSV GTFS du fichier" +        1-GTFS-CSV-14: "Vérification de la lecture du fichier" +        1-GTFS-Agency-1: "Vérification de la présence du fichier agency.txt" +        1-GTFS-Agency-2: "Vérification de la présence de la colonne agency_id" +        1-GTFS-Agency-3: "Vérification de l'unicité des valeurs de la colonne agency_id" +        1-GTFS-Agency-4: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Agency-5: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Agency-6: "Vérification du format de la colonne agency_timezone" +        1-GTFS-Agency-7: "Vérification du format de la colonne agency_url" +        1-GTFS-Agency-8: "Vérification du format de la colonne agency_lang" +        1-GTFS-Agency-9: "Vérification du format de la colonne agency_fare_url" +        1-GTFS-Agency-10: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Agency-11: "Vérification de la présence d'au moins une entrée agency" +        1-GTFS-Stop-1: "Vérification de la présence du fichier stops.txt" +        1-GTFS-Stop-2: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Stop-3: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Stop-4: "Vérification de l'unicité des valeurs de la colonne stop_id" +        1-GTFS-Stop-5: "Vérification du format de la colonne stop_lat" +        1-GTFS-Stop-6: "Vérification du format de la colonne stop_lon" +        1-GTFS-Stop-7: "Vérification du format de la colonne stop_url" +        1-GTFS-Stop-8: "Vérification du format de la colonne location_type" +        1-GTFS-Stop-9: "Vérification du format de la colonne stop_timezone" +        1-GTFS-Stop-10: "Vérification du format de la colonne wheelchair_boarding" +        1-GTFS-Stop-11: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Stop-12: "Vérification de la présence d'au moins une entrée stop" +        1-GTFS-Route-1: "Vérification de la présence du fichier routes.txt" +        1-GTFS-Route-2: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Route-3: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Route-4: "Vérification de la présence au minimum de route_short_name ou route_long_name" +        1-GTFS-Route-5: "Vérification de l'unicité des valeurs de la colonne route_id" +        1-GTFS-Route-6: "Vérification du format de la colonne route_type" +        1-GTFS-Route-7: "Vérification du format de la colonne route_url" +        1-GTFS-Route-8: "Vérification du format de la colonne route_color" +        1-GTFS-Route-9: "Vérification du format de la colonne route_text_color" +        1-GTFS-Route-10: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Route-11: "Vérification de la présence d'au moins une entrée route" +        1-GTFS-Trip-1: "Vérification de la présence du fichier trips.txt" +        1-GTFS-Trip-2: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Trip-3: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Trip-4: "Vérification de l'unicité des valeurs de la colonne trip_id" +        1-GTFS-Trip-5: "Vérification du format de la colonne direction_id" +        1-GTFS-Trip-6: "Vérification du format de la colonne wheelchair_accessible" +        1-GTFS-Trip-7: "Vérification du format de la colonne bikes_allowed" +        1-GTFS-Trip-8: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Trip-9: "Vérification de la présence d'au moins une entrée trip" +        1-GTFS-StopTime-1: "Vérification de la présence du fichier stoptimes.txt" +        1-GTFS-StopTime-2: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-StopTime-3: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-StopTime-4: "Vérification de la présence simultanée des valeurs arrival_time et departure_time" +        1-GTFS-StopTime-5: "Vérification de l'unicité du couple de valeurs des colonnes trip_id et stop_sequence" +        1-GTFS-StopTime-6: "Vérification du format de la colonne stop_sequence" +        1-GTFS-StopTime-7: "Vérification du format de la colonne arrival_time" +        1-GTFS-StopTime-8: "Vérification du format de la colonne departure_time" +        1-GTFS-StopTime-9: "Vérification du format de la colonne pickup_type" +        1-GTFS-StopTime-10: "Vérification du format de la colonne drop_off_type" +        1-GTFS-StopTime-11: "Vérification du format de la colonne shape_dist_travel" +        1-GTFS-StopTime-12: "Vérification du format de la colonne timepoint" +        1-GTFS-StopTime-13: "Vérification de la présence de colonnes inconnues" +        1-GTFS-StopTime-14: "Vérification de la présence d'au moins une entrée stoptime" +        1-GTFS-Calendar-1: "Vérification de la présence d'un des fichiers calendar.txt ou calendar_dates.txt" +        1-GTFS-Calendar-2: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Calendar-3: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Calendar-4: "Vérification de l'unicité des valeurs de la colonne service_id" +        1-GTFS-Calendar-5: "Vérification du format de la colonne monday" +        1-GTFS-Calendar-6: "Vérification du format de la colonne tuesday" +        1-GTFS-Calendar-7: "Vérification du format de la colonne wednesday" +        1-GTFS-Calendar-8: "Vérification du format de la colonne thursday" +        1-GTFS-Calendar-9: "Vérification du format de la colonne friday" +        1-GTFS-Calendar-10: "Vérification du format de la colonne saturday" +        1-GTFS-Calendar-11: "Vérification du format de la colonne sunday" +        1-GTFS-Calendar-12: "Vérification du format de la colonne start_date" +        1-GTFS-Calendar-13: "Vérification du format de la colonne end_date" +        1-GTFS-Calendar-14: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Calendar-15: "Vérification de la présence d'au moins une entrée calendar" +        1-GTFS-CalendarDate-2: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-CalendarDate-3: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-CalendarDate-4: "Vérification de l'unicité du couple de valeurs des colonnes service_id et date" +        1-GTFS-CalendarDate-5: "Vérification du format de la colonne date" +        1-GTFS-CalendarDate-6: "Vérification du format de la colonne exception_type" +        1-GTFS-CalendarDate-7: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Frequency-1: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Frequency-2: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Frequency-3: "Vérification du format de la colonne start_time" +        1-GTFS-Frequency-4: "Vérification du format de la colonne end_time" +        1-GTFS-Frequency-5: "Vérification du format de la colonne headway_secs" +        1-GTFS-Frequency-6: "Vérification du format de la colonne exact_times" +        1-GTFS-Frequency-7: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Transfer-1: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Transfer-2: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Transfer-3: "Vérification du format de la colonne transfer_type" +        1-GTFS-Transfer-4: "Vérification de la présence des valeurs de la colonne min_transfer_time" +        1-GTFS-Transfer-5: "Vérification du format de la colonne min_transfer_time" +        1-GTFS-Transfer-6: "Vérification de la présence de colonnes inconnues" +        1-GTFS-Shape-1: "Vérification de la présence des colonnes obligatoires" +        1-GTFS-Shape-2: "Vérification de la présence d'un contenu pour les colonnes obligatoires" +        1-GTFS-Shape-3: "Vérification de l'unicité du couple de valeurs des colonnes shape_id et shape_pt_sequence" +        1-GTFS-Shape-4: "Vérification du format de la colonne shape_pt_lat" +        1-GTFS-Shape-5: "Vérification du format de la colonne shape_pt_lon" +        1-GTFS-Shape-6: "Vérification du format de la colonne shape_pt_sequence" +        1-GTFS-Shape-7: "Vérification du format de la colonne shape_dist_traveled" +        1-GTFS-Shape-8: "Vérification de la présence de colonnes inconnues" +         +        2-GTFS-Common-1: "Vérification de la taille des valeurs d'identifiant" +        2-GTFS-Common-2: "Vérification de la taille des valeurs des textes courts" +        2-GTFS-Common-3: "Vérification de la taille des valeurs des textes longs" +        2-GTFS-Agency-1: "Vérification de l'utilité des entrées agency" +        2-GTFS-Agency-2: "Vérification de la valeur de la colonne agency_id" +        2-GTFS-Stop-1: "Vérification de l'existence du stop référencé par parent_station" +        2-GTFS-Stop-2: "Vérification du type du parent_station" +        2-GTFS-Stop-3: "Vérification de la desserte du stop" +        2-GTFS-Stop-4: "Vérification de la non redondance des valeurs stop_name et stop_desc" +        2-GTFS-Stop-5: "Vérification de la pertinence de la valeur stop_url par rapport aux valeurs agency_url et route_url" +        2-GTFS-Stop-6: "Vérification de l'utilité de la colonne location_type" +        2-GTFS-Route-1: "Vérification de la non redondance des valeurs route_short_name et route_long_name" +        2-GTFS-Route-2: "Vérification de la présence des valeurs de agency_id" +        2-GTFS-Route-3: "Vérification de l'existence de l'agency référencée par agency_id" +        2-GTFS-Route-4: "Vérification de l'utilité des entrées route" +        2-GTFS-Route-5: "Vérification de l'unicité de désignation (route_short_name, route_long_name)" +        2-GTFS-Route-6: "Vérification de la longueur du champ route_short_name" +        2-GTFS-Route-7: "non défini" +        2-GTFS-Route-8: "Vérification de la non inclusion de route_short_name dans route_long_name" +        2-GTFS-Route-9: "Vérification du contraste des couleurs" +        2-GTFS-Route-10: "Vérification de la non redondance de la valeur route_desc par rapport aux valeurs route_short_name et route_long_name" +        2-GTFS-Route-11: "Vérification de la non présence d'une route inversant les valeurs route_short_name et route_long_name d'une autre" +        2-GTFS-Route-12: "Vérification de la pertinence de la valeur route_url par rapport aux valeurs agency_url" +        2-GTFS-Trip-1: "Vérification de la présence des valeurs de route_id" +        2-GTFS-Trip-2: "Vérification de la présence des valeurs de service_id" +        2-GTFS-Trip-3: "Vérification de la présence des valeurs de shape_id" +        2-GTFS-Trip-4: "Vérification de la non unicité des valeurs de block_id" +        2-GTFS-Trip-5: "Vérification de l'utilité des entrées trip" +        2-GTFS-Trip-6: "Vérification de la longueur des trips (minimum 2 horaires)" +        2-GTFS-Trip-7: "Vérification de la présence des valeurs de direction_id" +        2-GTFS-StopTime-1: "Vérification de la présence des valeurs de trip_id" +        2-GTFS-StopTime-2: "Vérification de la présence des valeurs de stop_id" +        2-GTFS-StopTime-3: "Vérification de la chronologie des horaires d'arrivé et départ" +        2-GTFS-StopTime-4: "Vérification de la présence des horaires d'arrivé et départ du premier stoptime d'un trip" +        2-GTFS-StopTime-5: "Vérification de la présence des horaires d'arrivé et départ du dernier stoptime d'un trip" +        2-GTFS-StopTime-6: "Vérification de la chronologie des horaires selon stop_sequence" +        2-GTFS-StopTime-7: "Vérification du non conflit des valeurs pick_type et drop_off_type" +        2-GTFS-StopTime-8: "Vérification de la croissance de la valeur shape_dist_travel selon stop_sequence" +        2-GTFS-StopTime-9: "Vérification du type du stop référencé par stop_id" +        2-GTFS-Calendar-1: "Vérification de la chronologie des plages horaires" +        2-GTFS-Calendar-2: "Vérification de la validité d'au moins un jour" +        2-GTFS-Calendar-3: "Vérification de la présence d'au moins un jour valide" +        2-GTFS-Calendar-4: "Vérification de l'utilité de la définition d'un jour exclu" +        2-GTFS-Calendar-5: "Vérification de la non obsolécence des calendriers" +        2-GTFS-Calendar-6: "Vérification de la non obsolécence future des calendriers" +        2-GTFS-Frequency-1: "Vérification de la chronologie des plages de fréquence" +        2-GTFS-Frequency-2: "Vérification du non chevauchement des plages d'un même trip" +        2-GTFS-Transfer-1: "Vérification de l'existance du stop référencé par from_stop_id" +        2-GTFS-Transfer-2: "Vérification de l'existance du stop référencé par to_stop_id" +         + +        3-StopArea-1: "Vérification de la géolocalisation de tous les arrêts hors ITL" +        3-StopArea-2: "Vérification que 2 arrêts de noms différents en dehors d'un même regroupement d'arrêts ne sont pas trop proches" +        3-StopArea-3: "Vérification de l'unicité des arrêts" +        3-StopArea-4: "Vérification de la géolocalisation des arrêts" +        3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" +        3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès" +        3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches" +        3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" +        3-ConnectionLink-1: "Vérification de la proximité entre les deux arrêts d'une correspondance" +        3-ConnectionLink-2: "Vérification de la cohérence entre la distance fournie sur la correspondance et la distance géographique entre les deux arrêts de la correspondance" +        3-ConnectionLink-3: "Vérification de la vitesse de parcours entre les deux arrêts d'une correspondance" +        3-AccessLink-1: "Vérification de la proximité entre les deux extrémités d'un lien d'accès" +        3-AccessLink-2: "Vérification de la cohérence entre la distance fournie sur le lien d'accès et la distance géographique entre les deux extrémités du lien d'accès" +        3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès" +        3-Line-1: "Vérification de la non homonymie des lignes" +        3-Line-2: "Vérification de la présence de séquences d'arrêts sur la ligne" +        3-Route-1: "Vérification de la succession des arrêts de la séquence" +        3-Route-2: "Vérification de la séquence inverse" +        3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" +        3-Route-4: "Vérification de double définition de séquences" +        3-Route-5: "Vérification de séquences sans séquence opposée" +        3-Route-6: "Vérification de la présence d'arrêts dans la séquence" +        3-Route-7: "Vérification de la présence de missions" +        3-Route-8: "Vérification de l'utilisation des arrêts par les missions" +        3-Route-9: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" +        3-JourneyPattern-1: "Vérification de double définition de missions" +        3-VehicleJourney-1: "Vérification de la chronologie des horaires de passage à un arrêt" +        3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts" +        3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts" +        3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" +        3-Facility-1: "Vérification de la géolocalisation de tous les accès" +        3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement" +        4-Network-1: "Vérification de contraintes sur les attributs des réseaux" +        4-Company-1: "Vérification de contraintes sur les attributs des transporteurs" +        4-GroupOfLine-1: "Vérification de contraintes sur les attributs des groupes de lignes" +        4-StopArea-1: "Vérification de contraintes sur les attributs des arrêts" +        4-StopArea-2: "Vérification de l'existance d'un arrêt commercial pour les arrêts physiques" +        4-StopArea-3: "Vérification de la cohérence entre les noms de communes et leur code INSEE" +        4-AccessPoint-1: "Vérification de contraintes sur les attributs des accès" +        4-AccessLink-1: "Vérification de contraintes sur les attributs des liens d'accès" +        4-ConnectionLink-1: "Vérification de contraintes sur les attributs des correspondances" +        4-ConnectionLink-2: "Vérification des type d'arrêts en correspondance" +        4-Timetable-1: "Vérification de contraintes sur les attributs des calendiers" +        4-Line-1: "Vérification de contraintes sur les attributs des lignes" +        4-Line-2: "Vérification des modes de transport des lignes" +        4-Line-3: "Vérification des groupes de lignes d'une ligne" +        4-Line-4: "Vérification des séquences d'arrêts d'une ligne" +        4-Route-1: "Vérification de contraintes sur les attributs des séquences d'arrêt" +        4-JourneyPattern-1: "Vérification de contraintes sur les attributs des missions" +        4-VehicleJourney-1: "Vérification de contraintes sur les attributs des courses" +        4-VehicleJourney-2: "Vérification des modes de transport des courses" +        severity: "Severity" +        status: "Status" +        rule_level: "Level" +        rule_target: "Object" +        rule_number: "Step" +        rule_code: "Code" +        violation_count: "errors" +        violation_count_txt: "Number of errors" +        objects: "Objects in violations" +        detail: "Detail" +        title: "Test title" +        object: "Error object" +        resource: "Resources of the error object" +        url: "URL" +        first_violations: "First violations" diff --git a/config/locales/compliance_check_results.yml b/config/locales/compliance_check_results.fr.yml index acbaa6826..8a4bafb97 100644 --- a/config/locales/compliance_check_results.yml +++ b/config/locales/compliance_check_results.fr.yml @@ -1,348 +1,3 @@ -en: -  compliance_check_results: -    errors: 'Errors' -    file: -      zip_name_prefix: "compliance_check_results" -      summary_errors_file_prefix: "summary_of_tests.csv" -      detailed_errors_file_prefix: "detail_of_errors.csv" -    index: -      line: "Li" -      column: "Col" -  compliance_check_result: -    severities: -      error: "Required" -      warning: "Optional" -      error_txt: "Required" -      warning_txt: "Optional" -    statuses: -      nok: "Error" -      uncheck: "Unavailable" -      ok: "Success" -    details: -      #### level 1 -      ## NEPTUNE -      detail_1_neptune_xml_1: "%{source_label} : %{error_value}" -      detail_1_neptune_xml_2: "%{source_label} : %{error_value}" -      #### level 2 -      ## NEPTUNE -      detail_2_neptune_common_1: "L'élément %{source_objectid} a des attributs qui diffèrent entre les différents fichiers qui le définissent" -      detail_2_neptune_common_2: "L'élément %{source_objectid} partage l'attribut RegistrationNumber = %{error_value} avec un autre objet de même type" -      detail_2_neptune_network_1: "La ligne %{source_objectid} est absente de la liste des lignes du réseau %{target_0_objectid}" -      detail_2_neptune_groupofline_1: "La ligne %{source_objectid} est absente de la liste des lignes du du groupe de lignes %{target_0_objectid}" -      detail_2_neptune_stoparea_1: "Le fils (contains = %{error_value}) de l'arrêt %{source_objectid} n'est pas de type StopArea ni StopPoint" -      detail_2_neptune_stoparea_2: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type StopPlace ou CommercialStopPoint, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" -      detail_2_neptune_stoparea_3: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type BoardingPosition ou Quay, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" -      detail_2_neptune_stoparea_4: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des points d'arrêt de séquence, or un des arrêts contenus (contains = %{target_0_objectid}) est un StopArea arrêt de type %{error_value}" -      detail_2_neptune_stoparea_5: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{error_value}) inexistante" -      detail_2_neptune_stoparea_6: "L'arrêt %{source_objectid} référence une position géographique (centroidOfArea = %{target_0_objectid}) qui ne le référence pas en retour (containedIn = %{error_value})" -      detail_2_neptune_itl_1: "Le fils (contains = %{target_0_objectid}) de type %{error_value} ne peut pas être contenu dans l'arrêt %{source_objectid} de type %{reference_value}" -      detail_2_neptune_itl_2: "L'arrêt de type ITL %{source_objectid} n'est pas utilisé" -      detail_2_neptune_itl_3: "L'arrêt areaId = %{error_value} référencé par l'ITL %{source_objectid} n'existe pas" -      detail_2_neptune_itl_4: "L'arrêt areaId = %{target_0_objectid} référencé par l'ITL %{source_objectid} devrait être de type ITL et non de type %{error_value}" -      detail_2_neptune_itl_5: "La référence lineIdShortCut = %{error_value} de l'ITL %{source_objectid} n'est pas cohérente avec la ligne %{target_0_objectid}" -      detail_2_neptune_areacentroid_1: "La position géographique <AreaCentroid> %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" -      detail_2_neptune_areacentroid_2: "La position géographique <AreaCentroid> %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" -      detail_2_neptune_connectionlink_1: "La correspondance %{source_objectid} référence 2 arrêts inexistants" -      detail_2_neptune_accesspoint_1: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{error_value}) inexistant" -      detail_2_neptune_accesspoint_2: "L'accès %{source_objectid} référence un arrêt parent (containedIn = %{target_0_objectid}) de type invalide (ITL)" -      detail_2_neptune_accesspoint_3: "L'accès %{source_objectid} n'a pas de lien d'accès" -      detail_2_neptune_accesspoint_4: "L'accès %{source_objectid} de type In a des liens d'accès sortants" -      detail_2_neptune_accesspoint_5: "L'accès %{source_objectid} de type Out a des liens d'accès entrants" -      detail_2_neptune_accesspoint_6: "L'accès %{source_objectid} de type InOut n'a que des liens d'accès entrants ou sortants" -      detail_2_neptune_accesspoint_7: "L'accès %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" -      detail_2_neptune_accesslink_1: "La liaison d'accès %{source_objectid} référence %{error_value} qui n'existe pas" -      detail_2_neptune_accesslink_2: "Sur la liaison d'accès %{source_objectid}, les références startOfLink = %{error_value} et endOfLink = %{reference_value} sont de même type" -      detail_2_neptune_line_1: "La ligne %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value} inexistant" -      detail_2_neptune_line_2: "La ligne %{source_objectid} référence un point d'arrêt <StopPoint> (lineEnd = %{error_value}) inexistant " -      detail_2_neptune_line_3: "La ligne %{source_objectid} référence un point d'arrêt (lineEnd = %{error_value}) qui n'est pas terminus d'une séquence d'arrêts" -      detail_2_neptune_line_4: "La ligne %{source_objectid} référence une séquence d'arrêt (routeId = %{error_value}) inexistante" -      detail_2_neptune_line_5: "La séquence d'arrêts (routeId = %{target_0_objectid}) n'est pas référencée par la ligne %{source_objectid}" -      detail_2_neptune_route_1: "La séquence d'arrêts %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" -      detail_2_neptune_route_2: "La séquence d'arrêts %{source_objectid} référence un tronçon (ptLinkId = %{error_value}) inexistant" -      detail_2_neptune_route_3: "La séquence retour (waybackRouteId = %{error_value}) de la séquence d'arrêts %{source_objectid} n'existe pas" -      detail_2_neptune_route_4: "Le tronçon (ptLinkId = %{error_value}) référencé par la séquence d'arrêt %{source_objectid} est partagé avec %{target_0_objectid}" -      detail_2_neptune_route_5: "Le tronçon %{source_objectid} partage un %{reference_value} : %{error_value} avec un autre tronçon" -      detail_2_neptune_route_6_1: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons forme un anneau" -      detail_2_neptune_route_6_2: "La séquence d'arrêts %{source_objectid} n'est pas une séquence linéaire, le chainage des tronçons est rompu au tronçon %{target_0_objectid}" -      detail_2_neptune_route_7: "La séquence d'arrêts %{source_objectid} ne référence pas la mission %{target_0_objectid} alors que cette mission référence la séquence d'arrêt" -      detail_2_neptune_route_8: "La mission journeyPatternId = %{target_0_objectid} de la séquence d'arrêts %{source_objectid} utilise des points d'arrêts hors séquence" -      detail_2_neptune_route_9: "Le point d'arrêt (stopPointId = %{target_0_objectid}) de la séquence d'arrêts %{source_objectid} n'est utilisé dans aucune mission" -      detail_2_neptune_route_10: "La séquence retour (waybackRouteId = %{target_0_objectid}) ne référence pas la séquence d'arrêts %{source_objectid} comme retour" -      detail_2_neptune_route_11: "Le sens (%{reference_value}) de la séquence d'arrêt %{source_objectid} n'est pas compatible avec celui (%{error_value}) de la séquence opposée %{target_0_objectid}" -      detail_2_neptune_route_12: "Le départ dans la zone %{reference_value}) de la séquence d'arrêts %{source_objectid} n'est pas dans la même zone que l'arrivée (zone %{error_value} de la séquence retour %{target_0_objectid}" -      detail_2_neptune_ptlink_1: "Le tronçon %{source_objectid} reférence un %{reference_value} = %{error_value} inexistant" -      detail_2_neptune_journeypattern_1: "La mission %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" -      detail_2_neptune_journeypattern_2: "La mission %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value}) inexistant" -      detail_2_neptune_journeypattern_3: "La mission %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" -      detail_2_neptune_stoppoint_1: "Le point d'arrêt %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" -      detail_2_neptune_stoppoint_2: "Le point d'arrêt %{source_objectid} référence un réseau (ptNetworkIdShortcut = %{error_value}) inexistant" -      detail_2_neptune_stoppoint_3: "Le point d'arrêt %{source_objectid} référence un arrêt (containedIn = %{error_value}) inexistant" -      detail_2_neptune_stoppoint_4: "Le point d'arrêt %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" -      detail_2_neptune_timetable_1: "Le calendrier (<Timetable>) %{source_objectid} ne référence aucune course existante" -      detail_2_neptune_timetable_2: "La course %{source_objectid} n'est référencée dans aucun calendrier (<Timetable>)" -      detail_2_neptune_vehiclejourney_1: "La course %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante" -      detail_2_neptune_vehiclejourney_2: "La course %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante" -      detail_2_neptune_vehiclejourney_3: "La course %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" -      detail_2_neptune_vehiclejourney_4: "La course %{source_objectid} référence un opérateur (operatorId = %{error_value}) inexistant" -      detail_2_neptune_vehiclejourney_5: "La course %{source_objectid} référence une fréquence horaire (timeSlotId = %{error_value}) inexistante" -      detail_2_neptune_vehiclejourney_6: "La course %{source_objectid} référence une mission %{error_value} incompatible de la séquence d'arrêts %{reference_value}" -      detail_2_neptune_vehiclejourney_7: "La mission %{source_objectid} n'est référencée par aucune course" -      detail_2_neptune_vehiclejourneyatstop_1: "La course %{source_objectid} fournit un horaire sur un point d'arrêt (stopPointId = %{error_value}) inexistant" -      detail_2_neptune_vehiclejourneyatstop_2: "Un horaire de la course %{source_objectid} référence une autre course : vehicleJourneyId = %{error_value}" -      detail_2_neptune_vehiclejourneyatstop_3: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts selon l'ordre de la séquence d'arrêts %{error_value}" -      detail_2_neptune_vehiclejourneyatstop_4: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts de sa mission %{error_value}" -      detail_2_neptune_facility_1: "L'équipement %{source_objectid} est situé sur un arrêt inexistant (containedId = %{error_value})" -      detail_2_neptune_facility_2: "L'équipement %{source_objectid} référence un arrêt (stopAreaId = %{error_value}) inexistant" -      detail_2_neptune_facility_3: "L'équipement %{source_objectid} référence une ligne (lineId = %{error_value} inexistante" -      detail_2_neptune_facility_4: "L'équipement %{source_objectid} référence une correspondance (connectionLinkId = %{error_value} inexistante" -      detail_2_neptune_facility_5: "L'équipement %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value} inexistant" -      detail_2_neptune_facility_6: "L'équipement %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" -      #### level 3 -      detail_3_stoparea_1: "L'arrêt %{source_label} (%{source_objectid}) n'est pas géolocalisé" -      detail_3_stoparea_2: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop près de l'arrêt %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" -      detail_3_stoparea_3: "Les arrêts %{source_label} (%{source_objectid} et %{target_0_objectid}) sont desservis par les mêmes lignes" -      detail_3_stoparea_4: "L'arrêt %{source_label} (%{source_objectid}) est en dehors du périmètre de contrôle" -      detail_3_stoparea_5: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" -      detail_3_accesspoint_1: "L'accès %{source_label} (%{source_objectid}) n'est pas géolocalisé" -      detail_3_accesspoint_2: "L'accès %{source_label} (%{source_objectid}) est localisé trop près de l'accès %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" -      detail_3_accesspoint_3: "L'accès %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{target_0_label} (%{target_0_objectid}) : distance %{error_value} > %{reference_value}" -      detail_3_connectionlink_1: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" -      detail_3_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}), la distance entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" -      detail_3_connectionlink_3_1: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_connectionlink_3_2: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_connectionlink_3_3: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_connectionlink_3_4: "Sur la correspondance %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_accesslink_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) est trop grande : distance %{error_value} > %{reference_value}" -      detail_3_accesslink_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la distance entre l'arrêt %{target_0_label} (%{target_0_objectid}) et l'accès %{target_1_label} (%{target_1_objectid}) : %{error_value} est supérieure à la longueur du lien : %{reference_value}" -      detail_3_accesslink_3_1: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse par défaut %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_accesslink_3_2: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur occasionnel %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_accesslink_3_3: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur habitué %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_accesslink_3_4: "Sur le lien d'accès %{source_label} (%{source_objectid}), la vitesse pour un voyageur à mobilité réduite %{error_value} est supérieure à %{reference_value} km/h" -      detail_3_line_1: "La ligne %{source_label} (%{source_objectid}) a une ligne homonyme sur le même réseau %{target_0_label} (%{target_0_objectid})" -      detail_3_line_2: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" -      detail_3_route_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), l'arrêt %{target_0_label} (%{target_0_objectid}) est desservi 2 fois consécutivement" -      detail_3_route_2: "Les terminus de la séquence d'arrêt %{source_label} (%{source_objectid}) ne sont pas cohérent avec ceux de sa séquence opposée : l'une part de %{target_0_label} (%{target_0_objectid}) et l'autre arrive à %{target_1_label} (%{target_1_objectid})" -      detail_3_route_3_1: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} < %{reference_value} " -      detail_3_route_3_2: "Sur la séquence d'arrêt %{source_label} (%{source_objectid}), entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}), distance %{error_value} > %{reference_value} " -      detail_3_route_4: "La séquence d'arrêt %{source_label} (%{source_objectid}) utilise la même liste ordonnée d'arrêts que la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" -      detail_3_route_5: "La séquence d'arrêt %{source_label} (%{source_objectid}) peut admettre la séquence %{target_0_label} (%{target_0_objectid}) comme séquence opposée" -      detail_3_route_6: "La séquence d'arrêt %{source_label} (%{source_objectid}) doit avoir un minimum de 2 arrêts" -      detail_3_route_7: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission" -      detail_3_route_8: "La séquence d'arrêt %{source_label} (%{source_objectid}) a %{error_value} arrêts non utilisés par des missions" -      detail_3_route_9: "La séquence d'arrêt %{source_label} (%{source_objectid}) n'a pas de mission desservant l'ensemble de ses arrêts" -      detail_3_journeypattern_1: "La mission %{source_label} (%{source_objectid}) utilise les mêmes arrêts que la mission %{target_0_label} (%{target_0_objectid}) - nombre d'arrêts = %{error_value}" -      detail_3_vehiclejourney_1: "Arrêt %{target_0_label} (%{target_0_objectid}) : durée d'arrêt mesurée %{error_value} > %{reference_value}" -      detail_3_vehiclejourney_2_1: "La course %{source_label} (%{source_objectid}) a des horaires décroissants entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" -      detail_3_vehiclejourney_2_2: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} < %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" -      detail_3_vehiclejourney_2_3: "La course %{source_label} (%{source_objectid}) a une vitesse %{error_value} > %{reference_value} km/h entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" -      detail_3_vehiclejourney_3: "La course %{source_label} (%{source_objectid}) a une variation de progression entre les arrêts %{target_1_label} (%{target_1_objectid}) et %{target_2_label} (%{target_2_objectid}) %{error_value} > %{reference_value} avec la course %{target_0_label} (%{target_0_objectid})" -      detail_3_vehiclejourney_4: "La course %{source_label} (%{source_objectid}) n'a pas de calendrier d'application" -      detail_3_facility_1: "L'équipement %{source_label} (%{source_objectid}) n'est pas géolocalisé" -      detail_3_facility_2: "L'équipement %{source_label} (%{source_objectid}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{error_value} > %{reference_value}" - -      detail_4_network_1_min_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value}) " -      detail_4_network_1_max_size: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_network_1_pattern: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_network_1_unique: "L'attribut %{reference_value} du réseau %{source_label} (%{source_objectid}) a une valeur partagée avec le réseau %{target_0_label} (%{target_0_objectid})" -      detail_4_company_1_min_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_company_1_max_size: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_company_1_pattern: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_company_1_unique: "L'attribut %{reference_value} du transporteur %{source_label} (%{source_objectid}) a une valeur partagée avec le transporteur %{target_0_label} (%{target_0_objectid})" -      detail_4_groupofline_1_min_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_groupofline_1_max_size: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_groupofline_1_pattern: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_groupofline_1_unique: "L'attribut %{reference_value} du groupe de lignes %{source_label} (%{source_objectid}) a une valeur partagée avec le groupe de lignes %{target_0_label} (%{target_0_objectid})" -      detail_4_stoparea_1_min_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_stoparea_1_max_size: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_stoparea_1_pattern: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_stoparea_1_unique: "L'attribut %{reference_value} de l'arrêt %{source_label} (%{source_objectid}) a une valeur partagée avec l'arrêt %{target_0_label} (%{target_0_objectid})" -      detail_4_stoparea_2: "L'arrêt physique %{source_label} (%{source_objectid}) n'a pas de parent" -      detail_4_accesspoint_1_min_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_accesspoint_1_max_size: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_accesspoint_1_pattern: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_accesspoint_1_unique: "L'attribut %{reference_value} du point d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le point d'accès %{target_0_label} (%{target_0_objectid})" -      detail_4_accesslink_1_min_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_accesslink_1_max_size: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_accesslink_1_pattern: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_accesslink_1_unique: "L'attribut %{reference_value} du lien d'accès %{source_label} (%{source_objectid}) a une valeur partagée avec le lien d'accès %{target_0_label} (%{target_0_objectid})" -      detail_4_connectionlink_1_min_size: "L'attribut %{reference_value} de la correspondance  %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_connectionlink_1_max_size: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_connectionlink_1_pattern: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_connectionlink_1_unique: "L'attribut %{reference_value} de la correspondance %{source_label} (%{source_objectid}) a une valeur partagée avec la correspondance %{target_0_label} (%{target_0_objectid})" -      detail_4_connectionlink_2: "Sur la correspondance %{source_label} (%{source_objectid}) au moins l'un des arrêts %{startName} (%{startId}) et %{endName} (%{endId}) n'est pas un arrêt physique" -      detail_4_timetable_1_min_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_timetable_1_max_size: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_timetable_1_pattern: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_timetable_1_unique: "L'attribut %{reference_value} du calendrier %{source_label} (%{source_objectid}) a une valeur partagée avec le calendrier %{target_0_label} (%{target_0_objectid})" -      detail_4_line_1_min_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_line_1_max_size: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_line_1_pattern: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_line_1_unique: "L'attribut %{reference_value} de la ligne %{source_label} (%{source_objectid}) a une valeur partagée avec la ligne %{target_0_label} (%{target_0_objectid})" -      detail_4_line_2: "La ligne %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" -      detail_4_line_3_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de groupe de lignes" -      detail_4_line_3_2: "La ligne %{source_label} (%{source_objectid}) a plusieurs groupes de lignes" -      detail_4_line_4_1: "La ligne %{source_label} (%{source_objectid}) n'a pas de séquence d'arrêts" -      detail_4_line_4_2: "La ligne %{source_label} (%{source_objectid}) a trop de séquences d'arrêts non associées (%{error_value})" -      detail_4_route_1_min_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_route_1_max_size: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_route_1_pattern: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_route_1_unique: "L'attribut %{reference_value} de la séquence d'arrêts %{source_label} (%{source_objectid}) a une valeur partagée avec la séquence d'arrêts %{target_0_label} (%{target_0_objectid})" -      detail_4_journeypattern_1_min_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_journeypattern_1_max_size: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_journeypattern_1_pattern: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_journeypattern_1_unique: "L'attribut %{reference_value} de la mission %{source_label} (%{source_objectid}) a une valeur partagée avec la mission %{target_0_label} (%{target_0_objectid})" -      detail_4_vehiclejourney_1_min_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas renseigné ou trop petit (%{error_value})" -      detail_4_vehiclejourney_1_max_size: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) est trop grand (%{error_value})" -      detail_4_vehiclejourney_1_pattern: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) n'est pas au bon format (%{error_value})" -      detail_4_vehiclejourney_1_unique: "L'attribut %{reference_value} de la course %{source_label} (%{source_objectid}) a une valeur partagée avec la course %{target_0_label} (%{target_0_objectid})" -      detail_4_vehiclejourney_2: "La course %{source_label} (%{source_objectid}) a un mode de transport interdit %{error_value}" -  activemodel: -    models: -      compliance_check_result: -        zero: "Validation" -        one: "Validation" -        other: "Validation" -    attributes: -      compliance_check_result: -        1-NEPTUNE-XML-1: "Conformité à la syntaxe XML suivant les recommandations du W3C." -        1-NEPTUNE-XML-2: "Conformité au schéma défini par la XSD du profil TRIDENT/NEPTUNE." -        2-NEPTUNE-Common-1: "Unicité des éléments objectId des différents objets d'un lot de fichiers Neptune." -        2-NEPTUNE-Common-2: "Unicité des éléments regitrationNumber des différents objets d'un lot de fichiers Neptune." -        2-NEPTUNE-Network-1: "Correcte référence à des lignes <Line> dans version du réseau <PTNetwork>." -        2-NEPTUNE-GroupOfLine-1: "Correcte référence à des lignes <Line> dans groupe de lignes <GroupOfLine>." -        2-NEPTUNE-StopArea-1: "Correcte référence à des arrêts <StopArea> et/ou à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea>." -        2-NEPTUNE-StopArea-2: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type StopPlace." -        2-NEPTUNE-StopArea-3: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type CommercialStopPoint." -        2-NEPTUNE-StopArea-4: "Correcte référence à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea> de type BoardingPosition ou Quay." -        2-NEPTUNE-StopArea-5: "Correcte référence à une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." -        2-NEPTUNE-StopArea-6: "référenceréciproque d'une position géographique <AreaCentroid> dans les arrêts <StopArea> de tout type StopPlace, CommercialStopPoint, BoardingPosition et Quay." -        2-NEPTUNE-ITL-1: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type ITL." -        2-NEPTUNE-ITL-2: "Correcte référence à des arrêts <StopArea> de type ITL dans la classe d’objets <ITL>." -        2-NEPTUNE-ITL-3: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <ITL>." -        2-NEPTUNE-ITL-4: "Vérification du type de référence à des arrêts <StopArea> type ITL dans la classe d’objets <ITL>." -        2-NEPTUNE-ITL-5: "Bonne référence à la ligne <Line> dans la classe d’objets <ITL>." -        2-NEPTUNE-AreaCentroid-1: "Correcte référence à des arrêts <StopArea> dans la classe d’objets <AreaCentroid>." -        2-NEPTUNE-AreaCentroid-2: "Vérification du modèle de projection de référence utilisé." -        2-NEPTUNE-ConnectionLink-1: "Correcte référence aux arrêts <StopArea> définissant des tronçons de correspondance <ConnectionLink>." -        2-NEPTUNE-AccessPoint-1: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." -        2-NEPTUNE-AccessPoint-2: "Correcte référence à un arrêt <StopArea> dans les accès <AccessPoint>." -        2-NEPTUNE-AccessPoint-3: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>." -        2-NEPTUNE-AccessPoint-4: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> de type 'in'." -        2-NEPTUNE-AccessPoint-5: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint> sur les accès de type 'out'." -        2-NEPTUNE-AccessPoint-6: "Existence de liens d'accès <AccessLink> sur les accès <AccessPoint>  sur les accès de type 'inout'." -        2-NEPTUNE-AccessPoint-7: "Vérification du modèle de projection de référence utilisé." -        2-NEPTUNE-AccessLink-1: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." -        2-NEPTUNE-AccessLink-2: "Correcte référence aux arrêts <StopArea> et accès <AccessPoint> définissant des liens d'accès <AccessLink>." -        2-NEPTUNE-Line-1: "Correcte référence au réseau dans l'objet ligne <Line>." -        2-NEPTUNE-Line-2: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." -        2-NEPTUNE-Line-3: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>." -        2-NEPTUNE-Line-4: "Correcte référence  aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." -        2-NEPTUNE-Line-5: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." -        2-NEPTUNE-Route-1: "Existence des missions <JourneyPattern> référencées par la séquence d'arrêt <ChouetteRoute>." -        2-NEPTUNE-Route-2: "Existence des tronçons commerciaux <PtLink> référencés par la séquence d'arrêt <ChouetteRoute>." -        2-NEPTUNE-Route-3: "Existence de la séquence opposée <ChouetteRoute> référencée par la séquence d'arrêt <ChouetteRoute>." -        2-NEPTUNE-Route-4: "Correcte référence à un tronçon commercial <PtLink> dans une séquence d'arrêts <ChouetteRoute>." -        2-NEPTUNE-Route-5: "Vérification que tous les points d'arrêts sur parcours sont rattachés à une séquence d'arrêts <ChouetteRoute> au départ d'un tronçon commercial <PtLink> et/ou à l'arrivée d'un autre tronçon commercial <PtLink> de la même séquence d'arrêts." -        2-NEPTUNE-Route-6: "Vérification du correct ordonnancement des points d'arrêts sur parcours <StopPoint> dans le chainage des tronçons <PtLink> d'une séquence d'arrêts <ChouetteRoute>." -        2-NEPTUNE-Route-7: "référence mutuelle des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." -        2-NEPTUNE-Route-8: "Cohérence des références aux points d'arrêt des missions <JourneyPattern> et des séquences d'arrêts <ChouetteRoute>." -        2-NEPTUNE-Route-9: "Utilité des points d'arrêts sur parcours des séquences d'arrêts <ChouetteRoute>." -        2-NEPTUNE-Route-10: "référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." -        2-NEPTUNE-Route-11: "Cohérence des sens de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." -        2-NEPTUNE-Route-12: "Cohérence des terminus de la référence d'une séquence d'arrêts <ChouetteRoute> à une séquence d'arrêts opposée." -        2-NEPTUNE-PtLink-1: "Existence des  arrêts <StopPoint> référencés par les  tronçons commerciaux <PTLink>." -        2-NEPTUNE-JourneyPattern-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la mission <JourneyPattern>." -        2-NEPTUNE-JourneyPattern-2: "Existence des arrêts <StopPoint> référencés par la mission <JourneyPattern>." -        2-NEPTUNE-JourneyPattern-3: "Existence de la ligne <Line> référencée par la mission <JourneyPattern>." -        2-NEPTUNE-StopPoint-1: "Existence de la ligne <Line> référencée par l'arrêt <StopPoint>." -        2-NEPTUNE-StopPoint-2: "Existence du réseau <PTNetwork> référence par l'arrêt <StopPoint>." -        2-NEPTUNE-StopPoint-3: "Existence de l'arrêt   <StopArea> référencé par l'arrêt <StopPoint>." -        2-NEPTUNE-StopPoint-4: "Vérification du modèle de projection de référence utilisé." -        2-NEPTUNE-Timetable-1: "Utilité des calendriers." -        2-NEPTUNE-Timetable-2: "Utilité des calendriers." -        2-NEPTUNE-VehicleJourney-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la course <VehicleJourney>." -        2-NEPTUNE-VehicleJourney-2: "Existence de la mission <JourneyPattern> référencée par la course <VehicleJourney>." -        2-NEPTUNE-VehicleJourney-3: "Existence de la ligne <Line> référencée par la course <VehicleJourney>." -        2-NEPTUNE-VehicleJourney-4: "Existence de l'opérateur <Company> référencé par la course <VehicleJourney>." -        2-NEPTUNE-VehicleJourney-5: "Existence de la tranche horaire <TimeSlot> référencée par la course <VehicleJourney>." -        2-NEPTUNE-VehicleJourney-6: "Cohérence entre la course, la mission et la séquence d'arrêts." -        2-NEPTUNE-VehicleJourney-7: "Utilité des missions" -        2-NEPTUNE-VehicleJourneyAtStop-1: "Existence de l'arrêt <StopPoint> référencé par l'horaire <VehicleJourneyAtStop>." -        2-NEPTUNE-VehicleJourneyAtStop-2: "Existence de la course <VehicleJourney> référenceé par l'horaire <VehicleJourneyAtStop>." -        2-NEPTUNE-VehicleJourneyAtStop-3: "adéquation des horaires de la course à la séquence d'arrêts." -        2-NEPTUNE-VehicleJourneyAtStop-4: "adéquation des horaires de la course à la mission." -        2-NEPTUNE-Facility-1: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." -        2-NEPTUNE-Facility-2: "Existence de l'arrêt <StopArea> référencé par l'équipement <Facility>." -        2-NEPTUNE-Facility-3: "Existence de la ligne <Line> référencée par l'équipement <Facility>." -        2-NEPTUNE-Facility-4: "Existence de la correspondance <ConnectionLink> référencée par l'équipement <Facility>." -        2-NEPTUNE-Facility-5: "Existence de l'arrêt <StopPoint> référencé par l'équipement <Facility>." -        2-NEPTUNE-Facility-6: "Vérification du modèle de projection de référence utilisé." -        3-StopArea-1: "Vérification de la géolocalisation de tous les arrêts hors ITL" -        3-StopArea-2: "Vérification que 2 arrêts de noms différents en dehors d'un même regroupement d'arrêts ne sont pas trop proches" -        3-StopArea-3: "Vérification de l'unicité des arrêts" -        3-StopArea-4: "Vérification de la géolocalisation des arrêts" -        3-StopArea-5: "Vérification de la position relative des arrêts et de leur parent" -        3-AccessPoint-1: "Vérification de la géolocalisation de tous les accès" -        3-AccessPoint-2: "Vérification que deux accès de nom différents ne sont pas trop proches" -        3-AccessPoint-3: "Vérification de la proximité entre les accès et leur arrêt de rattachement" -        3-ConnectionLink-1: "Vérification de la proximité entre les deux arrêts d'une correspondance" -        3-ConnectionLink-2: "Vérification de la cohérence entre la distance fournie sur la correspondance et la distance géographique entre les deux arrêts de la correspondance" -        3-ConnectionLink-3: "Vérification de la vitesse de parcours entre les deux arrêts d'une correspondance" -        3-AccessLink-1: "Vérification de la proximité entre les deux extrémités d'un lien d'accès" -        3-AccessLink-2: "Vérification de la cohérence entre la distance fournie sur le lien d'accès et la distance géographique entre les deux extrémités du lien d'accès" -        3-AccessLink-3: "Vérification de la vitesse de parcours entre les deux extrémités d'un lien d'accès" -        3-Line-1: "Vérification de la non homonymie des lignes" -        3-Line-2: "Vérification de la présence de séquences d'arrêts sur la ligne" -        3-Route-1: "Vérification de la succession des arrêts de la séquence" -        3-Route-2: "Vérification de la séquence inverse" -        3-Route-3: "Vérification de la distance entre deux arrêts successifs de la séquence" -        3-Route-4: "Vérification de double définition de séquences" -        3-Route-5: "Vérification de séquences sans séquence opposée" -        3-Route-6: "Vérification de la présence d'arrêts dans la séquence" -        3-Route-7: "Vérification de la présence de missions" -        3-Route-8: "Vérification de l'utilisation des arrêts par les missions" -        3-Route-9: "Vérification de l’existence d’une mission passant par tous les arrêts de la séquence" -        3-JourneyPattern-1: "Vérification de double définition de missions" -        3-VehicleJourney-1: "Vérification de la chronologie des horaires de passage à un arrêt" -        3-VehicleJourney-2: "Vérification de la vitesse de transfert entre deux arrêts" -        3-VehicleJourney-3: "Vérification de la cohérence des courses successives desservant deux mêmes arrêts" -        3-VehicleJourney-4: "Vérification de l'affectation des courses à un calendrier" -        3-Facility-1: "Vérification de la géolocalisation de tous les accès" -        3-Facility-2: "Vérification de la proximité entre les équipements et leur arrêt de rattachement" -        4-Network-1: "Vérification de contraintes sur les attributs des réseaux" -        4-Company-1: "Vérification de contraintes sur les attributs des transporteurs" -        4-GroupOfLine-1: "Vérification de contraintes sur les attributs des groupes de lignes" -        4-StopArea-1: "Vérification de contraintes sur les attributs des arrêts" -        4-StopArea-2: "Vérification de l'existance d'un arrêt commercial pour les arrêts physiques" -        4-StopArea-3: "Vérification de la cohérence entre les noms de communes et leur code INSEE" -        4-AccessPoint-1: "Vérification de contraintes sur les attributs des accès" -        4-AccessLink-1: "Vérification de contraintes sur les attributs des liens d'accès" -        4-ConnectionLink-1: "Vérification de contraintes sur les attributs des correspondances" -        4-ConnectionLink-2: "Vérification des type d'arrêts en correspondance" -        4-Timetable-1: "Vérification de contraintes sur les attributs des calendiers" -        4-Line-1: "Vérification de contraintes sur les attributs des lignes" -        4-Line-2: "Vérification des modes de transport des lignes" -        4-Line-3: "Vérification des groupes de lignes d'une ligne" -        4-Line-4: "Vérification des séquences d'arrêts d'une ligne" -        4-Route-1: "Vérification de contraintes sur les attributs des séquences d'arrêt" -        4-JourneyPattern-1: "Vérification de contraintes sur les attributs des missions" -        4-VehicleJourney-1: "Vérification de contraintes sur les attributs des courses" -        4-VehicleJourney-2: "Vérification des modes de transport des courses" -        severity: "Severity" -        status: "Status" -        rule_level: "Level" -        rule_target: "Object" -        rule_number: "Step" -        rule_code: "Code" -        violation_count: "errors" -        violation_count_txt: "Number of errors" -        objects: "Objects in violations" -        detail: "Detail" -        title: "Test title" -        object: "Error object" -        resource: "Resources of the error object" -        url: "URL" -        first_violations: "First violations"  fr:    compliance_check_results:      errors: 'Erreurs' @@ -368,11 +23,49 @@ fr:        ## NEPTUNE        detail_1_neptune_xml_1: "%{source_label} : %{error_value}"        detail_1_neptune_xml_2: "%{source_label} : %{error_value}" +       +      ## GTFS +      detail_1_gtfs_csv_1: "le fichier %{filename} est inexploitable" +      detail_1-GTFS-CSV-2: "le fichier %{filename} est inexploitable" +      detail_1-GTFS-CSV-3: "le fichier %{filename} contient un enête vide" +      detail_1-GTFS-CSV-4: "le fichier %{filename} contient des entêtes en double" +      detail_1-GTFS-CSV-5: "la ligne du fichier %{filename} ne respecet pas la syntaxe CSV" +      detail_1-GTFS-CSV-6: "le fichier %{filename} contient des balises HTML" +      detail_1-GTFS-CSV-7: "la valeur '%{error_value}' contient des espaces aux extrémités" +       +      detail_1_gtfs_common_1: "le fichier %{filename} est obligatoire" +      detail_1_gtfs_common_2: "l'un des deux fichiers calendar.txt ou calendar_dates.txt est obligatoire" +      detail_1_gtfs_common_3: "le fichier %{filename} optionnel n'est pas présent" +      detail_1_gtfs_common_4: "le fichier %{filename} n'est pas traité" +         +      detail_1_gtfs_common_5: "le fichier %{filename} obligatoire doit définir au moins une entrée" +      detail_1_gtfs_common_6: "l'un des deux fichiers calendar.txt ou calendar_dates.txt doit définir au moins une entrée" +      detail_1_gtfs_common_7: "le fichier %{filename} optionnel ne contient aucune entrée" +         +      detail_1_gtfs_common_8: "la valeur %{error_value} est définie plusieurs fois pour la colonne " +      detail_1_gtfs_common_9: "la colonne est obligatoire" +      detail_1_gtfs_common_10: "la colonne agency_id devrait être présente dans le fichier %{filename}" +      detail_1_gtfs_common_11: "la colonne %{error_value} n'est pas exploitée dans le fichier %{filename}" +         +      detail_1_gtfs_common_12: "Contrôle de la présence des données obligatoires" +        # 1-GTFS-Common-4-2: "Contrôle de l'affectation d'au moins un jour à un calendrier" +      detail_1_gtfs_common_13: "Contrôle de la présence de la colonne agency_id si plusieurs agences sont définies" +      detail_1_gtfs_common_14: "Contrôle de la présence de la colonne agency_id même si une seule agence est définie" +        #1-GTFS-Common-4-5: "Contrôle de la présence du binôme horaires départ et arrivées" +      detail_1_gtfs_common_15: "Contrôle de la présence d'une donnée sur valeur d'une autre" +        #1-GTFS-Common-4-7: "Contrôle de la valeur d'une donnée sur valeur d'une autre" +         +      detail_1_gtfs_common_16: "Contrôle du type des données" + +      detail_1_gtfs_route_1: "les colonnes ne sont pas définies" +      detail_1_gtfs_route_2: "Contrôle de la présence de données dans route_long_name ou route_short_name" +              #### level 2        ## NEPTUNE        detail_2_neptune_common_1: "L'élément %{source_objectid} a des attributs qui diffèrent entre les différents fichiers qui le définissent"        detail_2_neptune_common_2: "L'élément %{source_objectid} partage l'attribut RegistrationNumber = %{error_value} avec un autre objet de même type"        detail_2_neptune_network_1: "La ligne %{source_objectid} est absente de la liste des lignes du réseau %{target_0_objectid}" +      detail_2_neptune_network_2: "Le réseau %{source_objectid} a un type de source non validee : %{error_value}, remplacé par %{reference_value}"        detail_2_neptune_groupofline_1: "La ligne %{source_objectid} est absente de la liste des lignes du du groupe de lignes %{target_0_objectid}"        detail_2_neptune_stoparea_1: "Le fils (contains = %{error_value}) de l'arrêt %{source_objectid} n'est pas de type StopArea ni StopPoint"        detail_2_neptune_stoparea_2: "L'arrêt %{source_objectid} de type %{reference_value} ne peut contenir que des arrêts de type StopPlace ou CommercialStopPoint, or un des arrêts contenus (contains = %{target_0_objectid}) est de type %{error_value}" @@ -402,6 +95,7 @@ fr:        detail_2_neptune_line_3: "La ligne %{source_objectid} référence un point d'arrêt (lineEnd = %{error_value}) qui n'est pas terminus d'une séquence d'arrêts"        detail_2_neptune_line_4: "La ligne %{source_objectid} référence une séquence d'arrêt (routeId = %{error_value}) inexistante"        detail_2_neptune_line_5: "La séquence d'arrêts (routeId = %{target_0_objectid}) n'est pas référencée par la ligne %{source_objectid}" +      detail_2_neptune_line_6: "La ligne %{source_objectid} ne renseigne aucun des champs name, number ou publishedName"        detail_2_neptune_route_1: "La séquence d'arrêts %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante"        detail_2_neptune_route_2: "La séquence d'arrêts %{source_objectid} référence un tronçon (ptLinkId = %{error_value}) inexistant"        detail_2_neptune_route_3: "La séquence retour (waybackRouteId = %{error_value}) de la séquence d'arrêts %{source_objectid} n'existe pas" @@ -425,6 +119,7 @@ fr:        detail_2_neptune_stoppoint_4: "Le point d'arrêt %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide"        detail_2_neptune_timetable_1: "Le calendrier (<Timetable>) %{source_objectid} ne référence aucune course existante"        detail_2_neptune_timetable_2: "La course %{source_objectid} n'est référencée dans aucun calendrier (<Timetable>)" +      detail_2_neptune_timetable_3: "Le calendrier (<Timetable>) %{source_objectid} contient une période invalide"        detail_2_neptune_vehiclejourney_1: "La course %{source_objectid} référence une séquence d'arrêts (routeId = %{error_value}) inexistante"        detail_2_neptune_vehiclejourney_2: "La course %{source_objectid} référence une mission (journeyPatternId = %{error_value}) inexistante"        detail_2_neptune_vehiclejourney_3: "La course %{source_objectid} référence une ligne (lineIdShortcut = %{error_value}) inexistante" @@ -432,6 +127,7 @@ fr:        detail_2_neptune_vehiclejourney_5: "La course %{source_objectid} référence une fréquence horaire (timeSlotId = %{error_value}) inexistante"        detail_2_neptune_vehiclejourney_6: "La course %{source_objectid} référence une mission %{error_value} incompatible de la séquence d'arrêts %{reference_value}"        detail_2_neptune_vehiclejourney_7: "La mission %{source_objectid} n'est référencée par aucune course" +      detail_2_neptune_vehiclejourney_8: "La course %{source_objectid} doit référencer une mission si la séquence d'arrêt en possède plusieurs"        detail_2_neptune_vehiclejourneyatstop_1: "La course %{source_objectid} fournit un horaire sur un point d'arrêt (stopPointId = %{error_value}) inexistant"        detail_2_neptune_vehiclejourneyatstop_2: "Un horaire de la course %{source_objectid} référence une autre course : vehicleJourneyId = %{error_value}"        detail_2_neptune_vehiclejourneyatstop_3: "La course %{source_objectid} ne fournit pas les horaires des points d'arrêts selon l'ordre de la séquence d'arrêts %{error_value}" @@ -442,6 +138,57 @@ fr:        detail_2_neptune_facility_4: "L'équipement %{source_objectid} référence une correspondance (connectionLinkId = %{error_value} inexistante"        detail_2_neptune_facility_5: "L'équipement %{source_objectid} référence un point d'arrêt (stopPointId = %{error_value} inexistant"        detail_2_neptune_facility_6: "L'équipement %{source_objectid} utilise un référentiel géographique (longLatType = %{error_value}) invalide" +      ## GTFS +      detail_2_gtfs_common_1: "" +      detail_2_gtfs_common_2: "" +      detail_2_gtfs_common_3: "" +      detail_2_gtfs_agency_1: "" +      detail_2_gtfs_agency_2: "" +      detail_2_gtfs_stop_1: "" +      detail_2_gtfs_stop_2: "" +      detail_2_gtfs_stop_3: "" +      detail_2_gtfs_stop_4: "" +      detail_2_gtfs_stop_5: "" +      detail_2_gtfs_stop_6: "" +      detail_2_gtfs_route_1: "" +      detail_2_gtfs_route_2: "" +      detail_2_gtfs_route_3: "" +      detail_2_gtfs_route_4: "" +      detail_2_gtfs_route_5: "" +      detail_2_gtfs_route_6: "" +      detail_2_gtfs_route_7: "non défini" +      detail_2_gtfs_route_8: "" +      detail_2_gtfs_route_9: "" +      detail_2_gtfs_route_10: "" +      detail_2_gtfs_route_11: "" +      detail_2_gtfs_route_12: "" +      detail_2_gtfs_trip_1: "" +      detail_2_gtfs_trip_2: "" +      detail_2_gtfs_trip_3: "" +      detail_2_gtfs_trip_4: "" +      detail_2_gtfs_trip_5: "" +      detail_2_gtfs_trip_6: "" +      detail_2_gtfs_trip_7: "" +      detail_2_gtfs_stoptime_1: "" +      detail_2_gtfs_stoptime_2: "" +      detail_2_gtfs_stoptime_3: "" +      detail_2_gtfs_stoptime_4: "" +      detail_2_gtfs_stoptime_5: "" +      detail_2_gtfs_stoptime_6: "" +      detail_2_gtfs_stoptime_7: "" +      detail_2_gtfs_stoptime_8: "" +      detail_2_gtfs_stoptime_9: "" +      detail_2_gtfs_calendar_1: "" +      detail_2_gtfs_calendar_2: "" +      detail_2_gtfs_calendar_3: "" +      detail_2_gtfs_calendar_4: "" +      detail_2_gtfs_calendar_5: "" +      detail_2_gtfs_calendar_6: "" +      detail_2_gtfs_frequency_1: "" +      detail_2_gtfs_frequency_2: "" +      detail_2_gtfs_transfer_1: "" +      detail_2_gtfs_transfer_2: "" +        #### level 3        detail_3_stoparea_1: "L'arrêt %{source_label} (%{source_objectid}) n'est pas géolocalisé"        detail_3_stoparea_2: "L'arrêt %{source_label} (%{source_objectid}) est localisé trop près de l'arrêt %{target_0_label} (%{target_0_objectid}) : distance %{error_value} < %{reference_value}" @@ -549,11 +296,13 @@ fr:          other: "Validations"      attributes:        compliance_check_result: +        ## Neptune          1-NEPTUNE-XML-1: "Conformité à la syntaxe XML suivant les recommandations du W3C."          1-NEPTUNE-XML-2: "Conformité au schéma défini par la XSD du profil TRIDENT/NEPTUNE."          2-NEPTUNE-Common-1: "Unicité des éléments objectId des différents objets d'un lot de fichiers Neptune."          2-NEPTUNE-Common-2: "Unicité des éléments regitrationNumber des différents objets d'un lot de fichiers Neptune."          2-NEPTUNE-Network-1: "Correcte référence à des lignes <Line> dans version du réseau <PTNetwork>." +        2-NEPTUNE-Network-2: "Valeur autorisée pour le type de source <SourceType> dans version du réseau <PTNetwork>."          2-NEPTUNE-GroupOfLine-1: "Correcte référence à des lignes <Line> dans groupe de lignes <GroupOfLine>."          2-NEPTUNE-StopArea-1: "Correcte référence à des arrêts <StopArea> et/ou à des points d'arrêt sur parcours <StopPoint> dans les arrêts <StopArea>."          2-NEPTUNE-StopArea-2: "Correcte référence à des arrêts <StopArea> dans les arrêts <StopArea> de type StopPlace." @@ -583,6 +332,7 @@ fr:          2-NEPTUNE-Line-3: "Correcte référence à un point d'arrêt sur parcours <StopPoint> comme terminus de ligne <Line>."          2-NEPTUNE-Line-4: "Correcte référence  aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>."          2-NEPTUNE-Line-5: "Correcte référence aux séquences d'arrêts <ChouetteRoute> dans l'objet ligne <Line>." +        2-NEPTUNE-Line-6: "Présence d'au moins une valeur parmi <name>,<number> ou <publishedName> dans l'objet ligne <Line>."          2-NEPTUNE-Route-1: "Existence des missions <JourneyPattern> référencées par la séquence d'arrêt <ChouetteRoute>."          2-NEPTUNE-Route-2: "Existence des tronçons commerciaux <PtLink> référencés par la séquence d'arrêt <ChouetteRoute>."          2-NEPTUNE-Route-3: "Existence de la séquence opposée <ChouetteRoute> référencée par la séquence d'arrêt <ChouetteRoute>." @@ -605,6 +355,7 @@ fr:          2-NEPTUNE-StopPoint-4: "Vérification du modèle de projection de référence utilisé."          2-NEPTUNE-Timetable-1: "Utilité des calendriers."          2-NEPTUNE-Timetable-2: "Utilité des calendriers." +        2-NEPTUNE-Timetable-2: "Validité des dates de début et de fin des périodes des calendriers"          2-NEPTUNE-VehicleJourney-1: "Existence de la séquence d'arrêt <ChouetteRoute> référencée par la course <VehicleJourney>."          2-NEPTUNE-VehicleJourney-2: "Existence de la mission <JourneyPattern> référencée par la course <VehicleJourney>."          2-NEPTUNE-VehicleJourney-3: "Existence de la ligne <Line> référencée par la course <VehicleJourney>." @@ -612,6 +363,7 @@ fr:          2-NEPTUNE-VehicleJourney-5: "Existence de la tranche horaire <TimeSlot> référencée par la course <VehicleJourney>."          2-NEPTUNE-VehicleJourney-6: "Cohérence entre la course, la mission et la séquence d'arrêts."          2-NEPTUNE-VehicleJourney-7: "Utilité des missions" +        2-NEPTUNE-VehicleJourney-8: "Mission implicite"          2-NEPTUNE-VehicleJourneyAtStop-1: "Existence de l'arrêt <StopPoint> référencé par l'horaire <VehicleJourneyAtStop>."          2-NEPTUNE-VehicleJourneyAtStop-2: "Existence de la course <VehicleJourney> référenceé par l'horaire <VehicleJourneyAtStop>."          2-NEPTUNE-VehicleJourneyAtStop-3: "adéquation des horaires de la course à la séquence d'arrêts." @@ -622,6 +374,95 @@ fr:          2-NEPTUNE-Facility-4: "Existence de la correspondance <ConnectionLink> référencée par l'équipement <Facility>."          2-NEPTUNE-Facility-5: "Existence de l'arrêt <StopPoint> référencé par l'équipement <Facility>."          2-NEPTUNE-Facility-6: "Vérification du modèle de projection de référence utilisé." +         +        ## GTFS +        1-GTFS-CSV-1: "Vérification de la lecture du fichier" +        1-GTFS-CSV-2: "Vérification de la syntaxe d'une ligne" +        1-GTFS-CSV-3: "Vérification de la syntaxe des entêtes" +        1-GTFS-CSV-4: "Vérification de la non présence de doublons dans les entêtes" +        1-GTFS-CSV-5: "Vérification de la syntaxe CSV GTFS du fichier" +        1-GTFS-CSV-6: "Vérification de la non présence de balise HTML" +        1-GTFS-CSV-7: "Vérification de la non présence d'espace en début ou fin de colonne" +         +        1-GTFS-Common-1: "Contrôle de la présence des fichiers obligatoires" +        1-GTFS-Common-2: "Contrôle de la présence des fichiers calendar ou calendar_dates" +        1-GTFS-Common-3: "Contrôle de la présence des fichiers optionnels" +        1-GTFS-Common-4: "Contrôle de la présence des fichiers non traités" +         +        1-GTFS-Common-5: "Contrôle de la présence de données dans les fichiers obligatoires" +        1-GTFS-Common-6: "Contrôle de la présence de données dans les fichiers calendar ou calendar_dates" +        1-GTFS-Common-7: "Contrôle de la présence de données dans les fichiers optionnels" +         +        1-GTFS-Common-8: "Contrôle de l'unicité des identifiants" +        1-GTFS-Common-9: "Contrôle de la présence des colonnes obligatoires" +        1-GTFS-Route-1: "Contrôle de la présence des colonnes obligatoires conditionnelles" +        1-GTFS-Common-10: "Contrôle de la présence des colonnes qui devraient être obligatoires " +        1-GTFS-Common-11: "Contrôle de la présence de colonnes non traités" +         +        1-GTFS-Common-12: "Contrôle de la présence des données obligatoires" +        # 1-GTFS-Common-4-2: "Contrôle de l'affectation d'au moins un jour à un calendrier" +        1-GTFS-Common-13: "Contrôle de la présence de la colonne agency_id si plusieurs agences sont définies" +        1-GTFS-Common-14: "Contrôle de la présence de la colonne agency_id même si une seule agence est définie" +        #1-GTFS-Common-4-5: "Contrôle de la présence du binôme horaires départ et arrivées" +        1-GTFS-Common-15: "Contrôle de la présence d'une donnée sur valeur d'une autre" +        #1-GTFS-Common-4-7: "Contrôle de la valeur d'une donnée sur valeur d'une autre" +         +        1-GTFS-Common-16: "Contrôle du type des données" + +        1-GTFS-Route-1: "Contrôle de la présence des colonnes obligatoires conditionnelles" +        1-GTFS-Route-2: "Contrôle de la présence de données dans route_long_name ou route_short_name" + +        2-GTFS-Common-1: "Vérification de la taille des valeurs d'identifiant" +        2-GTFS-Common-2: "Vérification de la taille des valeurs des textes courts" +        2-GTFS-Common-3: "Vérification de la taille des valeurs des textes longs" +        2-GTFS-Agency-1: "Vérification de l'utilité des entrées agency" +        2-GTFS-Agency-2: "Vérification de la valeur de la colonne agency_id" +        2-GTFS-Stop-1: "Vérification de l'existence du stop référencé par parent_station" +        2-GTFS-Stop-2: "Vérification du type du parent_station" +        2-GTFS-Stop-3: "Vérification de la desserte du stop" +        2-GTFS-Stop-4: "Vérification de la non redondance des valeurs stop_name et stop_desc" +        2-GTFS-Stop-5: "Vérification de la pertinence de la valeur stop_url par rapport aux valeurs agency_url et route_url" +        2-GTFS-Stop-6: "Vérification de l'utilité de la colonne location_type" +        2-GTFS-Route-1: "Vérification de la non redondance des valeurs route_short_name et route_long_name" +        2-GTFS-Route-2: "Vérification de la présence des valeurs de agency_id" +        2-GTFS-Route-3: "Vérification de l'existence de l'agency référencée par agency_id" +        2-GTFS-Route-4: "Vérification de l'utilité des entrées route" +        2-GTFS-Route-5: "Vérification de l'unicité de désignation (route_short_name, route_long_name)" +        2-GTFS-Route-6: "Vérification de la longueur du champ route_short_name" +        2-GTFS-Route-7: "non défini" +        2-GTFS-Route-8: "Vérification de la non inclusion de route_short_name dans route_long_name" +        2-GTFS-Route-9: "Vérification du contraste des couleurs" +        2-GTFS-Route-10: "Vérification de la non redondance de la valeur route_desc par rapport aux valeurs route_short_name et route_long_name" +        2-GTFS-Route-11: "Vérification de la non présence d'une route inversant les valeurs route_short_name et route_long_name d'une autre" +        2-GTFS-Route-12: "Vérification de la pertinence de la valeur route_url par rapport aux valeurs agency_url" +        2-GTFS-Trip-1: "Vérification de la présence des valeurs de route_id" +        2-GTFS-Trip-2: "Vérification de la présence des valeurs de service_id" +        2-GTFS-Trip-3: "Vérification de la présence des valeurs de shape_id" +        2-GTFS-Trip-4: "Vérification de la non unicité des valeurs de block_id" +        2-GTFS-Trip-5: "Vérification de l'utilité des entrées trip" +        2-GTFS-Trip-6: "Vérification de la longueur des trips (minimum 2 horaires)" +        2-GTFS-Trip-7: "Vérification de la présence des valeurs de direction_id" +        2-GTFS-StopTime-1: "Vérification de la présence des valeurs de trip_id" +        2-GTFS-StopTime-2: "Vérification de la présence des valeurs de stop_id" +        2-GTFS-StopTime-3: "Vérification de la chronologie des horaires d'arrivé et départ" +        2-GTFS-StopTime-4: "Vérification de la présence des horaires d'arrivé et départ du premier stoptime d'un trip" +        2-GTFS-StopTime-5: "Vérification de la présence des horaires d'arrivé et départ du dernier stoptime d'un trip" +        2-GTFS-StopTime-6: "Vérification de la chronologie des horaires selon stop_sequence" +        2-GTFS-StopTime-7: "Vérification du non conflit des valeurs pick_type et drop_off_type" +        2-GTFS-StopTime-8: "Vérification de la croissance de la valeur shape_dist_travel selon stop_sequence" +        2-GTFS-StopTime-9: "Vérification du type du stop référencé par stop_id" +        2-GTFS-Calendar-1: "Vérification de la chronologie des plages horaires" +        2-GTFS-Calendar-2: "Vérification de la validité d'au moins un jour" +        2-GTFS-Calendar-3: "Vérification de la présence d'au moins un jour valide" +        2-GTFS-Calendar-4: "Vérification de l'utilité de la définition d'un jour exclu" +        2-GTFS-Calendar-5: "Vérification de la non obsolécence des calendriers" +        2-GTFS-Calendar-6: "Vérification de la non obsolécence future des calendriers" +        2-GTFS-Frequency-1: "Vérification de la chronologie des plages de fréquence" +        2-GTFS-Frequency-2: "Vérification du non chevauchement des plages d'un même trip" +        2-GTFS-Transfer-1: "Vérification de l'existance du stop référencé par from_stop_id" +        2-GTFS-Transfer-2: "Vérification de l'existance du stop référencé par to_stop_id" +         +        ## COMMON          3-StopArea-1: "Vérification de la géolocalisation de tous les arrêts hors ITL"          3-StopArea-2: "Vérification que 2 arrêts de noms différents en dehors d'un même regroupement d'arrêts ne sont pas trop proches"          3-StopArea-3: "Vérification de l'unicité des arrêts" diff --git a/config/locales/en.yml b/config/locales/en.yml index 4ebdcc94c..019e6dc0b 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,6 +1,7 @@  en:    "true": "Yes"    "false": "No" +  "unknown": "Unknown"    time:      formats:        hour: "%Hh%M" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index 6522fa211..696ae21a6 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -1,6 +1,7 @@  fr:    "true": "Oui"    "false": "Non" +  "unknown": "Non précisé"    time:      formats:        hour: "%Hh%M" diff --git a/config/locales/group_of_lines.yml b/config/locales/group_of_lines.yml index d84c62682..d92cc3410 100644 --- a/config/locales/group_of_lines.yml +++ b/config/locales/group_of_lines.yml @@ -36,27 +36,27 @@ en:    formtastic:      titles:        group_of_line: -        name: "Only alphanumerical or underscore characters." +        name: ""          registration_number: "Positif integer."           objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        neptune:          group_of_line: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "Positif integer."             objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        netex:          group_of_line: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "Positif integer."             objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        gtfs:          group_of_line: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "Positif integer."             objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        hub:          group_of_lines: -          name: "Only alphanumerical or underscore characters. Maximum length = 75." +          name: "maximum 75 characters"            registration_number: "Positif integer, unique key, of no more than 8 digits."             objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 6." @@ -98,27 +98,27 @@ fr:    formtastic:      titles:        group_of_line: -        name: "Caractères autorisés : alphanumériques et 'souligné'." +        name: ""          registration_number: "Entier positif."           objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        neptune:          group_of_line: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "Entier positif."             objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        netex:          group_of_line: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "Entier positif."             objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        gtfs:          group_of_line: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "Entier positif."             objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        hub:          group_of_lines: -          name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." +          name: "maximum 75 caractères"            registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres."             objectid: "[prefixe]:GroupOfLine:[clé_unique] caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 6." diff --git a/config/locales/journey_patterns.yml b/config/locales/journey_patterns.yml index 8d76778ef..6afe48666 100644 --- a/config/locales/journey_patterns.yml +++ b/config/locales/journey_patterns.yml @@ -42,27 +42,27 @@ en:    formtastic:      titles:        journey_pattern: -        name: "Only alphanumerical or underscore characters." +        name: ""          registration_number: "Positif integer."           objectid: "[prefix]:JourneyPattern:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        neptune:          journey_pattern: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "Positif integer."             objectid: "[prefix]:JourneyPattern:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        netex:          journey_pattern: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "Positif integer."             objectid: "[prefix]:JourneyPattern:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        gtfs:          journey_pattern: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "Positif integer."             objectid: "[prefix]:JourneyPattern:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        hub:          journey_pattern: -          name: "Only alphanumerical or underscore characters. Maximum length = 75." +          name: "Maximum length = 75."            registration_number: "Positif integer, unique key, of no more than 8 digits."             objectid: "[prefix]:JourneyPattern:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 30." @@ -110,26 +110,26 @@ fr:    formtastic:      titles:        journey_pattern: -        name: "Caractères autorisés : alphanumériques et 'souligné'." +        name: ""          registration_number: "Entier positif."           objectid: "[prefixe]:JourneyPattern:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        neptune:          journey_pattern: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "Entier positif."             objectid: "[prefixe]:JourneyPattern:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        netex:          journey_pattern: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "Entier positif."             objectid: "[prefixe]:JourneyPattern:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        gtfs:          journey_pattern: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "Entier positif."             objectid: "[prefixe]:JourneyPattern:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        hub:          journey_pattern: -          name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." +          name: "Longueur maximale = 75."            registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres."             objectid: "[prefixe]:JourneyPattern:[clé_unique] caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 30." diff --git a/config/locales/lines.yml b/config/locales/lines.yml deleted file mode 100644 index 331c09d1c..000000000 --- a/config/locales/lines.yml +++ /dev/null @@ -1,233 +0,0 @@ -en: -  lines: -    actions: -      new: "Add a new line" -      edit: "Edit this line" -      destroy: "Remove this line" -      destroy_confirm: "Are you sure you want destroy this line?" -      destroy_selection_confirm: "Are you sure you want destroy those lines?" -      import: "Import lines" -      export_kml: "Export KML line" -      export__kml_all: "Export KML lines" -      export_hub: "Export HUB line" -      export__hub_all: "Export HUB lines" -    new: -      title: "Add a new line" -    edit: -      title: "Update line %{line}" -    show: -      title: "Line %{line}" -      itineraries: "Line's route list" -      group_of_lines: "Groups of lines" -    index: -      title: "Lines" -      name_or_number: "Search by name or number" -      no_networks: "No networks" -      no_companies: "No companies" -      no_group_of_lines: "No group of lines" -      all_networks: "All networks" -      all_companies: "All companies" -      all_group_of_lines: "All group of lines" -      multi_selection: "Multiple selection" -      multi_selection_enable: "Enable multiple selection" -      multi_selection_disable: "Disable multiple selection" -      delete_selected: "Delete lines" -      export_selected: "Export lines" -      select_all: "Select all" -      deselect_all: "Deselect all" -      unset: "undefined" -      advanced_search: "Advanced Search" -      color: "Colors" -    form: -      group_of_lines: "Associated groups of lines" -      no_group_of_line: "No group of line" -      several_group_of_lines: "%{count} groups of lines" -  activerecord: -    models: -      line: -        zero:  "line" -        one:   "line" -        other: "lines" -    attributes: -      line: -        network: "Network" -        company: "Company" -        registration_number: "Registration number" -        name: "Name" -        published_name: "Published name" -        number: "Number" -        transport_mode: "Transport mode" -        url: "Web page" -        color: "Line color" -        text_color: "Text color" -        mobility_restricted_suitability: "PRM accessibility" -        flexible_service: "On demond transportation" -        unspecified_mrs: "Not specified" -        accessible: "Accessible" -        not_accessible: "Not accessible" -        unspecified_fs: "Not specified" -        on_demaond_fs: "On demond service" -        regular_fs: "Regular service" -        number_of_vj: "Total number of vehicle journeys" -        number_of_fs_vj: "Number of on demond vehicle journeys" -        number_of_mrs_vj: "Number of accessible vehicle journeys" -        number_of_non_fs_vj: "Number of non on demond vehicle journeys" -        number_of_non_mrs_vj: "Number of non accessible vehicle journeys" -        number_of_null_fs_vj: "Number of unspecified on demond vehicle journeys" -        number_of_null_mrs_vj: "Number of unspecified accessible vehicle journeys" -        default_fs_msg: "These vehicle journeys are considered as regular" -        group_of_line: "Group of lines" -        comment: "Comments" -        objectid: "Neptune identifier" -        object_version: "Version" -        creation_time: "Created on" -        creator_id: "Created by" -        footnotes: "Footnotes" -  formtastic: -    titles: -      line: -        name: "Only alphanumerical or underscore characters." -        registration_number: "only alphanumerical or underscore characters" -        objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -        number: "" -      neptune: -        line: -          name: "Only alphanumerical or underscore characters." -          registration_number: "only alphanumerical or underscore characters" -          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -          number: "" -      netex: -        line: -          name: "Only alphanumerical or underscore characters." -          registration_number: "only alphanumerical or underscore characters" -          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -          number: "" -      gtfs: -        line: -          name: "Only alphanumerical or underscore characters." -          registration_number: "only alphanumerical or underscore characters" -          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" -          number: "" -      hub: -        line: -          name: "Only alphanumerical or underscore characters. Maximum length = 75." -          registration_number: "Positif integer, unique key, of no more than 8 digits."  -          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 14." -          number: "Only alphanumerical or underscore characters. Maximum length = 6." - -fr: -  lines: -    actions: -      new: "Ajouter une ligne" -      edit: "Modifier cette ligne" -      destroy: "Supprimer cette ligne" -      destroy_confirm: "Etes vous sûr de supprimer cette ligne ?" -      destroy_selection_confirm: "Etes vous sûr de supprimer cette sélection de lignes ?" -      import: "Importer des lignes" -      export_kml: "Export KML de la ligne" -      export_kml_all: "Export KML des lignes" -      export_hub: "Export HUB de la ligne" -      export_hub_all: "Export HUB des lignes" -    new: -      title: "Ajouter une ligne" -    edit: -      title: "Modifier la ligne %{line}" -    show: -      title: "Ligne %{line}" -      itineraries: "Liste des séquences d'arrêts de la ligne" -      group_of_lines: "Groupes de lignes" -    index: -      name_or_number: "Recherche par nom ou indice" -      title: "Lignes" -      no_networks: "Aucun réseaux" -      no_companies: "Aucun transporteurs" -      no_group_of_lines: "Aucun groupes de ligne" -      all_networks: "Tous les réseaux" -      all_companies: "Tous les transporteurs" -      all_group_of_lines: "Tous les groupes de ligne" -      multi_selection: "Sélection multiple" -      multi_selection_enable: "Activer la sélection multiple" -      multi_selection_disable: "Désactiver la sélection multiple" -      delete_selected: "Supprimer les lignes" -      export_selected: "Exporter les lignes" -      select_all: "Tout sélectionner" -      deselect_all: "Tout désélectionner" -      unset: "non défini" -      advanced_search: "Recherche avancée" -      color: "Couleurs" -    form: -      group_of_lines: "Groupes de lignes associés" -      no_group_of_line: "Aucun groupe de lignes" -      several_group_of_lines: "%{count} groupes of lignes" -  activerecord: -    models: -      line: -        zero:  "ligne" -        one:   "ligne" -        other: "lignes" -    attributes: -      line: -        network: "Réseau" -        company: "Transporteur" -        registration_number: "Numéro d'enregistrement" -        name: "Nom" -        published_name: "Nom public" -        number: "Indice" -        transport_mode: "Mode de transport" -        url: "Page web associée" -        color: "Couleur du tracé" -        text_color: "Couleur du texte" -        mobility_restricted_suitability: "Accessibilité PMR" -        flexible_service: "Transport à la demande" -        unspecified_mrs: "Non spécifié" -        accessible: "Accessible" -        not_accessible: "Non accessible" -        unspecified_fs: "Non spécifié" -        on_demaond_fs: "Service à la demande" -        regular_fs: "Service régulier" -        number_of_vj: "Nombre total de courses" -        number_of_fs_vj: "Nombre de courses à la demande" -        number_of_mrs_vj: "Nombre de courses accessibles" -        number_of_non_fs_vj: "Nombre de courses régulières" -        number_of_non_mrs_vj: "Nombre de courses non accessibles" -        number_of_null_fs_vj: "Nombre de courses sans spécification de type de service" -        number_of_null_mrs_vj: "Nombre de courses sans spécification d'accessibilité" -        default_fs_msg: "Ces courses sont considérées régulières" -        group_of_line: "Groupe de lignes" -        comment: "Commentaire" -        objectid: "Identifiant Neptune" -        object_version: "Version" -        creation_time: "Créé le" -        creator_id: "Créé par" -        footnotes: "Notes de bas de page" -  formtastic: -    titles: -      line: -        name: "Caractères autorisés : alphanumériques et 'souligné'." -        registration_number: "caractères autorisés : alphanumériques et 'souligné'" -        objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -        number: "" -      neptune: -        line: -          name: "Caractères autorisés : alphanumériques et 'souligné'." -          registration_number: "caractères autorisés : alphanumériques et 'souligné'" -          objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -          number: "" -      netex: -        line: -          name: "Caractères autorisés : alphanumériques et 'souligné'." -          registration_number: "caractères autorisés : alphanumériques et 'souligné'" -          objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -          number: "" -      gtfs: -        line: -          name: "Caractères autorisés : alphanumériques et 'souligné'." -          registration_number: "caractères autorisés : alphanumériques et 'souligné'" -          objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" -          number: "" -      hub: -        line: -          name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." -          registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres."  -          objectid: "[prefixe]:Line:[clé_unique] caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 14." -          number: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 6." diff --git a/config/locales/lines_en.yml b/config/locales/lines_en.yml new file mode 100644 index 000000000..baaad6bbf --- /dev/null +++ b/config/locales/lines_en.yml @@ -0,0 +1,118 @@ +en: +  lines: +    actions: +      new: "Add a new line" +      edit: "Edit this line" +      destroy: "Remove this line" +      destroy_confirm: "Are you sure you want destroy this line?" +      destroy_selection_confirm: "Are you sure you want destroy those lines?" +      import: "Import lines" +      export_kml: "Export KML line" +      export__kml_all: "Export KML lines" +      export_hub: "Export HUB line" +      export__hub_all: "Export HUB lines" +    new: +      title: "Add a new line" +    edit: +      title: "Update line %{line}" +    show: +      title: "Line %{line}" +      itineraries: "Line's route list" +      group_of_lines: "Groups of lines" +    index: +      title: "Lines" +      name_or_number: "Search by name or number" +      no_networks: "No networks" +      no_companies: "No companies" +      no_group_of_lines: "No group of lines" +      all_networks: "All networks" +      all_companies: "All companies" +      all_group_of_lines: "All group of lines" +      multi_selection: "Multiple selection" +      multi_selection_enable: "Enable multiple selection" +      multi_selection_disable: "Disable multiple selection" +      delete_selected: "Delete lines" +      export_selected: "Export lines" +      select_all: "Select all" +      deselect_all: "Deselect all" +      unset: "undefined" +      advanced_search: "Advanced Search" +      color: "Colors" +    form: +      group_of_lines: "Associated groups of lines" +      no_group_of_line: "No group of line" +      several_group_of_lines: "%{count} groups of lines" +  activerecord: +    models: +      line: +        zero:  "line" +        one:   "line" +        other: "lines" +    attributes: +      line: +        network: "Network" +        company: "Company" +        registration_number: "Registration number" +        name: "Name" +        published_name: "Published name" +        number: "Number" +        transport_mode: "Transport mode" +        url: "Web page" +        color: "Line color" +        text_color: "Text color" +        mobility_restricted_suitability: "PRM accessibility" +        flexible_service: "On demond transportation" +        unspecified_mrs: "Not specified" +        accessible: "Accessible" +        not_accessible: "Not accessible" +        unspecified_fs: "Not specified" +        on_demaond_fs: "On demond service" +        regular_fs: "Regular service" +        number_of_vj: "Total number of vehicle journeys" +        number_of_fs_vj: "Number of on demond vehicle journeys" +        number_of_mrs_vj: "Number of accessible vehicle journeys" +        number_of_non_fs_vj: "Number of non on demond vehicle journeys" +        number_of_non_mrs_vj: "Number of non accessible vehicle journeys" +        number_of_null_fs_vj: "Number of unspecified on demond vehicle journeys" +        number_of_null_mrs_vj: "Number of unspecified accessible vehicle journeys" +        default_fs_msg: "These vehicle journeys are considered as regular" +        group_of_line: "Group of lines" +        comment: "Comments" +        objectid: "Neptune identifier" +        object_version: "Version" +        creation_time: "Created on" +        creator_id: "Created by" +        footnotes: "Footnotes" +        stable_id: External permanent idenifier" +  formtastic: +    titles: +      line: +        name: "" +        registration_number: "only alphanumerical or underscore characters" +        objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +        number: "" +      neptune: +        line: +          name: "" +          registration_number: "only alphanumerical or underscore characters" +          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +          number: "" +      netex: +        line: +          name: "" +          registration_number: "only alphanumerical or underscore characters" +          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +          number: "" +      gtfs: +        line: +          name: "" +          registration_number: "only alphanumerical or underscore characters" +          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +          number: "" +      hub: +        line: +          name: "maximum 75 characters" +          registration_number: "Positif integer, unique key, of no more than 8 digits."  +          objectid: "[prefix]:Line:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 14." +          number: "Only alphanumerical or underscore characters. Maximum length = 6." + diff --git a/config/locales/lines_fr.yml b/config/locales/lines_fr.yml new file mode 100644 index 000000000..3661f6856 --- /dev/null +++ b/config/locales/lines_fr.yml @@ -0,0 +1,117 @@ +fr: +  lines: +    actions: +      new: "Ajouter une ligne" +      edit: "Modifier cette ligne" +      destroy: "Supprimer cette ligne" +      destroy_confirm: "Etes vous sûr de supprimer cette ligne ?" +      destroy_selection_confirm: "Etes vous sûr de supprimer cette sélection de lignes ?" +      import: "Importer des lignes" +      export_kml: "Export KML de la ligne" +      export_kml_all: "Export KML des lignes" +      export_hub: "Export HUB de la ligne" +      export_hub_all: "Export HUB des lignes" +    new: +      title: "Ajouter une ligne" +    edit: +      title: "Modifier la ligne %{line}" +    show: +      title: "Ligne %{line}" +      itineraries: "Liste des séquences d'arrêts de la ligne" +      group_of_lines: "Groupes de lignes" +    index: +      name_or_number: "Recherche par nom ou indice" +      title: "Lignes" +      no_networks: "Aucun réseaux" +      no_companies: "Aucun transporteurs" +      no_group_of_lines: "Aucun groupes de ligne" +      all_networks: "Tous les réseaux" +      all_companies: "Tous les transporteurs" +      all_group_of_lines: "Tous les groupes de ligne" +      multi_selection: "Sélection multiple" +      multi_selection_enable: "Activer la sélection multiple" +      multi_selection_disable: "Désactiver la sélection multiple" +      delete_selected: "Supprimer les lignes" +      export_selected: "Exporter les lignes" +      select_all: "Tout sélectionner" +      deselect_all: "Tout désélectionner" +      unset: "non défini" +      advanced_search: "Recherche avancée" +      color: "Couleurs" +    form: +      group_of_lines: "Groupes de lignes associés" +      no_group_of_line: "Aucun groupe de lignes" +      several_group_of_lines: "%{count} groupes of lignes" +  activerecord: +    models: +      line: +        zero:  "ligne" +        one:   "ligne" +        other: "lignes" +    attributes: +      line: +        network: "Réseau" +        company: "Transporteur" +        registration_number: "Numéro d'enregistrement" +        name: "Nom" +        published_name: "Nom public" +        number: "Indice" +        transport_mode: "Mode de transport" +        url: "Page web associée" +        color: "Couleur du tracé" +        text_color: "Couleur du texte" +        mobility_restricted_suitability: "Accessibilité PMR" +        flexible_service: "Transport à la demande" +        unspecified_mrs: "Non spécifié" +        accessible: "Accessible" +        not_accessible: "Non accessible" +        unspecified_fs: "Non spécifié" +        on_demaond_fs: "Service à la demande" +        regular_fs: "Service régulier" +        number_of_vj: "Nombre total de courses" +        number_of_fs_vj: "Nombre de courses à la demande" +        number_of_mrs_vj: "Nombre de courses accessibles" +        number_of_non_fs_vj: "Nombre de courses régulières" +        number_of_non_mrs_vj: "Nombre de courses non accessibles" +        number_of_null_fs_vj: "Nombre de courses sans spécification de type de service" +        number_of_null_mrs_vj: "Nombre de courses sans spécification d'accessibilité" +        default_fs_msg: "Ces courses sont considérées régulières" +        group_of_line: "Groupe de lignes" +        comment: "Commentaire" +        objectid: "Identifiant Neptune" +        object_version: "Version" +        creation_time: "Créé le" +        creator_id: "Créé par" +        footnotes: "Notes de bas de page" +        stable_id: "Identifiant externe pérenne" +  formtastic: +    titles: +      line: +        name: "" +        registration_number: "caractères autorisés : alphanumériques et 'souligné'" +        objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +        number: "" +      neptune: +        line: +          name: "" +          registration_number: "caractères autorisés : alphanumériques et 'souligné'" +          objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +          number: "" +      netex: +        line: +          name: "" +          registration_number: "caractères autorisés : alphanumériques et 'souligné'" +          objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +          number: "" +      gtfs: +        line: +          name: "" +          registration_number: "caractères autorisés : alphanumériques et 'souligné'" +          objectid: "[prefixe]:Line:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +          number: "" +      hub: +        line: +          name: "maximum 75 caractères" +          registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres."  +          objectid: "[prefixe]:Line:[clé_unique] caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 14." +          number: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 6." diff --git a/config/locales/networks.yml b/config/locales/networks.yml index 127d2b920..c6c3eb401 100644 --- a/config/locales/networks.yml +++ b/config/locales/networks.yml @@ -27,7 +27,7 @@ en:          comment: "Comments"          version_date: "Date of this network's version"          description: "Description" -        source_type: "Source type" +        source_type_name: "Source type"          source_name: "Source name"          source_identifier: "Source identifier"          objectid: "Neptune identifier" @@ -37,29 +37,29 @@ en:    formtastic:      titles:        network: -        name: "Only alphanumerical or underscore characters." +        name: ""          registration_number: "only alphanumerical or underscore characters" -        objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +        objectid: "[prefix]:PTNetwork:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        neptune:          network: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters" -          objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +          objectid: "[prefix]:PTNetwork:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        netex:          network: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters" -          objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +          objectid: "[prefix]:PTNetwork:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        gtfs:          network: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters" -          objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character" +          objectid: "[prefix]:PTNetwork:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        hub:          network: -          name: "Only alphanumerical or underscore characters. Maximum length = 75." +          name: "maximum 75 characters"            registration_number: "Positif integer, unique key, of no more than 8 digits."  -          objectid: "[prefix]:GroupOfLine:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 3." +          objectid: "[prefix]:PTNetwork:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 3."  fr:    networks: @@ -90,7 +90,7 @@ fr:          comment: "Commentaire"          version_date: "Date de version"          description: "Description" -        source_type: "Type de système origine" +        source_type_name: "Type de système origine"          source_name: "Nom du système origine"          source_identifier: "Identifiant du système origine"                  objectid: "Identifiant Neptune" @@ -100,27 +100,27 @@ fr:    formtastic:      titles:        network: -        name: "Caractères autorisés : alphanumériques et 'souligné'." +        name: ""          registration_number: "caractères autorisés : alphanumériques et 'souligné'"  -        objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +        objectid: "[prefixe]:PTNetwork:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        neptune:          network: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"  -          objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +          objectid: "[prefixe]:PTNetwork:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        netex:          network: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"  -          objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +          objectid: "[prefixe]:PTNetwork:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        gtfs:          network: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"  -          objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'" +          objectid: "[prefixe]:PTNetwork:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        hub:          network: -          name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." +          name: "maximum 75 caractères"            registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres."  -          objectid: "[prefixe]:GroupOfLine:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 3." +          objectid: "[prefixe]:PTNetwork:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 3." diff --git a/config/locales/source_types.yml b/config/locales/source_types.yml new file mode 100644 index 000000000..8e419c9bd --- /dev/null +++ b/config/locales/source_types.yml @@ -0,0 +1,27 @@ +en: +  source_types: +    name: "Source type" +    label: +      public_and_private_utilities: "public and private utilities" +      road_authorities: "road authorities" +      transit_operator: "transit operator" +      public_transport: "public transport" +      passenger_transport_coordinating_authority: "passenger transport coordinating authority" +      travel_information_service_provider: "travel information service provider" +      travel_agency: "travel_agency" +      individual_subject_of_travel_itinerary: "individual subject of travel itinerary" +      other_information: "other information" + +fr: +  source_types: +    name: "Type de source" +    label: +      public_and_private_utilities: "Service public ou privé" +      road_authorities: "Autorité routière" +      transit_operator: "Exploitant de transport public" +      public_transport: "Transport public" +      passenger_transport_coordinating_authority: "Autorité organisatrice de transport public" +      travel_information_service_provider: "Opérateur de voyage (voyagiste/tour operator ...)" +      travel_agency: "Agence de voyage" +      individual_subject_of_travel_itinerary: "Voyageur individuel" +      other_information: "Autre source d'information" diff --git a/config/locales/stop_areas.yml b/config/locales/stop_areas.yml index 227a3dbb6..36d18d70d 100644 --- a/config/locales/stop_areas.yml +++ b/config/locales/stop_areas.yml @@ -111,7 +111,7 @@ en:    formtastic:      titles:        stop_area: -        name: "Only alphanumerical or underscore characters." +        name: ""          registration_number: "only alphanumerical or underscore characters"           objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"          nearest_topic_name: "" @@ -122,7 +122,7 @@ en:          projection_xy: "x,y in secondary referential, dot for decimal separator"        neptune:          stop_area: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters"             objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"            nearest_topic_name: "" @@ -133,7 +133,7 @@ en:            projection_xy: "x,y in secondary referential, dot for decimal separator"        netex:          stop_area: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters"             objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"            nearest_topic_name: "" @@ -144,7 +144,7 @@ en:            projection_xy: "x,y in secondary referential, dot for decimal separator"        gtfs:          stop_area: -          name: "Only alphanumerical or underscore characters." +          name: ""            registration_number: "only alphanumerical or underscore characters"             objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"            nearest_topic_name: "" @@ -155,13 +155,13 @@ en:            projection_xy: "x,y in secondary referential, dot for decimal separator"        hub:          stop_area: -          name: "Only alphanumerical or underscore characters. Maximum length = 75." +          name: "Maximum length = 255."            registration_number: "Positif integer, unique key, of no more than 8 digits. Mandatory for physical stops."             objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 12." -          nearest_topic_name: "Only alphanumerical or underscore characters. Maximum length = 255 for logical stops and 60 for physical stops." -          city_name: "Only alphanumerical or underscore characters. Mandatory for physical stops. Maximum length = 75." +          nearest_topic_name: "Maximum length = 255 for logical stops and 60 for physical stops." +          city_name: "Mandatory for physical stops. Maximum length = 75."            zip_code: "Positif integer 5 digits. Mandatory for physical stops."  -          comment: "Only alphanumerical or underscore characters. Maximum length = 255." +          comment: "Maximum length = 255."            coordinates: "Coordinates are mandatory."            projection_xy: "x,y in secondary referential, dot for decimal separator" @@ -280,7 +280,7 @@ fr:    formtastic:      titles:        stop_area: -        name: "Caractères autorisés : alphanumériques et 'souligné'." +        name: ""          registration_number: "caractères autorisés : alphanumériques et 'souligné'"           objectid: "[prefixe]:StopArea:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"          nearest_topic_name: "" @@ -291,7 +291,7 @@ fr:          projection_xy: "x,y dans le référentiel secondaire, le séparateur de décimales est 'point'"        neptune:          stop_area: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"             objectid: "[prefixe]:StopArea:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"            nearest_topic_name: "" @@ -302,7 +302,7 @@ fr:            projection_xy: "x,y dans le référentiel secondaire, le séparateur de décimales est 'point'"        netex:          stop_area: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"             objectid: "[prefixe]:StopArea:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"            nearest_topic_name: "" @@ -313,7 +313,7 @@ fr:            projection_xy: "x,y dans le référentiel secondaire, le séparateur de décimales est 'point'"        gtfs:          stop_area: -          name: "Caractères autorisés : alphanumériques et 'souligné'." +          name: ""            registration_number: "caractères autorisés : alphanumériques et 'souligné'"             objectid: "[prefixe]:StopArea:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"            nearest_topic_name: "" @@ -324,13 +324,13 @@ fr:            projection_xy: "x,y dans le référentiel secondaire, le séparateur de décimales est 'point'"        hub:          stop_area: -          name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." +          name: "Longueur maximale = 75."            registration_number: "Entier positif, clé unique, d'un maximum de 8 chiffres. Obligatoire pour les arrêts physiques."             objectid: "[prefixe]:StopArea:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 12." -          nearest_topic_name: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 255 pour les arrêts logiques et 60 pour les arrêts physiques." -          city_name: "Caractères autorisés : alphanumériques et 'souligné'. Obligatoire pour les arrêts physiques. Longueur maximale = 80." +          nearest_topic_name: "Longueur maximale = 255 pour les arrêts logiques et 60 pour les arrêts physiques." +          city_name: "Obligatoire pour les arrêts physiques. Longueur maximale = 80."            zip_code: "Entier positif de 8 chiffres. Obligatoire pour les arrêts physiques."  -          comment: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 255." +          comment: "Longueur maximale = 255."            coordinates: "Les coordonnées sont obligatoires."            projection_xy: "x,y dans le référentiel secondaire, le séparateur de décimales est 'point'" diff --git a/config/locales/time_tables.yml b/config/locales/time_tables.yml index b0d469297..b9eb3babf 100644 --- a/config/locales/time_tables.yml +++ b/config/locales/time_tables.yml @@ -84,23 +84,23 @@ en:    formtastic:      titles:        time_table: -        comment: "Only alphanumerical or underscore characters." +        comment: ""          objectid: "[prefix]:Timetable:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        neptune:          time_table: -          comment: "Only alphanumerical or underscore characters." +          comment: ""            objectid: "[prefix]:Timetable:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        netex:          time_table: -          comment: "Only alphanumerical or underscore characters." +          comment: ""            objectid: "[prefix]:Timetable:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        gtfs:          time_table: -          comment: "Only alphanumerical or underscore characters." +          comment: ""            objectid: "[prefix]:Timetable:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"        hub:          time_table: -          comment: "Only alphanumerical or underscore characters. Maximum length = 75." +          comment: "Maximum length = 75."            objectid: "[prefix]:Timetable:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character. Maximum length of the unique key = 6."      placeholders:        time_table: @@ -196,23 +196,23 @@ fr:    formtastic:      titles:        time_table: -        comment: "Caractères autorisés : alphanumériques et 'souligné'." +        comment: ""          objectid: "[prefixe]:Timetable:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        neptune:          time_table: -          comment: "Caractères autorisés : alphanumériques et 'souligné'." +          comment: ""            objectid: "[prefixe]:Timetable:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        netex:          time_table: -          comment: "Caractères autorisés : alphanumériques et 'souligné'." +          comment: ""            objectid: "[prefixe]:Timetable:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        gtfs:          time_table: -          comment: "Caractères autorisés : alphanumériques et 'souligné'." +          comment: ""            objectid: "[prefixe]:Timetable:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'"        hub:          time_table: -          comment: "Caractères autorisés : alphanumériques et 'souligné'. Longueur maximale = 75." +          comment: "Longueur maximale = 75."            objectid: "[prefixe]:Timetable:[clé_unique]  caractères autorisés : alphanumériques et 'souligné' pour le préfixe, la clé unique accepte en plus le 'moins'. Longueur maximale de la clé unique = 6."      placeholders:        time_table: diff --git a/config/locales/vehicle_journeys.yml b/config/locales/vehicle_journeys.yml index 9b872b222..3b18447f4 100644 --- a/config/locales/vehicle_journeys.yml +++ b/config/locales/vehicle_journeys.yml @@ -78,7 +78,7 @@ en:          accessible: "Accessible"          not_accessible: "Not accessible"          unspecified_fs: "Not specified" -        on_demaond_fs: "On demond service" +        on_demand_fs: "On demand service"          regular_fs: "Regular service"          published_journey_name: "Published Name"          published_journey_identifier: "Published Identifier" @@ -192,7 +192,7 @@ fr:          accessible: "Accessible"          not_accessible: "Non accessible"          unspecified_fs: "Non spécifié" -        on_demaond_fs: "Service à la demande" +        on_demand_fs: "Service à la demande"          regular_fs: "Service régulier"          published_journey_name: "Nom public"          published_journey_identifier: "Identifiant public" diff --git a/db/migrate/20150922095511_add_stable_id_to_line.ninoxe_engine.rb b/db/migrate/20150922095511_add_stable_id_to_line.ninoxe_engine.rb new file mode 100644 index 000000000..847a15668 --- /dev/null +++ b/db/migrate/20150922095511_add_stable_id_to_line.ninoxe_engine.rb @@ -0,0 +1,8 @@ +# This migration comes from ninoxe_engine (originally 20150922093109) +class AddStableIdToLine < ActiveRecord::Migration +  def change +    change_table :lines do |t| +      t.string :stable_id +    end +  end +end diff --git a/db/schema.rb b/db/schema.rb index 97bf1836e..b68c3190a 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150526081746) do +ActiveRecord::Schema.define(version: 20150922095511) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" @@ -93,7 +93,7 @@ ActiveRecord::Schema.define(version: 20150526081746) do    end    add_index "companies", ["objectid"], name: "companies_objectid_key", unique: true, using: :btree -  add_index "companies", ["registration_number"], name: "companies_registration_number_key", unique: true, using: :btree +  add_index "companies", ["registration_number"], name: "companies_registration_number_key", using: :btree    create_table "connection_links", force: true do |t|      t.integer  "departure_id",                           limit: 8 @@ -237,10 +237,11 @@ ActiveRecord::Schema.define(version: 20150526081746) do      t.string   "url"      t.string   "color",                           limit: 6      t.string   "text_color",                      limit: 6 +    t.string   "stable_id"    end    add_index "lines", ["objectid"], name: "lines_objectid_key", unique: true, using: :btree -  add_index "lines", ["registration_number"], name: "lines_registration_number_key", unique: true, using: :btree +  add_index "lines", ["registration_number"], name: "lines_registration_number_key", using: :btree    create_table "networks", force: true do |t|      t.string   "objectid",            null: false @@ -258,7 +259,7 @@ ActiveRecord::Schema.define(version: 20150526081746) do    end    add_index "networks", ["objectid"], name: "networks_objectid_key", unique: true, using: :btree -  add_index "networks", ["registration_number"], name: "networks_registration_number_key", unique: true, using: :btree +  add_index "networks", ["registration_number"], name: "networks_registration_number_key", using: :btree    create_table "organisations", force: true do |t|      t.string   "name" diff --git a/lib/ninoxe_extension/hub/company_restrictions.rb b/lib/ninoxe_extension/hub/company_restrictions.rb index 190b63cd2..6cb12f0b6 100644 --- a/lib/ninoxe_extension/hub/company_restrictions.rb +++ b/lib/ninoxe_extension/hub/company_restrictions.rb @@ -9,7 +9,8 @@ module NinoxeExtension::Hub          # HUB-7          g.validate :specific_objectid          # HUB-8 -        g.validates_format_of :name, :with => %r{\A[\w]{1,75}\z} +        #g.validates_format_of :name, :with => %r{\A[\w ]{1,75}\z} +        g.validates_length_of :name, :minimum => 1, :maximum => 75          # HUB-9          g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z}          g.validates_uniqueness_of :registration_number diff --git a/lib/ninoxe_extension/hub/connection_link_restrictions.rb b/lib/ninoxe_extension/hub/connection_link_restrictions.rb index bf433379b..600222455 100644 --- a/lib/ninoxe_extension/hub/connection_link_restrictions.rb +++ b/lib/ninoxe_extension/hub/connection_link_restrictions.rb @@ -6,9 +6,9 @@ module NinoxeExtension::Hub      included do        include ObjectidRestrictions -      with_options if: :hub_restricted? do |jp| +      with_options if: :hub_restricted? do |cl|          # HUB-34 -        jp.validates :link_distance, :numericality => { :max => 10000.0 } +        cl.validates :link_distance, :numericality => { :max => 10000.0 }        end      end    end diff --git a/lib/ninoxe_extension/hub/group_of_line_restrictions.rb b/lib/ninoxe_extension/hub/group_of_line_restrictions.rb index d5de71ce0..f8370faf1 100644 --- a/lib/ninoxe_extension/hub/group_of_line_restrictions.rb +++ b/lib/ninoxe_extension/hub/group_of_line_restrictions.rb @@ -10,7 +10,8 @@ module NinoxeExtension::Hub          # HUB-11          g.validate :specific_objectid          # HUB-12 -        g.validates_format_of :name, :with => %r{\A[\w]{1,75}\z} +        #g.validates_format_of :name, :with => %r{\A[\w ]{1,75}\z} +        g.validates_length_of :name, :minimum => 1, :maximum => 75          # HUB-13          g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z}          g.validates_uniqueness_of :registration_number diff --git a/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb b/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb index 448be9665..d4e881d1f 100644 --- a/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb +++ b/lib/ninoxe_extension/hub/journey_pattern_restrictions.rb @@ -12,7 +12,8 @@ module NinoxeExtension::Hub          # HUB-40          jp.validates :registration_number, :numericality => { :less_than => 10 ** 8 }          # HUB-41 -        jp.validates_format_of :name, :with => %r{\A[\w]{0,75}\z} +        #jp.validates_format_of :name, :with => %r{\A[\w ]{0,75}\z} +        jp.validates_length_of :name, :maximum => 75, :allow_blank => true, :allow_nil => true        end      end      def specific_objectid diff --git a/lib/ninoxe_extension/hub/line_restrictions.rb b/lib/ninoxe_extension/hub/line_restrictions.rb index 616d1fd52..9d8f22112 100644 --- a/lib/ninoxe_extension/hub/line_restrictions.rb +++ b/lib/ninoxe_extension/hub/line_restrictions.rb @@ -14,7 +14,8 @@ module NinoxeExtension::Hub          # HUB-16          l.validates_format_of :number, :with => %r{\A[\w]{1,6}\z}          # HUB-17 -        l.validates_format_of :name, :with => %r{\A[\w]{0,75}\z} +        #l.validates_format_of :name, :with => %r{\A[\w ]{0,75}\z} +        l.validates_length_of :name, :maximum => 75          # HUB-21          l.validates :registration_number, :numericality => { :less_than => 10 ** 8 }          # HUB-22 diff --git a/lib/ninoxe_extension/hub/network_restrictions.rb b/lib/ninoxe_extension/hub/network_restrictions.rb index 7966736ec..b18a6c033 100644 --- a/lib/ninoxe_extension/hub/network_restrictions.rb +++ b/lib/ninoxe_extension/hub/network_restrictions.rb @@ -5,14 +5,15 @@ module NinoxeExtension::Hub      included do        include ObjectidRestrictions -      with_options if: :hub_restricted? do |g| +      with_options if: :hub_restricted? do |n|          # HUB-3 -        g.validate :specific_objectid +        n.validate :specific_objectid          # HUB-4 -        g.validates_format_of :name, :with => %r{\A[\w]{1,75}\z} +        #n.validates_format_of :name, :with => %r{\A[\w ]{1,75}\z} +        n.validates_length_of :name, :minimum => 1, :maximum => 75          # HUB-5 -        g.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} -        g.validates_uniqueness_of :registration_number +        n.validates_format_of :registration_number, :with => %r{\A[\d]{1,8}\z} +        n.validates_uniqueness_of :registration_number        end      end      def specific_objectid diff --git a/lib/ninoxe_extension/hub/objectid_restrictions.rb b/lib/ninoxe_extension/hub/objectid_restrictions.rb index a84e1428f..1fcdb94cb 100644 --- a/lib/ninoxe_extension/hub/objectid_restrictions.rb +++ b/lib/ninoxe_extension/hub/objectid_restrictions.rb @@ -22,7 +22,7 @@ module NinoxeExtension::Hub::ObjectidRestrictions        return unless hub_restricted?        return true unless third_part_objectid -      likes = Chouette::Line.where( "objectid LIKE ?", "%:#{self.third_part_objectid}" ) +      likes = self.class.where( "objectid LIKE ?", "%:#{self.third_part_objectid}" )        likes.size.zero? || ( likes.size==1 && likes.first.id==self.id)      end  end diff --git a/lib/ninoxe_extension/hub/stop_area_restrictions.rb b/lib/ninoxe_extension/hub/stop_area_restrictions.rb index 8701c291c..676dac05e 100644 --- a/lib/ninoxe_extension/hub/stop_area_restrictions.rb +++ b/lib/ninoxe_extension/hub/stop_area_restrictions.rb @@ -10,10 +10,10 @@ module NinoxeExtension::Hub        self.area_type=="CommercialStopPoint"      end      def physical_hub_restricted? -      hub_restricted? && commercial? +      hub_restricted? && physical?      end      def commercial_hub_restricted? -      hub_restricted? && physical? +      hub_restricted? && commercial?      end      def commercial_and_physical_hub_restricted?        physical_hub_restricted? || commercial_hub_restricted? @@ -27,28 +27,34 @@ module NinoxeExtension::Hub        with_options if: :commercial_and_physical_hub_restricted? do |sa| -      # HUB-23 +        # HUB-23          sa.validate :specific_objectid -        sa.validates_format_of :name, :with => %r{\A[\w]{1,75}\z} +        #sa.validates_format_of :name, :with => %r{\A[\w ]{1,75}\z} +        sa.validates_length_of :name, :minimum => 1, :maximum => 75        end +        with_options if: :commercial_hub_restricted? do |sa|          # HUB-24 -        validates_format_of :nearest_topic_name, :with => %r{\A[\w]{0,255}\z} +        #sa.validates_format_of :nearest_topic_name, :with => %r{\A[\w ]{0,255}\z} +        sa.validates_length_of :nearest_topic_name, :maximum => 255, :allow_blank => true, :allow_nil => true        end        with_options if: :physical_hub_restricted? do |sa|          # HUB-25 -        sa.validates_format_of :nearest_topic_name, :with => %r{\A[\w]{0,60}\z} +        #sa.validates_format_of :nearest_topic_name, :with => %r{\A[\w ]{0,60}\z} +        sa.validates_length_of :nearest_topic_name, :maximum => 60, :allow_blank => true, :allow_nil => true          # HUB-28          sa.validates_presence_of :longitude          sa.validates_presence_of :latitude          # HUB-29 -        sa.validates_format_of :city_name, :with => %r{\A[\w]{1,80}\z} +        #sa.validates_format_of :city_name, :with => %r{\A[\w ]{1,80}\z} +        sa.validates_length_of :city_name, :minimum => 1, :maximum => 80 +          # HUB-30          sa.validates_format_of :zip_code, :with => %r{\A[\d]{5}\z}          # HUB-31 -        sa.validates_format_of :comment, :with => %r{\A[\w]{0,255}\z} -        # HUB-32 +        # sa.validates_format_of :comment, :with => %r{\A[\w ]{0,255}\z} +        sa.validates_length_of :comment, :maximum => 255, :allow_blank => true, :allow_nil => true          sa.validates_format_of :registration_number, :with => %r{\A[\w]{1,8}\z}, :allow_blank => true, :allow_nil => true        end      end diff --git a/lib/ninoxe_extension/hub/time_table_restrictions.rb b/lib/ninoxe_extension/hub/time_table_restrictions.rb index 591810f42..36e6846ae 100644 --- a/lib/ninoxe_extension/hub/time_table_restrictions.rb +++ b/lib/ninoxe_extension/hub/time_table_restrictions.rb @@ -6,11 +6,12 @@ module NinoxeExtension::Hub      included do        include ObjectidRestrictions -      with_options if: :hub_restricted? do |jp| +      with_options if: :hub_restricted? do |tt|          # HUB-44 -        jp.validate :specific_objectid +        tt.validate :specific_objectid          # HUB-45 -        jp.validates_format_of :comment, :with => %r{\A[\w]{0,75}\z} +        #tt.validates_format_of :comment, :with => %r{\A[\w ]{0,75}\z} +        tt.validates_length_of :comment, :maximum => 75, :allow_blank => true, :allow_nil => true        end      end      def specific_objectid diff --git a/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb b/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb index 151123a43..b1a493207 100644 --- a/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb +++ b/lib/ninoxe_extension/hub/vehicle_journey_restrictions.rb @@ -7,8 +7,8 @@ module NinoxeExtension::Hub        include ObjectidRestrictions        # HUB-42 -      with_options if: :hub_restricted? do |jp| -        jp.validate :specific_objectid +      with_options if: :hub_restricted? do |vj| +        vj.validate :specific_objectid        end      end      def specific_objectid | 
