diff options
Diffstat (limited to 'config')
90 files changed, 1046 insertions, 353 deletions
| diff --git a/config/application.rb b/config/application.rb index 8da6a7428..fabea41de 100644 --- a/config/application.rb +++ b/config/application.rb @@ -40,6 +40,7 @@ module ChouetteIhm      )      config.development_toolbar = false +    config.vehicle_journeys_extra_headers = []      unless Rails.env.production?          # Work around sprockets+teaspoon mismatch: diff --git a/config/breadcrumbs.rb b/config/breadcrumbs.rb index 00ccf16bd..e60ff187f 100644 --- a/config/breadcrumbs.rb +++ b/config/breadcrumbs.rb @@ -8,7 +8,7 @@ end  crumb :workbench_output do |workbench|    link I18n.t('workbench_outputs.show.title'), workbench_output_path(workbench) -  parent :workbench, current_offer_workbench +  parent :workbench, mutual_workbench(workbench)  end  crumb :merges do |workbench| @@ -96,6 +96,11 @@ crumb :compliance_check_set do |workbench, compliance_check_set|    parent :compliance_check_sets, workbench  end +crumb :compliance_check do |workbench, compliance_check| +  link breadcrumb_name(compliance_check), workbench_compliance_check_set_compliance_check_path(workbench, compliance_check.compliance_check_set, compliance_check) +  parent :compliance_check_set_executed, workbench, compliance_check.compliance_check_set +end +  crumb :compliance_check_set_executed do |workbench, compliance_check_set|    link I18n.t('compliance_check_sets.executed.title', name: compliance_check_set.name), executed_workbench_compliance_check_set_path(workbench, compliance_check_set)    parent :compliance_check_sets, workbench @@ -106,13 +111,23 @@ crumb :imports do |workbench|    parent :workbench, workbench  end +crumb :exports do |workbench| +  link I18n.t('exports.index.title'), workbench_exports_path(workbench) +  parent :workbench, workbench +end +  crumb :import do |workbench, import|    link breadcrumb_name(import), workbench_import_path(workbench, import)    parent :imports, workbench  end +crumb :export do |workbench, export| +  link breadcrumb_name(export), workbench_export_path(workbench, export) +  parent :exports, workbench +end +  crumb :import_resources do |import, import_resources| -  link I18n.t('import_resources.index.title'), workbench_import_import_resources_path(import.workbench, import.parent) +  link I18n.t('import.resources.index.title'), workbench_import_import_resources_path(import.workbench, import.parent)    parent :import, import.workbench, import.parent  end @@ -154,7 +169,6 @@ end  crumb :companies do |line_referential|    link I18n.t('companies.index.title'), line_referential_companies_path(line_referential) -  parent :line_referential, line_referential  end  crumb :company do |company| @@ -164,7 +178,6 @@ end  crumb :networks do |line_referential|    link I18n.t('networks.index.title'), line_referential_networks_path(line_referential) -  parent :line_referential, line_referential  end  crumb :network do |network| @@ -174,7 +187,6 @@ end  crumb :group_of_lines do |line_referential|    link I18n.t('group_of_lines.index.title'), line_referential_group_of_lines_path(line_referential) -  parent :line_referential, line_referential  end  crumb :group_of_line do |group_of_line| @@ -184,7 +196,6 @@ end  crumb :lines do |line_referential|    link I18n.t('lines.index.title'), line_referential_lines_path -  parent :line_referential, line_referential  end  crumb :line do |line| diff --git a/config/database/ci.yml b/config/database/ci.yml new file mode 100644 index 000000000..5671cb6ad --- /dev/null +++ b/config/database/ci.yml @@ -0,0 +1,15 @@ +test: &default +  adapter: <%= ENV.fetch 'RAILS_DB_ADAPTER', 'postgis' %> +  encoding: unicode +  pool: <%= ENV.fetch 'RAILS_DB_POOLSIZE', '5' %> +  host: <%= ENV.fetch 'RAILS_DB_HOST', 'localhost' %> +  port: <%= ENV.fetch 'RAILS_DB_PORT', '5432' %> +  schema_search_path: 'public,shared_extensions' +  postgis_schema: 'shared_extensions' +  database: <%= ENV.fetch 'RAILS_DB_NAME', 'stif_boiv_test' %> +  username: <%= ENV['RAILS_DB_USER'] || ENV['POSTGRESQL_ENV_POSTGRES_USER'] || 'jenkins' %> +  password: <%= ENV['RAILS_DB_PASSWORD'] || ENV['POSTGRESQL_ENV_POSTGRES_PASSWORD'] %> + +# Only used to build assets +production: +  <<: *default diff --git a/config/database/jenkins.yml b/config/database/jenkins.yml deleted file mode 100644 index 8b7a8ef2f..000000000 --- a/config/database/jenkins.yml +++ /dev/null @@ -1,8 +0,0 @@ -test: -  adapter: postgis -  encoding: unicode -  schema_search_path: 'public,shared_extensions' -  postgis_schema: 'shared_extensions' -  username: <%= ENV['POSTGRESQL_ENV_POSTGRES_USER'] || 'jenkins' %> -  password: <%= ENV['POSTGRESQL_ENV_POSTGRES_PASSWORD'] %> -  database: stif_boiv_test diff --git a/config/initializers/apartment.rb b/config/initializers/apartment.rb index a996549fd..6b817caed 100644 --- a/config/initializers/apartment.rb +++ b/config/initializers/apartment.rb @@ -18,70 +18,76 @@ Apartment.configure do |config|    # config.excluded_models = %w{Tenant}    #    config.excluded_models = [ -    'Referential', -    'ReferentialMetadata', -    'ReferentialSuite', -    'Organisation', -    'User',      'Api::V1::ApiKey', -    'StopAreaReferential', -    'StopAreaReferentialMembership', -    'StopAreaReferentialSync', -    'StopAreaReferentialSyncMessage', -    'Chouette::StopArea', -    'LineReferential', -    'LineReferentialMembership', -    'LineReferentialSync', -    'LineReferentialSyncMessage', -    'Chouette::Line', -    'Chouette::GroupOfLine', +    'Calendar',      'Chouette::Company', +    'Chouette::GroupOfLine', +    'Chouette::Line',      'Chouette::Network', -    'ReferentialCloning', -    'Workbench', -    'Workgroup', +    'Chouette::StopArea',      'CleanUp',      'CleanUpResult', -    'Calendar', -    'Import', -    'NetexImport', -    'WorkbenchImport', -    'ImportMessage', -    'ImportResource', +    'ComplianceCheck', +    'ComplianceCheckBlock', +    'ComplianceCheckMessage', +    'ComplianceCheckResource', +    'ComplianceCheckSet',      'ComplianceControl', +    'ComplianceControlBlock', +    'ComplianceControlSet', +    'CustomField', +    'Export::Base', +    'Export::Message', +    'Export::Resource',      'GenericAttributeControl::MinMax',      'GenericAttributeControl::Pattern',      'GenericAttributeControl::Uniqueness', +    'Import::Base', +    'Import::Gtfs', +    'Import::Message', +    'Import::Netex', +    'Import::Resource', +    'Import::Workbench',      'JourneyPatternControl::Duplicates',      'JourneyPatternControl::VehicleJourney',      'LineControl::Route', +    'LineReferential', +    'LineReferentialMembership', +    'LineReferentialSync', +    'LineReferentialSyncMessage', +    'Merge', +    'Organisation', +    'Referential', +    'ReferentialCloning', +    'ReferentialMetadata', +    'ReferentialSuite',      'RouteControl::Duplicates',      'RouteControl::JourneyPattern',      'RouteControl::MinimumLength',      'RouteControl::OmnibusJourneyPattern', -    'RouteControl::OppositeRouteTerminus',      'RouteControl::OppositeRoute', +    'RouteControl::OppositeRouteTerminus',      'RouteControl::StopPointsInJourneyPattern',      'RouteControl::UnactivatedStopPoint',      'RouteControl::ZDLStopArea',      'RoutingConstraintZoneControl::MaximumLength',      'RoutingConstraintZoneControl::MinimumLength',      'RoutingConstraintZoneControl::UnactivatedStopPoint', +    'SimpleExporter', +    'SimpleImporter', +    'SimpleInterface', +    'StopAreaReferential', +    'StopAreaReferentialMembership', +    'StopAreaReferentialSync', +    'StopAreaReferentialSyncMessage', +    'User',      'VehicleJourneyControl::Delta', -    'VehicleJourneyControl::WaitingTime',      'VehicleJourneyControl::Speed',      'VehicleJourneyControl::TimeTable',      'VehicleJourneyControl::VehicleJourneyAtStops', -    'ComplianceControlSet', -    'ComplianceControlBlock', -    'ComplianceCheck', -    'ComplianceCheckSet', -    'ComplianceCheckBlock', -    'ComplianceCheckResource', -    'ComplianceCheckMessage', -    'Merge', -    'CustomField', -    'SimpleImporter', +    'VehicleJourneyControl::WaitingTime', +    'Workbench', +    'Workgroup',    ]    # use postgres schemas? diff --git a/config/initializers/exporters.rb b/config/initializers/exporters.rb new file mode 100644 index 000000000..dfd82a54c --- /dev/null +++ b/config/initializers/exporters.rb @@ -0,0 +1,6 @@ +SimpleExporter.define :referential_companies do |config| +  config.separator = ";" +  config.encoding = 'ISO-8859-1' +  config.add_column :name +  config.add_column :registration_number +end diff --git a/config/initializers/i18n.rb b/config/initializers/i18n.rb new file mode 100644 index 000000000..fdf5d6c04 --- /dev/null +++ b/config/initializers/i18n.rb @@ -0,0 +1,164 @@ +module I18n +  class << self +    def translate_with_fallback key, options={}, original=nil +      options[:locale] ||= I18n.locale +      begin +        self.translate_without_fallback(key, {raise: true}.update(options)) +      rescue => e +        split = key.to_s.split('.') +        if split.size <= 2 +          translate_without_fallback original || key, options +        else +          v = split.pop +          v2 = split.pop +          split.pop if v2 == "default" +          split << "default" << v +          new_key = split.join('.') +          translate_with_fallback new_key, options, original || key +        end +      end +    end +    alias_method_chain :translate, :fallback +    alias_method :t, :translate +  end + +  def self.tc(key, params={}) +    self.t('label_with_colon', label: key.t(params)).html_safe +  end + +  def self.tmf(key, params={}) +    model, col = key.split "." +    begin +      self.t "activerecord.attributes.#{key}", {raise: true}.update(params) +    rescue +      begin +        self.t "activerecord.attributes.common.#{col}", {raise: true}.update(params) +      rescue +        begin +          self.t "simple_form.labels.#{key}", {raise: true}.update(params) +        rescue +          "activerecord.attributes.#{key}".t params +        end +      end +    end +  end + +  def self.tmfc(key, params={}) +    self.t('label_with_colon', label: self.tmf(key, params)).html_safe +  end + +  def self.missing_keys_logger +    @@my_logger ||= Logger.new("#{Rails.root}/log/missing_keys.log") +  end + +  def self.log_missing_key key, params={} +    missing_keys_logger.info "key: '#{key}', locale: '#{I18n.locale}', params: #{params}" +  end + +  def self.t_with_default(key, params={}) +    begin +      self.t(key, {raise: true}.update(params)) +    rescue +      if Rails.env.development? +        log_missing_key key, params +        "<span class='label label-danger' title='#{self.t(key, params)}'>!</span>#{key.split('.').last}".html_safe +      else +        key.split('.').last +      end +    end +  end +end + +module EnhancedI18n +  def t(params={}) +    I18n.t_with_default(self, params) +  end + +  def tc(params={}) +    I18n.tc(self, params) +  end + +  def tmf(params={}) +    I18n.tmf(self, params) +  end + +  def tmfc(params={}) +    I18n.tmfc(self, params) +  end +end + +module EnhancedTimeI18n +  def l(params={}) +    I18n.l(self, params) +  end +end + +class Symbol +  include EnhancedI18n +end + +class String +  include EnhancedI18n +end + +class Time +  include EnhancedTimeI18n +end + +class DateTime +  include EnhancedTimeI18n +end + +class Date +  include EnhancedTimeI18n +end + +module EnhancedModelI18n +  # Human name of the class (plural) +  def t opts={} +    "activerecord.models.#{i18n_key}".t({count: 2}.update(opts)) +  end + +  # Human name of the class (singular) +  def ts opts={} +    self.t({count: 1}.update(opts)) +  end + +  # Human name of the class (with comma) +  def tc(params={}) +    I18n.tc(i18n_key, params) +  end + +  # Human name of the attribute +  def tmf(attribute, params={}) +    I18n.tmf "#{i18n_key}.#{attribute}", params +  end + +  # Translate the given action on the model, with default +  def t_action(action, params={}) +    key = case action.to_sym +    when :create +      :new +    when :update +      :edit +    else +      action +    end + +    begin +      I18n.translate_without_fallback "#{i18n_key.pluralize}.#{key}.title", ({raise: true}.update(params)) +    rescue +      I18n.translate_without_fallback "#{key}.title", params +    end +  end + +  private +  def i18n_key +    model_name.to_s.underscore.gsub('/', '_') +  end + +end + +class ActiveRecord::Base +  extend EnhancedModelI18n +end diff --git a/config/initializers/sidekiq.rb b/config/initializers/sidekiq.rb index 2f65b8800..a177e7091 100644 --- a/config/initializers/sidekiq.rb +++ b/config/initializers/sidekiq.rb @@ -14,8 +14,4 @@ Sidekiq.configure_client do |config|    config.redis = { url: ENV.fetch('SIDEKIQ_REDIS_URL', 'redis://localhost:6379/12') }  end -Sidekiq.configure_client do |config| -  config.redis = { url: ENV.fetch('SIDEKIQ_REDIS_URL', 'redis://localhost:6379/12') } -end -  Sidekiq.default_worker_options = { retry: false } diff --git a/config/initializers/simple_form_bootstrap.rb b/config/initializers/simple_form_bootstrap.rb index 4b9bd320d..8dbc3afee 100644 --- a/config/initializers/simple_form_bootstrap.rb +++ b/config/initializers/simple_form_bootstrap.rb @@ -72,9 +72,9 @@ SimpleForm.setup do |config|      b.use :placeholder      b.optional :maxlength      b.optional :readonly -    b.use :label, class: 'col-sm-3 control-label' +    b.use :label, class: 'col-sm-4 col-xs-5 control-label' -    b.wrapper tag: 'div', class: 'col-sm-9' do |ba| +    b.wrapper tag: 'div', class: 'col-sm-8 col-xs-7' do |ba|        ba.use :input        ba.use :error, wrap_with: { tag: 'span', class: 'help-block small' }        ba.use :hint,  wrap_with: { tag: 'p', class: 'help-block small' } diff --git a/config/initializers/stif.rb b/config/initializers/stif.rb index a73e4931b..2ddadbc7e 100644 --- a/config/initializers/stif.rb +++ b/config/initializers/stif.rb @@ -27,8 +27,6 @@ Rails.application.config.to_prepare do    Organisation.before_validation(on: :create) do |organisation|      organisation.custom_view = "stif"    end -end - -Rails.application.config.to_prepare do    Dashboard.default_class = Stif::Dashboard +  Chouette::VehicleJourneyAtStop.day_offset_max = 1  end diff --git a/config/locales/actions.en.yml b/config/locales/actions.en.yml index 278915526..faf0dcec2 100644 --- a/config/locales/actions.en.yml +++ b/config/locales/actions.en.yml @@ -5,17 +5,19 @@ en:      deactivate: 'Deactivate'      destroy: "Destroy"      delete: "Delete" +    download: 'Download'      search: "Search"      submit: "Submit"      processing: "Processing…" -    add: "Add new" +    add: "Add" +    remove: Remove      new: "Add new"      show: "See"      archive: "Archive"      unarchive: "Unarchive"      clone: 'Clone'      duplicate: 'Clone' -    clean_up: 'Clean up' +    clean_up: 'Purge'      sync: 'Synchronize'      combine: 'Combine'      actualize: 'Actualize' diff --git a/config/locales/actions.fr.yml b/config/locales/actions.fr.yml index 92e16f21e..ed1a86189 100644 --- a/config/locales/actions.fr.yml +++ b/config/locales/actions.fr.yml @@ -5,10 +5,12 @@ fr:      deactivate: 'Désactiver'      destroy: 'Supprimer'      delete: 'Supprimer' +    download: 'Télécharger'      search: "Chercher"      submit: "Valider"      processing: "En cours…" -    add: 'Créer' +    add: 'Ajouter' +    remove: Retirer      new: 'Créer'      show: 'Consulter'      archive: 'Conserver' diff --git a/config/locales/calendars.en.yml b/config/locales/calendars.en.yml index c3df413af..696ae2734 100644 --- a/config/locales/calendars.en.yml +++ b/config/locales/calendars.en.yml @@ -1,6 +1,8 @@  en:    calendars: -    search_no_results: 'No calendar matching your query' +    filters: +      name_cont: Search by name +    search_no_results: 'No calendar template matching your query'      days:        monday: M        tuesday: Tu @@ -37,7 +39,7 @@ en:        all: All        shared: Shared        not_shared: Not shared -      search_no_results: No calendar matching your query +      search_no_results: No calendar templates matching your query        date: Date      new:        title: Add a new calendar @@ -59,16 +61,15 @@ en:    activerecord:      models:        calendar: -        one: calendar -        other: calendars +        one: calendar template +        other: calendar templates      attributes:        calendar:          name: Name -        short_name: Short name          date_ranges: Date ranges          dates: Dates          shared: Shared -        organisation: Organisation +        organisation: Organization          monday: "Monday"          tuesday: "Tuesday"          wednesday: "Wednesday" diff --git a/config/locales/calendars.fr.yml b/config/locales/calendars.fr.yml index 6fd265925..8c933f168 100644 --- a/config/locales/calendars.fr.yml +++ b/config/locales/calendars.fr.yml @@ -1,6 +1,8 @@  fr:    calendars: -    search_no_results: 'Aucun calendrier ne correspond à votre recherche' +    filters: +      name_cont: 'Indiquez un nom de calendrier...' +      no_results: 'Aucun calendrier ne correspond à votre recherche'      days:        monday: L        tuesday: Ma @@ -64,7 +66,6 @@ fr:      attributes:        calendar:          name: Nom -        short_name: Nom court          date_ranges: Intervalles de dates          dates: Dates          shared: Partagé diff --git a/config/locales/clean_ups.en.yml b/config/locales/clean_ups.en.yml index 876694592..6cbb2c453 100644 --- a/config/locales/clean_ups.en.yml +++ b/config/locales/clean_ups.en.yml @@ -5,7 +5,7 @@ en:      success_jp: "%{count} journey patterns deleted"      failure: "Fail when clean_up : %{error_message}"      actions: -      clean_up: "clean up" +      clean_up: "Clean up"        confirm: "Clean up will destroy time tables which ended on requested date\nand next recursively all object without any time table\nPlease confirm this action"    activemodel:      attributes: diff --git a/config/locales/companies.en.yml b/config/locales/companies.en.yml index becb087b1..f2b19bc19 100644 --- a/config/locales/companies.en.yml +++ b/config/locales/companies.en.yml @@ -16,7 +16,7 @@ en:      index:        title: "Companies"        name: "Search by name..." -      name_or_objectid: "Search by name or by Codifligne ID..." +      name_or_objectid: "Search by name or by ID..."        advanced_search: "Advanced search"    activerecord:      models: diff --git a/config/locales/compliance_check_messages.en.yml b/config/locales/compliance_check_messages.en.yml index 216a363a3..ade4329a2 100644 --- a/config/locales/compliance_check_messages.en.yml +++ b/config/locales/compliance_check_messages.en.yml @@ -22,10 +22,19 @@ en:      3_routingconstraint_2: "The Routing Constraint Zone %{source_objectid} covers all the stop points of its related route : %{target_0_objectid}."      3_routingconstraint_3: "The Routing Constraint Zone %{source_objectid} has less than 2 stop points"      3_line_1: "On line :%{source_label} (%{source_objectid}), no route has an opposite route" +    3_line_2: "The line %{source_label} (%{source_objectid}) is not in the lines scope of the organization %{reference_value}"      3_generic_1: "%{source_objectid} : the %{source_attribute} attribute value (%{error_value}) does not respect the following pattern : %{reference_value}"      3_generic_2_1: "%{source_objectid}  : the %{source_attribute} attributes's value (%{error_value}) is greater than the authorized maximum value : %{reference_value}"      3_generic_2_2: "%{source_objectid}  : the %{source_attribute} attributes's value (%{error_value}) is smaller than the authorized minimum value %{reference_value}"      3_generic_3: "%{source_objectid}  : the %{source_attribute} attribute (%{error_value}) has a value shared with : %{target_0_objectid}"      3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"      3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" -    3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections"
\ No newline at end of file +    3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections" +  activerecord: +    attributes: +      compliance_check_message: +        criticity: Criticity +        message_key: Message key +        resource_objectid: Resource objectid +        link: Link +        message: Message
\ No newline at end of file diff --git a/config/locales/compliance_check_messages.fr.yml b/config/locales/compliance_check_messages.fr.yml index db127d236..21f100f46 100644 --- a/config/locales/compliance_check_messages.fr.yml +++ b/config/locales/compliance_check_messages.fr.yml @@ -22,10 +22,19 @@ fr:      3_routingconstraint_2: "L'ITL %{source_objectid} couvre tous les arrêts de l'itinéraire %{target_0_objectid}."      3_routingconstraint_3: "L'ITL %{source_objectid} n'a pas suffisament d'arrêts (minimum 2 arrêts requis)"      3_line_1: "Sur la ligne %{source_label} (%{source_objectid}), aucun itinéraire n'a d'itinéraire inverse" +    3_line_2: "La ligne %{source_label} (%{source_objectid}) ne fait pas partie du périmètre de lignes de l'organisation %{reference_value}"      3_generic_1: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} qui ne respecte pas le motif %{reference_value}"      3_generic_2_1: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} supérieure à la valeur maximale autorisée %{reference_value}"      3_generic_2_2: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} inférieure à la valeur minimale autorisée %{reference_value}"      3_generic_3: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} partagée avec %{target_0_objectid}"      3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"      3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" -    3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections"
\ No newline at end of file +    3_shape_3: "Le tracé de l'itinéraire %{source_objectid} est en écart avec la voirie sur %{error_value} sections" +  activerecord: +    attributes: +      compliance_check_message: +        criticity: Criticité +        message_key: Clé du message +        resource_objectid: Objectid de la resource +        link: Lien +        message: Message
\ No newline at end of file diff --git a/config/locales/compliance_check_resource.en.yml b/config/locales/compliance_check_resource.en.yml new file mode 100644 index 000000000..f8a31b81a --- /dev/null +++ b/config/locales/compliance_check_resource.en.yml @@ -0,0 +1,8 @@ +en: +  activerecord: +    attributes: +      compliance_check_resource: +        name: Name +        status: Status +        metrics: Metrics +        download: Download
\ No newline at end of file diff --git a/config/locales/compliance_check_resources.fr.yml b/config/locales/compliance_check_resources.fr.yml new file mode 100644 index 000000000..0fe4b83ed --- /dev/null +++ b/config/locales/compliance_check_resources.fr.yml @@ -0,0 +1,8 @@ +fr: +  activerecord: +    attributes: +      compliance_check_resource: +        name: Nom +        status: Statut +        metrics: Métriques +        download: Téléchargement
\ No newline at end of file diff --git a/config/locales/compliance_check_sets.en.yml b/config/locales/compliance_check_sets.en.yml index 5e8c3b24f..73ecf8996 100644 --- a/config/locales/compliance_check_sets.en.yml +++ b/config/locales/compliance_check_sets.en.yml @@ -20,10 +20,10 @@ en:        title: Executed control report %{name}      show:        title: Compliance check set report -      table_state: "%{lines_status} lines imported on %{lines_in_compliance_check_set} in the archive" +      table_state: "%{lines_status} lines imported out of %{lines_in_compliance_check_set} in the archive"        table_explanation: "These controls apply to all imported data and condition the construction of your organization's offer."        table_title: Analysed lines state -      metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +      metrics: "%{error_count} errors, %{warning_count} warnings"        metadatas:          referential: "Object analysed"          referential_type: "Apply to" diff --git a/config/locales/compliance_check_sets.fr.yml b/config/locales/compliance_check_sets.fr.yml index 20bf11d85..045fed4ce 100644 --- a/config/locales/compliance_check_sets.fr.yml +++ b/config/locales/compliance_check_sets.fr.yml @@ -19,7 +19,7 @@ fr:        table_state: "%{lines_status} lignes valides sur %{lines_in_compliance_check_set} présentes dans l'offre de transport"        table_explanation: Ces contrôles s’appliquent pour toutes les données importées et conditionnent la construction de l’offre de votre organisation        table_title: État des lignes analysées -      metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +      metrics: "%{error_count} errors, %{warning_count} warnings"        metadatas:          referential: "Objet analysé"          referential_type: "Appliqué à" diff --git a/config/locales/compliance_checks.en.yml b/config/locales/compliance_checks.en.yml index 177c87852..679a136f0 100644 --- a/config/locales/compliance_checks.en.yml +++ b/config/locales/compliance_checks.en.yml @@ -3,8 +3,15 @@ en:      attributes:        compliance_check:          code: Code +        name: Name +        comment: Comment +        criticity: Criticity    compliance_checks:      filters:        subclass: Object        criticity: Severity        name: Name +    show: +      title: "Compliance check" +      metadatas: +        compliance_control_block: "Control block informations" diff --git a/config/locales/compliance_checks.fr.yml b/config/locales/compliance_checks.fr.yml index d11d37003..650062cbe 100644 --- a/config/locales/compliance_checks.fr.yml +++ b/config/locales/compliance_checks.fr.yml @@ -4,11 +4,14 @@ fr:        compliance_check:          code: Code          name: Nom -        criticity: Criticité          comment: Commentaire +        criticity: Criticité    compliance_checks:      filters:        subclass: Objet        criticity: Criticité        name: Nom -     +    show: +      title: "Consulter un contrôle" +      metadatas: +        compliance_control_block: "Informations sur le groupe de contrôle" diff --git a/config/locales/compliance_control_blocks.en.yml b/config/locales/compliance_control_blocks.en.yml index b9c01278c..0ec979549 100644 --- a/config/locales/compliance_control_blocks.en.yml +++ b/config/locales/compliance_control_blocks.en.yml @@ -1,4 +1,4 @@ -fr: +en:    activerecord:      models:        compliance_control_block:  @@ -9,6 +9,12 @@ fr:        compliance_control_blocks:          transport_mode: Transport mode          sub_transport_mode: Transport submode +    errors: +      models: +        compliance_control_block: +          attributes: +            condition_attributes: +              taken: The same compliance control block already exists in this compliance control set    compliance_control_blocks:      clone:        prefix: 'Copy of' @@ -16,8 +22,12 @@ fr:        destroy_confirm: Are you sure you want to destroy this block ?      new:        title: Create a control block +    create: +      title: Create a control block      edit:        title: "Edit the control block : %{name}" +    update: +      title: "Edit the control block : %{name}"      metas:        control:          zero: "No controls" diff --git a/config/locales/compliance_control_blocks.fr.yml b/config/locales/compliance_control_blocks.fr.yml index a6720881f..5ce5b4729 100644 --- a/config/locales/compliance_control_blocks.fr.yml +++ b/config/locales/compliance_control_blocks.fr.yml @@ -9,6 +9,12 @@ fr:        compliance_control_blocks:          transport_mode: Mode de transport          transport_submode: Sous-mode de transport +    errors: +      models: +        compliance_control_block: +          attributes: +            condition_attributes: +              taken: Un groupe de contrôle identique existe déjà au sein de ce jeu de contrôles    compliance_control_blocks:      clone:        prefix: 'Copie de' @@ -16,8 +22,12 @@ fr:        destroy_confirm: Etes vous sûr de supprimer ce bloc ?      new:        title: Créer un groupe de contrôle(s) +    create: +      title: Créer un groupe de contrôle(s)      edit:        title: "Editer le groupe de contrôle : %{name}" +    update: +      title: "Editer le groupe de contrôle : %{name}"      metas:        control:          zero: "Aucun contrôle" diff --git a/config/locales/compliance_control_sets.en.yml b/config/locales/compliance_control_sets.en.yml index 10c4f5e9a..c69689390 100644 --- a/config/locales/compliance_control_sets.en.yml +++ b/config/locales/compliance_control_sets.en.yml @@ -10,6 +10,12 @@ en:        new_control: Creating a Control        select_types: Control Type Selection        edit: Edit compliance control set +    new: +      title: New compliance control set %{name} +    show: +      title: Consult compliance control set %{name} +    edit: +      title: Edit compliance control set %{name}      actions:        new: Add        edit: Edit @@ -18,6 +24,7 @@ en:        add_compliance_control: Compliance Control        add_compliance_control_block: Compliance Control Block        destroy_confirm: Are you sure ? +      loaded: Load the control      filters:        name: 'Enter name ...'      search_no_results: 'No compliance control set found' diff --git a/config/locales/compliance_controls.en.yml b/config/locales/compliance_controls.en.yml index ca9d83872..cb370c5df 100644 --- a/config/locales/compliance_controls.en.yml +++ b/config/locales/compliance_controls.en.yml @@ -29,8 +29,8 @@ en:        title: "Add a new compliance control"      edit:        title: "Update compliance control" -    metas: -      no_prerequisite: "None" +    select_type: +      title: "Select a control type"      actions:        new: Add        edit: Edit @@ -41,6 +41,7 @@ en:        messages:          3_route_1: "The route with %{source_objectid} objectid connect the stop points %{target_0_label} (%{target_0_objectid}) and %{target_1_label} (%{target_1_objectid}) which belong to the same ZDL"        description: "Two stop points which belong to the same ZDL cannot follow one another in a route" +      prerequisite: "None"      route_control/opposite_route:        messages:          3_route_2: "The route with %{source_objectid} objectid references an incoherent oppposite route %{target_0_objectid}" @@ -53,10 +54,12 @@ en:        messages:          3_route_3: "The route with %{source_objectid} objectid doesn't have any journey pattern"        description: "A route must have at least one journey pattern" +      prerequisite: "None"      route_control/duplicates:        messages:          3_route_4: "The route with %{source_objectid} objectid is identical with another route %{target_0_objectid}"        description: "2 routes cannot connect the same stop points with the same order and the same boarding and alighting characteristics" +      prerequisite: "None"      route_control/opposite_route_terminus:        messages:          3_route_5: "The route with %{source_objectid} objectid has a first stop from the %{target_0_label} ZDL whereas its oppoite route's last stop is from the ZDL %{target_1_label}" @@ -66,78 +69,100 @@ en:        messages:          3_route_6: "The route with %{source_objectid} objectid does not connect enough stop points (required 2 stop points)"        description: "A route must have at least 2 stop points" +      prerequisite: "None"      route_control/stop_points_in_journey_pattern:        messages:          3_route_8: "The stop point %{target_0_label} (%{target_0_objectid}) of the route %{source_objectid} is not used by any journey pattern"        description: "The stop points of a route must be used by at least one journey pattern" +      prerequisite: "None"      route_control/omnibus_journey_pattern:        messages:          3_route_9: "The route with %{source_objectid} objectid does not have a journey pattern that connect all of its stop points"        description: "A journey pattern of a route should connect all of a route's stop points" +      prerequisite: "None"      route_control/unactivated_stop_point:        messages:          3_route_10: "L'itinéraire %{source_objectid} référence un arrêt (ZDEp) désactivé %{target_0_label} (%{target_0_objectid})"        description: "Les arrêts d'un itinéraire ne doivent pas être désactivés" +      prerequisite: "None"      journey_pattern_control/duplicates:        messages:          3_journeypattern_1: "The journey pattern with objectid %{source_objectid} is identical with another one %{target_0_objectid}"        description: "Two journey patterns belonging to the same line must not connect the same stop points in the same order" +      prerequisite: "None"      journey_pattern_control/vehicle_journey:        messages:          3_journeypattern_2: "The journey pattern with %{source_objectid} objectid doesn't have any vehicle journey"        description: "A journey pattern must have at least one vehicle journey" +      prerequisite: "None"      vehicle_journey_control/waiting_time:        messages:          3_vehiclejourney_1: "On the following vehicle journey %{source_objectid}, the waiting time %{error_value} a this stop point %{target_0_label} (%{target_0_objectid}) is greater than the threshold (%{reference_value})"        description: "The waiting time, in minutes, at a specific stop point cannot be too big" +      prerequisite: "None"      vehicle_journey_control/speed:        messages:          3_vehiclejourney_2_1: "On the following vehicle journey %{source_objectid}, the computed speed %{error_value} between the stop points %{target_0_label} (%{target_0_objectid}) and %{target_1_label} (%{target_1_objectid}) is greater than the threshold (%{reference_value})"          3_vehiclejourney_2_2: "On the following vehicle journey %{source_objectid}, the computed speed %{error_value} between the stop points %{target_0_label} (%{target_0_objectid}) and %{target_1_label} (%{target_1_objectid}) is smaller than the threshold (%{reference_value})"        description: "The speed between 2 stop points should be confined between thresholds" +      prerequisite: "None"      vehicle_journey_control/delta:        messages:          3_vehiclejourney_3: "The travel time on the vehicle journey with %{source_objectid} objectid between the stop points %{target_0_label} (%{target_0_objectid}) and %{target_1_label} (%{target_1_objectid}) is too far off %{error_value} the average waiting on the journey pattern"        description: "The travel time between two following stop points must be close to all the vehicle journey of a journey pattern" +      prerequisite: "None"      vehicle_journey_control/time_table:        messages:          3_vehiclejourney_4: "The vehicle journey with %{source_objectid} objectid does not have a timetable"        description: "A vehicle journey must have at least one timetable" +      prerequisite: "None"      vehicle_journey_control/vehicle_journey_at_stops:        messages:          3_vehiclejourney_5_1: "The vehicle journey with %{source_objectid} objectid has an arrival time %{error_value} greater than the departure time %{reference_value} at the stop point %{target_0_label} (%{target_0_objectid})"          3_vehiclejourney_5_2: "The vehicle journey with %{source_objectid} objectid has an departure time %{error_value} at stop point %{target_0_label} (%{target_0_objectid}) greater than the arrival %{reference_value} at the next stop point"        description: "The arrival time of a stop point must be smaller than the departure time of this stop point AND the departure time of the stop points must be in chronological order" +      prerequisite: "None"      routing_constraint_zone_control/vehicle_journey_at_stops:        messages:          3_routingconstraint_1: "The Routing Constraint Zone %{source_objectid} references an unactivated stop point (ZDEp) %{target_0_label} (%{target_0_objectid})"        description: "The stop points of a Routing Constraint Zone must be activated" +      prerequisite: "None"      routing_constraint_zone_control/maximum_length:        messages:          3_routingconstraint_2: "The Routing Constraint Zone %{source_objectid} covers all the stop points of its related route : %{target_0_objectid}."        description: "A Routing Constraint Zone cannot cover all the stop points of a route" +      prerequisite: "None"      routing_constraint_zone_control/minimum_length:        messages:          3_routingconstraint_3: "The Routing Constraint Zone %{source_objectid} has less than 2 stop points"        description: "A Routing Constraint Zone must have at least 2 stop points" +      prerequisite: "None"      line_control/route:        messages:          3_line_1: "On line :%{source_label} (%{source_objectid}), no route has an opposite route"        description: "The routes of a line must have an opposite route" -      prerequisite: Lign has multiple routes +      prerequisite: Line has multiple routes +    line_control/lines_scope: +      messages: +        3_line_2: "The line %{source_label} (%{source_objectid}) is not in the lines scope of the organization %{reference_value}" +      description: "The line must be included in the lines scope of the organization" +      prerequisite: "None"      generic_attribute_control/pattern:        messages:          3_generic_1: "%{source_objectid} : the %{source_attribute} attribute value (%{error_value}) does not respect the following pattern : %{reference_value}"        description: "The object attribute must respect a patten (regular expression)" +      prerequisite: "None"      generic_attribute_control/min_max:        messages:          3_generic_2_1: "%{source_objectid}  : the %{source_attribute} attributes's value (%{error_value}) is greater than the authorized maximum value : %{reference_value}"          3_generic_2_2: "%{source_objectid}  : the %{source_attribute} attributes's value (%{error_value}) is smaller than the authorized minimum value %{reference_value}"        description: "The numeric value of an attribute must be contained between 2 values" +      prerequisite: "None"      generic_attribute_control/uniqueness:        messages:          3_generic_3: "%{source_objectid}  : the %{source_attribute} attribute (%{error_value}) has a value shared with : %{target_0_objectid}"        description: "The attribute's value must be unique compared to the other objects ofthe same type (related to the same line)" +      prerequisite: "None"      shape_control:        3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"        3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" @@ -189,8 +214,10 @@ en:          one: "Unactivated stop points"        line_control/route:          one: "The routes of a line must have an opposite route" +      line_control/lines_scope: +        one: "Lines must be included in the lines scope of the organization"        generic_attribute_control/pattern: -        one: "Attribute pattern of an object in a line" +        one: "Attribute regular expression of an object in a line"        generic_attribute_control/min_max:          one: "Min, max values of numeric fields"        generic_attribute_control/uniqueness: @@ -208,3 +235,4 @@ en:          target: "Target"          prerequisite: "Prerequisite"          predicate: "Predicate" +        pattern: Regular expression diff --git a/config/locales/compliance_controls.fr.yml b/config/locales/compliance_controls.fr.yml index f5f7e351f..0b0555b6d 100644 --- a/config/locales/compliance_controls.fr.yml +++ b/config/locales/compliance_controls.fr.yml @@ -28,8 +28,6 @@ fr:        title: "Editer un contrôle"      select_type:        title: "Sélectionner un type de contrôle" -    metas: -      no_prerequisite: "Aucun"      actions:        new: Ajouter        edit: Editer @@ -40,6 +38,7 @@ fr:        messages:          3_route_1: "L'itinéraire %{source_objectid} dessert successivement les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) de la même zone de lieu"        description: "Deux arrêts d’une même ZDL ne peuvent pas se succéder dans un itinéraire" +      prerequisite: "Aucun"      route_control/opposite_route:        messages:          3_route_2: "L'itinéraire %{source_objectid} référence un itinéraire retour %{target_0_objectid} incohérent" @@ -52,10 +51,12 @@ fr:        messages:          3_route_3: "L'itinéraire %{source_objectid} n'a pas de mission"        description: "Un itinéraire doit avoir au moins une mission" +      prerequisite: "Aucun"      route_control/duplicates:        messages:          3_route_4: "L'itinéraire %{source_objectid} est identique à l'itinéraire %{target_0_objectid}"        description: "2 itinéraires ne doivent pas desservir strictement les mêmes arrêts dans le même ordre avec les mêmes critères de monté/descente" +      prerequisite: "Aucun"      route_control/opposite_route_terminus:        messages:          3_route_5: "L'itinéraire %{source_objectid} dessert au départ un arrêt de la ZDL %{target_0_label} alors que l'itinéraire inverse dessert à l'arrivée un arrêt de la ZDL %{target_1_label}" @@ -65,78 +66,100 @@ fr:        messages:          3_route_6: "L'itinéraire %{source_objectid} ne dessert pas assez d'arrêts (minimum 2 requis)"        description: "Un itinéraire doit référencer au moins 2 arrêts" +      prerequisite: "Aucun"      route_control/stop_points_in_journey_pattern:        messages:          3_route_8: "l'arrêt %{target_0_label} (%{target_0_objectid}) de l'itinéraire %{source_objectid} n'est desservi par aucune mission"        description: "Les arrêts de l'itinéraire doivent être desservis par au moins une mission" +      prerequisite: "Aucun"      route_control/omnibus_journey_pattern:        messages:          3_route_9: "L'itinéraire %{source_objectid} n'a aucune mission desservant l'ensemble de ses arrêts"        description: "Une mission de l'itinéraire devrait desservir l'ensemble des arrêts de celui-ci" +      prerequisite: "Aucun"      route_control/unactivated_stop_point:        messages:          3_route_10: "L'itinéraire %{source_objectid} référence un arrêt (ZDEp) désactivé %{target_0_label} (%{target_0_objectid})"        description: "Les arrêts d'un itinéraire ne doivent pas être désactivés" +      prerequisite: "Aucun"      journey_pattern_control/duplicates:        messages:          3_journeypattern_1: "La mission %{source_objectid} est identique à la mission %{target_0_objectid}"        description: "Deux missions de la même ligne ne doivent pas desservir les mêmes arrêts dans le même ordre" +      prerequisite: "Aucun"      journey_pattern_control/vehicle_journey:        messages:          3_journeypattern_2: "La mission %{source_objectid} n'a pas de course"        description: "Une mission doit avoir au moins une course" +      prerequisite: "Aucun"      vehicle_journey_control/waiting_time:        messages:          3_vehiclejourney_1: "Sur la course %{source_objectid}, le temps d'attente %{error_value} à l'arrêt %{target_0_label} (%{target_0_objectid}) est supérieur au seuil toléré (%{reference_value})"        description: "La durée d’attente, en minutes, à un arrêt ne doit pas être trop grande" +      prerequisite: "Aucun"      vehicle_journey_control/speed:        messages:          3_vehiclejourney_2_1: "Sur la course %{source_objectid}, la vitesse calculée %{error_value} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est supérieure au seuil toléré (%{reference_value})"          3_vehiclejourney_2_2: "Sur la course %{source_objectid}, la vitesse calculée %{error_value} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) est inférieure au seuil toléré (%{reference_value})"        description: "La vitesse entre deux arrêts doit être dans une fourchette paramétrable" +      prerequisite: "Aucun"      vehicle_journey_control/delta:        messages:          3_vehiclejourney_3: "Le temps de parcours sur la course %{source_objectid} entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid}) s'écarte de %{error_value} du temps moyen constaté sur la mission"        description: "Les temps de parcours entre 2 arrêts successifs doivent être similaires pour toutes les courses d’une même mission" +      prerequisite: "Aucun"      vehicle_journey_control/time_table:        messages:          3_vehiclejourney_4: "La course %{source_objectid} n'a pas de calendrier d'application"        description: "Une course doit avoir au moins un calendrier d’application" +      prerequisite: "Aucun"      vehicle_journey_control/vehicle_journey_at_stops:        messages:          3_vehiclejourney_5_1: "La course %{source_objectid} a un horaire d'arrivé %{error_value} supérieur à l'horaire de départ %{reference_value} à l'arrêt %{target_0_label} (%{target_0_objectid})"          3_vehiclejourney_5_2: "La course %{source_objectid} a un horaire de départ %{error_value} à l'arrêt %{target_0_label} (%{target_0_objectid}) supérieur à l'horaire d'arrivé %{reference_value} à l'arrêt suivant"        description: "L'horaire d'arrivée à un arrêt doit être antérieur à l'horaire de départ de cet arrêt ET les horaires de départ aux arrêts doivent être dans l'ordre chronologique croissant." +      prerequisite: "Aucun"      routing_constraint_zone_control/unactivated_stop_point:        messages:          3_routingconstraint_1: "L'ITL %{source_objectid} référence un arrêt (ZDEp) désactivé %{target_0_label} (%{target_0_objectid})"        description: "Les arrêts d'une ITL ne doivent pas être désactivés" +      prerequisite: "Aucun"      routing_constraint_zone_control/maximum_length:        messages:          3_routingconstraint_2: "L'ITL %{source_objectid} couvre tous les arrêts de l'itinéraire %{target_0_objectid}."        description: "Une ITL ne peut pas couvrir l'ensemble des arrêts de l'itinéraire" +      prerequisite: "Aucun"      routing_constraint_zone_control/minimum_length:        messages:          3_routingconstraint_3: "L'ITL %{source_objectid} n'a pas suffisament d'arrêts (minimum 2 arrêts requis)"        description: "Une ITL doit référencer au moins 2 arrêts" +      prerequisite: "Aucun"      line_control/route:        messages:          3_line_1: "Sur la ligne %{source_label} (%{source_objectid}), aucun itinéraire n'a d'itinéraire inverse"        description: "Les itinéraires d'une ligne doivent être associés en aller/retour"        prerequisite: Ligne disposant de plusieurs itinéraires +    line_control/lines_scope: +      messages: +        3_line_2: "La ligne %{source_label} (%{source_objectid}) ne fait pas partie du périmètre de lignes de l'organisation %{reference_value}" +      description: "Les lignes doivent appartenir au périmètre de lignes de l'organisation" +      prerequisite: "Aucun"      generic_attribute_control/pattern:        messages:          3_generic_1: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} qui ne respecte pas le motif %{reference_value}"        description: "l'attribut de l'objet doit respecter un motif (expression régulière)" +      prerequisite: "Aucun"      generic_attribute_control/min_max:        messages:          3_generic_2_1: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} supérieure à la valeur maximale autorisée %{reference_value}"          3_generic_2_2: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} inférieure à la valeur minimale autorisée %{reference_value}"        description: "La valeur numérique de l'attribut doit rester comprise entre 2 valeurs" +      prerequisite: "Aucun"      generic_attribute_control/uniqueness:        messages:          3_generic_3: "%{source_objectid} : l'attribut %{source_attribute} a une valeur %{error_value} partagée avec %{target_0_objectid}"        description: "La valeur de l'attribut doit être unique au sein des objets de la ligne" +      prerequisite: "Aucun"      shape_control:        3_shape_1: "Tracé %{source_objectid} : le tracé passe trop loin de l'arrêt %{target_0_label} (%{target_0_objectid}) : %{error_value} > %{reference_value}"        3_shape_2: "Tracé %{source_objectid} : le tracé n'est pas défini entre les arrêts %{target_0_label} (%{target_0_objectid}) et %{target_1_label} (%{target_1_objectid})" @@ -173,7 +196,7 @@ fr:        vehicle_journey_control/speed:          one: "La vitesse entre deux arrêts doit être dans une fourchette paramétrable"        vehicle_journey_control/delta: -        one: "Les vitesses entre 2 arrêts doivent être similaires pour toutes les courses d’une même mission" +        one: "Les temps de parcours entre 2 arrêts doivent être similaires pour toutes les courses d’une même mission"        vehicle_journey_control/time_table:          one: "Une course doit avoir au moins un calendrier d’application"        vehicle_journey_control/vehicle_journey_at_stops: @@ -188,8 +211,10 @@ fr:          one: "ITL & arret désactivé"        line_control/route:          one: "Appariement des itinéraires" +      line_control/lines_scope: +        one: "Les lignes doivent appartenir au périmètre de lignes de l'organisation"        generic_attribute_control/pattern: -        one: "Contrôle du contenu selon un pattern" +        one: "Contrôle du contenu selon une expression régulière"        generic_attribute_control/min_max:          one: "Valeur min, max de champs numériques"        generic_attribute_control/uniqueness: @@ -207,3 +232,4 @@ fr:          target: "Cible"          prerequisite: "Prérequis"          predicate: "Prédicat" +        pattern: Expression régulière diff --git a/config/locales/dashboard.en.yml b/config/locales/dashboard.en.yml index 8d46ff7aa..472f5bc2f 100644 --- a/config/locales/dashboard.en.yml +++ b/config/locales/dashboard.en.yml @@ -1,7 +1,10 @@  en:    dashboards: +    main_nav_left: Dashboard       show:        title: "Dashboard %{organisation}" +    workbench: +      title: Transport offer %{organisation}      calendars:        title: Calendars        none: No calendar created diff --git a/config/locales/dashboard.fr.yml b/config/locales/dashboard.fr.yml index d0aa36d61..65022fcb8 100644 --- a/config/locales/dashboard.fr.yml +++ b/config/locales/dashboard.fr.yml @@ -1,7 +1,10 @@  fr:    dashboards: +    main_nav_left: Tableau de bord      show:        title: "Tableau de bord %{organisation}" +    workbench: +      title: Offre de transport %{organisation}      calendars:        title: Modèles de calendrier        none: Aucun calendrier défini diff --git a/config/locales/en.yml b/config/locales/en.yml index 8af8067db..05d21a1f2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -2,6 +2,7 @@ en:    "true": "Yes"    "false": "No"    "unknown": "Unknown" +  label_with_colon: "%{label}: "    time: diff --git a/config/locales/export_messages.en.yml b/config/locales/export_messages.en.yml new file mode 100644 index 000000000..9823d7f78 --- /dev/null +++ b/config/locales/export_messages.en.yml @@ -0,0 +1,4 @@ +en: +  export_messages: +    success: Success +    no_matching_journey: No matching journey found diff --git a/config/locales/export_messages.fr.yml b/config/locales/export_messages.fr.yml new file mode 100644 index 000000000..4f45fd8e1 --- /dev/null +++ b/config/locales/export_messages.fr.yml @@ -0,0 +1,4 @@ +fr: +  export_messages: +    success: Succès +    no_matching_journey: Aucun trajet correspondant diff --git a/config/locales/exports.en.yml b/config/locales/exports.en.yml index 2a47fba54..de34e797c 100644 --- a/config/locales/exports.en.yml +++ b/config/locales/exports.en.yml @@ -1,25 +1,32 @@  en: -  exports: +  exports: &exports +    search_no_results: "No export matching your query" +    filters: +      referential: "Select data space..." +      name_or_creator_cont: "Select an export or creator name..." +      error_period_filter: "End date must be greater or equal than begin date"      actions:        new: "New export" +      create: "New export" +      show: "Export report" +      download: "Download original file"        destroy: "Destroy"        destroy_confirm: "Are you sure you want destroy this export?" -    new: -      title: "New export" -      all: "All" -      flash: "Export task on queue, refresh page to see progression"      index:        title: "Exports"        warning: "" +    new: +      title: "Generate a new export" +    create: +      title: "Generate a new export"      show: +      title: "Export %{name}"        report: "Report" -      exported_file: "Exported file" -    statuses: -      started: "Started"       -      scheduled: "Processing ..." -      terminated: "Completed" -      canceled: "Canceled" -      aborted: "Failed"     +      exported_file: "Original file" +      compliance_check: "Validation report" +      compliance_check_of: "Validation of export: " +      export_of_validation: "Export of the validation" +    compliance_check_task: "Validate Report"      severities:        info: "Information"        uncheck: "Unchecked" @@ -27,7 +34,13 @@ en:        warning: "Warning"        error: "Error"        fatal: "Fatal" -  activemodel: +  export: +    workgroup: Workgroup +    netex:     Netex +    referential_companies: Companies +    base: +      <<: *exports +  activerecord:      models:        export:          zero:  "export" @@ -37,6 +50,10 @@ en:          zero:  "export"          one:   "Neptune export"          other: "exports" +      csv_export: +        zero:  "export" +        one:   "CSV export" +        other: "exports"        gtfs_export:          zero:  "export"          one:   "GTFS export" @@ -44,4 +61,43 @@ en:        netex_export:          zero:  "export"          one:   "NeTEx export" -        other: "exports"
\ No newline at end of file +        other: "exports" +    errors: +      models: +        export: +          base: +            attributes: +              file: +                wrong_file_extension: "The exported file must be a zip file" +    attributes: +      attrs: &attrs +        resources: "File to export" +        created_at: "Created on" +        started_at: "Started at" +        name: "Name" +        status: "Status" +        creator: "Creator" +        references_type: "Data to be exported" +        no_save: "No save" +        object_id_prefix: "Neptune Id prefix" +        max_distance_for_commercial: "Max distance for commercial stop" +        max_distance_for_connection_link: "Max distance for connection link" +        ignore_last_word: "ignore last word" +        ignore_end_chars: "ignore last chars" +        type: "Export type" +        file: "Output" +        files: "Outputs" +        parent: Parent +        referential_id: Referential +      export: +        <<: *attrs +        base: +          <<: *attrs +        workgroup: +          duration: Duration +        referential_companies: +          referential_id: Referential +  flash: +    exports: +      create: +        notice: "The export is in progress. Please wait and refresh the page in a few moments." diff --git a/config/locales/exports.fr.yml b/config/locales/exports.fr.yml index 2d7cc0259..62aae70cd 100644 --- a/config/locales/exports.fr.yml +++ b/config/locales/exports.fr.yml @@ -1,33 +1,46 @@  fr: -  exports: +  exports: &exports +    search_no_results: "Aucun export ne correspond à votre recherche" +    filters: +      referential: "Sélectionnez un jeu de données..." +      name_or_creator_cont: "Indiquez un nom d'export ou d'opérateur..." +      error_period_filter: "La date de fin doit être supérieure ou égale à la date de début"      actions:        new: "Nouvel export" +      create: "Nouvel export" +      show: "Rapport d'export" +      download: "Téléch. fichier source"        destroy: "Supprimer cet export"        destroy_confirm: "Etes vous sûr de supprimer cet export ?" -    new: -      title: "Nouvel export" -      all: "Toutes" -      flash: "La demande d'export est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression"      index:        title: "Exports"        warning: "" +    new: +      title: "Générer un export" +    create: +      title: "Générer un export"      show: +      title: "Export %{name}"        report: "Rapport" -      exported_file: "Fichier exporté" -    statuses: -      started: "En file d'attente..." -      scheduled: "En cours..." -      terminated: "Achevé" -      canceled: "Annulé" -      aborted: "Echoué" +      exported_file: "Fichier source" +      compliance_check: "Test de conformité" +      compliance_check_of: "Validation de l'export : " +      export_of_validation: "L'export de la validation" +    compliance_check_task: "Validation"      severities:        info: "Information" -      uncheck: "Non disponible" +      uncheck: "Non testé"        ok: "Ok"        warning: "Alerte"        error: "Erreur"        fatal: "Fatal" -  activemodel: +  export: +    workgroup: Groupe de travail +    netex:     Netex +    referential_companies: Transporteurs +    base: +      <<: *exports +  activerecord:      models:        export:          zero:  "export" @@ -35,7 +48,11 @@ fr:          other: "exports"        neptune_export:          zero:  "export" -        one:   "export neptune" +        one:   "export Neptune" +        other: "exports" +      csv_export: +        zero:  "export" +        one:   "export CSV"          other: "exports"        gtfs_export:          zero:  "export" @@ -45,3 +62,42 @@ fr:          zero:  "export"          one:   "export NeTEx"          other: "exports" +    errors: +      models: +        export: +          base: +            attributes: +              file: +                wrong_file_extension: "Le fichier exporté doit être au format zip" +    attributes: +      attrs: &attrs +        resources: "Fichier à exporter" +        created_at: "Créé le" +        started_at: Démarrage +        name: "Nom de l'export" +        status: "Etat" +        creator: "Opérateur" +        no_save: "Pas de sauvegarde" +        references_type: "Données à exporter" +        object_id_prefix: "Préfixe d'identifiants" +        max_distance_for_commercial: "Distance max pour créer les zones" +        max_distance_for_connection_link: "Distance max pour créer les correspondances" +        ignore_last_word: "ignorer le dernier mot" +        ignore_end_chars: "ignorer les n derniers caractères" +        type: "Type d'export" +        file: "Résultat" +        files: "Résultats" +        parent: Parent +        referential_id: Jeu de données +      export: +        <<: *attrs +        base: +          <<: *attrs +        workgroup: +          duration: Durée +        referential_companies: +          referential_id: Jeu de données +  flash: +    exports: +      create: +        notice: "L'export est en cours, veuillez patienter. Actualiser votre page si vous voulez voir l'avancement de votre traitement." diff --git a/config/locales/footnotes.fr.yml b/config/locales/footnotes.fr.yml index 692098046..5169cfc11 100644 --- a/config/locales/footnotes.fr.yml +++ b/config/locales/footnotes.fr.yml @@ -15,6 +15,6 @@ fr:          other: "notes"      attributes:        footnote: -        code: "numéro" +        code: "titre"          checksum: Signature métier -        label: "ligne de texte" +        label: "texte" diff --git a/config/locales/fr.yml b/config/locales/fr.yml index e1f52ff55..733ba05b9 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -2,6 +2,7 @@ fr:    "true": "Oui"    "false": "Non"    "unknown": "Non précisé" +  label_with_colon: "%{label} : "    time:      formats: diff --git a/config/locales/import_messages.en.yml b/config/locales/import_messages.en.yml index aad4fb772..3ed98aaa6 100644 --- a/config/locales/import_messages.en.yml +++ b/config/locales/import_messages.en.yml @@ -2,7 +2,10 @@ en:    import_messages:      corrupt_zip_file: "The zip file %{source_filename} is corrupted and cannot be read"      inconsistent_zip_file: "The zip file %{source_filename} contains unexpected directories: %{spurious_dirs}, which are ignored" -    referential_creation: "Le référentiel n'a pas pu être créé car un référentiel existe déjà sur les mêmes périodes et lignes" +    missing_calendar_in_zip_file: "The folder %{source_filename} lacks a calendar file" +    wrong_calendar_in_zip_file: "The calendar file %{source_filename} cannot be parsed, or contains inconsistant data" +    referential_creation: "The referential %{referential_name} has not been created because another referential with the same lines and periods already exists" +    referential_creation_missing_lines: "The referential %{referential_name} has not been created because no matching line has been found"      1_netexstif_2: "Le fichier %{source_filename} ne respecte pas la syntaxe XML ou la XSD NeTEx : erreur '%{error_value}' rencontré"      1_netexstif_5: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet %{source_label} d'identifiant %{source_objectid} a une date de mise à jour dans le futur"      2_netexstif_1_1: "Le fichier commun.xml ne contient pas de frame nommée NETEX_COMMUN" @@ -50,4 +53,13 @@ en:      2_netexstif_servicejourneypattern_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} doit contenir au moins 2 StopPointInJourneyPattern"      2_netexstif_servicejourneypattern_3_1: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} n'a pas de valeur pour l'attribut ServiceJourneyPatternType"      2_netexstif_servicejourneypattern_3_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} a une valeur interdite %{error_value} pour l'attribut ServiceJourneyPatternType différente de 'passenger'" -    2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants."
\ No newline at end of file +    2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants." +  activerecord: +    attributes: +      import_message: +        criticity: Criticity +        message_key: Message key +        message: Message +        filename: Filename +        line: Line +        column: Column diff --git a/config/locales/import_messages.fr.yml b/config/locales/import_messages.fr.yml index 1e5054648..5d82b9125 100644 --- a/config/locales/import_messages.fr.yml +++ b/config/locales/import_messages.fr.yml @@ -2,10 +2,13 @@ fr:    import_messages:      corrupt_zip_file: "Le fichier zip est corrompu, et ne peut être lu"      inconsistent_zip_file: "Le fichier zip contient des repertoires non prévus : %{spurious_dirs} qui seront ignorés" -    referential_creation: "Le référentiel n'a pas pu être créé car un référentiel existe déjà sur les mêmes périodes et lignes" +    missing_calendar_in_zip_file: "Le dossier %{source_filename} ne contient pas de calendrier" +    wrong_calendar_in_zip_file: "Le calendrier contenu dans %{source_filename} contient des données incorrectes ou incohérentes" +    referential_creation: "Le référentiel %{referential_name} n'a pas pu être créé car un référentiel existe déjà sur les mêmes périodes et lignes" +    referential_creation_missing_lines: "Le référentiel %{referential_name} n'a pas pu être créé car aucune ligne ne correspond"      1_netexstif_2: "Le fichier %{source_filename} ne respecte pas la syntaxe XML ou la XSD NeTEx : erreur '%{error_value}' rencontré"      1_netexstif_5: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet %{source_label} d'identifiant %{source_objectid} a une date de mise à jour dans le futur" -    2_netexstif_1_1: "Le fichier commun.xml ne contient pas de frame nommée NETEX_COMMUN" +    2_netexstif_1_1: "Le fichier commun.xml ne contient pas de frame nommée NTEX_COMMUN"      2_netexstif_1_2: "Le fichier commun.xml contient une frame nommée %{error_value} non acceptée"      2_netexstif_2_1: "Le fichier calendriers.xml ne contient pas de frame nommée NETEX_CALENDRIER"      2_netexstif_2_2: "Le fichier calendriers.xml contient une frame nommée %{error_value} non acceptée" @@ -51,3 +54,12 @@ fr:      2_netexstif_servicejourneypattern_3_1: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} n'a pas de valeur pour l'attribut ServiceJourneyPatternType"      2_netexstif_servicejourneypattern_3_2: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number} : l'objet ServiceJourneyPattern d'identifiant %{source_objectid} a une valeur interdite %{error_value} pour l'attribut ServiceJourneyPatternType différente de 'passenger'"      2_netexstif_servicejourneypattern_4: "%{source_filename}-Ligne %{source_line_number}-Colonne %{source_column_number}, objet ServiceJourneyPattern d'identifiant %{source_objectid} : les attributs 'order' des StopPointInJourneyPattern ne sont pas croissants." +  activerecord: +    attributes: +      import_message: +        criticity: Criticité +        message_key: Clé du message +        message: Message +        filename: Nom du fichier +        line: Ligne +        column: Colonne diff --git a/config/locales/import_resources.en.yml b/config/locales/import_resources.en.yml index 5f0f3213e..4b1f9c394 100644 --- a/config/locales/import_resources.en.yml +++ b/config/locales/import_resources.en.yml @@ -1,11 +1,14 @@  en: +  import: +    resources: &resources +      index: +        title: "NeTEx conformity" +        table_state: "%{lines_imported} line(s) imported on %{lines_in_zipfile} presents in zipfile" +        table_title: "Satus of anlyzed files" +        table_explanation: "When calendriers.xml and/or commun.xml are not imported, then all lines file are not processed." +        metrics: "%{error_count} errors, %{warning_count} warnings"    import_resources: -    index: -      title: "NeTEx conformity" -      table_state: "%{lines_imported} line(s) imported on %{lines_in_zipfile} presents in zipfile" -      table_title: "Satus of anlyzed files" -      table_explanation: "When calendriers.xml and/or commun.xml are not imported, then all lines file are not processed." -      metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +    <<: *resources    activerecord:      models:        import_resource: @@ -14,5 +17,6 @@ en:          other: "netex conformities"      attributes:        import: -        name: "Filename" -        status: "Status" +        resource: +          name: "Filename" +          status: "Status" diff --git a/config/locales/import_resources.fr.yml b/config/locales/import_resources.fr.yml index a271ae1ca..93a576f01 100644 --- a/config/locales/import_resources.fr.yml +++ b/config/locales/import_resources.fr.yml @@ -1,11 +1,14 @@  fr: +  import: +    resources: &resources +      index: +        title: "Rapport de conformité NeTEx" +        table_state: "%{lines_imported} ligne(s) importée(s) sur %{lines_in_zipfile} présente(s) dans l'archive" +        table_title: "Etat des fichiers analysés" +        table_explanation: "Dans le cas ou le(s) fichiers calendriers.xml et/ou commun.xml sont dans un état non importé, alors tous les fichiers lignes sont automatiquement dans un état non traité." +        metrics: "%{error_count} errors, %{warning_count} warnings"    import_resources: -    index: -      title: "Rapport de conformité NeTEx" -      table_state: "%{lines_imported} ligne(s) importée(s) sur %{lines_in_zipfile} présente(s) dans l'archive" -      table_title: "Etat des fichiers analysés" -      table_explanation: "Dans le cas ou le(s) fichiers calendriers.xml et/ou commun.xml sont dans un état non importé, alors tous les fichiers lignes sont automatiquement dans un état non traité." -      metrics: "%{ok_count} ok, %{error_count} errors, %{warning_count} warnings, %{uncheck_count} n/a" +    <<: *resources    activerecord:      models:        import_resource: @@ -13,6 +16,7 @@ fr:          one:   "rapport de conformité Netex"          other: "rapports de conformité Netex"      attributes: -      import_resource: -        name: "Fichier" -        status: "Etat" +      import: +        resource: +          name: "Fichier" +          status: "Etat" diff --git a/config/locales/import_tasks.en.yml b/config/locales/import_tasks.en.yml deleted file mode 100644 index 34f7e6998..000000000 --- a/config/locales/import_tasks.en.yml +++ /dev/null @@ -1,52 +0,0 @@ -en: -  import_tasks: -    actions: -      new: "New import" -    new: -      title: "New import" -      all: "All" -      flash: "Import task on queue, refresh page to see progression" -  activemodel: -    models: -      import_task: -        zero:  "import" -        one:   "import" -        other: "imports" -      neptune_import: -        zero:  "import" -        one:   "Neptune import" -        other: "imports" -      gtfs_import: -        zero:  "import" -        one:   "GTFS import" -        other: "imports" -      netex_import: -        zero:  "import" -        one:   "NeTEx import" -        other: "imports" -    attributes: -      import_task: -        name: "Import name" -        no_save: "No save" -        resources: "File to import" -        references_type: "Data to be imported" -        object_id_prefix: "Neptune Id prefix" -        max_distance_for_commercial: "Max distance for commercial stop" -        max_distance_for_connection_link: "Max distance for connection link" -        ignore_last_word: "ignore last word" -        ignore_end_chars: "ignore last chars" -    errors: -      models: -        import_task: -          attributes: -            resources: -              maximum_file_size: "File should smaller than %{maximum_file_size} (%{file_size} sent)" -              invalid_mime_type: "File doesn't use the expected format (%{mime_type} sent)" -  formtastic: -    titles: -      import_task: -        max_distance_for_commercial: "Maximal distance to merge homonymous stops in commercial stop in meter" -        max_distance_for_connection_link: "Maximal distance to link stops by connection link stop in meter" -        ignore_last_word: "ignore last word on stop name in homonymous detection (inappliable when just one word occurs)" -        ignore_end_chars: "ignore some chars at the end of stop names in homonymous detection" -        references_type: "Filter on stop areas import only GTFS stops and transfers files, these may contain extra attributes" diff --git a/config/locales/import_tasks.fr.yml b/config/locales/import_tasks.fr.yml deleted file mode 100644 index 002ca03cb..000000000 --- a/config/locales/import_tasks.fr.yml +++ /dev/null @@ -1,53 +0,0 @@ -fr: -  import_tasks: -    actions: -      new: "Nouvel import" -    new: -      title: "Nouvel import" -      all: "Tout" -      flash: "La demande d'import est mise en file d'attente, veuillez rafraichir régulièrement la page pour en suivre la progression" -  activemodel: -    models: -      import_task: -        zero:  "import" -        one:   "import" -        other: "imports" -      neptune_import: -        zero:  "import" -        one:   "import Neptune" -        other: "imports" -      gtfs_import: -        zero:  "import" -        one:   "import GTFS" -        other: "imports" -      netex_import: -        zero:  "import" -        one:   "import NeTEx" -        other: "imports" -    attributes: -      import_task: -        name: "Nom de l'import" -        no_save: "Pas de sauvegarde" -        resources: "Fichier à importer" -        references_type: "Données à importer" -        object_id_prefix: "Préfixe d'identifiants" -        max_distance_for_commercial: "Distance max pour créer les zones" -        max_distance_for_connection_link: "Distance max pour créer les correspondances" -        ignore_last_word: "ignorer le dernier mot" -        ignore_end_chars: "ignorer les n derniers caractères" -    errors: -      models: -        import_task: -          attributes: -            resources: -              maximum_file_size: "Le fichier ne peut dépasser %{maximum_file_size} (%{file_size} soumis)" -              invalid_mime_type: "Le fichier n'utilise pas le format attendu (%{mime_type} soumis)" - -  formtastic: -    titles: -      import_task: -        max_distance_for_commercial: "Distance maximale entre deux arrêts homonymes pour créer les zones d'arrêt (en mètre)" -        max_distance_for_connection_link: "Distance maximale entre deux arrêts pour créer les correspondances (en mètre)" -        ignore_last_word: "Ignorer le dernier mot pour détecter l'homonymie des noms d'arrêt (inapplicable quand le nom ne comporte qu'un mot)" -        ignore_end_chars: "Ignorer les n derniers caractères du nom de l'arrêt pour détecter l'homonymie" -        references_type: "Le filtre sur arrêts importe uniquement les fichiers GTFS stops et transfers gtfs, ceux-ci pouvant contenir des attributs supplémentaires" diff --git a/config/locales/imports.en.yml b/config/locales/imports.en.yml index b0644acd3..c8683a2a7 100644 --- a/config/locales/imports.en.yml +++ b/config/locales/imports.en.yml @@ -26,6 +26,13 @@ en:        compliance_check: "Validation report"        compliance_check_of: "Validation of import: "        import_of_validation: "Import of the validation" +      data_recovery: Data recovery +      filename: Filename +      referential_name: Referential name +      stif_control: STIF Control +      organisation_control: Organization control +      results: "%{count} validated referential(s) out of %{total} in the file" +      summary: Summay of import compliance check sets <span title="Lorem ipsum..." class="fa fa-lg fa-info-circle text-info"></span>      compliance_check_task: "Validate Report"      severities:        info: "Information" @@ -59,11 +66,12 @@ en:      errors:        models:          import: -          attributes: -            file: -              wrong_file_extension: "The imported file must be a zip file" +          base: +            attributes: +              file: +                wrong_file_extension: "The imported file must be a zip file"      attributes: -      import: +      attrs: &attrs          resources: "File to import"          created_at: "Created on"          started_at: "Started at" @@ -77,6 +85,10 @@ en:          max_distance_for_connection_link: "Max distance for connection link"          ignore_last_word: "ignore last word"          ignore_end_chars: "ignore last chars" +      import: +        <<: *attrs +        base: +          <<: *attrs    flash:      imports:        create: diff --git a/config/locales/imports.fr.yml b/config/locales/imports.fr.yml index 2380eac45..733254fa4 100644 --- a/config/locales/imports.fr.yml +++ b/config/locales/imports.fr.yml @@ -1,5 +1,5 @@  fr: -  imports: +  imports: &imports      search_no_results: "Aucun import ne correspond à votre recherche"      filters:        referential: "Sélectionnez un jeu de données..." @@ -26,6 +26,13 @@ fr:        compliance_check: "Test de conformité"        compliance_check_of: "Validation de l'import : "        import_of_validation: "L'import de la validation" +      data_recorvery: Récupération des données +      filename: Nom de l'archive +      referential_name: Nom du référentiel +      stif_control: Contrôle STIF +      organisation_control: Contrôle organisation +      results: "%{count} jeu(x) de données validé(s) sur %{total}" +      summary: Bilan des jeux de contrôles d'import <span title="Lorem ipsum..." class="fa fa-lg fa-info-circle text-info"></span>      compliance_check_task: "Validation"      severities:        info: "Information" @@ -34,6 +41,9 @@ fr:        warning: "Alerte"        error: "Erreur"        fatal: "Fatal" +  import: +    base: +      <<: *imports    activerecord:      models:        import: @@ -59,11 +69,12 @@ fr:      errors:        models:          import: -          attributes: -            file: -              wrong_file_extension: "Le fichier importé doit être au format zip" +          base: +            attributes: +              file: +                wrong_file_extension: "Le fichier importé doit être au format zip"      attributes: -      import: +      attrs: &attrs          resources: "Fichier à importer"          created_at: "Créé le"          started_at: Démarrage @@ -77,6 +88,12 @@ fr:          max_distance_for_connection_link: "Distance max pour créer les correspondances"          ignore_last_word: "ignorer le dernier mot"          ignore_end_chars: "ignorer les n derniers caractères" + +      import: +        <<: *attrs +        base: +          <<: *attrs +    flash:      imports:        create: diff --git a/config/locales/journey_patterns.en.yml b/config/locales/journey_patterns.en.yml index 9d9bc21e2..70ae94dd9 100644 --- a/config/locales/journey_patterns.en.yml +++ b/config/locales/journey_patterns.en.yml @@ -1,6 +1,7 @@  en:    journey_patterns:      journey_pattern: +      fetching_error: "There has been a problem fetching the data. Please reload the page to try again."        from_to: "From '%{departure}' to '%{arrival}'"        stop_count: "%{count}/%{route_count} stops"        vehicle_journeys_count: "Vehicle journeys: %{count}" @@ -19,6 +20,13 @@ en:      show:        title: "Journey Pattern %{journey_pattern}"        stop_points: "Stop point on journey pattern list" +      stop_points_count:  +        none: '%{count} stop areas' +        one: '%{count} stop area' +        other: '%{count} stop areas' +      informations: Informations +      confirmation: Confimation +      confirm_page_change: You are about to change page. Would you like to save your work before that ?      index:        title: "Journey Patterns of %{route}"      form: @@ -41,7 +49,6 @@ en:          name: "Name"          published_name: "Published name"          comment: "Comments" -        section_status: "Section status"          registration_number: "Registration number"          stop_point_ids: "Route's stop selection"          objectid: "Neptune identifier" @@ -49,6 +56,10 @@ en:          created_at: Created at          updated_at: Updated at          creator_id: "Created by" +        full_journey_time: Full journey +        commercial_journey_time: Commercial journey +        stop_points: Nb stop areas +        checksum: Checksum    formtastic:      titles:        journey_pattern: diff --git a/config/locales/journey_patterns.fr.yml b/config/locales/journey_patterns.fr.yml index fb69f4190..10653a02d 100644 --- a/config/locales/journey_patterns.fr.yml +++ b/config/locales/journey_patterns.fr.yml @@ -1,6 +1,7 @@  fr:    journey_patterns:      journey_pattern: +      fetching_error: "La récupération des courses a rencontré un problème. Rechargez la page pour tenter de corriger le problème."        from_to: "De '%{departure}' à '%{arrival}'"        stop_count: "%{count}/%{route_count} arrêts"        vehicle_journeys_count: "Courses: %{count}" @@ -19,6 +20,13 @@ fr:      show:        title: "Mission %{journey_pattern}"        stop_points: "Liste des arrêts de la mission" +      stop_points_count:  +        none: '%{count} arrêt' +        one: '%{count} arrêt' +        other: '%{count} arrêts' +      informations: Informations +      confirmation: Confimation +      confirm_page_change: Vous vous apprêtez à changer de page. Voulez-vous valider vos modifications avant cela ?      index:        title: "Missions de %{route}"      form: @@ -40,15 +48,18 @@ fr:          route: "Séquence d'arrêts"          name: "Nom"          published_name: "Nom public" -        section_status: "Status section"          comment: "Commentaire" -        registration_number: "Numéro d'enregistrement" +        registration_number: "Code mission"          stop_point_ids: "Sélection des arrêts desservis"          objectid: "Identifiant Neptune"          object_version: "Version"          created_at: "Créé le"          updated_at: "Edité le"          creator_id: "Créé par" +        full_journey_time: Parcours complet +        commercial_journey_time: Parcours commercial +        stop_points: Nb arrêts +        checksum: Signature métier    formtastic:      titles:        journey_pattern: diff --git a/config/locales/layouts.en.yml b/config/locales/layouts.en.yml index debff05e5..31bff403c 100644 --- a/config/locales/layouts.en.yml +++ b/config/locales/layouts.en.yml @@ -3,15 +3,35 @@ en:      back_to_dashboard: "Back to Dashboard"      help: "Help"      home: "Home" +    operations: Operations      user:        profile: "My Profile"        sign_out: "Sign out"      navbar:        return_to_referentials: "Return to data spaces"        select_referential: "Select data space" +      select_referential_for_more_features: "Select data space for more foeatures"        select_referential_datas: "Select datas"        return_to_dashboard: "Return to Dashboard" +      dashboard: Dashboard        referential_datas: "Datas" +      line_referential: "Line referential" +      stop_area_referential: "Stop area referential" +      current_offer: +        one: Current offer +        other: Current offers +      workbench_output: +        organisation: Organisation offers +        workgroup: Workgroup offers +      tools: Tools +      sync: Synchronization +      sync_icar: iCAR synchronization +      sync_ilico: iLICO synchronization +      icar: iCAR +      ilico: iLICO +      portal: Portal (POSTIF) +      support: Support +      shapes: Shapes      history_tag:        title: "Metadatas"        created_at: "Created at" @@ -50,4 +70,4 @@ en:    attributes:      author: "Edited by"      created_at: "Created at" -    updated_at: "Updated at"
\ No newline at end of file +    updated_at: "Updated at" diff --git a/config/locales/layouts.fr.yml b/config/locales/layouts.fr.yml index 5e835bcf7..019c72701 100644 --- a/config/locales/layouts.fr.yml +++ b/config/locales/layouts.fr.yml @@ -3,15 +3,35 @@ fr:      back_to_dashboard: "Retour au Tableau de Bord"      help: "Aide"      home: "Accueil" +    operations: Opérations      user:        profile: "Mon Profil"        sign_out: "Déconnexion"      navbar:        return_to_referentials: "Retour à la liste des espaces de données"        select_referential: "Sélection de l'espace de données" +      select_referential_for_more_features: "Sélectionnez un jeu de données pour accéder à plus de fonctionnalités"        select_referential_datas: "Sélection des données"        return_to_dashboard: "Retour au Tableau de Bord" +      dashboard: Tableau de bord        referential_datas: "Données" +      line_referential: "Référentiel de lignes" +      stop_area_referential: "Référentiel d'arrêts" +      current_offer: +        one: Offres courante +        other: Offres courantes +      workbench_outputs: +        organisation: Offre de mon organisation +        workgroup: Offre du groupe de travail +      tools: Outils +      sync: Synchronisation +      sync_icar: Synchronisation iCAR +      sync_ilico: Synchronisation iLICO +      icar: iCAR +      ilico: iLICO +      portal: Portail (POSTIF) +      support: Support +      shapes: Tracés      history_tag:        title: "Métadonnées"        created_at: "Créé le" diff --git a/config/locales/line_referential_syncs.en.yml b/config/locales/line_referential_syncs.en.yml index 5cbab1173..8d17fcefc 100644 --- a/config/locales/line_referential_syncs.en.yml +++ b/config/locales/line_referential_syncs.en.yml @@ -1,4 +1,6 @@  en: +  line_referential_syncs: +    search_no_results: "No line referential synchronisation matching your query"      activerecord:      errors:        models: diff --git a/config/locales/line_referential_syncs.fr.yml b/config/locales/line_referential_syncs.fr.yml index 33827fac9..7f1b1ba75 100644 --- a/config/locales/line_referential_syncs.fr.yml +++ b/config/locales/line_referential_syncs.fr.yml @@ -1,4 +1,6 @@  fr: +  line_referential_syncs: +    search_no_results: "Aucun synchronisation de référentiel de lignes ne correspond à votre recherche"    activerecord:      errors:        models: diff --git a/config/locales/line_referentials.en.yml b/config/locales/line_referentials.en.yml index 5663ed691..6c15b340a 100644 --- a/config/locales/line_referentials.en.yml +++ b/config/locales/line_referentials.en.yml @@ -7,9 +7,9 @@ en:      edit:        title: "Edit %{name} referential"      show: -      title: "iLICO synchronization" +      title: Line referential        synchronized: Synchronized -      status: Status +      state: Status        message: Message    activerecord:      models: diff --git a/config/locales/lines.en.yml b/config/locales/lines.en.yml index 8e0189bd8..c1f9063a7 100644 --- a/config/locales/lines.en.yml +++ b/config/locales/lines.en.yml @@ -1,6 +1,5 @@  en:    lines: &en_lines -    search_no_results: "No line matching your query"      actions:        new: "Add a new line"        edit: "Edit this line" @@ -20,6 +19,9 @@ en:        show: 'Show'        show_network: 'Show network'        show_company: 'Show company' +    search_no_results: "No results found" +    filters: +      name_or_objectid_cont: "Search by name or objectid"      new:        title: "Add a new line"      create: @@ -33,11 +35,12 @@ en:        routes:          title: "Routes list"        group_of_lines: "Groups of lines" +      search_no_results: "No line matching your query"      index:        deactivated: "Disabled line"        title: "Lines"        line: "Line %{line}" -      name_or_number_or_objectid: "Search by name, short name or ID Codif..." +      name_or_number_or_objectid: "Search by name, short name or ID..."        no_networks: "No networks"        no_companies: "No companies"        no_group_of_lines: "No group of lines" @@ -76,14 +79,13 @@ en:            name: "Network"          company_id: "Company"          company: "Company" -        secondary_company: "Secondary company" +        secondary_companies: "Secondary companies"          companies:            name: "Company"          registration_number: "Registration number"          name: "Name"          published_name: "Published name"          registration_number: "Short name" -        deactivated: "Activated"          number: "Number"          transport_mode: "Transport mode"          transport_submode: "Transport Submode" @@ -116,6 +118,9 @@ en:          creator_id: "Created by"          footnotes: "Footnotes"          stable_id: External permanent idenifier" +        state: Status +        activated: Activated +        deactivated: Deactivated    formtastic:      titles:        line: diff --git a/config/locales/lines.fr.yml b/config/locales/lines.fr.yml index 2159f06ab..487cae35c 100644 --- a/config/locales/lines.fr.yml +++ b/config/locales/lines.fr.yml @@ -1,6 +1,5 @@  fr:    lines: &fr_lines -    search_no_results: "Aucune ligne ne correspond à votre recherche"      actions:        new: "Ajouter une ligne"        edit: "Editer cette ligne" @@ -20,6 +19,9 @@ fr:        show: 'Consulter'        show_network: 'Voir le réseau'        show_company: 'Voir le transporteur principal' +    search_no_results: "Aucun résultat" +    filters: +      name_or_objectid_cont: "Indiquez un nom d'itinéraire ou un ID..."      new:        title: "Ajouter une ligne"      create: @@ -34,11 +36,12 @@ fr:          title: "Liste des Itinéraires"        itineraries: "Liste des séquences d'arrêts de la ligne"        group_of_lines: "Groupes de lignes" +      search_no_results: "Aucune ligne ne correspond à votre recherche"      index:        deactivated: "Ligne désactivée"        title: "Lignes"        line: "Ligne %{line}" -      name_or_number_or_objectid: "Recherche par nom, nom court ou ID Codif..." +      name_or_number_or_objectid: "Recherche par nom, nom court ou ID..."        no_networks: "Aucun réseaux"        no_companies: "Aucun transporteurs"        no_group_of_lines: "Aucun groupes de ligne" @@ -77,11 +80,10 @@ fr:            name: "Réseau"          company_id: "Transporteur principal"          company: "Transporteur principal" -        secondary_company: "Transporteurs secondaires" +        secondary_companies: "Transporteurs secondaires"          companies:            name: "Transporteur principal"          registration_number: "Nom court" -        deactivated: "Activé"          name: "Nom de la ligne"          published_name: "Nom public"          number: "Numéro" @@ -116,6 +118,9 @@ fr:          creator_id: "Créé par"          footnotes: "Notes de bas de page"          stable_id: "Identifiant externe pérenne" +        state: État +        activated: Activée +        deactivated: Désactivée    formtastic:      titles:        line: diff --git a/config/locales/merges.en.yml b/config/locales/merges.en.yml new file mode 100644 index 000000000..f9e90f1ef --- /dev/null +++ b/config/locales/merges.en.yml @@ -0,0 +1,23 @@ +fr: +  merges: +    referential_name: "Merged offer %{date}" +    index: +      title: "Merged offers" +    new: +      title: "New merged offer" +    show: +      title: "Merged offer %{name}" +    actions: +      create: Merge data spaces +  activerecord: +    models: +      merge: "Merged offer" +    attributes: +      merge: +        created_at: "Created at" +        started_at: Started at +        name: Name +        ended_at: Ended at +        status: "Status" +        creator: "Creator" +        referentials: "Data spaces" diff --git a/config/locales/merges.yml b/config/locales/merges.fr.yml index d8511a7b4..345727b74 100644 --- a/config/locales/merges.yml +++ b/config/locales/merges.fr.yml @@ -8,7 +8,7 @@ fr:      show:        title: "Finalisation de l'offre %{name}"      actions: -      create: "Finaliser des Jeux de Données" +      create: Finaliser des Jeux de Données    activerecord:      models:        merge: "Finalisation de l'offre" diff --git a/config/locales/networks.en.yml b/config/locales/networks.en.yml index 94a8d9df0..2046a30ae 100644 --- a/config/locales/networks.en.yml +++ b/config/locales/networks.en.yml @@ -15,7 +15,7 @@ en:      index:        title: "Networks"        name: "Search by name..." -      name_or_objectid: "Search by name or by Codifligne ID..." +      name_or_objectid: "Search by name or by ID..."        advanced_search: "Advanced search"    activerecord:      models: diff --git a/config/locales/purchase_windows.en.yml b/config/locales/purchase_windows.en.yml index 9ce05a1b9..9ff1576cd 100644 --- a/config/locales/purchase_windows.en.yml +++ b/config/locales/purchase_windows.en.yml @@ -63,7 +63,7 @@ en:          one: purchase window          other: purchase windows      attributes: -      purchase_windows: +      purchase_window:          name: Name          date_ranges: Date ranges          referential: Referential @@ -71,7 +71,7 @@ en:          bounding_dates: Bounding Dates      errors:        models: -        purchase_windows: +        purchase_window:            attributes:              dates:                date_in_date_ranges: A date can not be in Dates and in Date ranges. diff --git a/config/locales/purchase_windows.fr.yml b/config/locales/purchase_windows.fr.yml index 3d5582ead..7f2ec259f 100644 --- a/config/locales/purchase_windows.fr.yml +++ b/config/locales/purchase_windows.fr.yml @@ -27,7 +27,7 @@ fr:        show: "Consulter"        edit: Editer        destroy: Supprimer -      destroy_confirm: Etes vous sûr de supprimer cet calendrier commercial ? +      destroy_confirm: Etes vous sûr de vouloir supprimer ce calendrier commercial ?      errors:        overlapped_periods: Une autre période chevauche cette période        short_period: "Une période doit être d'une durée de deux jours minimum" diff --git a/config/locales/referentials.en.yml b/config/locales/referentials.en.yml index b7483c0aa..1381d5ddd 100644 --- a/config/locales/referentials.en.yml +++ b/config/locales/referentials.en.yml @@ -3,7 +3,7 @@ en:      filters:        name_or_number_or_objectid: 'Search by name, number or objectid'        name: 'Search by name' -      line: 'Seach by associated lines' +      line: 'Search by associated lines'      search_no_results: 'No data space matching your query'      error_period_filter: "The period filter must have valid bounding dates"      index: @@ -51,7 +51,7 @@ en:      overview:        head:          dates: Dates -        lines: Lignes +        lines: Lines          today: Today          prev_page: Prev. page          next_page: Next page @@ -64,7 +64,7 @@ en:          other: "data spaces"      attributes:        referential: -        name: "Data space name" +        name: "Name"          status: "Status"          slug: "Code"          prefix: "Neptune Object Id prefix" @@ -105,7 +105,7 @@ en:          created_from: 'Created from'          updated_at: "Updated"          created_at: "Created" -        organisation: 'Organisation' +        organisation: 'Organization'          number_of_lines: 'No. of lines'    formtastic:      titles: diff --git a/config/locales/referentials.fr.yml b/config/locales/referentials.fr.yml index 53183a4c2..cf012ef8e 100644 --- a/config/locales/referentials.fr.yml +++ b/config/locales/referentials.fr.yml @@ -32,7 +32,7 @@ fr:          title: 'Dupliquer un jeu de données'        submit: "Valider"      select_compliance_control_set: -      title: "Sélection du jeu de contôle" +      title: "Sélection du jeu de contrôles"      actions:        new: "Créer un jeu de données"        destroy_confirm: "Etes vous sûr de vouloir supprimer ce jeu de données ?" diff --git a/config/locales/routes.en.yml b/config/locales/routes.en.yml index bd8358bdd..c1bacf7f0 100644 --- a/config/locales/routes.en.yml +++ b/config/locales/routes.en.yml @@ -1,8 +1,10 @@  en:    routes: -    search_no_results: "No route matching your query" +    filters: +      placeholder: Search by name or ID +      no_results: "No route matching your query"      actions: -      new: "Add a new route" +      new: "Add a route"        edit: "Edit this route"        edit_boarding_alighting: "Stop alighting and boarding"        destroy: "Remove this route" @@ -13,9 +15,9 @@ en:        export_hub_all: "Export HUB routes"        add_stop_point: "Add stop point"        new_stop_point: "Create new stop" -      opposite_route_timetable: "Timetable back" +      reversed_vehicle_journey: "Reversed vehicle journeys"      new: -      title: "Add a new route" +      title: "Add a route"      edit:        title: "Update route %{name}"        select2: @@ -55,7 +57,7 @@ en:        for_boarding: "Boarding"        for_alighting: "Alighting"      duplicate: -      title: "Duplicate route" +      title: "Clone route"        success: "Route cloned with success"      route:        no_journey_pattern: "No Journey pattern" @@ -82,7 +84,7 @@ en:          number: "Number"          direction: "Direction"          wayback: "Direction" -        stop_points: "Nb Stop points" +        stop_points: "Nb Stop areas"          opposite_route: "Reversed route"          opposite_route_id: "Reversed route"          objectid: "Neptune identifier" @@ -91,6 +93,8 @@ en:          updated_at: Updated at          creator_id: "Created by"          no_journey_pattern: "No journey pattern" +        stop_area_departure: Stop area departure  +        stop_area_arrival: Stop area arrival     formtastic:      titles:        route: diff --git a/config/locales/routes.fr.yml b/config/locales/routes.fr.yml index c08e64cfd..f4eefa10d 100644 --- a/config/locales/routes.fr.yml +++ b/config/locales/routes.fr.yml @@ -1,6 +1,8 @@  fr:    routes: -    search_no_results: "Aucun itinéraire ne correspond à votre recherche" +    filters: +      placeholder: Indiquez un nom d'itinéraire ou un ID... +      no_results: "Aucun itinéraire ne correspond à votre recherche"      actions:        new: "Ajouter un itinéraire"        edit: "Editer cet itinéraire" @@ -13,7 +15,8 @@ fr:        export_hub_all: "Export HUB des itinéraires"        add_stop_point: "Ajouter un arrêt"        new_stop_point: "Créer un arrêt pour l'ajouter" -      opposite_route_timetable: "Horaires retour" +      reversed_vehicle_journey: "Horaires retour" +    opposite: "%{name} (retour)"      new:        title: "Ajouter un itinéraire"      edit: @@ -54,6 +57,9 @@ fr:        stop_area_name: "Nom de l'arrêt"        for_boarding: "Montée"        for_alighting: "Descente" +    create_opposite: +      title: "Créer retour" +      success: "itinéraire créé avec succès"      duplicate:        title: "Dupliquer l'itinéraire"        success: "itinéraire dupliqué avec succès" @@ -95,6 +101,8 @@ fr:          updated_at: "Edité le"          creator_id: "Créé par"          no_journey_pattern: "Pas de mission" +        stop_area_departure: Arrêt de départ +        stop_area_arrival: Arrêt d'arrivée    formtastic:      titles:        route: diff --git a/config/locales/routing_constraint_zones.en.yml b/config/locales/routing_constraint_zones.en.yml index 5675fd5db..2143ce1e1 100644 --- a/config/locales/routing_constraint_zones.en.yml +++ b/config/locales/routing_constraint_zones.en.yml @@ -26,7 +26,11 @@ en:                stop_points_not_from_route: 'Stop point does not belong to the Route of this Routing constraint zone.'                all_stop_points_selected: 'All stop points from route cannot be selected.'    routing_constraint_zones: -    search_no_results: "No ITL matches your query" +    filters: +      associated_route:  +        title: Associated route +        placeholder: Put the name of a route... +      name_or_objectid_cont:  Search by name or ID...      actions:        destroy_confirm: Are you sure you want to delete this routing constraint zone?      new: @@ -36,4 +40,5 @@ en:      show:        title: "Routing constraint zone %{name}"      index: -      title: "Interdictions of local trafficous" +      title: "Routing constraint zones" +      search_no_results: "No ITL matches your query" diff --git a/config/locales/routing_constraint_zones.fr.yml b/config/locales/routing_constraint_zones.fr.yml index 024dd3288..b5e0fa7fb 100644 --- a/config/locales/routing_constraint_zones.fr.yml +++ b/config/locales/routing_constraint_zones.fr.yml @@ -2,9 +2,9 @@ fr:    activerecord:      models:        routing_constraint_zone: -        zero: zone de contrainte -        one: zone de contrainte -        other: zone de contraintes +        zero: ITL +        one: ITL +        other: ITLs      attributes:        routing_constraint_zone:          checksum: Signature métier @@ -26,7 +26,11 @@ fr:                stop_points_not_from_route: "Arrêt sur séquence d'arrêts n'appartient pas à la Route de cette Zone de contrainte."                all_stop_points_selected: "Une ITL ne peut pas couvrir tous les arrêts d'un itinéraire."    routing_constraint_zones: -    search_no_results: "Aucune ITL ne correspond à votre recherche" +    filters: +      associated_route:  +        title: Itinéraire associé +        placeholder: Indiquez un itinéraire... +      name_or_objectid_cont:  Indiquez un nom d'ITL ou un ID...      actions:        destroy_confirm: Etes vous sûr de supprimer cette ITL ?      new: @@ -37,3 +41,4 @@ fr:        title: "Zone de contrainte %{name}"      index:        title: "Interdictions de trafic local" +      search_no_results: "Aucune ITL ne correspond à votre recherche" diff --git a/config/locales/select2.en.yml b/config/locales/select2.en.yml new file mode 100644 index 000000000..308540af0 --- /dev/null +++ b/config/locales/select2.en.yml @@ -0,0 +1,15 @@ +en: +  select2: +    error_loading: The results cannot be loaded. +    input_too_long: +      one: Remove %{count} letter +      other: Remove %{count} letters +    input_too_short: +      one: Type %{count} letter +      other: Type %{count} letters +    loading_more: Loading more… +    maximum_selected: +      one: You can select %{count} element +      other: You can select %{count} elements +    no_results: No Results +    searching: Searching... diff --git a/config/locales/select2.fr.yml b/config/locales/select2.fr.yml new file mode 100644 index 000000000..4a37a3d78 --- /dev/null +++ b/config/locales/select2.fr.yml @@ -0,0 +1,15 @@ +fr: +  select2: +    error_loading: Les résultats ne peuvent pas être chargés. +    input_too_long: +      one: Supprimez %{count} caractère +      other: Supprimez %{count} caractères +    input_too_short: +      one: Saisissez %{count} caractère +      other: Saisissez %{count} caractères +    loading_more: Chargement de résultats supplémentaires… +    maximum_selected: +      one: Vous pouvez sélectionner %{count} élément +      other: Vous pouvez sélectionner %{count} élément +    no_results: Aucun résultat trouvé +    searching: Recherche en cours...
\ No newline at end of file diff --git a/config/locales/stop_area_referential_syncs.en.yml b/config/locales/stop_area_referential_syncs.en.yml index 2bfe0bc0a..1605f73f2 100644 --- a/config/locales/stop_area_referential_syncs.en.yml +++ b/config/locales/stop_area_referential_syncs.en.yml @@ -1,4 +1,6 @@  en: +  stop_area_referential_syncs: +    search_no_results: "No stop area referential synchronisation matching your query"    activerecord:      errors:        models: diff --git a/config/locales/stop_area_referential_syncs.fr.yml b/config/locales/stop_area_referential_syncs.fr.yml index cbed11883..b4ed7202b 100644 --- a/config/locales/stop_area_referential_syncs.fr.yml +++ b/config/locales/stop_area_referential_syncs.fr.yml @@ -1,4 +1,6 @@  fr: +  stop_area_referential_syncs: +    search_no_results: "Aucun synchronisation de référentiel d'arrêts ne correspond à votre recherche"    activerecord:      errors:        models: diff --git a/config/locales/stop_area_referentials.en.yml b/config/locales/stop_area_referentials.en.yml index 11baf67e2..3fa91bc92 100644 --- a/config/locales/stop_area_referentials.en.yml +++ b/config/locales/stop_area_referentials.en.yml @@ -5,6 +5,9 @@ en:        cancel_sync: "Cancel reflex synchronization"      show:        title: 'Synchronization iCAR' +      synchronized: Synchronized +      status: status +      message: Message    activerecord:      models:        stop_area_referential: diff --git a/config/locales/stop_area_referentials.fr.yml b/config/locales/stop_area_referentials.fr.yml index bb4c4463a..956e801f1 100644 --- a/config/locales/stop_area_referentials.fr.yml +++ b/config/locales/stop_area_referentials.fr.yml @@ -5,6 +5,9 @@ fr:        cancel_sync: "Annuler la synchronisation Reflex"      show:        title: 'Synchronisation iCAR' +      synchronized: Synchronisé +      status: Statut +      message: Message          activerecord:      models:        stop_area_referential: diff --git a/config/locales/stop_areas.en.yml b/config/locales/stop_areas.en.yml index c1ced1094..4d19a77e9 100644 --- a/config/locales/stop_areas.en.yml +++ b/config/locales/stop_areas.en.yml @@ -5,6 +5,10 @@ en:      errors:        empty: Aucun stop_area_id        parent_area_type: can not be of type %{area_type} +      registration_number: +        already_taken: Already taken +        cannot_be_empty: This field is mandatory +        invalid: "Incorrect value (expected value: \"%{mask}\")"      default_geometry_success: "%{count} modified stop areas"      stop_area:        no_position: "No Position" @@ -14,12 +18,13 @@ en:        general: "General"        localisation: "Localisation"        accessibility: "Accessibility" +      custom_fields: "Custom fields"      actions: -      new: "Add a new stop" -      create: "Add a new stop" -      edit: "Edit this stop" -      update: "Edit this stop" -      destroy: "Remove" +      new: "Add a stop area" +      create: "Add a stop area" +      edit: "Edit stop area" +      update: "Edit stop area" +      destroy: "Delete stop area"        activate: "Activate this stop"        deactivate: "Deactivate this stop"        activate_confirm: "Are you sure you want to activate this stop ?" @@ -43,9 +48,9 @@ en:        export_hub_physical: "Export HUB physical"      filters:        name_or_objectid: "Search by name or by objectid..." -      zip_code: Type a zip code... -      city_name: Type a city name... -      area_type: Type an area type... +      zip_code: Enter a zip code... +      city_name: Enter a city name... +      area_type: Enter an area type...      new:        title: "Add a new stop"      update: @@ -54,18 +59,21 @@ en:        address: "246 Boulevard Saint-Germain, 75007 Paris"        geolocalize: "Pinpoint "      edit: -      title: "Update stop %{stop_area}" +      title: "Update stop %{name}"      update: -      title: "Update stop %{stop_area}" +      title: "Update stop %{name}"      show: -      title: "Stop %{stop_area}" +      title: "Stop %{name}"        geographic_data: "Geographic data"        no_geographic_data: "None"        itl_managment: "Routing constraint's links managment"        stop_managment: "Parent-child relations"        access_managment: "Access Points and Links managment"        access_points: "Access Points" -      not_editable: "Le type d'arrêt est non modifiable" +      not_editable: "The area type is not editable" +      state: +        active: Active +        deactivated: Deactivated      genealogical:        genealogical: "Links between stop area"        genealogical_routing: "Routing constraint's links" @@ -103,8 +111,11 @@ en:          name: "Name"          registration_number: "Registration number"          published_name: "Published name" -        deleted: "Deleted" -        deleted_at: "Deleted at" +        in_creation: "In creation" +        confirmed: "Activated" +        confirmed_at: "Activated at" +        deleted: "Deactivated" +        deleted_at: "Deactivated at"          comment: "Description"          stop_area_type: "Area type"          area_type: "Area type" @@ -136,14 +147,14 @@ en:          coordinates: "Coordinates (lat,lng) WGS84"          zip_code: "Zip code"          city_name: "City" -        created_at: Created at -        updated_at: Updated at          waiting_time: Waiting time (minutes) +        state: Status    formtastic:      titles:        stop_area:          name: ""          registration_number: "only alphanumerical or underscore characters" +        registration_number_format: "authorized format : %{registration_number_format}"          objectid: "[prefix]:StopArea:[unique_key] : prefix contains only alphanumerical or underscore characters, unique_key accepts also minus character"          nearest_topic_name: ""          city_name: "" @@ -195,6 +206,9 @@ en:            comment: "Maximum length = 255."            coordinates: "Coordinates are mandatory."            projection_xy: "x,y in secondary referential, dot for decimal separator" +    hints: +      stop_area: +        registration_number: Leave empty for automatic value.    referential_stop_areas:      <<: *en_stop_areas diff --git a/config/locales/stop_areas.fr.yml b/config/locales/stop_areas.fr.yml index ede1aada6..6a5fbf24b 100644 --- a/config/locales/stop_areas.fr.yml +++ b/config/locales/stop_areas.fr.yml @@ -6,6 +6,10 @@ fr:        empty: Aucun stop_area_id        parent_area_type: ne peut être de type %{area_type}        incorrect_kind_area_type: Ce type d'arrêt est invalide pour cette catégorie +      registration_number: +        already_taken: Déjà utilisé +        cannot_be_empty: Ce champ est requis +        invalid: "Valeur invalide (valeur attendue: \"%{mask}\")"      default_geometry_success: "%{count} arrêts édités"      stop_area:        no_position: "Pas de position" @@ -15,6 +19,7 @@ fr:        general: "General"        localisation: "Localisation"        accessibility: "Accessibilité" +      custom_fields: "Champs personnalisés"      actions:        new: "Ajouter un arrêt"        create: "Ajouter un arrêt" @@ -67,6 +72,9 @@ fr:        access_managment: "Gestion des accès et liens associés"        access_points: "Points d'accès"        not_editable: "Le type d'arrêt est non modifiable" +      state: +        active: Actif +        deactivated: Désactivé      genealogical:        genealogical: "Lien entre arrêts"        genealogical_routing: "Liens de l'ITL" @@ -105,8 +113,12 @@ fr:          kind: "Catégorie"          registration_number: "Numéro d'enregistrement"          published_name: "Nom public" -        deleted: "Supprimé" -        deleted_at: "Activé" +        in_creation: "En création" +        confirmed: "Actif" +        confirmed_at: "Activé le" +        deleted: "Désactivé" +        deactivated: "Désactivé" +        deleted_at: "Désactivé le"          comment: "Commentaire"          stop_area_type: "Type d'arrêt"          area_type: "Type d'arrêt" @@ -138,14 +150,14 @@ fr:          coordinates: "Coordonnées (lat,lng) WGS84"          zip_code: "Code postal"          city_name: "Commune" -        created_at: "Créé le" -        updated_at: "Edité le"          waiting_time: Temps de desserte (minutes) +        state: État    formtastic:      titles:        stop_area:          name: ""          registration_number: "caractères autorisés : alphanumériques et 'souligné'" +        registration_number_format: "format autorisé: %{registration_number_format}"          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: ""          city_name: "" @@ -197,6 +209,9 @@ fr:            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'" +    hints: +      stop_area: +        registration_number: Laisser blanc pour assigner une valeur automatiquement.    referential_stop_areas:      <<: *fr_stop_areas diff --git a/config/locales/stop_points.en.yml b/config/locales/stop_points.en.yml index 72e138270..bcdb56de8 100644 --- a/config/locales/stop_points.en.yml +++ b/config/locales/stop_points.en.yml @@ -43,8 +43,8 @@ en:          created_at: Created          updated_at: Updated          deleted_at: "Activated" -        for_boarding: "For boarding" -        for_alighting: "For alighting" +        for_boarding: "Boarding" +        for_alighting: "Alighting"          area_type: "Area type"          city_name: "City name"          zip_code: "Zip code" @@ -52,7 +52,7 @@ en:    simple_form:      labels:        stop_point: -        name: Stop Point -        for_boarding: "Pickup" -        for_alighting: "Drop off" +        name: Stop Area +        for_boarding: Boarding +        for_alighting: Alighting          reflex_id: ID diff --git a/config/locales/table_builders.en.yml b/config/locales/table_builders.en.yml new file mode 100644 index 000000000..9ee59a1e1 --- /dev/null +++ b/config/locales/table_builders.en.yml @@ -0,0 +1,3 @@ +en: +  table_builders: +    selected_elements: "selected element(s)"
\ No newline at end of file diff --git a/config/locales/table_builders.fr.yml b/config/locales/table_builders.fr.yml new file mode 100644 index 000000000..3c92640fc --- /dev/null +++ b/config/locales/table_builders.fr.yml @@ -0,0 +1,3 @@ +fr: +  table_builders: +    selected_elements: "élement(s) sélectionné(s)"
\ No newline at end of file diff --git a/config/locales/vehicle_journey_exports.en.yml b/config/locales/vehicle_journey_exports.en.yml index 93a782026..4e658353e 100644 --- a/config/locales/vehicle_journey_exports.en.yml +++ b/config/locales/vehicle_journey_exports.en.yml @@ -1,7 +1,7 @@  en:    vehicle_journey_exports:      new: -      title: "Export existing vehicle journey at stops" +      title: Vehicle journeys export        basename: "vehicle_journeys"      label:        vehicle_journey_id: "vj id (empty for new vj)" diff --git a/config/locales/vehicle_journeys.en.yml b/config/locales/vehicle_journeys.en.yml index 1fa2618dd..c0d6f74d4 100644 --- a/config/locales/vehicle_journeys.en.yml +++ b/config/locales/vehicle_journeys.en.yml @@ -1,14 +1,31 @@  en:    vehicle_journeys:      vehicle_journeys_matrix: +      filters: +        id: Filter by ID... +        journey_pattern: Filter by journey pattern... +        timetable: Filter by timetable... + +        purchase_window: Filter by purchase window        cancel_selection: "Cancel Selection"        fetching_error: "There has been a problem fetching the data. Please reload the page to try again."        line_routes: "Line's routes"        modal_confirm: 'Do you want to save mofications before moving on to the next page ?' -      pagination: "Schedules %{minVJ} to %{maxVJ} over %{total}"        selected_journeys: "%{count} selected journeys"        show_purchase_window: 'Show the purchase window'        show_timetable: 'Show calendar' +      no_associated_timetables: No associated timetables +      no_associated_purchase_windows: No associated purchase windows +      no_associated_footnotes: No associated footnotes +      duplicate: +        one: Clone %{count} vehicle journey +        other: Clone %{count} vehicle journeys +        start_time: Indicative start time +        number: Number of vehicle journeys to create and clone +        delta: Delta from which vehicle journeys are created +      affect_company: Affect company +      no_line_footnotes: The line doesn't have any footnotes +      select_footnotes: Select footnotes to associate with the vehicle journey      vehicle_journey:        title_stopless: "Vehicle journey %{name}"        title: "Vehicle journey leaving from %{stop} at %{time}" @@ -17,10 +34,10 @@ en:        title: "Vehicle journey frequency leaving from %{stop} at %{time}"        title_frequency: "Vehicle journey frequency with %{interval}min leaving from %{stop} at %{time_first} to %{time_last}"      actions: -      index: "Vehicle time's board" -      new: "Add a new timed vehicle journey" +      index: "Vehicle journeys" +      new: "Add a new vehicle journey"        new_frequency: "Add a new frequency vehicle journey" -      edit: "Edit this timed vehicle journey" +      edit: "Edit this vehicle journey"        edit_frequency: "Edit this frequency vehicle journey"        destroy: "Remove this vehicle journey"        destroy_confirm: "Are you sure you want destroy this vehicle journey?" @@ -48,15 +65,18 @@ en:        show_journeys_without_schedule: "Show journeys without schedule"        slide_arrival: "arrival time at first stop"        slide_departure: "departure time at first stop" -      slide_title: "Shift all vehicle passing times" +      slide_title: "Shift all the vehicle journey passing times : %{id}"        slide: "Shift" +      slide_delta: "Shift of"        starting_stop: "Departure"        stop_title: "Stop"        submit_frequency_edit: "Edit frequency vehicle journey"        submit_frequency: "Create frequency vehicle journey"        submit_timed_edit: "Edit vehicle journey"        submit_timed: "Create vehicle journey" -      time_tables: "Associated calendars to vehicle journey" +      time_tables: "Associated timetables" +      purchase_windows: Associated purchase windows +      footnotes: Associated footnotes        to_arrivals: "Copy departures to arrivals"        to_departures: "Copy arrivals to departures"        to: "at" @@ -102,6 +122,7 @@ en:          checksum: "Checksum"          comment: "Comments"          company: "Company" +        company_name: "Company name"          created_at: Created at          creator_id: "Created by"          departure_time: "Departure" @@ -110,9 +131,11 @@ en:          footnote_ids: "Footnotes"          id: "Journey ID"          journey_frequency_ids: "Timeband" -        journey_name: "Name of the journey" +        journey_name: "Name of the vehicle journey"          journey_pattern_id: "Pattern ID"          journey_pattern: "Journey Pattern" +        journey_pattern_published_name: "Journey Pattern published name" +        journey_length: "Journey length"          line: "Line"          mobility_restricted_suitability: "PRM accessibility"          name: "Journey Name" @@ -126,7 +149,6 @@ en:          purchase_window: "Purchase availability"          regular_fs: "Regular service"          route: "Route" -        status_value: "Status Value"          time_slot: "Time Slot"          time_table_ids: "Calendar list"          time_tables: "Calendars" @@ -138,6 +160,7 @@ en:          updated_at: Updated at          vehicle_journey_at_stop_ids: "Time list"          vehicle_type_identifier: "Vehicle Type Identifier" +        start_time: Start time      errors:        models:          vehicle_journey: diff --git a/config/locales/vehicle_journeys.fr.yml b/config/locales/vehicle_journeys.fr.yml index a43fa4580..b17e102a8 100644 --- a/config/locales/vehicle_journeys.fr.yml +++ b/config/locales/vehicle_journeys.fr.yml @@ -1,14 +1,30 @@  fr:    vehicle_journeys:      vehicle_journeys_matrix: +      filters: +        id: Filtrer par ID course... +        journey_pattern: 'Filtrer par code, nom ou OID de mission...' +        timetable: Filtrer par calendrier... +        purchase_windows: Filtrer par calendrier commercial...        cancel_selection: "Annuler la sélection"        fetching_error: "La récupération des missions a rencontré un problème. Rechargez la page pour tenter de corriger le problème."        line_routes: "Séquences d'arrêts de la ligne"        modal_confirm: 'Voulez-vous valider vos modifications avant de changer de page?' -      pagination: "Liste des horaires %{minVJ} à %{maxVJ} sur %{total}"        selected_journeys: "%{count} course(s) sélectionnée(s)"        show_purchase_window: 'Voir le calendrier commercial'        show_timetable: 'Voir le calendrier' +      no_associated_timetables: Aucun calendrier associé +      no_associated_purchase_windows: Aucun calendrier commercial associé +      no_associated_footnotes: Aucune note associée +      duplicate: +        one: Dupliquer %{count} course +        other: Dupliquer %{count} courses +        start_time: Horaire de départ indicatif +        number: Nombre de courses à créer et dupliquer +        delta: Décalage à partir duquel on créé les courses +      affect_company: Indiquez un nom de transporteur... +      no_line_footnotes: La ligne ne possède pas de notes +      select_footnotes: Sélectionnez les notes à associer à cette course      vehicle_journey:        title_stopless: "Course %{name}"        title: "Course partant de %{stop} à %{time}" @@ -48,8 +64,9 @@ fr:        show_journeys_without_schedule: "Afficher les courses sans horaires"        slide_arrival: "horaire d'arrivée au 1° arrêt à"        slide_departure: "horaire de départ au 1° arrêt à" -      slide_title: "Décaler l'ensemble des horaires de course" +      slide_title: "Décaler l'ensemble des horaires de la course : %{id}"        slide: "Décaler" +      slide_delta: "Avec un décalage de"        starting_stop: "Origine"        stop_title: "Arrêt"        submit_frequency_edit: "Editer course en fréquence" @@ -57,6 +74,8 @@ fr:        submit_timed_edit: "Editer course"        submit_timed: "Créer course"        time_tables: "Calendriers associés à la course" +      purchase_windows: "Calendriers commerciaux associés à la course" +      footnotes: "Notes associés à la course"        to_arrivals: "Copie départs vers arrivées"        to_arrivals: "Copie départs vers arrivées"        to_departures: "Copie arrivées vers départs" @@ -103,6 +122,7 @@ fr:          checksum: "Signature métier"          comment: "Commentaires"          company: "Transporteur" +        company_name: "Nom du transporteur"          created_at: "Créé le"          creator_id: "Créé par"          departure_time: "Départ" @@ -114,6 +134,8 @@ fr:          journey_name: "Nom de la course"          journey_pattern_id: "ID Mission"          journey_pattern: "Mission" +        journey_pattern_published_name: "Nom public de la mission" +        journey_length: "Parcours commercial"          line: "Ligne"          mobility_restricted_suitability: "Accessibilité PMR"          name: "Nom Course" @@ -122,15 +144,14 @@ fr:          object_version: "Version"          objectid: "Identifiant Neptune"          on_demand_fs: "Service à la demande" -        published_journey_identifier: "Identifiant public" +        published_journey_identifier: "Numéro de train"          published_journey_name: "Nom public"          purchase_window: "Disponibilité commerciale"          regular_fs: "Service régulier"          route: "Itinéraire" -        status_value: "Etat de trafic"          time_slot: "Fréquence"          time_table_ids: "Liste des calendriers" -        time_tables: "Calendriers" +        time_tables: "Calendriers associés"          train_number: "Numéro de train"          transport_mode: "Mode de transport"          transport_submode: "Sous-mode de transport" @@ -139,6 +160,7 @@ fr:          updated_at: "Edité le"          vehicle_journey_at_stop_ids: "Liste des horaires"          vehicle_type_identifier: "Type d'identifiant du véhicule" +        start_time: Heure de départ      errors:        models:          vehicle_journey: diff --git a/config/locales/will_paginate.en.yml b/config/locales/will_paginate.en.yml index 29b8fe2bf..8f3189675 100644 --- a/config/locales/will_paginate.en.yml +++ b/config/locales/will_paginate.en.yml @@ -32,11 +32,11 @@ en:        single_page:          zero:  "No item found"          one:   "1 %{model} shown" -        other: "%{model} 1 to %{count} of %{count}" +        other: "%{model} 1 to %{count} out of %{count}"        single_page_html:          zero:  "No item found"          one:   "1 %{model} shown" -        other: "%{model} 1 to %{count} of %{count}" +        other: "%{model} 1 to %{count} out of %{count}" -      multi_page: "%{model} %{from} to %{to} of %{count}" -      multi_page_html: "%{model} %{from} to %{to} of %{count}" +      multi_page: "%{model} list %{from} to %{to} out of %{count}" +      multi_page_html: "%{model} list %{from} to %{to} out of %{count}" diff --git a/config/locales/workbench_outputs.en.yml b/config/locales/workbench_outputs.en.yml index 05cf52d0e..2af2f7023 100644 --- a/config/locales/workbench_outputs.en.yml +++ b/config/locales/workbench_outputs.en.yml @@ -1,7 +1,7 @@  en:    workbench_outputs:      show: -      title: "Finalisations de l'offre" -      see_current_output: "Voir l'Offre actuelle" +      title: Current offers +      see_current_output: See the current offer        table_headers: -        ended_at: "Offer created date" +        ended_at: "Ended at" diff --git a/config/locales/workbench_outputs.fr.yml b/config/locales/workbench_outputs.fr.yml index 560888c54..b4d339434 100644 --- a/config/locales/workbench_outputs.fr.yml +++ b/config/locales/workbench_outputs.fr.yml @@ -1,7 +1,7 @@  fr:    workbench_outputs:      show: -      title: "Finalisations de l'offre" +      title: Finaliser des jeux de données        see_current_output: "Voir l'Offre actuelle"        table_headers: -        ended_at: "Date et heure de création de l'offre" +        ended_at: "Date et heure de création" diff --git a/config/locales/workbenches.en.yml b/config/locales/workbenches.en.yml index 7f21f47a0..876f18766 100644 --- a/config/locales/workbenches.en.yml +++ b/config/locales/workbenches.en.yml @@ -1,7 +1,15 @@  en:    workbenches:      show: -      title: "%{name}" +      title: "Transport offer %{name}" +    edit: +      title: "Configure the workbench" +    update: +      title: "Configure the workbench" +    referential_count: +      zero: "There are no referentials in your workbench" +      one: "There is one referential in your workbench" +      other: "There are #{count} referentials in your workbench"      index:        title: "%{organisation} dashboard"        offers: @@ -12,13 +20,17 @@ en:          calendars: "Calendars"          see: "See the list"          no_content: "No content yet." -    referential_count: -      zero: "There is no referential in your workbench" -      one: "There is one referential in your workbench" -      other: "There are #{count} referentials in your workbench" +    actions: +      show_output: "Merge Transport Offer" +      affect_ccset: "Configure"    activerecord:      models:        workbench:          zero: "workbench"          one: "workbench"          other: "workbenches" +    attributes: +      workbench: +        import_compliance_control_set_id: Space data before import +        merge_compliance_control_set_id: Space data before merge + diff --git a/config/locales/workbenches.fr.yml b/config/locales/workbenches.fr.yml index e7a392e66..f857bfcd1 100644 --- a/config/locales/workbenches.fr.yml +++ b/config/locales/workbenches.fr.yml @@ -1,16 +1,35 @@  fr:    workbenches:      show: -      title: "%{name}" +      title: "Offre de transport %{name}" +    edit: +      title: "Configurer l'espace de travail" +    update: +      title: "Configurer l'espace de travail"      referential_count:        zero: "Aucun jeu de données dans cet espace de travail"        one: "1 jeu de données dans cet espace de travail"        other: "#{count} jeux de données dans cet espace de travail" +    index: +      title: "%{organisation} dashboard" +      offers: +        title: "Offre de transport" +        organisation: "Offres de mon Organisation" +        idf: "Offres IDF" +        referentials: "Jeux de données" +        calendars: "Calendriers" +        see: "Voir la liste" +        no_content: "Aucun contenu"      actions:        show_output: "Finaliser l'Offre" +      configure: "Configurer"    activerecord:      models:        workbench:          zero: "espace de travail"          one: "espace de travail"          other: "espaces de travail" +    attributes: +      workbench: +        import_compliance_control_set_id: Jeu de données après import +        merge_compliance_control_set_id: Jeu de Données avant intégration diff --git a/config/locales/zzz-stif.yml b/config/locales/zzz-stif.yml new file mode 100644 index 000000000..a9e6a0ef4 --- /dev/null +++ b/config/locales/zzz-stif.yml @@ -0,0 +1,5 @@ +fr: +  layouts: +    navbar: +      workbench_outputs: +        workgroup: Offre IDF diff --git a/config/routes.rb b/config/routes.rb index 456cb66f5..41b345aa5 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -1,9 +1,7 @@ -require 'sidekiq/web' -  ChouetteIhm::Application.routes.draw do    resource :dashboard -  resources :workbenches, only: [:show, :index] do +  resources :workbenches, except: [:destroy] do      delete :referentials, on: :member, action: :delete_referentials      resources :imports do        get :download, on: :member @@ -11,6 +9,12 @@ ChouetteIhm::Application.routes.draw do          resources :import_messages, only: [:index]        end      end +    resources :exports do +      post :upload, on: :member +      resources :export_resources, only: [:index] do +        resources :export_messages, only: [:index] +      end +    end      resources :compliance_check_sets, only: [:index, :show] do        get :executed, on: :member        resources :compliance_checks, only: [:show] @@ -57,6 +61,8 @@ ChouetteIhm::Application.routes.draw do      match 'lines' => 'lines#destroy_all', :via => :delete      resources :lines, controller: "referential_lines", except: :index do +      get :autocomplete, on: :collection, to: 'autocomplete_lines#index' +        resource :footnotes, controller: "line_footnotes"        delete :index, on: :collection, action: :delete_all        collection do @@ -66,6 +72,7 @@ ChouetteIhm::Application.routes.draw do          member do            get 'edit_boarding_alighting'            put 'save_boarding_alighting' +          get 'costs'            post 'duplicate', to: 'routes#duplicate'          end          resource :journey_patterns_collection, :only => [:show, :update] @@ -170,11 +177,13 @@ ChouetteIhm::Application.routes.draw do      end    end -  mount Sidekiq::Web => '/sidekiq' +  authenticate :user, lambda { |u| u.can_monitor_sidekiq? } do +    mount Sidekiq::Web => '/sidekiq' +  end    namespace :api do      namespace :v1 do -      resources :workbenches, only: [:index, :show] do +      resources :workbenches, except: [:destroy] do          resources :imports, only: [:index, :show, :create]        end        resources :access_links, only: [:index, :show] diff --git a/config/secrets.yml b/config/secrets.yml index 0de3fd6ef..963bacd36 100644 --- a/config/secrets.yml +++ b/config/secrets.yml @@ -18,6 +18,7 @@ development:    # geoportail_api_key: "aaaaaaaaaaaaaaaaaaaaaa"    newrelic_licence_key: ""    osrm_endpoint: "http://router.project-osrm.org" +  tomtom_api_key: ""  test:    secret_key_base: 54f61aab23322611dd0bbf73b7f034db34281f7f4b3c4992eaaff20ecc9673bbd467beaa6fcb48379ca69b80bc5662deac4e33ca144f2482146123d3e966016a @@ -37,3 +38,4 @@ production:    # geoportail_api_key: "aaaaaaaaaaaaaaaaaaaaaa"    newrelic_licence_key: ""    osrm_endpoint: "http://router.project-osrm.org" +  tomtom_api_key: "" diff --git a/config/secrets.yml.docker b/config/secrets.yml.docker index f9bbf5fa0..e35dd3d33 100644 --- a/config/secrets.yml.docker +++ b/config/secrets.yml.docker @@ -15,3 +15,4 @@    api_endpoint: <%= ENV.fetch 'IEV_API_ENDPOINT', 'http://iev:8080/chouette_iev/' %>    api_token: <%= ENV.fetch 'IEV_API_TOKEN', 'change this according to IEV configuration' %>    newrelic_licence_key: <%= ENV.fetch 'NR_LICENCE_KEY', 'will_not_work' %> +  tomtom_api_key: <%= ENV.fetch 'TOMTOM_API_KEY', 'will_not_work' %> diff --git a/config/webpacker.yml b/config/webpacker.yml index be1105bad..24a7e32dc 100644 --- a/config/webpacker.yml +++ b/config/webpacker.yml @@ -41,7 +41,7 @@ development:      public: localhost:3035      hmr: false      # Inline should be set to true if using HMR -    inline: true +    inline: false      overlay: true      disable_host_check: true      use_local_ip: false | 
