diff options
| author | Michel Etienne | 2015-01-09 17:40:47 +0100 | 
|---|---|---|
| committer | Michel Etienne | 2015-01-09 17:40:47 +0100 | 
| commit | 4574ad2fb9d1622396d86aa26074930f5cfa5c16 (patch) | |
| tree | 29fd5dd7a482dfe621a173f8e37a9699206c8842 | |
| parent | 83f9d8cf48fb832b43f0ea08d6ee53eef1be734a (diff) | |
| download | chouette-core-4574ad2fb9d1622396d86aa26074930f5cfa5c16.tar.bz2 | |
add tests for hub export
| -rw-r--r-- | CHANGELOG.md | 6 | ||||
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | app/helpers/rule_parameter_sets_helper.rb | 5 | ||||
| -rw-r--r-- | app/helpers/users_helper.rb | 32 | ||||
| -rw-r--r-- | app/views/help/group_of_lines.textile | 1 | ||||
| -rw-r--r-- | app/views/help/index.textile | 2 | ||||
| -rw-r--r-- | app/views/help/routes.textile | 16 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/_form.html.erb | 3 | ||||
| -rw-r--r-- | app/views/rule_parameter_sets/show.html.erb | 10 | ||||
| -rw-r--r-- | config/environments/production.rb | 2 | ||||
| -rw-r--r-- | config/locales/compliance_check_results.yml | 96 | 
11 files changed, 112 insertions, 67 deletions
| diff --git a/CHANGELOG.md b/CHANGELOG.md index a854ae4b9..2f906e5a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +# Version 2.5.2 (09/01/15) +* Nouvelles foctionnalités +  * Amélioration de l'export Hub +  * Ajout de points de contrôle pour la validation +  * Ajouts de champs pour les échanges Hub  +  # Version 2.5.1 (14/11/14)  * Nouvelles foctionnalités    * Reprise des imports/exports GTFS @@ -65,9 +65,9 @@ Assume Linux user is myuser and its group mygroup (that user is the one who star  sudo mkdir -p /usr/local/opt/chouette-command/  sudo chown -R myuser:mygroup /usr/local/opt/chouette-command/  cd /usr/local/opt/chouette-command/ -wget http://maven.chouette.cityway.fr/fr/certu/chouette/chouette-gui-command/2.5.1/chouette-gui-command-2.5.1.zip -unzip chouette-gui-command-2.5.1.zip -cd chouette-cmd_2.5.1 +wget http://maven.chouette.cityway.fr/fr/certu/chouette/chouette-gui-command/2.5.2/chouette-gui-command-2.5.2.zip +unzip chouette-gui-command-2.5.2.zip +cd chouette-cmd_2.5.2  sudo chmod a+w .  ``` diff --git a/app/helpers/rule_parameter_sets_helper.rb b/app/helpers/rule_parameter_sets_helper.rb index 8485b63ca..538a5cddd 100644 --- a/app/helpers/rule_parameter_sets_helper.rb +++ b/app/helpers/rule_parameter_sets_helper.rb @@ -13,6 +13,11 @@ module RuleParameterSetsHelper      return t("rule_parameter_sets.labels.lower_char") if value == "4"    end +  def boolean_value(value) +    return t("true") if value == "1" +    t "false" +  end +    end diff --git a/app/helpers/users_helper.rb b/app/helpers/users_helper.rb index ea5f41fb7..11fd7af34 100644 --- a/app/helpers/users_helper.rb +++ b/app/helpers/users_helper.rb @@ -4,13 +4,33 @@ module UsersHelper        image_tag user_image(user), :alt => "", :class => "preview", :width => size, :height => size    end -  def user_default_avatar -    return "#{authenticated_root_url}#{image_path('icons/user.png')}" if Rails.application.config.relative_url_root.blank? +#  def user_default_avatar +#    return "#{authenticated_root_url}#{image_path('icons/user.png')}" if Rails.application.config.relative_url_root.blank? +#   relative_url_root = Rails.application.config.relative_url_root.gsub( /\//, '') +#    "#{authenticated_root_url}#{image_path('icons/user.png')}". +#      sub( Regexp.new("/#{relative_url_root}/#{relative_url_root}/"), "/#{relative_url_root}/"). +#      sub( Regexp.new("/#{relative_url_root}//#{relative_url_root}/"), "/#{relative_url_root}/") +#  end -    relative_url_root = Rails.application.config.relative_url_root.gsub( /\//, '') -    "#{authenticated_root_url}#{image_path('icons/user.png')}". -      sub( Regexp.new("/#{relative_url_root}/#{relative_url_root}/"), "/#{relative_url_root}/"). -      sub( Regexp.new("/#{relative_url_root}//#{relative_url_root}/"), "/#{relative_url_root}/") +  def gravatar_hash(user) +    Digest::MD5.hexdigest( user.email) +  end +  def gravatar_url( user) +    "http://www.gravatar.com/avatar/#{gravatar_hash(user)}?d=404" +  end +  def user_image(user) +    begin +      gravatar_resource = RestClient.get( gravatar_url( user)){|response, request, result| response } +    rescue +      # Happens if network is not available +      return 'icons/user.png' +    end +    if gravatar_resource.code == 404 +      # Happens if user has not registered to gravatar +      'icons/user.png' +    else +      gravatar_url( user) +    end    end  end diff --git a/app/views/help/group_of_lines.textile b/app/views/help/group_of_lines.textile index 9ab7d440a..8fd05c7ea 100644 --- a/app/views/help/group_of_lines.textile +++ b/app/views/help/group_of_lines.textile @@ -46,6 +46,7 @@ h3. Attributs d'un groupe de lignes  * Nom : nom du groupe de lignes 
  * Commentaire : Champs de saisie libre pour identifier l'usage du groupe de lignes.
 +* Numéro d'enregistrement : Le numéro d'enregistrement est unique. Aucune règle de nommage ne s'applique sur ce numéro. Celui-ci doit être unique sur l'ensemble des groupes de lignes.
 diff --git a/app/views/help/index.textile b/app/views/help/index.textile index 19eeb63e2..b0d2fddcf 100644 --- a/app/views/help/index.textile +++ b/app/views/help/index.textile @@ -28,7 +28,7 @@ h4. Version 2.5.2  * Nouvelles foctionnalités :  ** Ajout des particularités de monté/descente aux arrêts d'une séquence -** Ajout de tests sur les données pour l'export +** Ajout de points de contrôle sur les données pour l'export  h4. Version 2.5.1 diff --git a/app/views/help/routes.textile b/app/views/help/routes.textile index eb1093340..0396898ae 100644 --- a/app/views/help/routes.textile +++ b/app/views/help/routes.textile @@ -47,6 +47,22 @@ On peut modifier une séquence d'arrêts en cliquant sur le bouton de modificati  !2014-10-31_112543.png! 
  Modification des arrêts d'une séquence
 +h3. Contraintes de montée - descente
 +
 +On peut ajouter des règles de montée ou de descente aux arrêts de la séquence d'arrêt (interdit ou à la demande); ces règles s'appliquent à toutes les courses de la séquence d'arrêt
 +
 +Les règles sont : 
 +
 +* Non défini (par défaut)
 +* Montée autorisée
 +* Montée interdite
 +* Montée sur réservation
 +* Montée sur demande au conducteur
 +* Descente autorisée
 +* Descente interdite
 +* Descente sur réservation
 +* Descente sur demande au conducteur
 +
  h3. Supprimer une séquence d'arrêts
  Il est possible de supprimer une séquence d'arrêts depuis la page de la ligne. Chaque élément de la liste des séquences d'arrêts en bas de la page est dotée d'un pictogramme de suppression. Il est à noter que la suppression de la séquence d'arrêts ne supprime par les arrêts qu'elle contient. 
 diff --git a/app/views/rule_parameter_sets/_form.html.erb b/app/views/rule_parameter_sets/_form.html.erb index 905e7f691..abe4b0c96 100644 --- a/app/views/rule_parameter_sets/_form.html.erb +++ b/app/views/rule_parameter_sets/_form.html.erb @@ -15,9 +15,6 @@      <%= form.input :inter_stop_duration_max, :as => :number %>      <%= form.input :facility_stop_area_distance_max, :as => :number %> -    <%= form.input :vehicle_journey_number_min, :as => :number %> -    <%= form.input :vehicle_journey_number_max, :as => :number %> -          <%= form.input :check_lines_in_groups, :as => :boolean %>      <%= form.input :check_line_routes, :as => :boolean %>      <%= form.input :check_stop_parent, :as => :boolean %> diff --git a/app/views/rule_parameter_sets/show.html.erb b/app/views/rule_parameter_sets/show.html.erb index 810730e50..e86aa47ac 100644 --- a/app/views/rule_parameter_sets/show.html.erb +++ b/app/views/rule_parameter_sets/show.html.erb @@ -71,27 +71,27 @@      <p>        <label><%= RuleParameterSet.human_attribute_name("check_lines_in_groups") %>: </label> -      <%= @rule_parameter_set.check_lines_in_groups ? t("true") : t("false") %> +      <%= boolean_value(@rule_parameter_set.check_lines_in_groups)%>      </p>      <p>        <label><%= RuleParameterSet.human_attribute_name("check_line_routes") %>: </label> -      <%= @rule_parameter_set.check_line_routes ? t("true") : t("false") %> +      <%= boolean_value(@rule_parameter_set.check_line_routes)  %>      </p>      <p>        <label><%= RuleParameterSet.human_attribute_name("check_stop_parent") %>: </label> -      <%= @rule_parameter_set.check_stop_parent ? t("true") : t("false") %> +      <%= boolean_value(@rule_parameter_set.check_stop_parent)  %>      </p>      <p>        <label><%= RuleParameterSet.human_attribute_name("check_connection_link_on_physical") %>: </label> -      <%= @rule_parameter_set.check_allowed_transport_modes ? t("true") : t("false") %> +      <%= boolean_value(@rule_parameter_set.check_connection_link_on_physical) %>      </p>      </p>        <label><%= RuleParameterSet.human_attribute_name("check_allowed_transport_modes") %>: </label> -      <%= @rule_parameter_set.check_allowed_transport_modes ? t("true") : t("false") %> +      <%= boolean_value(@rule_parameter_set.check_allowed_transport_modes) %>      </p> diff --git a/config/environments/production.rb b/config/environments/production.rb index a320dc448..d81fa354c 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -152,7 +152,7 @@ ChouetteIhm::Application.configure do    # paths for external resources    config.to_prepare do      Devise::Mailer.layout "mailer" -    Chouette::Command.command = ENV['CHOUETTE_GUI_COMMAND'].nil? ? "/usr/local/opt/chouette-command/chouette-cmd_2.5.1/chouette" : ENV['CHOUETTE_GUI_COMMAND'] +    Chouette::Command.command = ENV['CHOUETTE_GUI_COMMAND'].nil? ? "/usr/local/opt/chouette-command/chouette-cmd_2.5.2/chouette" : ENV['CHOUETTE_GUI_COMMAND']      ImportTask.root = "/var/lib/chouette/imports"      Export.root = "/var/lib/chouette/exports"    end diff --git a/config/locales/compliance_check_results.yml b/config/locales/compliance_check_results.yml index 178fb4f13..dd8c5ed5d 100644 --- a/config/locales/compliance_check_results.yml +++ b/config/locales/compliance_check_results.yml @@ -142,42 +142,42 @@ en:        detail_3_facility_1: "L'équipement %{name} (%{objectId}) n'est pas géolocalisé"        detail_3_facility_2: "L'équipement %{name} (%{objectId}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{distance} > %{distanceLimit}" -      detail_4_network_1_min_size: "L'attribut %{column} du réseau %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_network_1_max_size: "L'attribut %{column} du réseau %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_network_1_min_size: "L'attribut %{column} du réseau %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_network_1_max_size: "L'attribut %{column} du réseau %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_network_1_pattern: "L'attribut %{column} du réseau %{objectId} (%{value}) n'est pas au bon format "        detail_4_network_1_unique: "L'attribut %{column} du réseau %{objectId} a une valeur partagée avec le réseau %{alternateId}" -      detail_4_company_1_min_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_company_1_max_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_company_1_min_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_company_1_max_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_company_1_pattern: "L'attribut %{column} du transporteur %{objectId} (%{value}) n'est pas au bon format "        detail_4_company_1_unique: "L'attribut %{column} du transporteur %{objectId} a une valeur partagée avec le transporteur  %{alternateId}" -      detail_4_groupofline_1_min_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_groupofline_1_max_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_groupofline_1_min_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_groupofline_1_max_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_groupofline_1_pattern: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) n'est pas au bon format "        detail_4_groupofline_1_unique: "L'attribut %{column} du groupe de lignes %{objectId} a une valeur partagée avec le groupe de lignes  %{alternateId}" -      detail_4_stoparea_1_min_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_stoparea_1_max_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_stoparea_1_min_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_stoparea_1_max_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_stoparea_1_pattern: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) n'est pas au bon format "        detail_4_stoparea_1_unique: "L'attribut %{column} de l'arrêt %{objectId} a une valeur partagée avec l'arrêt  %{alternateId}"        detail_4_stoparea_2: "L'arrêt physique %{name} (%{objectId}) n'a pas de parent" -      detail_4_accesspoint_1_min_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_accesspoint_1_max_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_accesspoint_1_min_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_accesspoint_1_max_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_accesspoint_1_pattern: "L'attribut %{column} du point d'accès %{objectId} (%{value}) n'est pas au bon format "        detail_4_accesspoint_1_unique: "L'attribut %{column} du point d'accès %{objectId} a une valeur partagée avec le point d'accès  %{alternateId}" -      detail_4_accesslink_1_min_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_accesslink_1_max_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_accesslink_1_min_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_accesslink_1_max_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_accesslink_1_pattern: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) n'est pas au bon format "        detail_4_accesslink_1_unique: "L'attribut %{column} du lien d'accès %{objectId} a une valeur partagée avec le lien d'accès  %{alternateId}" -      detail_4_connectionlink_1_min_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_connectionlink_1_max_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_connectionlink_1_min_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_connectionlink_1_max_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_connectionlink_1_pattern: "L'attribut %{column} de la correspondance %{objectId} (%{value}) n'est pas au bon format "        detail_4_connectionlink_1_unique: "L'attribut %{column} de la correspondance %{objectId} a une valeur partagée avec la correspondance  %{alternateId}"        detail_4_connectionlink_2: "Sur la correspondance %{name} (%{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 %{column} du calendrier %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_timetable_1_max_size: "L'attribut %{column} du calendrier %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_timetable_1_min_size: "L'attribut %{column} du calendrier %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_timetable_1_max_size: "L'attribut %{column} du calendrier %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_timetable_1_pattern: "L'attribut %{column} du calendrier %{objectId} (%{value}) n'est pas au bon format "        detail_4_timetable_1_unique: "L'attribut %{column} du calendrier %{objectId} a une valeur partagée avec le calendrier  %{alternateId}" -      detail_4_line_1_min_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_line_1_max_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_line_1_min_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_line_1_max_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_line_1_pattern: "L'attribut %{column} de la ligne %{objectId} (%{value}) n'est pas au bon format "        detail_4_line_1_unique: "L'attribut %{column} de la ligne %{objectId} a une valeur partagée avec la ligne  %{alternateId}"        detail_4_line_2: "La ligne %{number} : %{name} ( %{objectId}) a un mode de transport interdit %{transportMode}" @@ -185,16 +185,16 @@ en:        detail_4_line_3_2: "La ligne %{number} : %{name} ( %{objectId}) a plusieurs groupes de lignes"        detail_4_line_4_1: "La ligne %{number} : %{name} ( %{objectId}) n'a pas de séquence d'arrêts"        detail_4_line_4_2: "La ligne %{number} : %{name} ( %{objectId}) a trop de séquences d'arrêts non associées (%{routeCount})" -      detail_4_route_1_min_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_route_1_max_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_route_1_min_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_route_1_max_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_route_1_pattern: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) n'est pas au bon format "        detail_4_route_1_unique: "L'attribut %{column} de la séquence d'arrêts %{objectId} a une valeur partagée avec la séquence d'arrêts  %{alternateId}" -      detail_4_journeypattern_1_min_size: "L'attribut %{column} de la mission %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_journeypattern_1_max_size: "L'attribut %{column} de la mission %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_journeypattern_1_min_size: "L'attribut %{column} de la mission %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_journeypattern_1_max_size: "L'attribut %{column} de la mission %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_journeypattern_1_pattern: "L'attribut %{column} de la mission %{objectId} (%{value}) n'est pas au bon format "        detail_4_journeypattern_1_unique: "L'attribut %{column} de la mission %{objectId} a une valeur partagée avec la mission  %{alternateId}" -      detail_4_vehiclejourney_1_min_size: "L'attribut %{column} de la course %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_vehiclejourney_1_max_size: "L'attribut %{column} de la course %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_vehiclejourney_1_min_size: "L'attribut %{column} de la course %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_vehiclejourney_1_max_size: "L'attribut %{column} de la course %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_vehiclejourney_1_pattern: "L'attribut %{column} de la course %{objectId} (%{value}) n'est pas au bon format "        detail_4_vehiclejourney_1_unique: "L'attribut %{column} de la course %{objectId} a une valeur partagée avec la course  %{alternateId}"        detail_4_vehiclejourney_2: "La course %{objectId} a un mode de transport interdit %{transportMode}" @@ -481,42 +481,42 @@ fr:        detail_3_facility_1: "L'équipement %{name} (%{objectId}) n'est pas géolocalisé"        detail_3_facility_2: "L'équipement %{name} (%{objectId}) est localisé trop loin de son parent %{areaName} (%{areaId}) : distance %{distance} > %{distanceLimit}" -      detail_4_network_1_min_size: "L'attribut %{column} du réseau %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_network_1_max_size: "L'attribut %{column} du réseau %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_network_1_min_size: "L'attribut %{column} du réseau %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_network_1_max_size: "L'attribut %{column} du réseau %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_network_1_pattern: "L'attribut %{column} du réseau %{objectId} (%{value}) n'est pas au bon format "        detail_4_network_1_unique: "L'attribut %{column} du réseau %{objectId} a une valeur partagée avec le réseau %{alternateId}" -      detail_4_company_1_min_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_company_1_max_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_company_1_min_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_company_1_max_size: "L'attribut %{column} du transporteur %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_company_1_pattern: "L'attribut %{column} du transporteur %{objectId} (%{value}) n'est pas au bon format "        detail_4_company_1_unique: "L'attribut %{column} du transporteur %{objectId} a une valeur partagée avec le transporteur  %{alternateId}" -      detail_4_groupofline_1_min_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_groupofline_1_max_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_groupofline_1_min_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_groupofline_1_max_size: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_groupofline_1_pattern: "L'attribut %{column} du groupe de lignes %{objectId} (%{value}) n'est pas au bon format "        detail_4_groupofline_1_unique: "L'attribut %{column} du groupe de lignes %{objectId} a une valeur partagée avec le groupe de lignes  %{alternateId}" -      detail_4_stoparea_1_min_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_stoparea_1_max_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_stoparea_1_min_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_stoparea_1_max_size: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_stoparea_1_pattern: "L'attribut %{column} de l'arrêt %{objectId} (%{value}) n'est pas au bon format "        detail_4_stoparea_1_unique: "L'attribut %{column} de l'arrêt %{objectId} a une valeur partagée avec l'arrêt  %{alternateId}"        detail_4_stoparea_2: "L'arrêt physique %{name} (%{objectId}) n'a pas de parent" -      detail_4_accesspoint_1_min_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_accesspoint_1_max_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_accesspoint_1_min_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_accesspoint_1_max_size: "L'attribut %{column} du point d'accès %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_accesspoint_1_pattern: "L'attribut %{column} du point d'accès %{objectId} (%{value}) n'est pas au bon format "        detail_4_accesspoint_1_unique: "L'attribut %{column} du point d'accès %{objectId} a une valeur partagée avec le point d'accès  %{alternateId}" -      detail_4_accesslink_1_min_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_accesslink_1_max_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_accesslink_1_min_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_accesslink_1_max_size: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_accesslink_1_pattern: "L'attribut %{column} du lien d'accès %{objectId} (%{value}) n'est pas au bon format "        detail_4_accesslink_1_unique: "L'attribut %{column} du lien d'accès %{objectId} a une valeur partagée avec le lien d'accès  %{alternateId}" -      detail_4_connectionlink_1_min_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_connectionlink_1_max_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_connectionlink_1_min_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_connectionlink_1_max_size: "L'attribut %{column} de la correspondance %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_connectionlink_1_pattern: "L'attribut %{column} de la correspondance %{objectId} (%{value}) n'est pas au bon format "        detail_4_connectionlink_1_unique: "L'attribut %{column} de la correspondance %{objectId} a une valeur partagée avec la correspondance  %{alternateId}"        detail_4_connectionlink_2: "Sur la correspondance %{name} (%{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 %{column} du calendrier %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_timetable_1_max_size: "L'attribut %{column} du calendrier %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_timetable_1_min_size: "L'attribut %{column} du calendrier %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_timetable_1_max_size: "L'attribut %{column} du calendrier %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_timetable_1_pattern: "L'attribut %{column} du calendrier %{objectId} (%{value}) n'est pas au bon format "        detail_4_timetable_1_unique: "L'attribut %{column} du calendrier %{objectId} a une valeur partagée avec le calendrier  %{alternateId}" -      detail_4_line_1_min_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_line_1_max_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_line_1_min_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_line_1_max_size: "L'attribut %{column} de la ligne %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_line_1_pattern: "L'attribut %{column} de la ligne %{objectId} (%{value}) n'est pas au bon format "        detail_4_line_1_unique: "L'attribut %{column} de la ligne %{objectId} a une valeur partagée avec la ligne  %{alternateId}"        detail_4_line_2: "La ligne %{number} : %{name} ( %{objectId}) a un mode de transport interdit %{transportMode}" @@ -524,16 +524,16 @@ fr:        detail_4_line_3_2: "La ligne %{number} : %{name} ( %{objectId}) a plusieurs groupes de lignes"        detail_4_line_4_1: "La ligne %{number} : %{name} ( %{objectId}) n'a pas de séquence d'arrêts"        detail_4_line_4_2: "La ligne %{number} : %{name} ( %{objectId}) a trop de séquences d'arrêts non associées (%{routeCount})" -      detail_4_route_1_min_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_route_1_max_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_route_1_min_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_route_1_max_size: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_route_1_pattern: "L'attribut %{column} de la séquence d'arrêts %{objectId} (%{value}) n'est pas au bon format "        detail_4_route_1_unique: "L'attribut %{column} de la séquence d'arrêts %{objectId} a une valeur partagée avec la séquence d'arrêts  %{alternateId}" -      detail_4_journeypattern_1_min_size: "L'attribut %{column} de la mission %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_journeypattern_1_max_size: "L'attribut %{column} de la mission %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_journeypattern_1_min_size: "L'attribut %{column} de la mission %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_journeypattern_1_max_size: "L'attribut %{column} de la mission %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_journeypattern_1_pattern: "L'attribut %{column} de la mission %{objectId} (%{value}) n'est pas au bon format "        detail_4_journeypattern_1_unique: "L'attribut %{column} de la mission %{objectId} a une valeur partagée avec la mission  %{alternateId}" -      detail_4_vehiclejourney_1_min_size: "L'attribut %{column} de la course %{objectId} (%{value}) n'est pas renseigné ou plus petit que %(minimum)" -      detail_4_vehiclejourney_1_max_size: "L'attribut %{column} de la course %{objectId} (%{value}) est plus grand que %(maximum)" +      detail_4_vehiclejourney_1_min_size: "L'attribut %{column} de la course %{objectId} (%{value}) n'est pas renseigné ou plus petit que %{minimum}" +      detail_4_vehiclejourney_1_max_size: "L'attribut %{column} de la course %{objectId} (%{value}) est plus grand que %{maximum}"        detail_4_vehiclejourney_1_pattern: "L'attribut %{column} de la course %{objectId} (%{value}) n'est pas au bon format "        detail_4_vehiclejourney_1_unique: "L'attribut %{column} de la course %{objectId} a une valeur partagée avec la course  %{alternateId}"        detail_4_vehiclejourney_2: "La course %{objectId} a un mode de transport interdit %{transportMode}" | 
