bulkrax 9.4.0 → 9.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +8 -2
  3. data/app/assets/javascripts/bulkrax/datatables.js +43 -8
  4. data/app/assets/javascripts/bulkrax/importers_stepper.js +221 -26
  5. data/app/assets/stylesheets/bulkrax/stepper/_review.scss +14 -12
  6. data/app/controllers/bulkrax/entries_controller.rb +2 -2
  7. data/app/controllers/bulkrax/exporters_controller.rb +3 -3
  8. data/app/controllers/bulkrax/guided_imports_controller.rb +3 -1
  9. data/app/controllers/bulkrax/importers_controller.rb +5 -5
  10. data/app/controllers/concerns/bulkrax/importer_file_handler.rb +1 -6
  11. data/app/errors/bulkrax/unzip_error.rb +16 -0
  12. data/app/jobs/bulkrax/importer_job.rb +40 -9
  13. data/app/matchers/bulkrax/application_matcher.rb +5 -6
  14. data/app/models/bulkrax/csv_entry.rb +1 -1
  15. data/app/models/bulkrax/importer.rb +3 -16
  16. data/app/parsers/bulkrax/application_parser.rb +50 -33
  17. data/app/parsers/bulkrax/bagit_parser.rb +12 -0
  18. data/app/parsers/bulkrax/csv_parser.rb +163 -49
  19. data/app/parsers/concerns/bulkrax/csv_parser/csv_template_generation.rb +4 -1
  20. data/app/parsers/concerns/bulkrax/csv_parser/csv_validation.rb +10 -8
  21. data/app/parsers/concerns/bulkrax/csv_parser/csv_validation_helpers.rb +69 -36
  22. data/app/parsers/concerns/bulkrax/csv_parser/csv_validation_hierarchy.rb +9 -7
  23. data/app/services/bulkrax/csv_template/file_validator.rb +1 -1
  24. data/app/services/bulkrax/csv_template/mapping_manager.rb +15 -6
  25. data/app/services/bulkrax/csv_template/split_formatter.rb +10 -3
  26. data/app/services/bulkrax/split_pattern_coercion.rb +42 -0
  27. data/app/services/bulkrax/stepper_response_formatter.rb +2 -1
  28. data/app/services/bulkrax/validation_error_csv_builder.rb +36 -12
  29. data/app/validators/bulkrax/csv_row/child_reference.rb +2 -1
  30. data/app/validators/bulkrax/csv_row/parent_reference.rb +1 -1
  31. data/app/validators/bulkrax/csv_row/required_values.rb +17 -3
  32. data/app/views/bulkrax/exporters/edit.html.erb +1 -1
  33. data/app/views/bulkrax/exporters/index.html.erb +3 -1
  34. data/app/views/bulkrax/exporters/new.html.erb +1 -1
  35. data/app/views/bulkrax/exporters/show.html.erb +1 -1
  36. data/app/views/bulkrax/guided_imports/new.html.erb +7 -0
  37. data/app/views/bulkrax/importers/_edit_item_buttons.html.erb +3 -3
  38. data/app/views/bulkrax/importers/index.html.erb +2 -0
  39. data/app/views/bulkrax/importers/new.html.erb +1 -1
  40. data/app/views/bulkrax/importers/show.html.erb +3 -1
  41. data/app/views/bulkrax/shared/_datatable_i18n.html.erb +3 -0
  42. data/config/locales/bulkrax.de.yml +95 -2
  43. data/config/locales/bulkrax.en.yml +58 -2
  44. data/config/locales/bulkrax.es.yml +95 -2
  45. data/config/locales/bulkrax.fr.yml +95 -2
  46. data/config/locales/bulkrax.it.yml +95 -2
  47. data/config/locales/bulkrax.pt-BR.yml +95 -2
  48. data/config/locales/bulkrax.zh.yml +96 -2
  49. data/db/migrate/20260424081537_remove_parents_from_bulkrax_importer_runs.rb +9 -0
  50. data/lib/bulkrax/version.rb +1 -1
  51. data/lib/bulkrax.rb +15 -1
  52. metadata +8 -4
@@ -17,13 +17,23 @@ fr:
17
17
  record_link: Lien %{record_type}
18
18
  unknown: Inconnu
19
19
  exporter:
20
+ hints:
21
+ generated_metadata: Ces champs exportés ne peuvent pas être importés actuellement.
22
+ include_thumbnails: Ces champs exportés ne peuvent pas être importés actuellement.
23
+ limit: Laisser vide ou 0 pour tous les enregistrements
20
24
  labels:
21
25
  all: Tous
22
26
  collection: Collection
27
+ collection_entries: Entrées de collection
28
+ download: Télécharger
29
+ export_format: Format d'exportation
23
30
  export_from: Exporter depuis
24
31
  export_source: Source d'exportation
25
32
  export_type: Type d'exportation
26
33
  field_mapping: Cartographie de terrain
34
+ file_set_entries: Entrées d'ensemble de fichiers
35
+ filter_by_date: Filtrer par date
36
+ finish_date: Date de fin
27
37
  full: Métadonnées et fichiers
28
38
  generated_metadata: Inclure les métadonnées générées ?
29
39
  importer: Importateur
@@ -33,7 +43,20 @@ fr:
33
43
  name: Nom
34
44
  parser_fields: Champs de l'analyseur
35
45
  parser_klass: Analyseur syntaxique
46
+ start_date: Date de début
47
+ status: Statut
48
+ total_entries: Total des entrées
49
+ total_work_entries: Total des œuvres
36
50
  user: Utilisateur
51
+ work_entries: Entrées d'œuvres
52
+ workflow_status:
53
+ approved: Approuvé
54
+ broken_url: URL brisée
55
+ deleted: Supprimé
56
+ in_process: En cours
57
+ ingested: Ingéré
58
+ needs_repair: Nécessite une réparation
59
+ unapproved: Non approuvé
37
60
  worktype: Type de travail
38
61
  prompts:
39
62
  export_from: Veuillez sélectionner une source d'exportation
@@ -45,7 +68,13 @@ fr:
45
68
  one: 'Une erreur a empêché l''enregistrement de cet exportateur :'
46
69
  other: 'Des erreurs %{count} ont empêché l''enregistrement de cet exportateur :'
47
70
  headings:
71
+ edit_exporter: Modifier l'exportateur
72
+ edit_importer: Modifier l'importateur
73
+ exporters: Exportateurs
48
74
  importers: Importateurs
75
+ new_exporter: Nouvel exportateur
76
+ new_importer: Nouvel importateur
77
+ upload_corrected_entries_action: Téléverser les entrées corrigées
49
78
  upload_corrected_entries: 'Entrées corrigées à télécharger : %{name}'
50
79
  importer:
51
80
  bagit:
@@ -77,6 +106,9 @@ fr:
77
106
  private: Privé
78
107
  public: Publique
79
108
  edit_form:
109
+ entry_modal_title: Options de mise à jour d'une entrée
110
+ entry_rebuild_hint: Reconstruire les métadonnées et les fichiers.
111
+ entry_remove_and_recreate_hint: Supprimer l'œuvre existante, puis recréer les métadonnées et les fichiers de l'œuvre.
80
112
  modal_title: Options de mise à jour de l'importateur
81
113
  remove_and_rerun_hint: Supprimez tous les fichiers, puis relancez l'importation en partant de zéro. Cela supprimera tous les fichiers et associations, et toutes les modifications effectuées depuis la dernière importation seront perdues.
82
114
  update_and_harvest_hint: Mettez à jour les valeurs dans le formulaire d'importation et les éléments qui ont été modifiés à la source.
@@ -96,19 +128,23 @@ fr:
96
128
  override_rights_statement: Si cette option est cochée, utiliser systématiquement la déclaration de droits sélectionnée. Sinon, utiliser les droits ou la déclaration de droits de l'enregistrement et n'utiliser la valeur fournie que si dc:rights est vide.
97
129
  labels:
98
130
  admin_set: Ensemble administratif
131
+ collection_entries: Entrées de collection
99
132
  entry_id: ID d'entrée
100
133
  exporter: Exportateur
134
+ file_set_entries: Entrées d'ensemble de fichiers
101
135
  frequency: Fréquence
102
136
  identifier: Identifiant
103
137
  importer: Importateur
104
138
  limit: Limite
105
139
  name: Nom
140
+ parser_fields: Champs de l'analyseur
106
141
  parser_klass: Analyseur syntaxique
107
142
  total_collections: Collections totales
108
143
  total_file_sets: Ensembles de fichiers totaux
109
144
  total_work_entries: Travaux totaux
110
145
  type: Taper
111
146
  user: Utilisateur
147
+ work_entries: Entrées d'œuvres
112
148
  oai:
113
149
  hints:
114
150
  metadata_prefix: Par exemple, oai_dc, dcterms ou oai_qdc
@@ -185,6 +221,8 @@ fr:
185
221
  review_total: "%{total} au total — %{collections} collections, %{works} œuvres, %{file_sets} ensembles de fichiers"
186
222
  review_visibility: 'Visibilité:'
187
223
  server_error: Erreur serveur lors de la validation. Veuillez réessayer ou contacter l'assistance.
224
+ existing_record_badge: existant
225
+ existing_record_title: Cet enregistrement existe déjà dans le dépôt et sera lié lors de l'importation.
188
226
  shared_badge: commun
189
227
  starting: Départ...
190
228
  upload_csv_and_zip: Fichiers CSV + téléchargés séparément
@@ -199,9 +237,20 @@ fr:
199
237
  validating: Validation en cours...
200
238
  validation_failed: La validation a échoué. Veuillez réessayer.
201
239
  validation_timeout: La validation a expiré. Vos fichiers sont peut-être trop volumineux. Veuillez essayer avec des fichiers plus petits ou contacter l'assistance.
240
+ validation_truncated_note: tronqué à %{shown} — téléchargez le CSV des erreurs pour la liste complète
241
+ validation_truncated_tooltip: Cette liste est limitée pour garder la page lisible. La liste complète se trouve dans le fichier CSV des erreurs téléchargeable.
202
242
  visibility_institution: Institution
203
243
  visibility_private: Privé
204
244
  visibility_public: Publique
245
+ warning_category_circular_reference: Référence circulaire
246
+ warning_category_default_work_type_used: Type d'œuvre par défaut utilisé
247
+ warning_category_duplicate_source_identifier: Identifiant source en double dans le CSV
248
+ warning_category_existing_source_identifier: Identifiant source existant (sera mis à jour)
249
+ warning_category_invalid_child_reference: Référence enfant non valide
250
+ warning_category_invalid_controlled_value: Valeur de vocabulaire contrôlé non valide
251
+ warning_category_invalid_parent_reference: Référence parente non valide
252
+ warning_category_missing_required_value: Valeur obligatoire manquante
253
+ warning_category_missing_source_identifier: Identifiant source manquant
205
254
  zip_limit: 'Un seul fichier ZIP est autorisé. Les fichiers suivants n''ont pas été ajoutés :'
206
255
  nav:
207
256
  back: Dos
@@ -264,6 +313,7 @@ fr:
264
313
  large_import_message_html: Vous allez importer <span class="total-items-count">%{count}</span> articles. Les importations volumineuses sont plus longues et plus difficiles à dépanner. Pensez à les fractionner en lots plus petits.
265
314
  large_import_warning: Avertissement concernant les importations importantes
266
315
  ready_to_import: Prêt à importer
316
+ section_errors: Erreurs
267
317
  section_files: Fichiers
268
318
  section_records: Archives
269
319
  section_settings: Paramètres
@@ -315,8 +365,7 @@ fr:
315
365
  missing_required_hint: Ajoutez cette colonne à votre fichier CSV.
316
366
  missing_required_title: Champs obligatoires manquants
317
367
  missing_rights_desc: Votre fichier CSV ne contient pas de colonne « droits_statement ». Vous pouvez l'ajouter ou sélectionner une déclaration de droits par défaut à l'étape suivante.
318
- multiple_csv_same_dir: Plusieurs fichiers CSV trouvés dans le même répertoire à l'intérieur du fichier ZIP
319
- multiple_csv_same_level: Plusieurs fichiers CSV trouvés au même niveau dans le fichier ZIP
368
+ multiple_csv: Plusieurs fichiers CSV se trouvent au niveau le moins profond dans le ZIP, ce qui empêche d'identifier le CSV principal. Conservez exactement un fichier CSV à ce niveau ; les CSV supplémentaires doivent être imbriqués plus profondément.
320
369
  no_csv_in_zip: Aucun fichier CSV trouvé dans le fichier ZIP
321
370
  no_csv_uploaded: Aucun fichier de métadonnées CSV n'a été téléchargé.
322
371
  no_files_uploaded: Aucun fichier téléchargé
@@ -325,6 +374,14 @@ fr:
325
374
  errors:
326
375
  message: "Le parent référencé « %{value} » n'existe pas en tant que %{field} dans ce CSV."
327
376
  suggestion: "Vérifiez les fautes de frappe ou ajoutez l'enregistrement parent."
377
+ child_reference_validator:
378
+ errors:
379
+ message: "L'enfant référencé « %{value} » n'existe pas en tant que %{field} dans ce CSV."
380
+ suggestion: "Vérifiez les fautes de frappe ou ajoutez l'enregistrement enfant."
381
+ circular_reference_validator:
382
+ errors:
383
+ message: "« %{value} » fait partie d'une relation parent-enfant circulaire."
384
+ suggestion: "Vérifiez les colonnes parent/enfant et supprimez les références incorrectes."
328
385
  passed: Validation réussie
329
386
  passed_warnings: Validation réussie avec avertissements
330
387
  recognized_fields: 'Champs reconnus : %{fields}'
@@ -341,11 +398,23 @@ fr:
341
398
  errors:
342
399
  message: "Le champ « %{field} » est obligatoire mais il est vide pour cette ligne."
343
400
  suggestion: "Ajoutez une valeur pour « %{field} »."
401
+ validation_error_csv_builder:
402
+ empty_column: "La colonne %{column} n'a pas d'en-tête et sera ignorée lors de l'importation"
403
+ missing_file: "Fichier manquant : %{filename}"
404
+ missing_required_column: "Colonne obligatoire manquante « %{field} » (%{model})"
405
+ unrecognized_column: "Colonne non reconnue « %{column} »"
406
+ unrecognized_column_with_suggestion: "Colonne non reconnue « %{column} » (vouliez-vous dire « %{suggestion} » ?)"
344
407
  unable_to_process: Impossible de traiter les fichiers pour validation
408
+ empty_column: 'Colonne %{column} (sans en-tête)'
345
409
  notices_desc: 'Ces avis peuvent affecter la façon dont votre CSV est importé :'
346
410
  notices_title: Avis d'importation
347
411
  unrecognized_desc: 'Ces colonnes seront ignorées lors de l''importation :'
348
412
  unrecognized_title: Champs non reconnus
413
+ unzip:
414
+ errors:
415
+ multiple_csv: Plusieurs fichiers CSV se trouvent au niveau le moins profond dans le ZIP, ce qui empêche d'identifier le CSV principal. Conservez exactement un fichier CSV à ce niveau ; les CSV supplémentaires doivent être imbriqués plus profondément.
416
+ no_csv: Aucun fichier CSV trouvé dans le fichier ZIP
417
+ unsafe_entry: "Le ZIP contient une entrée avec un chemin non sûr (%{name}). Les entrées ne doivent pas utiliser de chemins absolus ni de références au répertoire parent."
349
418
  validations:
350
419
  errors_prohibited:
351
420
  one: 'Une erreur a empêché l''enregistrement de cet importateur :'
@@ -401,11 +470,35 @@ fr:
401
470
  name: Nom
402
471
  next_run: Prochaine course
403
472
  status: Statut
473
+ status_set_at: Statut défini à
404
474
  total_collection_entries: Nombre total d'entrées de la collection
405
475
  total_file_set_entries: Nombre total d'entrées du fichier
406
476
  total_work_entries: Nombre total d'entrées de travail
407
477
  type: Taper
408
478
  updated_at: Mise à jour le
479
+ datatable:
480
+ filters:
481
+ filter_by_entry_class: Filtrer par classe d'entrée
482
+ filter_by_status: Filtrer par statut
483
+ language:
484
+ empty_table: Aucune donnée disponible dans le tableau
485
+ info: Affichage de _START_ à _END_ sur _TOTAL_ entrées
486
+ info_empty: Affichage de 0 à 0 sur 0 entrées
487
+ info_filtered: (filtré à partir de _MAX_ entrées au total)
488
+ length_menu: Afficher _MENU_ entrées
489
+ loading_records: Chargement...
490
+ next: Suivant
491
+ previous: Précédent
492
+ processing: Traitement en cours...
493
+ search: 'Rechercher :'
494
+ zero_records: Aucun enregistrement correspondant trouvé
495
+ status:
496
+ complete: Terminé
497
+ complete_with_failures: Terminé (avec des échecs)
498
+ deleted: Supprimé
499
+ failed: Échoué
500
+ pending: En attente
501
+ skipped: Ignoré
409
502
  helpers:
410
503
  action:
411
504
  exporter:
@@ -17,13 +17,23 @@ it:
17
17
  record_link: Collegamento %{record_type}
18
18
  unknown: Sconosciuto
19
19
  exporter:
20
+ hints:
21
+ generated_metadata: Questi campi esportati non possono essere importati al momento.
22
+ include_thumbnails: Questi campi esportati non possono essere importati al momento.
23
+ limit: Lasciare vuoto o 0 per tutti i record
20
24
  labels:
21
25
  all: Tutto
22
26
  collection: Collezione
27
+ collection_entries: Voci di raccolta
28
+ download: Scarica
29
+ export_format: Formato di esportazione
23
30
  export_from: Esporta da
24
31
  export_source: Esporta origine
25
32
  export_type: Tipo di esportazione
26
33
  field_mapping: Mappatura del campo
34
+ file_set_entries: Voci di insieme di file
35
+ filter_by_date: Filtra per data
36
+ finish_date: Data di fine
27
37
  full: Metadati e file
28
38
  generated_metadata: Includere metadati generati?
29
39
  importer: Importatore
@@ -33,7 +43,20 @@ it:
33
43
  name: Nome
34
44
  parser_fields: Campi del parser
35
45
  parser_klass: Analizzatore
46
+ start_date: Data di inizio
47
+ status: Stato
48
+ total_entries: Voci totali
49
+ total_work_entries: Totale opere
36
50
  user: Utente
51
+ work_entries: Voci di opere
52
+ workflow_status:
53
+ approved: Approvato
54
+ broken_url: URL non funzionante
55
+ deleted: Eliminato
56
+ in_process: In elaborazione
57
+ ingested: Acquisito
58
+ needs_repair: Da riparare
59
+ unapproved: Non approvato
37
60
  worktype: Tipo di lavoro
38
61
  prompts:
39
62
  export_from: Seleziona una fonte di esportazione
@@ -45,8 +68,14 @@ it:
45
68
  one: '1 errore ha impedito il salvataggio di questo esportatore:'
46
69
  other: "%{count} errori hanno impedito il salvataggio di questo esportatore:"
47
70
  headings:
71
+ edit_exporter: Modifica esportatore
72
+ edit_importer: Modifica importatore
73
+ exporters: Esportatori
48
74
  importers: Importatori
75
+ new_exporter: Nuovo esportatore
76
+ new_importer: Nuovo importatore
49
77
  upload_corrected_entries: 'Carica voci corrette: %{name}'
78
+ upload_corrected_entries_action: Carica voci corrette
50
79
  importer:
51
80
  bagit:
52
81
  bags_to_import: 'Borsa o borse da importare:'
@@ -77,6 +106,9 @@ it:
77
106
  private: Privato
78
107
  public: Pubblico
79
108
  edit_form:
109
+ entry_modal_title: Opzioni per l'aggiornamento di una voce
110
+ entry_rebuild_hint: Ricostruire metadati e file.
111
+ entry_remove_and_recreate_hint: Rimuovere l'opera esistente e ricreare metadati e file dell'opera.
80
112
  modal_title: Opzioni per l'aggiornamento dell'importatore
81
113
  remove_and_rerun_hint: Rimuovi tutti i lavori e poi esegui nuovamente l'importazione da zero. Questo rimuoverà tutti i file e le associazioni e tutte le modifiche apportate dall'ultima importazione andranno perse.
82
114
  update_and_harvest_hint: Aggiorna i valori nel modulo di importazione e aggiorna gli elementi che sono stati modificati all'origine.
@@ -96,19 +128,23 @@ it:
96
128
  override_rights_statement: Se selezionata, utilizza sempre l'istruzione dei diritti selezionata. Se non selezionata, utilizza rights o rights_statement dal record e utilizza il valore fornito solo se dc:rights è vuoto.
97
129
  labels:
98
130
  admin_set: Insieme amministrativo
131
+ collection_entries: Voci di raccolta
99
132
  entry_id: ID di ingresso
100
133
  exporter: Esportatore
134
+ file_set_entries: Voci di insieme di file
101
135
  frequency: Frequenza
102
136
  identifier: Identificatore
103
137
  importer: Importatore
104
138
  limit: Limite
105
139
  name: Nome
140
+ parser_fields: Campi del parser
106
141
  parser_klass: Analizzatore
107
142
  total_collections: Raccolte totali
108
143
  total_file_sets: Set di file totali
109
144
  total_work_entries: Opere totali
110
145
  type: Tipo
111
146
  user: Utente
147
+ work_entries: Voci di opere
112
148
  oai:
113
149
  hints:
114
150
  metadata_prefix: Come oai_dc, dcterms o oai_qdc
@@ -185,6 +221,8 @@ it:
185
221
  review_total: "%{total} totale — %{collections} collezioni, %{works} opere, %{file_sets} set di file"
186
222
  review_visibility: 'Visibilità:'
187
223
  server_error: Errore del server durante la convalida. Riprova o contatta l'assistenza.
224
+ existing_record_badge: esistente
225
+ existing_record_title: Questo record esiste già nell'archivio e verrà collegato durante l'importazione.
188
226
  shared_badge: condiviso
189
227
  starting: Di partenza...
190
228
  upload_csv_and_zip: CSV + file caricati separatamente
@@ -199,9 +237,20 @@ it:
199
237
  validating: Convalida in corso...
200
238
  validation_failed: Convalida non riuscita. Riprova.
201
239
  validation_timeout: Validazione scaduta. I file potrebbero essere troppo grandi. Prova con file più piccoli o contatta l'assistenza.
240
+ validation_truncated_note: troncato a %{shown} — scarica il CSV degli errori per l'elenco completo
241
+ validation_truncated_tooltip: Questo elenco è limitato per mantenere la pagina leggibile. L'elenco completo si trova nel file CSV degli errori scaricabile.
202
242
  visibility_institution: Istituzione
203
243
  visibility_private: Privato
204
244
  visibility_public: Pubblico
245
+ warning_category_circular_reference: Riferimento circolare
246
+ warning_category_default_work_type_used: Tipo di opera predefinito utilizzato
247
+ warning_category_duplicate_source_identifier: Identificatore di origine duplicato nel CSV
248
+ warning_category_existing_source_identifier: Identificatore di origine esistente (verrà aggiornato)
249
+ warning_category_invalid_child_reference: Riferimento figlio non valido
250
+ warning_category_invalid_controlled_value: Valore di vocabolario controllato non valido
251
+ warning_category_invalid_parent_reference: Riferimento genitore non valido
252
+ warning_category_missing_required_value: Valore obbligatorio mancante
253
+ warning_category_missing_source_identifier: Identificatore di origine mancante
205
254
  zip_limit: 'È consentito un solo file ZIP. I seguenti file non sono stati aggiunti:'
206
255
  nav:
207
256
  back: Indietro
@@ -264,6 +313,7 @@ it:
264
313
  large_import_message_html: Stai per importare <span class="total-items-count">%{count}</span> articoli. Le importazioni di grandi dimensioni richiedono più tempo e sono più difficili da risolvere. Valuta la possibilità di suddividere i lotti in lotti più piccoli.
265
314
  large_import_warning: Avviso di importazione di grandi dimensioni
266
315
  ready_to_import: Pronto per l'importazione
316
+ section_errors: Errori
267
317
  section_files: File
268
318
  section_records: Registrazioni
269
319
  section_settings: Impostazioni
@@ -315,8 +365,7 @@ it:
315
365
  missing_required_hint: aggiungi questa colonna al tuo CSV
316
366
  missing_required_title: Campi obbligatori mancanti
317
367
  missing_rights_desc: Il tuo file CSV non include una colonna rights_statement. Puoi aggiungerla al tuo file CSV o selezionare una colonna "Default Rights Statement" nel passaggio successivo.
318
- multiple_csv_same_dir: Sono stati trovati più file CSV nella stessa directory all'interno di ZIP
319
- multiple_csv_same_level: Sono stati trovati più file CSV allo stesso livello all'interno dello ZIP
368
+ multiple_csv: Sono stati trovati più file CSV al livello meno profondo all'interno dello ZIP, quindi non è possibile determinare il CSV principale. Mantieni esattamente un CSV a quel livello; eventuali CSV aggiuntivi devono essere annidati più in profondità.
320
369
  no_csv_in_zip: Nessun file CSV trovato nello ZIP
321
370
  no_csv_uploaded: Nessun file di metadati CSV caricato
322
371
  no_files_uploaded: Nessun file caricato
@@ -325,6 +374,14 @@ it:
325
374
  errors:
326
375
  message: "Il genitore referenziato '%{value}' non esiste come %{field} in questo CSV."
327
376
  suggestion: "Controllare eventuali errori di battitura o aggiungere il record genitore."
377
+ child_reference_validator:
378
+ errors:
379
+ message: "Il figlio referenziato '%{value}' non esiste come %{field} in questo CSV."
380
+ suggestion: "Controllare eventuali errori di battitura o aggiungere il record figlio."
381
+ circular_reference_validator:
382
+ errors:
383
+ message: "'%{value}' fa parte di una relazione padre-figlio circolare."
384
+ suggestion: "Rivedere le colonne padre/figlio e rimuovere i riferimenti errati."
328
385
  passed: Validazione superata
329
386
  passed_warnings: Validazione superata con avvisi
330
387
  recognized_fields: 'Campi riconosciuti: %{fields}'
@@ -341,11 +398,23 @@ it:
341
398
  errors:
342
399
  message: "Il campo '%{field}' è obbligatorio ma è vuoto per questa riga."
343
400
  suggestion: "Aggiungi un valore per '%{field}'."
401
+ validation_error_csv_builder:
402
+ empty_column: "La colonna %{column} non ha intestazione e verrà ignorata durante l'importazione"
403
+ missing_file: "File mancante: %{filename}"
404
+ missing_required_column: "Colonna obbligatoria mancante '%{field}' (%{model})"
405
+ unrecognized_column: "Colonna non riconosciuta '%{column}'"
406
+ unrecognized_column_with_suggestion: "Colonna non riconosciuta '%{column}' (intendevi '%{suggestion}'?)"
344
407
  unable_to_process: Impossibile elaborare i file per la convalida
408
+ empty_column: 'Colonna %{column} (senza intestazione)'
345
409
  notices_desc: 'Questi avvisi potrebbero influire sul modo in cui il tuo CSV viene importato:'
346
410
  notices_title: Avvisi di importazione
347
411
  unrecognized_desc: 'Queste colonne verranno ignorate durante l''importazione:'
348
412
  unrecognized_title: Campi non riconosciuti
413
+ unzip:
414
+ errors:
415
+ multiple_csv: Sono stati trovati più file CSV al livello meno profondo all'interno dello ZIP, quindi non è possibile determinare il CSV principale. Mantieni esattamente un CSV a quel livello; eventuali CSV aggiuntivi devono essere annidati più in profondità.
416
+ no_csv: Nessun file CSV trovato nello ZIP
417
+ unsafe_entry: "Lo ZIP contiene una voce con un percorso non sicuro (%{name}). Le voci non devono utilizzare percorsi assoluti né riferimenti alla directory superiore."
349
418
  validations:
350
419
  errors_prohibited:
351
420
  one: '1 errore ha impedito il salvataggio di questo importatore:'
@@ -401,11 +470,35 @@ it:
401
470
  name: Nome
402
471
  next_run: Prossima corsa
403
472
  status: Stato
473
+ status_set_at: Stato impostato il
404
474
  total_collection_entries: Totale voci di raccolta
405
475
  total_file_set_entries: Numero totale di voci del set di file
406
476
  total_work_entries: Totale voci di lavoro
407
477
  type: Tipo
408
478
  updated_at: Aggiornato alle
479
+ datatable:
480
+ filters:
481
+ filter_by_entry_class: Filtra per classe di voce
482
+ filter_by_status: Filtra per stato
483
+ language:
484
+ empty_table: Nessun dato disponibile nella tabella
485
+ info: Visualizzazione da _START_ a _END_ di _TOTAL_ voci
486
+ info_empty: Visualizzazione da 0 a 0 di 0 voci
487
+ info_filtered: (filtrato da _MAX_ voci totali)
488
+ length_menu: Mostra _MENU_ voci
489
+ loading_records: Caricamento...
490
+ next: Successivo
491
+ previous: Precedente
492
+ processing: Elaborazione in corso...
493
+ search: 'Cerca:'
494
+ zero_records: Nessun record corrispondente trovato
495
+ status:
496
+ complete: Completato
497
+ complete_with_failures: Completato (con errori)
498
+ deleted: Eliminato
499
+ failed: Fallito
500
+ pending: In attesa
501
+ skipped: Saltato
409
502
  helpers:
410
503
  action:
411
504
  exporter:
@@ -17,13 +17,23 @@ pt-BR:
17
17
  record_link: Link %{record_type}
18
18
  unknown: Desconhecido
19
19
  exporter:
20
+ hints:
21
+ generated_metadata: Esses campos exportados não podem ser importados no momento.
22
+ include_thumbnails: Esses campos exportados não podem ser importados no momento.
23
+ limit: Deixe em branco ou 0 para todos os registros
20
24
  labels:
21
25
  all: Todos
22
26
  collection: Coleção
27
+ collection_entries: Entradas de coleção
28
+ download: Baixar
29
+ export_format: Formato de exportação
23
30
  export_from: Exportar de
24
31
  export_source: Fonte de exportação
25
32
  export_type: Tipo de exportação
26
33
  field_mapping: Mapeamento de Campo
34
+ file_set_entries: Entradas de conjunto de arquivos
35
+ filter_by_date: Filtrar por data
36
+ finish_date: Data de término
27
37
  full: Metadados e Arquivos
28
38
  generated_metadata: Incluir metadados gerados?
29
39
  importer: Importador
@@ -33,7 +43,20 @@ pt-BR:
33
43
  name: Nome
34
44
  parser_fields: Campos do analisador sintático
35
45
  parser_klass: Analisador sintático
46
+ start_date: Data de início
47
+ status: Status
48
+ total_entries: Total de entradas
49
+ total_work_entries: Total de obras
36
50
  user: Usuário
51
+ work_entries: Entradas de obras
52
+ workflow_status:
53
+ approved: Aprovado
54
+ broken_url: URL quebrada
55
+ deleted: Excluído
56
+ in_process: Em processamento
57
+ ingested: Ingerido
58
+ needs_repair: Precisa de reparo
59
+ unapproved: Não aprovado
37
60
  worktype: Tipo de trabalho
38
61
  prompts:
39
62
  export_from: Por favor, selecione uma fonte de exportação.
@@ -45,8 +68,14 @@ pt-BR:
45
68
  one: '1 erro impediu que este exportador fosse salvo:'
46
69
  other: "%{count} erros impediram que este exportador fosse salvo:"
47
70
  headings:
71
+ edit_exporter: Editar exportador
72
+ edit_importer: Editar importador
73
+ exporters: Exportadores
48
74
  importers: Importadores
75
+ new_exporter: Novo exportador
76
+ new_importer: Novo importador
49
77
  upload_corrected_entries: 'Enviar entradas corrigidas: %{name}'
78
+ upload_corrected_entries_action: Enviar entradas corrigidas
50
79
  importer:
51
80
  bagit:
52
81
  bags_to_import: 'Mala ou malas para importar:'
@@ -77,6 +106,9 @@ pt-BR:
77
106
  private: Privado
78
107
  public: Público
79
108
  edit_form:
109
+ entry_modal_title: Opções para atualizar uma entrada
110
+ entry_rebuild_hint: Reconstruir metadados e arquivos.
111
+ entry_remove_and_recreate_hint: Remover a obra existente e depois recriar os metadados e arquivos da obra.
80
112
  modal_title: Opções para atualizar o importador
81
113
  remove_and_rerun_hint: Remova todos os trabalhos e execute a importação novamente a partir de um ponto de partida limpo. Isso removerá todos os arquivos e associações, e quaisquer edições feitas desde a última importação serão perdidas.
82
114
  update_and_harvest_hint: Atualize os valores no formulário do importador e atualize os itens que foram alterados na origem.
@@ -96,19 +128,23 @@ pt-BR:
96
128
  override_rights_statement: Se selecionada, sempre use a declaração de direitos escolhida. Se desmarcada, use os direitos ou a declaração de direitos do registro e utilize o valor fornecido somente se dc:rights estiver em branco.
97
129
  labels:
98
130
  admin_set: Conjunto administrativo
131
+ collection_entries: Entradas de coleção
99
132
  entry_id: ID de entrada
100
133
  exporter: Exportador
134
+ file_set_entries: Entradas de conjunto de arquivos
101
135
  frequency: Freqüência
102
136
  identifier: Identificador
103
137
  importer: Importador
104
138
  limit: Limite
105
139
  name: Nome
140
+ parser_fields: Campos do analisador
106
141
  parser_klass: Analisador sintático
107
142
  total_collections: Total de Coleções
108
143
  total_file_sets: Conjuntos de arquivos totais
109
144
  total_work_entries: Total Works
110
145
  type: Tipo
111
146
  user: Usuário
147
+ work_entries: Entradas de obras
112
148
  oai:
113
149
  hints:
114
150
  metadata_prefix: Como oai_dc, dcterms ou oai_qdc
@@ -185,6 +221,8 @@ pt-BR:
185
221
  review_total: "%{total} total — %{collections} coleções, %{works} obras, %{file_sets} conjuntos de arquivos"
186
222
  review_visibility: 'Visibilidade:'
187
223
  server_error: Erro do servidor durante a validação. Tente novamente ou entre em contato com o suporte.
224
+ existing_record_badge: existente
225
+ existing_record_title: Este registro já existe no repositório e será vinculado durante a importação.
188
226
  shared_badge: compartilhado
189
227
  starting: Começando...
190
228
  upload_csv_and_zip: Arquivos CSV + arquivos enviados separadamente
@@ -199,9 +237,20 @@ pt-BR:
199
237
  validating: Validando...
200
238
  validation_failed: A validação falhou. Tente novamente.
201
239
  validation_timeout: A validação expirou. Seus arquivos podem ser muito grandes. Tente com arquivos menores ou entre em contato com o suporte.
240
+ validation_truncated_note: truncado para %{shown} — baixe o CSV de erros para ver a lista completa
241
+ validation_truncated_tooltip: Esta lista é limitada para manter a página legível. A lista completa está no arquivo CSV de erros para download.
202
242
  visibility_institution: Instituição
203
243
  visibility_private: Privado
204
244
  visibility_public: Público
245
+ warning_category_circular_reference: Referência circular
246
+ warning_category_default_work_type_used: Tipo de obra padrão utilizado
247
+ warning_category_duplicate_source_identifier: Identificador de origem duplicado no CSV
248
+ warning_category_existing_source_identifier: Identificador de origem existente (será atualizado)
249
+ warning_category_invalid_child_reference: Referência filha inválida
250
+ warning_category_invalid_controlled_value: Valor de vocabulário controlado inválido
251
+ warning_category_invalid_parent_reference: Referência-pai inválida
252
+ warning_category_missing_required_value: Valor obrigatório ausente
253
+ warning_category_missing_source_identifier: Identificador de origem ausente
205
254
  zip_limit: 'Apenas 1 arquivo ZIP permitido. Os seguintes arquivos não foram adicionados:'
206
255
  nav:
207
256
  back: Voltar
@@ -264,6 +313,7 @@ pt-BR:
264
313
  large_import_message_html: Você está prestes a importar <span class="total-items-count">%{count}</span> itens. Importações grandes levam mais tempo e são mais difíceis de solucionar problemas. Considere dividi-las em lotes menores.
265
314
  large_import_warning: Aviso de Importação de Grande Porte
266
315
  ready_to_import: Pronto para importar
316
+ section_errors: Erros
267
317
  section_files: Arquivos
268
318
  section_records: Registros
269
319
  section_settings: Configurações
@@ -315,8 +365,7 @@ pt-BR:
315
365
  missing_required_hint: Adicione esta coluna ao seu arquivo CSV.
316
366
  missing_required_title: Campos obrigatórios ausentes
317
367
  missing_rights_desc: Seu arquivo CSV não inclui uma coluna `rights_statement`. Você pode adicioná-la ao seu CSV ou selecionar uma Declaração de Direitos Padrão na próxima etapa.
318
- multiple_csv_same_dir: Vários arquivos CSV encontrados no mesmo diretório dentro do arquivo ZIP.
319
- multiple_csv_same_level: Vários arquivos CSV encontrados no mesmo nível dentro do arquivo ZIP.
368
+ multiple_csv: Vários arquivos CSV estão no nível menos profundo dentro do ZIP, então não é possível determinar qual é o CSV principal. Mantenha exatamente um CSV nesse nível; CSVs adicionais devem estar aninhados em níveis mais profundos.
320
369
  no_csv_in_zip: Nenhum arquivo CSV encontrado no arquivo ZIP.
321
370
  no_csv_uploaded: Nenhum arquivo de metadados CSV foi carregado.
322
371
  no_files_uploaded: Nenhum arquivo foi enviado.
@@ -325,6 +374,14 @@ pt-BR:
325
374
  errors:
326
375
  message: "O pai referenciado '%{value}' não existe como %{field} neste CSV."
327
376
  suggestion: "Verifique se há erros de digitação ou adicione o registro pai."
377
+ child_reference_validator:
378
+ errors:
379
+ message: "O filho referenciado '%{value}' não existe como %{field} neste CSV."
380
+ suggestion: "Verifique se há erros de digitação ou adicione o registro filho."
381
+ circular_reference_validator:
382
+ errors:
383
+ message: "'%{value}' faz parte de uma relação pai-filho circular."
384
+ suggestion: "Revise as colunas de pai/filho e remova as referências incorretas."
328
385
  passed: Validação aprovada
329
386
  passed_warnings: Validação aprovada com advertências.
330
387
  recognized_fields: 'Campos reconhecidos: %{fields}'
@@ -341,11 +398,23 @@ pt-BR:
341
398
  errors:
342
399
  message: "O campo '%{field}' é obrigatório, mas está vazio para esta linha."
343
400
  suggestion: "Adicione um valor para '%{field}'."
401
+ validation_error_csv_builder:
402
+ empty_column: "A coluna %{column} não tem cabeçalho e será ignorada durante a importação"
403
+ missing_file: "Arquivo ausente: %{filename}"
404
+ missing_required_column: "Falta a coluna obrigatória '%{field}' (%{model})"
405
+ unrecognized_column: "Coluna não reconhecida '%{column}'"
406
+ unrecognized_column_with_suggestion: "Coluna não reconhecida '%{column}' (você quis dizer '%{suggestion}'?)"
344
407
  unable_to_process: Não foi possível processar os arquivos para validação.
408
+ empty_column: 'Coluna %{column} (sem cabeçalho)'
345
409
  notices_desc: 'Estes avisos podem afetar como o seu CSV é importado:'
346
410
  notices_title: Avisos de importação
347
411
  unrecognized_desc: 'Estas colunas serão ignoradas durante a importação:'
348
412
  unrecognized_title: Campos não reconhecidos
413
+ unzip:
414
+ errors:
415
+ multiple_csv: Vários arquivos CSV estão no nível menos profundo dentro do ZIP, então não é possível determinar qual é o CSV principal. Mantenha exatamente um CSV nesse nível; CSVs adicionais devem estar aninhados em níveis mais profundos.
416
+ no_csv: Nenhum arquivo CSV encontrado no arquivo ZIP.
417
+ unsafe_entry: "O ZIP contém uma entrada com caminho inseguro (%{name}). As entradas não devem usar caminhos absolutos nem referências ao diretório pai."
349
418
  validations:
350
419
  errors_prohibited:
351
420
  one: '1 erro impediu que este importador fosse salvo:'
@@ -401,11 +470,35 @@ pt-BR:
401
470
  name: Nome
402
471
  next_run: Próxima corrida
403
472
  status: Status
473
+ status_set_at: Status definido em
404
474
  total_collection_entries: Total de entradas da coleção
405
475
  total_file_set_entries: Total de entradas do conjunto de arquivos
406
476
  total_work_entries: Total de entradas de trabalho
407
477
  type: Tipo
408
478
  updated_at: Atualizado em
479
+ datatable:
480
+ filters:
481
+ filter_by_entry_class: Filtrar por classe de entrada
482
+ filter_by_status: Filtrar por status
483
+ language:
484
+ empty_table: Nenhum dado disponível na tabela
485
+ info: Mostrando _START_ a _END_ de _TOTAL_ entradas
486
+ info_empty: Mostrando 0 a 0 de 0 entradas
487
+ info_filtered: (filtrado de _MAX_ entradas no total)
488
+ length_menu: Mostrar _MENU_ entradas
489
+ loading_records: Carregando...
490
+ next: Próximo
491
+ previous: Anterior
492
+ processing: Processando...
493
+ search: 'Pesquisar:'
494
+ zero_records: Nenhum registro correspondente encontrado
495
+ status:
496
+ complete: Concluído
497
+ complete_with_failures: Concluído (com falhas)
498
+ deleted: Excluído
499
+ failed: Falhou
500
+ pending: Pendente
501
+ skipped: Ignorado
409
502
  helpers:
410
503
  action:
411
504
  exporter: