From c20619b5c8798fe2790fa96112b834b37f8957f7 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 30 Sep 2025 13:49:45 +0300 Subject: [PATCH 01/20] adjust completed email delivery --- app/jobs/process_submitter_completion_job.rb | 22 +++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/app/jobs/process_submitter_completion_job.rb b/app/jobs/process_submitter_completion_job.rb index f2bc4606..cd9888d5 100644 --- a/app/jobs/process_submitter_completion_job.rb +++ b/app/jobs/process_submitter_completion_job.rb @@ -93,18 +93,26 @@ class ProcessSubmitterCompletionJob def enqueue_completed_emails(submitter) submission = submitter.submission + template = submitter.template - user = submission.created_by_user || submitter.template.author + user = submission.created_by_user || template.author if submitter.account.users.exists?(id: user.id) && submission.preferences['send_email'] != false && - submitter.template&.preferences&.dig('completed_notification_email_enabled') != false - if submission.submitters.map(&:email).exclude?(user.email) && - user.user_configs.find_by(key: UserConfig::RECEIVE_COMPLETED_EMAIL)&.value != false && - user.role != 'integration' - SubmitterMailer.completed_email(submitter, user).deliver_later! - end + (!template || template.preferences['completed_notification_email_enabled'] != false) + user_submitter = submission.submitters.find { |s| s.email == user.email } + + is_sent_to_user = + if user.role != 'integration' && + (!user_submitter || user_submitter.preferences['send_email'] == false) && + user.user_configs.find_by(key: UserConfig::RECEIVE_COMPLETED_EMAIL)&.value != false + SubmitterMailer.completed_email(submitter, user).deliver_later! + + true + end build_bcc_addresses(submission).each do |to| + next if is_sent_to_user && to == user.email + SubmitterMailer.completed_email(submitter, user, to:).deliver_later! end end From 0cdcdb8898e11fd0ef8249b4eb0ba20d121a67b4 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 1 Oct 2025 13:31:40 +0300 Subject: [PATCH 02/20] update rubocop --- Gemfile.lock | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index b3300f1f..20d072bf 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -76,7 +76,7 @@ GEM public_suffix (>= 2.0.2, < 7.0) annotaterb (4.14.0) arabic-letter-connector (0.1.1) - ast (2.4.2) + ast (2.4.3) aws-eventstream (1.3.0) aws-partitions (1.1027.0) aws-sdk-core (3.214.0) @@ -291,10 +291,10 @@ GEM rdoc (>= 4.0.0) reline (>= 0.4.2) jmespath (1.6.2) - json (2.13.2) + json (2.15.0) jwt (2.9.3) base64 - language_server-protocol (3.17.0.3) + language_server-protocol (3.17.0.5) launchy (3.0.1) addressable (~> 2.8) childprocess (~> 5.0) @@ -305,6 +305,7 @@ GEM letter_opener (~> 1.9) railties (>= 6.1) rexml + lint_roller (1.1.0) logger (1.7.0) lograge (0.14.0) actionpack (>= 4) @@ -365,8 +366,8 @@ GEM ostruct (0.6.3) package_json (0.1.0) pagy (9.3.3) - parallel (1.26.3) - parser (3.3.6.0) + parallel (1.27.0) + parser (3.3.9.0) ast (~> 2.4.1) racc pg (1.5.9) @@ -383,6 +384,7 @@ GEM pretender (0.5.0) actionpack (>= 6.1) prettyprint (0.2.0) + prism (1.5.1) pry (0.15.0) coderay (~> 1.1) method_source (~> 1.0) @@ -448,7 +450,7 @@ GEM psych (>= 4.0.0) redis-client (0.23.0) connection_pool - regexp_parser (2.9.3) + regexp_parser (2.11.3) reline (0.6.2) io-console (~> 0.5) representable (3.2.0) @@ -485,18 +487,20 @@ GEM rspec-mocks (~> 3.13) rspec-support (~> 3.13) rspec-support (3.13.2) - rubocop (1.69.2) + rubocop (1.81.1) json (~> 2.3) - language_server-protocol (>= 3.17.0) + language_server-protocol (~> 3.17.0.2) + lint_roller (~> 1.1.0) parallel (~> 1.10) parser (>= 3.3.0.2) rainbow (>= 2.2.2, < 4.0) regexp_parser (>= 2.9.3, < 3.0) - rubocop-ast (>= 1.36.2, < 2.0) + rubocop-ast (>= 1.47.1, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 4.0) - rubocop-ast (1.37.0) - parser (>= 3.3.1.0) + rubocop-ast (1.47.1) + parser (>= 3.3.7.2) + prism (~> 1.4) rubocop-performance (1.23.0) rubocop (>= 1.48.1, < 2.0) rubocop-ast (>= 1.31.1, < 2.0) @@ -567,9 +571,9 @@ GEM tzinfo-data (1.2024.2) tzinfo (>= 1.0.0) uber (0.1.0) - unicode-display_width (3.1.2) - unicode-emoji (~> 4.0, >= 4.0.4) - unicode-emoji (4.0.4) + unicode-display_width (3.2.0) + unicode-emoji (~> 4.1) + unicode-emoji (4.1.0) uniform_notifier (1.16.0) uri (1.0.3) useragent (0.16.11) From 5d87160ee9631b409137c778692ffcf8e8b84435 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sat, 4 Oct 2025 18:33:37 +0300 Subject: [PATCH 03/20] fix rubocop --- .rubocop.yml | 6 ++++++ app/controllers/api/submissions_controller.rb | 2 +- app/jobs/generate_preview_images_job.rb | 2 +- app/models/user.rb | 2 +- lib/docuseal.rb | 2 +- lib/search_entries.rb | 2 +- lib/send_webhook_request.rb | 2 +- lib/submissions/generate_audit_trail.rb | 2 +- lib/submissions/generate_result_attachments.rb | 6 +++--- lib/submitters.rb | 4 ++-- lib/templates/process_document.rb | 2 +- lib/text_utils.rb | 2 +- 12 files changed, 20 insertions(+), 14 deletions(-) diff --git a/.rubocop.yml b/.rubocop.yml index e40ff7c2..aad5509e 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -42,6 +42,12 @@ Metrics/CyclomaticComplexity: Metrics/PerceivedComplexity: Max: 15 +Style/MultipleComparison: + Enabled: false + +Naming/PredicateMethod: + Enabled: false + Layout/LineLength: AllowedPatterns: ['\A\s*#'] diff --git a/app/controllers/api/submissions_controller.rb b/app/controllers/api/submissions_controller.rb index 8388f704..15223276 100644 --- a/app/controllers/api/submissions_controller.rb +++ b/app/controllers/api/submissions_controller.rb @@ -147,7 +147,7 @@ module Api is_send_email = !params[:send_email].in?(['false', false]) if (emails = (params[:emails] || params[:email]).presence) && - (params[:submission].blank? && params[:submitters].blank?) + params[:submission].blank? && params[:submitters].blank? Submissions.create_from_emails(template:, user: current_user, source: :api, diff --git a/app/jobs/generate_preview_images_job.rb b/app/jobs/generate_preview_images_job.rb index ef52c078..289b5fcf 100644 --- a/app/jobs/generate_preview_images_job.rb +++ b/app/jobs/generate_preview_images_job.rb @@ -11,7 +11,7 @@ class GeneratePreviewImagesJob max_page = [attachment.metadata['pdf']['number_of_pages'].to_i - 1, Templates::ProcessDocument::MAX_NUMBER_OF_PAGES_PROCESSED].min - Templates::ProcessDocument.generate_document_preview_images(attachment, attachment.download, (1..max_page), + Templates::ProcessDocument.generate_document_preview_images(attachment, attachment.download, 1..max_page, concurrency: 1) end end diff --git a/app/models/user.rb b/app/models/user.rb index f840ca7d..83e88f08 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -50,7 +50,7 @@ class User < ApplicationRecord EMAIL_REGEXP = /[^@;,<>\s]+@[^@;,<>\s]+/ FULL_EMAIL_REGEXP = - /\A[a-z0-9][\.']?(?:(?:[a-z0-9_-]+[\.\+'])*[a-z0-9_-]+)*@(?:[a-z0-9]+[\.-])*[a-z0-9]+\.[a-z]{2,}\z/i + /\A[a-z0-9][.']?(?:(?:[a-z0-9_-]+[.+'])*[a-z0-9_-]+)*@(?:[a-z0-9]+[.-])*[a-z0-9]+\.[a-z]{2,}\z/i has_one_attached :signature has_one_attached :initials diff --git a/lib/docuseal.rb b/lib/docuseal.rb index e4fee8f7..578d1fcc 100644 --- a/lib/docuseal.rb +++ b/lib/docuseal.rb @@ -78,7 +78,7 @@ module Docuseal @fulltext_search = if SearchEntry.table_exists? - Docuseal.multitenant? ? true : AccountConfig.exists?(key: :fulltext_search, value: true) + Docuseal.multitenant? || AccountConfig.exists?(key: :fulltext_search, value: true) else false end diff --git a/lib/search_entries.rb b/lib/search_entries.rb index 9ebf5897..ba17e254 100644 --- a/lib/search_entries.rb +++ b/lib/search_entries.rb @@ -56,7 +56,7 @@ module SearchEntries end [sql, number, number.length > 1 ? number.delete_prefix('0') : number, keyword] - elsif keyword.match?(/[^\p{L}\d&@.\-]/) || keyword.match?(/\A['"].*['"]\z/) || keyword.match?(/[.\-]{2,}/) + elsif keyword.match?(/[^\p{L}\d&@.-]/) || keyword.match?(/\A['"].*['"]\z/) || keyword.match?(/[.-]{2,}/) ['tsvector @@ plainto_tsquery(?)', TextUtils.transliterate(keyword.downcase)] else keyword = TextUtils.transliterate(keyword.downcase).squish diff --git a/lib/send_webhook_request.rb b/lib/send_webhook_request.rb index 9a8e1598..f9845e16 100644 --- a/lib/send_webhook_request.rb +++ b/lib/send_webhook_request.rb @@ -6,7 +6,7 @@ module SendWebhookRequest LOCALHOSTS = %w[0.0.0.0 127.0.0.1 localhost].freeze MANUAL_ATTEMPT = 99_999 - AUTOMATED_RETRY_RANGE = 1..MANUAL_ATTEMPT - 1 + AUTOMATED_RETRY_RANGE = 1..(MANUAL_ATTEMPT - 1) HttpsError = Class.new(StandardError) LocalhostError = Class.new(StandardError) diff --git a/lib/submissions/generate_audit_trail.rb b/lib/submissions/generate_audit_trail.rb index b63f3c6f..b6505695 100644 --- a/lib/submissions/generate_audit_trail.rb +++ b/lib/submissions/generate_audit_trail.rb @@ -481,7 +481,7 @@ module Submissions def select_attachments(submitter) original_documents = submitter.submission.schema_documents.preload(:blob) - is_more_than_two_images = original_documents.count(&:image?) > 1 + is_more_than_two_images = original_documents.many?(&:image?) submitter.documents.preload(:blob).reject do |attachment| is_more_than_two_images && diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb index 54eb694f..3c584c10 100644 --- a/lib/submissions/generate_result_attachments.rb +++ b/lib/submissions/generate_result_attachments.rb @@ -311,8 +311,8 @@ module Submissions timezone = submitter.timezone || submitter.account.timezone if with_submitter_timezone if with_signature_id_reason - "#{reason_value ? "#{I18n.t('reason')}: " : ''}#{reason_value || I18n.t('digitally_signed_by')} " \ - "#{submitter.name}#{submitter.email.present? ? " <#{submitter.email}>" : ''}\n" \ + "#{"#{I18n.t('reason')}: " if reason_value}#{reason_value || I18n.t('digitally_signed_by')} " \ + "#{submitter.name}#{" <#{submitter.email}>" if submitter.email.present?}\n" \ "#{I18n.l(attachment.created_at.in_time_zone(timezone), format: :long)} " \ "#{TimeUtils.timezone_abbr(timezone, attachment.created_at)}" else @@ -833,7 +833,7 @@ module Submissions def find_last_submitter(submission, submitter: nil) submission.submitters .select(&:completed_at?) - .select { |e| submitter.nil? ? true : e.id != submitter.id && e.completed_at <= submitter.completed_at } + .select { |e| submitter.nil? || (e.id != submitter.id && e.completed_at <= submitter.completed_at) } .max_by(&:completed_at) end diff --git a/lib/submitters.rb b/lib/submitters.rb index 5a003419..2c08a09f 100644 --- a/lib/submitters.rb +++ b/lib/submitters.rb @@ -56,7 +56,7 @@ module Submitters end [sql, number, weight, number.length > 1 ? number.delete_prefix('0') : number, weight] - elsif keyword.match?(/[^\p{L}\d&@.\-]/) || keyword.match?(/[.\-]{2,}/) + elsif keyword.match?(/[^\p{L}\d&@.-]/) || keyword.match?(/[.-]{2,}/) terms = TextUtils.transliterate(keyword.downcase).split(/\b/).map(&:squish).compact_blank.uniq if terms.size > 1 @@ -100,7 +100,7 @@ module Submitters end original_documents = submitter.submission.schema_documents.preload(:blob) - is_more_than_two_images = original_documents.count(&:image?) > 1 + is_more_than_two_images = original_documents.many?(&:image?) submitter.documents.preload(:blob).reject do |attachment| is_more_than_two_images && diff --git a/lib/templates/process_document.rb b/lib/templates/process_document.rb index a9192b22..6b40a502 100644 --- a/lib/templates/process_document.rb +++ b/lib/templates/process_document.rb @@ -99,7 +99,7 @@ module Templates max_pages_to_process = data.size < GENERATE_PREVIEW_SIZE_LIMIT ? max_pages : 1 - generate_document_preview_images(attachment, data, (0..[number_of_pages - 1, max_pages_to_process].min)) + generate_document_preview_images(attachment, data, 0..[number_of_pages - 1, max_pages_to_process].min) end def generate_document_preview_images(attachment, data, range, concurrency: CONCURRENCY) diff --git a/lib/text_utils.rb b/lib/text_utils.rb index 38be7f92..e4e7d671 100644 --- a/lib/text_utils.rb +++ b/lib/text_utils.rb @@ -2,7 +2,7 @@ module TextUtils RTL_REGEXP = /[\p{Hebrew}\p{Arabic}]/ - MASK_REGEXP = /[^\s\-_\[\]\(\)\+\?\.\,]/ + MASK_REGEXP = /[^\s\-_\[\]()+?.,]/ MASK_SYMBOL = 'X' TRANSLITERATIONS = From 189f7b2d7b76653d9451801ef8432c59f4f8724e Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 6 Oct 2025 17:04:01 +0300 Subject: [PATCH 04/20] add dutch langauge --- app/controllers/accounts_controller.rb | 3 +- app/javascript/template_builder/i18n.js | 183 ++++- app/views/devise/shared/_links.html.erb | 2 +- config/application.rb | 4 +- config/locales/i18n.yml | 964 ++++++++++++++++++++++-- 5 files changed, 1087 insertions(+), 69 deletions(-) diff --git a/app/controllers/accounts_controller.rb b/app/controllers/accounts_controller.rb index 6409946e..7a6587a5 100644 --- a/app/controllers/accounts_controller.rb +++ b/app/controllers/accounts_controller.rb @@ -8,7 +8,8 @@ class AccountsController < ApplicationController 'es-ES' => 'Español', 'pt-PT' => 'Português', 'de-DE' => 'Deutsch', - 'it-IT' => 'Italiano' + 'it-IT' => 'Italiano', + 'nl-NL' => 'Nederlands' }.freeze before_action :load_account diff --git a/app/javascript/template_builder/i18n.js b/app/javascript/template_builder/i18n.js index 7b43bcda..4928643b 100644 --- a/app/javascript/template_builder/i18n.js +++ b/app/javascript/template_builder/i18n.js @@ -1084,4 +1084,185 @@ const de = { start_tour: 'Starten' } -export { en, es, it, pt, fr, de } +const nl = { + payment_link: 'Betaallink', + strikeout: 'Doorhalen', + draw_strikethrough_the_document: 'Teken doorhaling in het document', + quantity: 'Aantal', + prefillable: 'Voorinvulbaar', + signature_id: 'Handtekening-ID', + error_message: 'Foutmelding', + length: 'Lengte', + min: 'Min', + max: 'Max', + font: 'Lettertype', + party: 'Partij', + date_signed: 'Datum ondertekend', + method: 'Methode', + reorder_fields: 'Velden herschikken', + verify_id: 'ID verifiëren', + obtain_qualified_electronic_signature_with_the_trusted_provider_click_to_learn_more: 'Verkrijg een gekwalificeerde elektronische handtekening (QeS) via de vertrouwde provider. Klik voor meer informatie.', + editable: 'Bewerkbaar', + recurrent: 'Terugkerend', + one_off: 'Eenmalig', + search_field: 'Zoekveld', + field_not_found: 'Veld niet gevonden', + clear: 'Wissen', + align: 'Uitlijnen', + add_all_required_fields_to_continue: 'Voeg alle vereiste velden toe om door te gaan', + uploaded_pdf_contains_form_fields_keep_or_remove_them: 'Geüploade PDF bevat formuliervelden. Behouden of verwijderen?', + keep: 'Behouden', + left: 'Links', + heading: 'Koptekst', + validation: 'Validatie', + add_blank_page: 'Lege pagina toevoegen', + right: 'Rechts', + center: 'Centreren', + description: 'Beschrijving', + display_title: 'Titel weergeven', + with_logo: 'Met logo', + unchecked: 'Niet aangevinkt', + price: 'Prijs', + type_value: 'Typ waarde', + equal: 'Gelijk aan', + not_equal: 'Niet gelijk aan', + contains: 'Bevat', + does_not_contain: 'Bevat niet', + not_empty: 'Niet leeg', + empty: 'Leeg', + select_field_: 'Veld selecteren...', + select_value_: 'Waarde selecteren...', + remove_condition: 'Voorwaarde verwijderen', + add_condition: 'Voorwaarde toevoegen', + are_you_sure_: 'Weet u het zeker?', + sign_yourself: 'Zelf ondertekenen', + set_signing_date: 'Ondertekeningsdatum instellen', + signing_date: 'Ondertekeningsdatum', + send: 'Verzenden', + remove: 'Verwijderen', + edit: 'Bewerken', + settings: 'Instellingen', + up: 'Omhoog', + down: 'Omlaag', + checked: 'Aangevinkt', + save: 'Opslaan', + cancel: 'Annuleren', + any: 'Elke', + drawn: 'Getekend', + drawn_or_typed: 'Getekend of getypt', + drawn_or_upload: 'Getekend of uploaden', + upload: 'Uploaden', + formula: 'Formule', + typed: 'Getypt', + draw_field_on_the_document: 'Teken een veld op het document', + click_to_upload: 'Klik om te uploaden', + or_drag_and_drop_files: 'of sleep bestanden hierheen', + uploading: 'Uploaden', + processing_: 'Bezig met verwerken...', + add_pdf_documents_or_images: 'PDF-documenten of afbeeldingen toevoegen', + add_documents_or_images: 'Documenten of afbeeldingen toevoegen', + add_a_new_document: 'Nieuw document toevoegen', + replace_existing_document: 'Bestaand document vervangen', + clone_and_replace_documents: 'Documenten klonen en vervangen', + required: 'Vereist', + default_value: 'Standaardwaarde', + format: 'Formaat', + read_only: 'Alleen-lezen', + page: 'Pagina', + draw_new_area: 'Nieuw gebied tekenen', + copy_to_all_pages: 'Kopieer naar alle pag.', + add_option: 'Optie toevoegen', + option: 'Optie', + options: 'Opties', + condition: 'Voorwaarde', + first_party: 'Eerste partij', + second_party: 'Tweede partij', + third_party: 'Derde partij', + fourth_party: 'Vierde partij', + fifth_party: 'Vijfde partij', + sixth_party: 'Zesde partij', + seventh_party: 'Zevende partij', + eighth_party: 'Achtste partij', + ninth_party: 'Negende partij', + tenth_party: 'Tiende partij', + eleventh_party: 'Elfde partij', + twelfth_party: 'Twaalfde partij', + thirteenth_party: 'Dertiende partij', + fourteenth_party: 'Veertiende partij', + fifteenth_party: 'Vijftiende partij', + sixteenth_party: 'Zestiende partij', + seventeenth_party: 'Zeventiende partij', + eighteenth_party: 'Achttiende partij', + nineteenth_party: 'Negentiende partij', + twentieth_party: 'Twintigste partij', + draw: 'Tekenen', + add: 'Toevoegen', + or_add_field_without_drawing: 'Of voeg een veld toe zonder te tekenen', + text: 'Tekst', + number: 'Getal', + signature: 'Signatuur', + initials: 'Initialen', + date: 'Datum', + image: 'Afbeelding', + file: 'Bestand', + select: 'Selecteren', + checkbox: 'Checkbox', + multiple: 'Meerdere', + radio: 'Radio', + cells: 'Cellen', + stamp: 'Stempel', + payment: 'Betaling', + phone: 'Telefoon', + text_field: 'Tekstveld', + signature_field: 'Signatuurveld', + initials_field: 'Initialenveld', + date_field: 'Datumveld', + number_field: 'Getalveld', + image_field: 'Afbeeldingsveld', + file_field: 'Bestandsveld', + select_field: 'Keuzelijstveld', + checkbox_field: 'Checkboxveld', + multiple_field: 'Meerkeuzeveld', + radio_field: 'Radiogroepveld', + cells_field: 'Cellenveld', + stamp_field: 'Stempelveld', + payment_field: 'Betalingsveld', + phone_field: 'Telefoonveld', + draw_a_text_field_on_the_page_with_a_mouse: 'Teken met de muis een tekstveld op de pagina', + drag_and_drop_any_other_field_type_on_the_page: 'Sleep elk ander veldtype naar de pagina', + click_on_the_field_type_above_to_start_drawing_it: 'Klik op het bovenstaande veldtype om te beginnen met tekenen', + please_draw_fields_to_prepare_the_document: 'Teken velden om het document voor te bereiden.', + only_pdf_and_images_are_supported: 'Alleen PDF en afbeeldingen worden ondersteund.', + unlock_sms_verified_phone_number_field_with_paid_plan_use_text_field_for_phone_numbers_without_verification: 'Ontgrendel het SMS-geverifieerde veld voor telefoonnummer met een betaald abonnement. Gebruik het tekstveld voor telefoonnummers zonder verificatie.', + available_only_in_pro: 'Alleen beschikbaar in Pro', + failed_to_download_files: 'Bestanden downloaden mislukt', + please_add_fields_for_the_submitter_name_or_remove_the_submitter_name_if_not_needed: 'Voeg velden toe voor de {submitter_name}. Of verwijder de {submitter_name} als deze niet nodig is.', + draw_field: 'Teken het veld {field}', + replace: 'Vervangen', + uploading_: 'Bezig met uploaden...', + add_document: 'Doc. toevoegen', + none: 'Geen', + ssn: 'SSN', + ein: 'EIN', + email: 'E-mail', + url: 'URL', + zip: 'Postcode', + custom: 'Aangepast', + numbers_only: 'Alleen cijfers', + letters_only: 'Alleen letters', + regexp_validation: 'Regex validatie', + enter_pdf_password: 'Voer PDF-wachtwoord in', + wrong_password: 'Onjuist wachtwoord', + currency: 'Valuta', + save_and_preview: 'Opslaan & bekijken', + preferences: 'Voorkeuren', + available_in_pro: 'Beschikbaar in Pro', + some_fields_are_missing_in_the_formula: 'Sommige velden ontbreken in de formule.', + learn_more: 'Meer informatie', + and: 'en', + or: 'of', + start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: 'Start een korte rondleiding om te leren hoe u uw eerste document maakt en verzendt', + start_tour: 'Rondleiding starten' +} + +export { en, es, it, pt, fr, de, nl } diff --git a/app/views/devise/shared/_links.html.erb b/app/views/devise/shared/_links.html.erb index 095e2c5e..93bbefa3 100644 --- a/app/views/devise/shared/_links.html.erb +++ b/app/views/devise/shared/_links.html.erb @@ -15,7 +15,7 @@ <%= hidden_field_tag :redir, params[:redir] %> <% end %> - <%= select_tag :lang, options_for_select((I18n.available_locales - %i[en pt-PT de-DE fr-FR it-IT es-ES]).map { |code| [t("language_#{code}"), code] }, I18n.locale), class: 'select select-sm border-base-content/30 text-base' %> + <%= select_tag :lang, options_for_select((I18n.available_locales - %i[en pt-PT de-DE fr-FR it-IT es-ES nl-NL]).map { |code| [t("language_#{code}"), code] }, I18n.locale), class: 'select select-sm border-base-content/30 text-base' %> <% end %> diff --git a/config/application.rb b/config/application.rb index 4ba83e90..bbfa0408 100644 --- a/config/application.rb +++ b/config/application.rb @@ -25,8 +25,8 @@ module DocuSeal config.active_storage.draw_routes = ENV['MULTITENANT'] != 'true' - config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE it-IT - es it de fr pl uk cs pt he nl ar ko ja] + config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE it-IT nl-NL + es it de fr nl pl uk cs pt he ar ko ja] config.i18n.fallbacks = [:en] config.exceptions_app = ->(env) { ErrorsController.action(:show).call(env) } diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml index ac1b8ebd..023af030 100644 --- a/config/locales/i18n.yml +++ b/config/locales/i18n.yml @@ -6,6 +6,7 @@ en: &en language_fr-FR: Français language_pt-PT: Português language_de-DE: Deutsch + language_nl-NL: Nederlands language_es: Español language_it: Italiano language_de: Deutsch @@ -5253,7 +5254,7 @@ de: &de verified: Verifiziert unverified: Nicht verifiziert document: Dokument - completed_at: Abgeschlossen am + completed_at: Abgeschlossen edit_recipient: Empfänger bearbeiten update_recipient: Empfänger aktualisieren use_international_format_1xxx_: 'Verwenden Sie das internationale Format: +1xxx...' @@ -5875,96 +5876,928 @@ he: your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: החשבון שלך הועבר לארכיון. פנה למנהל המערכת כדי לשחזר את הגישה. your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: לא ניתן היה לגשת לדוא"ל שלך. ייתכן שזה קרה עקב שגיאת כתיב בכתובת או אם תיבת הדואר אינה זמינה. אנא פנה ל־support@docuseal.com כדי להתחבר. -nl: - require_phone_2fa_to_open: Vereis telefoon 2FA om te openen - the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: De afzender heeft gevraagd om tweefactorauthenticatie via een eenmalig wachtwoord, verzonden naar uw %{phone} telefoonnummer. +nl: &nl + hi_there: Hallo + pro: Pro + thanks: Bedankt + private: Privé + select: Selecteer + enabled: Ingeschakeld + disabled: Uitgeschakeld + party: Partij + use_direct_file_attachment_links_in_the_documents: Gebruik directe bijlage-links in de documenten + click_here_to_send_a_reset_password_email_html: om een e-mail voor wachtwoordherstel te verzenden. + edit_order: Volgorde bewerken + expirable_file_download_links: Verlopende downloadlinks voor bestanden + invite_form_fields: Velden van uitnodigingsformulier + default_parties: Standaard partijen + authenticate_embedded_form_preview_with_token: Preview van ingesloten formulier authenticeren met token + stripe_integration: Stripe-integratie + require_all_recipients: Alle ontvangers verplichten + stripe_account_has_been_connected: Stripe-account is verbonden. + re_connect_stripe: Stripe opnieuw verbinden + bcc_recipients: BCC-ontvangers + resend_pending: Opnieuw verzenden in behandeling + always_enforce_signing_order: Ondertekenvolgorde altijd afdwingen + create_templates_with_private_access_by_default: Sjablonen standaard met privétoegang maken + ensure_unique_recipients: Unieke ontvangers afdwingen + edit_per_party: Per partij bewerken + reply_to: Antwoord aan + pending_by_me: In afwachting van mij + partially_completed: Gedeeltelijk voltooid + require_phone_2fa_to_open: Telefoon-2FA vereist om te openen + the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: De verzender heeft tweeledige verificatie aangevraagd via een eenmalig wachtwoord dat naar uw telefoonnummer %{phone} is verzonden. send_verification_code: Verificatiecode verzenden - code_has_been_resent: Code is opnieuw verzonden - invalid_code: Invalid code - awaiting_completion_by_the_other_party: "In afwachting van voltooiing door de andere partij" + code_has_been_resent: Code is opnieuw verzonden. + invalid_code: Ongeldige code + signed: Ondertekend + first_party: Eerste partij + remove_filter: Filter verwijderen + add: Toevoegen + adding: Toevoegen + owner: Eigenaar + select_user: Gebruiker selecteren + team_member_permissions: Machtigingen teamleden + entire_team: Gehele team + admin_only: Alleen admin + accessiable_by: Toegankelijk voor + team_access: Teamtoegang + document_download_filename_format: Bestandsnaamformaat voor documentdownload + docuseal_trusted_signature: DocuSeal Vertrouwde handtekening + hello_name: Hallo %{name} + you_are_invited_to_product_name: U bent uitgenodigd voor %{product_name} + you_have_been_invited_to_account_name_product_name_please_sign_up_using_the_link_below_: 'U bent uitgenodigd voor %{account_name} %{product_name}. Meld u aan via de onderstaande link:' + sent_using_product_name_in_testing_mode_html: Verzonden met %{product_name} in testmodus + sent_using_product_name_free_document_signing_html: Verzonden met %{product_name} gratis documentondertekening. + sent_with_docuseal_pro_html: Verzonden met DocuSeal Pro + show_send_with_docuseal_pro_attribution_in_emails_html: Toon de vermelding 'Verzonden met DocuSeal Pro' in e-mails + ? sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature + : Onderteken documenten met een vertrouwd certificaat geleverd door DocuSeal. Uw documenten en gegevens worden nooit gedeeld met DocuSeal. PDF-checksum wordt verstrekt om een vertrouwde handtekening te genereren. + you_have_been_invited_to_submit_the_name_form: U bent uitgenodigd om het formulier "%{name}" in te dienen. + you_have_been_invited_to_sign_the_name: U bent uitgenodigd om "%{name}" te ondertekenen. + alternatively_you_can_review_and_download_your_copy_using_the_link_below: 'U kunt uw exemplaar ook bekijken en downloaden via de onderstaande link:' + please_check_the_copy_of_your_name_in_the_email_attachments: Controleer de kopie van uw "%{name}" in de e-mailbijlagen. + awaiting_completion_by_the_other_party: In afwachting van voltooiing door de andere partij + review_and_sign: Bekijken en ondertekenen + review_and_submit: Bekijken en indienen + please_contact_us_by_replying_to_this_email_if_you_have_any_questions: Neem contact met ons op door op deze e-mail te antwoorden als u vragen heeft. + submitter_invitation_sms_body_sign: "{account.name} heeft u uitgenodigd om een document te ondertekenen: {submitter.link}" + verification_code_sms_body: 'Verificatiecode: {code}' + you_are_invited_to_submit_a_form: U bent uitgenodigd om een formulier in te dienen + you_are_invited_to_sign_a_document: U bent uitgenodigd om een document te ondertekenen + you_are_invited_to_sign_documents: U bent uitgenodigd om documenten te ondertekenen + your_document_copy: Uw documentkopie + name_has_been_completed_by_submitters: '"%{name}" is voltooid door %{submitters}.' + template_name_has_been_completed_by_submitters: "{template.name} is voltooid door {submission.submitters}" + submitter_invitation_email_sign_body: | + Hallo, + + U bent uitgenodigd om "{template.name}" te ondertekenen. + + [Bekijken en ondertekenen]({submitter.link}) + + Neem contact met ons op door op deze e-mail te antwoorden als u vragen heeft. + + Bedankt, + {account.name} + submitter_completed_email_body: | + Hallo, + + "{template.name}" is voltooid door {submission.submitters} + + {submission.link} + submitter_documents_copy_email_body: | + Hallo, + + Controleer de kopie van uw "{template.name}" in de e-mailbijlagen. + U kunt uw exemplaar ook bekijken en downloaden via de onderstaande link: + + [{template.name}]({documents.link}) + + Bedankt, + {account.name} view: Bekijken - hi_there: Hallo, - download: Downloaden - decline: Weigeren - declined: Geweigerd - decline_reason: Weigeringsreden - provide_a_reason: Geef een reden op - notify_the_sender_with_the_reason_you_declined: Informeer de afzender over de reden waarom je hebt geweigerd - form_has_been_declined_on_html: 'Formulier is afgewezen op %{time}' - name_declined_by_submitter: '"%{name}" is geweigerd door %{submitter}' - name_declined_by_submitter_with_the_following_reason: '"%{name}" is geweigerd door %{submitter} met de volgende reden:' email: E-mail + form_expired_at_html: Formulier verlopen op %{time} + verification_code_code: 'Verificatiecode: %{code}' digitally_signed_by: Digitaal ondertekend door role: Rol - verification_code_code: 'Verificatiecode: %{code}' - provide_your_email_to_start: Voer je e-mailadres in om te beginnen - provide_your_email: Voer je e-mailadres in - provide_your_name_to_start: Voer je naam in om te beginnen - provide_your_name: Voer je naam in - provide_your_phone_in_international_format_to_start: Voer je telefoonnummer in internationaal formaat in om te beginnen - provide_your_phone_in_international_format: Voer je telefoonnummer in internationaal formaat in - use_international_format_1xxx_: 'Gebruik het internationale formaat: +1xxx...' - start: Start reason: Reden - form_expired_at_html: 'Formulier is verlopen op %{time}' - starting: Starten - invited_by_html: 'Uitgenodigd door %{name}' + provide_your_email_to_start: Vul uw e-mailadres in om te beginnen + provide_your_email: Vul uw e-mailadres in + provide_your_name_to_start: Vul uw naam in om te beginnen + provide_your_name: Vul uw naam in + provide_your_phone_in_international_format_to_start: Vul uw telefoonnummer in internationaal formaat in om te beginnen + provide_your_phone_in_international_format: Vul uw telefoonnummer in internationaal formaat in + start: Start + enforce_recipients_order: Volgorde van ontvangers afdwingen + starting: Starten... + invited_by_html: Uitgenodigd door %{name} you_have_been_invited_to_submit_a_form: U bent uitgenodigd om een formulier in te dienen - signed_on_time: 'Ondertekend op %{time}' - completed_on_time: 'Voltooid op %{time}' - document_has_been_signed_already: 'Het document is al ondertekend' + signed_on_time: Ondertekend op %{time} + completed_on_time: Voltooid op %{time} + document_has_been_signed_already: Document is al ondertekend form_has_been_submitted_already: Formulier is al ingediend - send_copy_to_email: Stuur kopie naar E-mail - sending: Voltooien + send_copy_to_email: Kopie naar e-mail verzenden + sending: Verzenden... resubmit: Opnieuw indienen - form_has_been_deleted_by_html: 'Formulier is verwijderd door %{name}.' + form_has_been_deleted_by_html: Formulier is verwijderd door %{name}. or: of download_documents: Documenten downloaden - downloading: Downloaden + downloading: Downloaden... + download: Downloaden + decline: Weigeren + declined: Geweigerd + decline_reason: Reden van weigering + provide_a_reason: Geef een reden op + notify_the_sender_with_the_reason_you_declined: Informeer de verzender over de reden van uw weigering + form_has_been_declined_on_html: Formulier is geweigerd op %{time} + name_declined_by_submitter: '"%{name}" geweigerd door %{submitter}' + name_declined_by_submitter_with_the_following_reason: '"%{name}" is geweigerd door %{submitter} met de volgende reden:' completed_successfully: Succesvol voltooid password: Wachtwoord sign_in: Inloggen - signing_in: Aan het inloggen + signing_in: Bezig met inloggen sign_in_with_microsoft: Inloggen met Microsoft sign_in_with_google: Inloggen met Google forgot_your_password_: Wachtwoord vergeten? create_free_account: Gratis account aanmaken - already_have_an_account: Heb je al een account? + already_have_an_account: Al een account? first_name: Voornaam last_name: Achternaam - sign_up: Aanmelden - signing_up: Aanmelden bezig + sign_up: Registreren + signing_up: Bezig met registreren profile_details: Profielgegevens - sign_up_with_google: Aanmelden met Google - sign_up_with_microsoft: Aanmelden met Microsoft - by_creating_an_account_you_agree_to_our_html: 'Door een account aan te maken, ga je akkoord met ons Privacybeleid en onze Gebruiksvoorwaarden.' - enter_email_to_continue: Voer e-mail in om door te gaan + sign_up_with_google: Registreren met Google + sign_up_with_microsoft: Registreren met Microsoft + by_creating_an_account_you_agree_to_our_html: Door een account aan te maken gaat u akkoord met ons Privacybeleid en onze Servicevoorwaarden. + enter_email_to_continue: Voer e-mailadres in om door te gaan + account: Account + preferences: Voorkeuren + company_name: Bedrijfsnaam + time_zone: Tijdzone + language: Taal + app_url: App-URL + update: Bijwerken + updating: Bijwerken... + force_2fa_with_authenticator_app: 2FA afdwingen met authenticator-app + add_signature_id_to_the_documents: Handtekening-ID toevoegen aan de documenten + require_signing_reason: Reden voor ondertekening verplicht stellen + allow_typed_text_signatures: Handtekeningen met getypte tekst toestaan + allow_to_resubmit_completed_forms: Opnieuw indienen van voltooide formulieren toestaan + allow_to_decline_documents: Weigeren van documenten toestaan + remember_and_pre_fill_signatures: Handtekeningen onthouden en vooraf invullen + require_authentication_for_file_download_links: Authenticatie vereisen voor links naar bestandsdownloads + combine_completed_documents_and_audit_log: Voltooide documenten en auditlogboek combineren + salesforce_integration: Salesforce-integratie + salesforce_has_been_connected: Salesforce is verbonden. + connect_salesforce_account_to_integrate_with_docuseal: Verbind een Salesforce-account om te integreren met DocuSeal + re_connect_salesforce: Salesforce opnieuw verbinden + connect_salesforce: Salesforce verbinden + danger_zone: Gevaarzone + delete_my_account: Mijn account verwijderen + you_are_scheduling_your_account_for_deletion_after_deletion_your_data_will_be_permanently_removed_and_cannot_be_recovered_click_ok_if_you_would_like_to_continue: "U plant uw account voor verwijdering. Na verwijdering worden uw gegevens permanent verwijderd en kunnen ze niet worden hersteld.\n\nKlik op OK als u wilt doorgaan." + account_information_has_been_updated: Accountinformatie is bijgewerkt. + should_be_a_valid_url: moet een geldige URL zijn + your_account_removal_request_will_be_processed_within_2_months_please_contact_us_if_you_want_to_keep_your_account: Uw verzoek tot verwijdering van uw account wordt binnen 2 maanden verwerkt. Neem contact met ons op als u uw account wilt behouden. + test_mode: Testmodus + copy: Kopiëren + copied: Gekopieerd + rotate: Draaien + remove_existing_api_token_and_generated_a_new_one_are_you_sure_: Bestaand API-token verwijderen en een nieuw genereren. Weet u het zeker? + request_signature_multiple_submitters_with_default_values: Handtekening aanvragen, meerdere inzenders met standaardwaarden + request_signature_single_submitter: Handtekening aanvragen, één inzender + template_details: Sjabloondetails + open_full_api_reference: Volledige API-referentie openen + api_token_has_been_updated: API-token is bijgewerkt. + change_your_password: Wijzig uw wachtwoord + new_password: Nieuw wachtwoord + minimum_password_length_characters_minimum: Minimaal %{minimum_password_length} tekens + confirm_new_password: Nieuw wachtwoord bevestigen + change_my_password: Mijn wachtwoord wijzigen + changing_password: Wachtwoord wijzigen... + reset_password: Wachtwoord resetten + resetting_password: Wachtwoord resetten... + sign_in_with_name_account: Inloggen met %{name}-account + two_factor_code_from_authenticator_app: Twee-factorcode van authenticator-app + sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Meld u aan in de DocuSeal Console om te upgraden. De on-premises app is volledig zelfstandig; de Console wordt alleen gebruikt om uw licentie te beheren. + send_from_email: Verzenden vanaf e-mailadres + optional: optioneel + save: Opslaan + saving: Opslaan... + changes_have_been_saved: Wijzigingen zijn opgeslagen. + unlock_with_docuseal_pro: Ontgrendel met DocuSeal Pro + use_your_own_certificates_to_sign_and_verify_pdf_files: Gebruik uw eigen certificaten om PDF-bestanden te ondertekenen en te verifiëren. + upload_certificate: Certificaat uploaden + name: Naam + file: Bestand + use_a_valid_der_p12_or_pfx_file: Gebruik een geldig .der-, .p12- of .pfx-bestand. + submit: Indienen + submitting: Indienen... + pdf_signature: PDF-handtekening + upload_signed_pdf_file_to_validate_its_signature_: 'Upload een ondertekend PDF-bestand om de handtekening te valideren:' + analyzing: Analyseren... + verify_signed_pdf: Ondertekende PDF verifiëren + click_to_upload_or_drag_and_drop_html: Klik om te uploaden of sleep bestanden hierheen + click_to_upload_or_drag_and_drop_files_html: Klik om te uploaden of sleep bestanden + signing_certificates: Ondertekeningscertificaten + upload_cert: Certificaat uploaden + valid_to: Geldig tot + status: Status + make_default: Als standaard instellen + remove: Verwijderen + removing: Verwijderen... + delete: Verwijderen + default: Standaard + are_you_sure_: Weet u het zeker? + timestamp_server: Tijdstempelserver + timeserver_url: Timeserver-URL + url_of_the_trusted_rfc_3161_timeserver_to_be_used_to_generate_timestamp_signatures: URL van de vertrouwde RFC 3161-tijdserver die wordt gebruikt om tijdstempelhandtekeningen te genereren. + apply_multiple_pdf_digital_signatures_in_the_document_per_each_signer: Meerdere PDF-digitale handtekeningen in het document toepassen, per ondertekenaar + remove_pdf_form_fillable_fields_from_the_signed_pdf_flatten_form: Invulbare PDF-formuliervelden verwijderen uit de ondertekende PDF (formulier vlak maken) + certificate_has_been_successfully_added: Certificaat is succesvol toegevoegd. + default_certificate_has_been_selected: Standaardcertificaat is geselecteerd. + certificate_has_been_removed: Certificaat is verwijderd. + already_exists: bestaat al. + welcome_to_product_name: Welkom bij %{product_name} + set_password: Wachtwoord instellen + confirm_password: Wachtwoord bevestigen + save_password_and_sign_in: Wachtwoord opslaan en inloggen + use_an_authenticator_mobile_app_like_google_authenticator_or_1password_to_scan_the_qr_code_below: Gebruik een mobiele authenticator-app zoals Google Authenticator of 1Password om de onderstaande QR-code te scannen. + remove_2fa: 2FA verwijderen + setup_2fa: 2FA instellen + 2fa_has_been_configured: 2FA is geconfigureerd. + code_is_invalid: Code is ongeldig + 2fa_has_been_removed: 2FA is verwijderd. + 2fa_has_been_set_up_already: 2FA is al ingesteld. + developer_newsletters: Nieuwsbrieven voor ontwikkelaars + skip: Overslaan + email_notifications: E-mailmeldingen + receive_notification_emails_on_completed_submission: Ontvang e-mailmeldingen bij voltooide inzendingen + completed_documents_notification_bcc_address: BCC-adres voor melding voltooide documenten + sign_request_email_reminders: E-mailherinneringen voor ondertekenverzoeken + send_automatic_email_reminders_to_your_recipients: Stuur automatische e-mailherinneringen naar uw ontvangers. + first_reminder_in: Eerste herinnering over + second_reminder_in: Tweede herinnering over + third_reminder_in: Derde herinnering over + learn_more: Meer informatie + unable_to_save: Kan niet opslaan. + invalid_timeserver: Ongeldige tijdserver + email_templates: E-mailsjablonen + signature_request_email: E-mail voor handtekeningverzoek + signature_request_sms: SMS voor handtekeningverzoek + verification_code_sms: Verificatiecode-SMS + completed_notification_email: E-mailmelding voltooid + company_logo: Bedrijfslogo + submission_form: Indieningsformulier + completed_form_message: Bericht voltooid formulier + completed_form_redirect_button: Knop voor doorverwijzing na voltooid formulier + documents_copy_email: E-mail met kopie van documenten + form_custom_css: Aangepaste CSS voor formulier + subject: Onderwerp + body: Inhoud + text_message: Tekstbericht + title: Titel + button_title: Knoptekst + button_url: Knop-URL + upload_logo: Logo uploaden + show_confetti_on_successful_completion: Confetti tonen na succesvolle voltooiing + attach_audit_log_pdf: Auditlogboek-PDF bijvoegen + attach_documents: Documenten bijvoegen + settings_have_been_saved: Instellingen zijn opgeslagen. + display_your_company_name_and_logo_when_signing_documents: Toon uw bedrijfsnaam en logo bij het ondertekenen van documenten. + profile: Profiel + signature: Handtekening + update_signature: Handtekening bijwerken + unable_to_save_signature: Kan handtekening niet opslaan. + signature_has_been_saved: Handtekening is opgeslagen. + signature_has_been_removed: Handtekening is verwijderd. + initials: Initialen + update_initials: Initialen bijwerken + unable_to_save_initials: Kan initialen niet opslaan. + initials_has_been_saved: Initialen zijn opgeslagen. + initials_has_been_removed: Initialen zijn verwijderd. + change_password: Wachtwoord wijzigen + two_factor_authentication: Tweeledige verificatie + 2fa_is_not_configured: 2FA is niet geconfigureerd + set_up_2fa: 2FA instellen + contact_information_has_been_update: Contactgegevens zijn bijgewerkt. + password_has_been_changed: Wachtwoord is gewijzigd. + email_integration: E-mailintegratie + send_via_connected_email: Verzenden via gekoppeld e-mailaccount + activate_with_docuseal_pro: Activeren met DocuSeal Pro + send_signature_request_to_your_recipients_directly_from_your_email: Stuur een ondertekenverzoek rechtstreeks vanuit uw eigen e-mail naar uw ontvangers + connect_gmail: Gmail verbinden + re_connect_gmail: Gmail opnieuw verbinden + connect_microsoft: Microsoft verbinden + re_connect_microsoft: Microsoft opnieuw verbinden + gmail_has_been_connected: Gmail is verbonden. + microsoft_account_has_been_connected: Microsoft-account is verbonden. + but_not_activated: maar niet geactiveerd + email_has_been_sent: E-mail is verzonden. + email_has_been_sent_already: E-mail is al verzonden. + initial_setup: Initiële configuratie + demo_environment: Demo-omgeving + close: Sluiten + upgrade: Upgraden + settings: Instellingen + console: Console + verify_pdf: PDF verifiëren + sign_out: Afmelden + page_number: Pagina %{number} + powered_by: Aangedreven door + count_documents_signed_with_html: "%{count} documenten ondertekend met" + storage: Opslag + notifications: Meldingen + e_signature: E-handtekening + personalization: Personalisatie + users: Gebruikers + plans: Abonnementen + new: Nieuw + embedding: Insluiten + background_jobs: Achtergrondtaken + need_help_ask_a_question_: 'Hulp nodig? Stel een vraag:' + exit: Afsluiten + leave: Verlaten + impersonated_as: Geïmpersonificeerd als + ask_ai: AI vragen + ai_assistant: AI-assistent + discord_community: Discord-community + integrations: Integraties + teams: Teams + tenants: Tenants + send_signature_requests_via_sms: Ondertekenverzoeken via SMS verzenden + twilio_settings: Twilio-instellingen + webhook_settings: Webhook-instellingen + sending_sms: SMS verzenden + from: Van + account_sid: Account SID + send_sms_via_webhook: SMS verzenden via webhook + webhook_integration_allows_to_send_sms_using_any_provider: Webhook-integratie maakt het mogelijk SMS te verzenden met elke provider + test: Test + single_sign_on_with_saml_2_0: Single Sign-On met SAML 2.0 + force_sso_disable_login_with_email_and_password: SSO afdwingen (inloggen met e-mail en wachtwoord uitschakelen) + for_aws_s3_compatible_apis_like_minio: Voor AWS S3-compatibele API's zoals MinIO. + store_all_files_on_disk: Alle bestanden op schijf opslaan + no_configs_are_needed_but_make_sure_your_disk_is_persistent: Geen configuraties nodig, maar zorg ervoor dat uw schijf persistent is + not_suitable_for_heroku_and_other_paas: Niet geschikt voor Heroku en andere PaaS + bulk_send_from_excel_xlsx_or_csv: Bulkverzenden vanuit Excel XLSX of CSV + add_new: Nieuw toevoegen + add_recipients: Ontvangers toevoegen + add_new_recipients: Nieuwe ontvangers toevoegen + add_recipients_html: Toevoegen + type_emails_here: Typ hier e-mailadressen + or_embed_on_your_website: Of insluiten op uw website + phone: Telefoon + send_emails: E-mails verzenden + edit_message: Bericht bewerken + smtp_not_configured: SMTP niet geconfigureerd + configure_smtp_settings_in_order_to_send_emails_: 'Configureer de SMTP-instellingen om e-mails te kunnen verzenden:' + go_to_smtp_settings: Ga naar SMTP-instellingen + save_as_default_template_message: Opslaan als standaard sjabloonbericht + re_send_sms: SMS opnieuw verzenden + send_sms: SMS verzenden + preserve_order: Volgorde behouden + ? when_checked_notifications_will_be_sent_to_the_second_party_once_the_form_is_completed_by_the_previous_party_uncheck_this_option_to_send_notifications_to_all_parties_simultaneously_right_away + : Indien aangevinkt worden meldingen naar de tweede partij verzonden zodra de voorgaande partij het formulier heeft voltooid. Schakel deze optie uit om meldingen direct tegelijk naar alle partijen te sturen. + upgrade_to_send_unlimited_signature_requests: Upgrade om onbeperkte ondertekenverzoeken te verzenden + add_without_sending: Toevoegen zonder te verzenden + upgade_now: Nu upgraden + send_signature_request_emails_without_limits_with_docuseal_pro: Verzend onbeperkt e-mails voor ondertekenverzoeken met DocuSeal Pro + count_emails_used: "%{count} e-mails gebruikt" + has_been_connected: is verbonden + sms_not_configured: SMS niet geconfigureerd + configure_sms_settings_in_order_to_send_text_messages_: 'Configureer de SMS-instellingen om tekstberichten te kunnen verzenden:' + go_to_sms_settings: Ga naar SMS-instellingen + back_to_active: Terug naar Actief + submissions: Inzendingen + templates: Sjablonen + document_templates_html: sjablonen + archived: Gearchiveerd + search: Zoeken + submissions_not_found: Geen inzendingen gevonden + create: Aanmaken + view_archived: Archief bekijken + all: Alle + pending: In behandeling + completed: Voltooid + primarily_opened_with_microsoft_excel_other_options_include_google_sheets_libreoffice_calc_and_openoffice_calc: Wordt voornamelijk geopend met Microsoft Excel. Andere opties zijn Google Sheets, LibreOffice Calc en OpenOffice Calc. + can_be_opened_with_microsoft_excel_google_sheets_or_any_text_editor_like_notepad: Kan worden geopend met Microsoft Excel, Google Sheets of een teksteditor zoals Kladblok. + draw_signature: Handtekening tekenen + clear: Wissen + signature_uploaded: Handtekening geüpload + submission_deletion_is_irreversible_and_will_permanently_remove_all_associated_signed_documents_with_it_are_you_sure_: Het verwijderen van de inzending is onomkeerbaar en verwijdert permanent alle bijbehorende ondertekende documenten. Weet u het zeker? + return_back_to_your_desktop_device_to_complete_the_form_or_continue_on_mobile_html: Ga terug naar uw desktopapparaat om het formulier te voltooien of ga verder op mobiel + template_deletion_is_irreversible_and_will_permanently_remove_all_associated_signed_documents_with_it_are_you_sure_: Het verwijderen van het sjabloon is onomkeerbaar en verwijdert permanent alle bijbehorende ondertekende documenten. Weet u het zeker? + rename_folder: Map hernoemen + folder_name: Mapnaam + rename: Hernoemen + home: Start + templates_not_found: Geen sjablonen gevonden + upload_new_document: Nieuw document uploaden + uploading: Uploaden... + expired: Verlopen + sign_now: Onderteken + archive: Archiveren + archiving: Archiveren... + restore: Herstellen + restoring: Herstellen... + clone: Klonen + edit: Bewerken + move: Verplaatsen + moving: Verplaatsen... + preview: Voorbeeld + upload: Uploaden + clone_template: Sjabloon klonen + new_document_template: Nieuwe documentsjabloon + document_name: Documentnaam + change_folder: Map wijzigen + shared: gedeeld + export: Exporteren + there_are_no_submissions: Er zijn geen inzendingen + send_an_invitation_to_fill_and_complete_the_form: Stuur een uitnodiging om het formulier in te vullen en te voltooien + send_to_recipients: Verzenden naar ontvangers + sign_it_yourself: Zelf ondertekenen + api_and_embedding: API en insluiten + template_id: Sjabloon-ID + embedding_url: Insluitings-URL + share_template_with_test_mode: Sjabloon delen met testmodus + share_template_with_all_tenants: Sjabloon delen met alle tenants + use_following_placeholders_text_: 'Gebruik de volgende placeholder-teksten:' + ? users_count_total_users_count_pro_users_limit_was_reached_to_invite_additional_users_please_purchase_more_pro_user_seats_via_the_manage_plan_button + : "%{users_count}/%{total_users_count} Pro-gebruikerslimiet is bereikt. Koop meer Pro-gebruikersplaatsen via de knop ''Abonnement beheren'' om extra gebruikers uit te nodigen." + move_into_folder: Verplaatsen naar map + new_folder_name: Nieuwe mapnaam + new_subfolder_name: Nieuwe submapnaam + change_parent_folder: Bovenliggende map wijzigen + folder: Map + create_a_new_folder: Nieuwe map maken + exit_preview: Voorbeeld sluiten + general: Algemeen + recipients: Ontvangers + form_preferences: Formuliervoorkeuren + redirect_on_completion_url: URL voor doorverwijzing na voltooiing + completion_message: Voltooiingsbericht + email_subject: E-mailonderwerp + email_body: E-mailtekst + attach_audit_log_pdf_to_the_email: Auditlogboek-PDF aan de e-mail toevoegen + send_emails_automatically_on_completion: E-mails automatisch verzenden na voltooiing + attach_documents_to_the_email: Documenten aan de e-mail toevoegen + not_specified: Niet gespecificeerd + submission_requester: Aanvrager van inzending + specified_email: Opgegeven e-mail + invite_by_name: Uitnodigen door %{name} + same_as_name: Zelfde als %{name} + default_email: Standaard e-mail + processing: Verwerken... + upload_initials: Initialen uploaden + draw: Tekenen + upload_signature: Handtekening uploaden + integration: Integratie + admin: Beheerder + tenant_admin: Tenantbeheerder + editor: Bewerker + viewer: Lezer + member: Lid + agent: Agent + superadmin: Superbeheerder + edit_user: Gebruiker bewerken + new_user: Nieuwe gebruiker + unarchive: Dearchiveren + last_session: Laatste sessie + unlock_more_user_roles_with_docuseal_pro: Ontgrendel meer gebruikersrollen met DocuSeal Pro. + view_active: Actieve items bekijken + team_account: Teamaccount + team_accounts: Teamaccounts + tenant_account: Tenantaccount + tenant_accounts: Tenantaccounts + impersonate: Impersoneren + loading: Laden... + documents: Documenten + accounts: Accounts + edit_account: Account bewerken + new_team: Nieuw team + new_tenant: Nieuwe tenant + remove_team: Team verwijderen + remove_tenant: Tenant verwijderen + replace: Vervangen + allow_tenant_admins_to_invite_new_users: Sta tenantbeheerders toe nieuwe gebruikers uit te nodigen + manage_multiple_teams: Meerdere teams beheren + api_key: API-sleutel + logo: Logo + back: Terug + add_secret: Geheim toevoegen + edit_secret: Geheim bewerken + submission_example_payload: Voorbeeldpayload inzending + there_are_no_signatures: Er zijn geen handtekeningen + signed_with_trusted_certificate: Ondertekend met vertrouwd certificaat + signed_with_external_certificate: Ondertekend met extern certificaat + setup_2fa_to_continue: Stel 2FA in om door te gaan. + create_a_new_account: Maak een nieuw account aan. + you_are_already_signed_in: U bent al aangemeld. + please_sign_in: Log in alstublieft. + not_found: Niet gevonden + new_recipients_have_been_added: Nieuwe ontvangers zijn toegevoegd. + submission_has_been_removed: Inzending is verwijderd. + submission_has_been_archived: Inzending is gearchiveerd. + form_has_been_completed_already: Formulier is al voltooid. + form_has_been_archived: Formulier is gearchiveerd. + form_has_been_expired: Formulier is verlopen. + form_has_been_declined: Formulier is geweigerd. + file_is_missing: Bestand ontbreekt + folder_name_has_been_updated: Mapnaam is bijgewerkt. + unable_to_rename_folder: Kan map niet hernoemen. + template_has_been_removed: Sjabloon is verwijderd. + template_has_been_archived: Sjabloon is gearchiveerd. + template_has_been_cloned: Sjabloon is gekloond. + document_template_has_been_moved: Documentsjabloon is verplaatst. + unable_to_move_template_into_folder: Kan sjabloon niet naar map verplaatsen. + template_has_been_unarchived: Sjabloon is gedearchiveerd. + submission_has_been_unarchived: Inzending is gedearchiveerd. + unable_to_update_file: Kan bestand niet uploaden. + user_has_been_invited: Gebruiker is uitgenodigd. + unable_to_update_user: Kan gebruiker niet bijwerken. + user_has_been_updated: Gebruiker is bijgewerkt. + unable_to_remove_user: Kan gebruiker niet verwijderen. + user_has_been_removed: Gebruiker is verwijderd. + invalid_pdf: Ongeldige PDF + webhook_secret_has_been_saved: Webhook-geheim is opgeslagen. + webhook_url_has_been_saved: Webhook-URL is opgeslagen. + webhook_request_has_been_sent: Webhook-verzoek is verzonden. + webhook_url_has_been_updated: Webhook-URL is bijgewerkt. + webhook_url_has_been_deleted: Webhook-URL is verwijderd. + unable_to_resend_webhook_request: Kan webhook-verzoek niet opnieuw verzenden. + new_webhook: Nieuwe webhook + delete_webhook: Webhook verwijderen + count_submissions_have_been_created: "%{count} inzendingen zijn aangemaakt." + sms_length_cant_be_longer_than_120_bytes: SMS-lengte mag niet langer zijn dan 120 bytes + connected_successfully: Succesvol verbonden. + user_nameid_not_found: Gebruiker %{nameid} niet gevonden. + sso_settings_have_been_updated: SSO-instellingen zijn bijgewerkt. + sms_has_been_sent: SMS is verzonden. + account_has_been_created: Account is aangemaakt. + account_has_been_updated: Account is bijgewerkt. + account_has_been_removed: Account is verwijderd. + logo_has_been_uploaded: Logo is geüpload. + invalid_file_type: Ongeldig bestandstype + upload_file: Bestand uploaden + upgrade_your_plan_to_invite_more_users_contact_email: Upgrade uw abonnement om meer gebruikers uit te nodigen (contact %{email}). + contact_your_admin_email_to_invite_more_users: Neem contact op met uw beheerder %{email} om meer gebruikers uit te nodigen. + contact_your_administrator_to_add_new_users: Neem contact op met uw beheerder om een nieuwe gebruiker toe te voegen + one_hour: 1 uur + two_hours: 2 uur + four_hours: 4 uur + eight_hours: 8 uur + twelve_hours: 12 uur + twenty_four_hours: 24 uur + two_days: 2 dagen + four_days: 4 dagen + eight_days: 8 dagen + fifteen_days: 15 dagen + twenty_one_days: 21 dagen + thirty_days: 30 dagen + free: Gratis + unlimited_documents_storage: Onbeperkte documentopslag + users_management: Gebruikersbeheer + ten_filed_types: 10 veldtypen + multiple_signers: Meerdere ondertekenaars + automatic_esignature: Automatische e-handtekening + ten_signature_request_emails_per_month: 10 e-mails voor ondertekenverzoeken per maand + unlimited_sign_yourself: Onbeperkt zelf ondertekenen + free_developer_testing_sandbox: Gratis testomgeving voor ontwikkelaars + continue_with_free_basic: Doorgaan met Free Basic + unlimited_signature_request_emails: Onbeperkte e-mails voor ondertekenverzoeken + your_company_logo: Uw bedrijfslogo + connect_own_email_address: Eigen e-mailadres koppelen + personalize_email_content: E-mailinhoud personaliseren + automated_reminders: Geautomatiseerde herinneringen + bulk_send_from_spreadsheet: Bulkverzenden vanuit spreadsheet + identify_verification_via_sms: Identiteitsverificatie via SMS + start_with_pro: Starten met Pro + user_month: gebruiker / maand + developer_sandbox: Ontwikkelaars-sandbox. + upgrade_to_start_using_in_production_html: Upgrade om in productie te gaan gebruiken. + download_combined_pdf: Gecombineerde PDF downloaden + audit_log: Auditlogboek + signers: Ondertekenaars + not_invited_yet: Nog niet uitgenodigd + not_completed_yet: Nog niet voltooid + declined_on_time: Geweigerd op %{time} + expire_on_time: Verloopt op %{time} + sign_in_person: In persoon ondertekenen + create_a_new_template_document_form_or_submit_the_existing_one_html: Maak een nieuw sjabloon voor een documentformulier of dien het bestaande in + send_email_copy_with_completed_documents_to_a_specified_bcc_address: Stuur een e-mailkopie met voltooide documenten naar een opgegeven BCC-adres. + re_send_email: E-mail opnieuw verzenden + send_email: E-mail verzenden + copy_share_link: Deellink kopiëren + copied_to_clipboard: Gekopieerd naar klembord + link: Link + via_email: via e-mail + via_phone: via telefoon + detailed: Gedetailleerd + upload_list: Lijst uploaden + creating: Aanmaken... + open_source_documents_software: open-sourcesoftware voor documenten + copy_link: Link kopiëren + opened: Geopend + sent: Verzonden + awaiting: Wachten + document_id: Document-ID + envelope_id: Envelop-ID + event_log: Gebeurtenissenlogboek + verify: Verifiëren + testing_log_not_for_production_use: Testlogboek - Niet voor productiegebruik + original_sha256: Oorspronkelijke SHA256 + result_sha256: Resultaat SHA256 + generated_at: Gegenereerd op + email_verification: E-mailverificatie + phone_verification: Telefoonverificatie + session_id: Sessie-ID + option: Optie + text_field: Tekstveld + signature_field: Handtekeningveld + initials_field: Initialenveld + date_field: Datumveld + number_field: Getalveld + image_field: Afbeeldingsveld + file_field: Bestandsveld + select_field: Keuzelijstveld + checkbox_field: Aankruisvakje + multiple_field: Meervoudig keuzelijstveld + radio_field: Radiogroepveld + cells_field: Cellenveld + stamp_field: Stempelveld + payment_field: Betalingsveld + phone_field: Telefoonveld + verification_field: Identiteitsverificatie + identity_verification: Identiteitsverificatie + paid_price: Betaald %{price} + verified: Geverifieerd + unverified: Niet geverifieerd + document: Document + completed_at: Voltooid op + edit_recipient: Ontvanger bewerken + update_recipient: Ontvanger bijwerken + use_international_format_1xxx_: 'Gebruik internationaal formaat: +1xxx...' + submitter_cannot_be_updated: Inzender kan niet worden bijgewerkt. + at_least_one_field_must_be_filled: Er moet minstens één veld worden ingevuld. + archived_users: Gearchiveerde gebruikers + embedding_users: Gebruikers voor insluiten + view_embedding_users: Insluitgebruikers bekijken + key: Sleutel + value: Waarde + webhook_secret: Webhook-geheim + author: Auteur + to: Aan + created_at: Aangemaakt + apply: Toepassen + applying: Toepassen... + today: Vandaag + yesterday: Gisteren + this_week: Deze week + last_week: Afgelopen week + this_month: Deze maand + last_month: Afgelopen maand + this_year: Dit jaar + policy_links: Beleidskoppelingen + markdown_content_e_g: Markdown-inhoud, bijv. + privacy_policy: Privacybeleid the_code_has_been_sent_to_your_email: De code is naar uw e-mail verzonden. enter_the_verification_code_from_your_email: Voer de verificatiecode uit uw e-mail in. too_many_attempts: Te veel pogingen. verification_code: Verificatiecode - resend_code: Code Opnieuw Verzenden - powered_by: 'Aangedreven door' - count_documents_signed_with_html: '%{count} documenten ondertekend met' - open_source_documents_software: 'open source documenten software' - eu_data_residency: Gegevens EU - please_enter_your_email_address_associated_with_the_completed_submission: Voer het e-mailadres in dat is gekoppeld aan de voltooide indiening. - privacy_policy: Privacybeleid - esignature_disclosure: Gebruik van e-handtekening - select_data_residency: Selecteer gegevenslocatie - company_name: Bedrijfsnaam - optional: optioneel - submit: Verzenden - sms_rate_limit_exceeded: SMS-limiet overschreden + resend_code: Code opnieuw verzenden + verify_new_sign_in: Nieuwe aanmelding verifiëren + use_otp_code_to_sign_in_or_click_the_link_below_html: 'Gebruik de code %{code} om in te loggen of klik op de onderstaande link:' + complete_sign_in: Inloggen voltooien + please_reply_to_this_email_if_you_dont_recognize_this_sign_in_attempt: Reageer op deze e-mail als u deze aanmeldpoging niet herkent. + docuseal_support: DocuSeal Support + use_the_edit_form_to_move_it_to_another_team: Gebruik het bewerkingsformulier om het naar een ander team te verplaatsen. + too_many_sms_attempts_try_again_in_a_few_seconds: Te veel SMS-pogingen. Probeer het over enkele seconden opnieuw. + number_phone_number_is_invalid: Telefoonnummer +%{number} is ongeldig + make_com_integration: Make.com-integratie + zapier_integration: Zapier-integratie + seamlessly_automate_your_document_signing_process_with_make_com: Automatiseer uw documentondertekeningsproces naadloos met Make.com. + find_suitable_zapier_templates_to_automate_your_workflow: Vind geschikte Zapier-sjablonen om uw workflow te automatiseren. + get_started: Aan de slag + click_here_to_learn_more_about_user_roles_and_permissions_html: Klik hier voor meer informatie over gebruikersrollen en machtigingen. + count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: "%{count} / 10 e-mails voor ondertekenverzoeken deze maand verzonden. Upgrade naar Pro om onbeperkt e-mails voor ondertekenverzoeken te verzenden." + test_mode_emails_limit_will_be_reset_within_24_hours: Limiet voor testmodus-e-mails wordt binnen 24 uur opnieuw ingesteld. + on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: Op een schaal van 1 tot 10, hoe tevreden bent u over het DocuSeal-product? + tell_us_more_about_your_experience: Vertel ons meer over uw ervaring + extremely_dissatisfied: Zeer ontevreden + extremely_satisfied: Zeer tevreden + your_pro_plan_payment_is_overdue: Uw betaling voor het Pro-abonnement is achterstallig. + click_here_to_update_your_payment_details_and_clear_the_invoice_to_ensure_uninterrupted_service_html: Klik hier om uw betaalgegevens bij te werken en de factuur te voldoen om ononderbroken service te garanderen. + overdue_payment: Achterstallige betaling + ? your_pro_plan_has_been_suspended_due_to_unpaid_invoices_you_can_update_your_payment_details_to_settle_the_invoice_and_continue_using_docuseal_or_cancel_your_subscription + : Uw Pro-abonnement is opgeschort vanwege onbetaalde facturen. U kunt uw betaalgegevens bijwerken om de factuur te voldoen en DocuSeal te blijven gebruiken of uw abonnement opzeggen. + manage_subscription: Abonnement beheren + submission_created_by_email_html: "Inzending aangemaakt door %{email}" + submission_created_by_email_via_source_html: "Inzending aangemaakt door %{email} via %{source}" + submission_created_via_source_html: "Inzending aangemaakt via %{source}" + pro_user_seats_used: Gebruikersplaatsen Pro gebruikt + manage_plan: Abonnement beheren + this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: Deze inzending heeft meerdere ondertekenaars, waardoor het gebruik van een deellink niet mogelijk is omdat onduidelijk is welke ondertekenaar verantwoordelijk is voor specifieke velden. Volg deze handleiding om de standaardgegevens van de ondertekenaar te definiëren. + welcome_to_docuseal: Welkom bij DocuSeal + start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Start een korte rondleiding om te leren hoe u uw eerste document maakt en verzendt + start_tour: Rondleiding starten + name_a_z: Naam A-Z + recently_used: Onlangs gebruikt + newest_first: Nieuwste eerst + none: Geen + default_expiration: Standaardvervaldatum + specified_date: Opgegeven datum + one_day: 1 dag + three_days: 3 dagen + five_days: 5 dagen + six_days: 6 dagen + seven_days: 7 dagen + nine_days: 9 dagen + ten_days: 10 dagen + two_weeks: 2 weken + three_weeks: 3 weken + four_weeks: 4 weken + one_month: 1 maand + two_months: 2 maanden + three_months: 3 maanden + eu_data_residency: EU-gegevensresidentie + please_enter_your_email_address_associated_with_the_completed_submission: Voer het e-mailadres in dat aan de voltooide inzending is gekoppeld. + esignature_disclosure: Verklaring e-handtekening + share_link: Deellink + enable_shared_link: Deellink inschakelen + share_link_is_currently_disabled: Deellink is momenteel uitgeschakeld + select_data_residency: Gegevensresidentie selecteren + ? account_name_has_invited_you_to_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution + : "%{account_name} heeft u uitgenodigd om documenten online moeiteloos in te vullen en te ondertekenen met een veilige, snelle en gebruiksvriendelijke digitale ondertekenoplossing." + ? review_or_download_completed_documents_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution + : Bekijk of download voltooide documenten. Vul en onderteken documenten online moeiteloos met een veilige, snelle en gebruiksvriendelijke digitale ondertekenoplossing. + link_form_fields: Formuliervelden koppelen + at_least_one_field_must_be_displayed_in_the_form: Er moet minstens één veld in het formulier worden weergegeven + this_template_has_multiple_parties_which_prevents_the_use_of_a_sharing_link: Dit sjabloon heeft meerdere partijen, waardoor het gebruik van een gedeelde link niet mogelijk is omdat onduidelijk is welke partij verantwoordelijk is voor specifieke velden. Definieer de standaardpartijdetails om dit op te lossen. + events_log: Logboek gebeurtenissen + succeeded: Geslaagd + failed: Mislukt + there_are_no_events: Er zijn geen gebeurtenissen + resend: Opnieuw verzenden + next_attempt_in_time_in_words: Volgende poging over %{time_in_words} + request_email_otp_verification_with_shared_link: E-mail-OTP-verificatie vereisen bij deellink + sms_rate_limit_exceeded: SMS-snelheidslimiet overschreden invalid_phone_number: Ongeldig telefoonnummer - please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Neem contact op met de aanvrager om uw nummer voor twee-factor-authenticatie op te geven. - we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: We hebben een eenmalige verificatiecode naar je e-mailadres gestuurd. Voer de code hieronder in om verder te gaan. + please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Neem contact op met de aanvrager om uw telefoonnummer op te geven voor tweeledige verificatie. + we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: We hebben een eenmalige verificatiecode naar uw e-mailadres gestuurd. Voer de code hieronder in om door te gaan. re_send_code: Code opnieuw verzenden - email_verification: E-mailverificatie - your_verification_code_to_access_the_name: 'Je verificatiecode voor toegang tot "%{name}":' - please_reply_to_this_email_if_you_didnt_request_this: Reageer op deze e-mail als je dit niet hebt aangevraagd. - your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Je gebruikersaccount is gearchiveerd. Neem contact op met je beheerder om de toegang te herstellen. - your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: Je e-mailadres kon niet worden bereikt. Dit kan gebeuren door een typefout in je adres of als je mailbox niet beschikbaar is. Neem contact op met support@docuseal.com om in te loggen. + your_verification_code_to_access_the_name: 'Uw verificatiecode om toegang te krijgen tot "%{name}":' + please_reply_to_this_email_if_you_didnt_request_this: Reageer op deze e-mail als u dit niet hebt aangevraagd. + advanced_settings: Geavanceerde instellingen + text: Tekst + code: Code + custom_html_emails: Aangepaste HTML-e-mails + connect_your_email_to_send_html_emails: Koppel uw e-mail om HTML-e-mails te verzenden + connect_your_email_or_outlook_account_or_add_smtp_settings_to_send_custom_html_emails: Koppel uw Gmail- of Outlook-account of voeg SMTP-instellingen toe om aangepaste HTML-e-mails te verzenden. + connect_gmail_or_outlook: Gmail of Outlook verbinden + connect_your_email_to_bulk_send: Koppel uw e-mail om bulk te verzenden + connect_your_email_or_outlook_account_or_add_smtp_settings_to_bulk_send: Koppel uw Gmail- of Outlook-account of voeg SMTP-instellingen toe om bulk te verzenden. + are_you_sure_you_want_to_add_recipients_without_sending_to_send_emails_it_requires_to_connect_gmail_or_outlook: Weet u zeker dat u ontvangers wilt toevoegen zonder te verzenden? Om e-mails te verzenden moet u Gmail of Outlook koppelen. + template_name_has_been_completed_by_submitters_html: '"{template.name}" is voltooid door {submission.submitters}' + please_check_the_copy_of_your_template_name_in_the_email_attachments_html: Controleer de kopie van uw "{template.name}" in de e-mailbijlagen. + you_have_been_invited_to_sign_the_template_name_html: U bent uitgenodigd om "{template.name}" te ondertekenen. + reveal_api_key: API-sleutel tonen + enter_your_password_to_reveal_the_api_key: Voer uw wachtwoord in om de API-sleutel te tonen + wrong_password: Onjuist wachtwoord. + current_password: Huidig wachtwoord + dont_remember_your_current_password_click_here_to_reset_it_html: Huidig wachtwoord vergeten? om het te resetten. + an_email_with_password_reset_instructions_has_been_sent: Er is een e-mail met instructies voor het resetten van het wachtwoord verzonden. + api_key_access_code: Toegangscode API-sleutel + use_otp_code_to_access_the_api_key_html: Gebruik de code %{code} om toegang te krijgen tot de API-sleutel. + please_reply_to_this_email_if_you_dont_recognize_this_request: Reageer op deze e-mail als u dit verzoek niet herkent. + your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Uw gebruikersaccount is gearchiveerd. Neem contact op met uw beheerder om de toegang tot uw account te herstellen. + ? your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in + : Uw e-mailadres kon niet worden bereikt. Dit kan gebeuren als er een typefout in uw adres zit of als uw mailbox niet beschikbaar is. Neem contact op met support@docuseal.com om in te loggen. + efficient_search_with_search_index: Efficiënt zoeken met zoekindex + reindex: Opnieuw indexeren + build_search_index: Zoekindex opbouwen + ? require_two_factor_authentication_2fa_with_an_authenticator_app_e_g_google_authenticator_authy_all_users_signing_documents_must_pass_the_second_factor_verification_using_a_secure_code_in_addition_to_their_password + : Tweeledige verificatie (2FA) met een authenticator-app (bijv. Google Authenticator, Authy) vereisen. Alle gebruikers die documenten ondertekenen moeten naast hun wachtwoord de tweede factor verifiëren met een beveiligde code. + ? add_a_unique_signature_id_and_timestamp_to_each_signature_for_audit_and_traceability_purposes_along_with_the_timestamp_part_of_docuseals_21_cfr_part_11_compliance_settings + : Voeg voor audit- en traceerbaarheidsdoeleinden een unieke handtekening-ID en tijdstempel toe aan elke handtekening. Onderdeel van de 21 CFR Part 11-nalevingsinstellingen van DocuSeal. + ? require_signer_to_provide_a_reason_for_signing_before_completing_their_signature_e_g_approvals_certifications_part_of_docuseals_21_cfr_part_11_compliance_settings + : Vereist dat de ondertekenaar vóór het voltooien van zijn handtekening een reden opgeeft (bijv. goedkeuringen, certificeringen). Onderdeel van de 21 CFR Part 11-nalevingsinstellingen van DocuSeal. + allow_signers_to_create_signatures_by_typing_their_name_instead_of_drawing_or_uploading_one: Sta ondertekenaars toe handtekeningen te maken door hun naam te typen in plaats van te tekenen of te uploaden. + allow_signers_to_resubmit_forms_after_completion_useful_when_corrections_or_multiple_submissions_are_needed: Sta ondertekenaars toe formulieren na voltooiing opnieuw in te dienen; nuttig wanneer correcties of meerdere inzendingen nodig zijn. + allow_recipients_to_decline_signing_a_document_the_decline_reason_notification_will_be_sent_to_the_signature_requester: Sta ontvangers toe het ondertekenen van een document te weigeren. De melding met de reden van weigering wordt naar de aanvrager van de handtekening gestuurd. + save_a_users_signature_and_automatically_pre_fill_it_in_future_signing_sessions: Sla de handtekening van een gebruiker op en vul deze automatisch vooraf in bij toekomstige ondertekeningssessies. + make_document_download_links_expire_after_40_minutes_to_prevent_long_term_access_and_enhance_security: Laat links voor het downloaden van documenten na 40 minuten verlopen om langdurige toegang te voorkomen en de beveiliging te verbeteren. + require_authentication_with_user_login_or_api_key_to_access_the_document_download_links: Authenticatie met gebruikerslogin of API-sleutel vereisen om toegang te krijgen tot de documentdownloadlinks. + combine_signed_documents_and_the_audit_log_into_a_single_pdf_file_for_easier_recordkeeping_and_compliance: Combineer ondertekende documenten en het auditlogboek in één PDF-bestand voor eenvoudiger archivering en compliance. + require_a_jwt_authorization_to_preview_embedded_forms_ensuring_only_authorized_users_can_view_them: JWT-autorisatie vereisen om ingesloten formulieren te bekijken, zodat alleen geautoriseerde gebruikers ze kunnen zien. + make_all_newly_created_templates_private_to_their_creator_by_default: Maak alle nieuw aangemaakte sjablonen standaard privé voor hun maker. + ? make_the_recipients_signing_order_always_enforced_so_that_the_second_signer_can_start_signing_their_part_only_after_the_first_signer_has_completed_signing + : Zorg dat de volgorde van ondertekenen altijd wordt afgedwongen, zodat de tweede ondertekenaar pas kan beginnen nadat de eerste ondertekenaar heeft voltooid. + submission_sources: + api: API + bulk: Bulkverzending + embed: Insluiten + invite: Uitnodiging + link: Link + submission_event_names: + send_email_to_html: "E-mail verzonden naar %{submitter_name}" + bounce_email_html: "E-mail gebounced %{submitter_name}" + complaint_email_html: "Spamklacht %{submitter_name}" + send_reminder_email_to_html: "Herinneringsmail verzonden naar %{submitter_name}" + send_sms_to_html: "SMS verzonden naar %{submitter_name}" + send_2fa_sms_to_html: "Verificatie-SMS verzonden naar %{submitter_name}" + open_email_by_html: "E-mail geopend door %{submitter_name}" + click_email_by_html: "E-maillink aangeklikt door %{submitter_name}" + click_sms_by_html: "SMS-link aangeklikt door %{submitter_name}" + phone_verified_by_html: "Telefoon geverifieerd door %{submitter_name}" + email_verified_by_html: "E-mail geverifieerd door %{submitter_name}" + start_form_by_html: "Inzending gestart door %{submitter_name}" + view_form_by_html: "Formulier bekeken door %{submitter_name}" + invite_party_by_html: "Uitgenodigd %{invited_submitter_name} door %{submitter_name}" + complete_form_by_html: "Inzending voltooid door %{submitter_name}" + start_verification_by_html: "Identiteitsverificatie gestart door %{submitter_name}" + complete_verification_by_html: "Identiteitsverificatie voltooid door %{submitter_name} met %{provider}" + api_complete_form_by_html: "Inzending via API voltooid door %{submitter_name}" + import_list: + select_worksheet: Werkblad selecteren + open: Openen + remove: Verwijderen + recipient_field: Ontvangerveld + spreadsheet_column: Spreadsheetkolom + select_field: Veld selecteren + select_column: Kolom selecteren + new_field_mapping: Nieuwe veldkoppeling + total_entries: Totaal aantal items + upload_csv_or_xlsx_spreadsheet: CSV- of XLSX-spreadsheet uploaden + click_to_upload: Klik om te uploaden + or_drag_and_drop_files: of sleep bestanden hierheen. + or: Of + download: downloaden + a_sample_spreadsheet_to_fill_and_import: een voorbeeldspreadsheet om in te vullen en te importeren + app_tour: + start: Starten + previous: Vorige + next: Volgende + template_and_submissions: Sjablonen en inzendingen + template_and_submissions_description: U kunt de weergave kiezen die het beste past bij uw workflow. Kies de weergave 'Sjablonen' om herbruikbare documentsjablonen te maken, of de weergave 'Inzendingen' om afzonderlijke documenten te ondertekenen of de status van elk ondertekenverzoek te bekijken. + upload_a_pdf_file: Upload een PDF-bestand + upload_a_pdf_file_description: Upload een PDF-document om een sjabloon voor een ondertekeningsformulier te maken. + select_a_signer_party: Selecteer een ondertekenende partij + select_a_signer_party_description: Met deze vervolgkeuzelijst kunt u een rol voor een ondertekenende partij selecteren of een nieuwe partij aan het document toevoegen als 2 of meer handtekeningen vereist zijn. + available_parties: Beschikbare partijen + available_parties_description: Deze lijst bevat alle beschikbare partijen met hun rolnamen. Na selectie kunt u velden toevoegen en configureren voor de ondertekenende partij. + available_field_types: Beschikbare veldtypen + available_field_types_description: Deze sectie bevat alle beschikbare veldtypen die aan het document kunnen worden toegevoegd voor gegevensinvoer of het verzamelen van handtekeningen. + text_input_field: Tekstinvoerveld + text_input_field_description: Met dit veld kunnen gebruikers tekstgebaseerde informatie invoeren, zoals namen of e-mails. + signature_field: Handtekeningveld + signature_field_description: Dit veld wordt gebruikt om handtekeningen van ondertekenaars te verzamelen. + added_fields: Toegevoegde velden + added_fields_description: Deze lijst toont alle velden die aan het document zijn toegevoegd. U kunt ze opnieuw ordenen, bewerken of verwijderen. + open_field_settings: Veldinstellingen openen + open_field_settings_description: Rechts naast de veldnaam staat een instellingenpictogram waarmee u de veldinstellingen kunt openen. + field_settings: Veldinstellingen + field_settings_description: Elk veld kan via instellingen worden aangepast aan uw behoeften, zoals het aanpassen van de lettergrootte, het verplicht maken van het veld of het toevoegen van een beschrijving. + send_document: Document verzenden ter ondertekening + send_document_description: Voordat u het document ter ondertekening verzendt, kunt u ontvangers configureren, hun e-mailadressen of telefoonnummers toevoegen en de e-mailinhoud aanpassen. + sign_yourself: Het document zelf ondertekenen + sign_yourself_description: Met deze knop kunt u uw handtekening toevoegen aan documenten die uw handtekening vereisen. + copy_and_share_link: Link kopiëren en delen + copy_and_share_link_description: Kopieer deze link om het document te delen. Iedereen met de link kan het ondertekenen nadat ze hun e-mailadres hebben ingevoerd. + sign_the_document: Het document ondertekenen + sign_the_document_description: Als u een van de ondertekenaars bent, kunt u met deze knop het document ondertekenen. + send_for_signing: Verzenden voor ondertekening + add_recipients: Ontvangers toevoegen + add_recipients_description: Voeg nieuwe ontvangers toe om het document te ondertekenen door hun e-mailadressen of telefoonnummers in te voeren. + settings: Instellingen + settings_account_description: Met uitgebreide accountinstellingen kunt u de eSigning-ervaring aanpassen en meer gebruikers uitnodigen. + support: Ondersteuning + support_description: U kunt onze selfservice AI-assistent gebruiken of ons e-mailen op support@docuseal.com als u vragen heeft. + settings_template_description: Gebruik deze knop om naar uw accountinstellingenpagina te gaan. + doorkeeper: + scopes: + write: Uw gegevens bijwerken + read: Uw gegevens lezen + pagination: + submissions: + range_with_total: "%{from}-%{to} van %{count} inzendingen" + range_without_total: "%{from}-%{to} inzendingen" + templates: + range_with_total: "%{from}-%{to} van %{count} sjablonen" + range_without_total: "%{from}-%{to} sjablonen" + template_folders: + range_with_total: "%{from}-%{to} van %{count} mappen" + range_without_total: "%{from}-%{to} mappen" + users: + range_with_total: "%{from}-%{to} van %{count} gebruikers" + range_without_total: "%{from}-%{to} gebruikers" + items: + range_with_total: "%{from}-%{to} van %{count} items" + range_without_total: "%{from}-%{to} items" + events: + range_with_total: "%{from}-%{to} van %{count} gebeurtenissen" + range_without_total: "%{from}-%{to} gebeurtenissen" ar: require_phone_2fa_to_open: "تطلب فتح عبر تحقق الهاتف ذو العاملين" @@ -6265,3 +7098,6 @@ de-DE: it-IT: <<: *it + +nl-NL: + <<: *nl From c2f7601dad3aa43e980cea8d2858486d83f52c13 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 6 Oct 2025 18:44:29 +0300 Subject: [PATCH 05/20] update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 50b20b12..9753da2a 100644 --- a/README.md +++ b/README.md @@ -42,7 +42,7 @@ DocuSeal is an open source platform that provides secure and efficient digital d - PDF signature verification - Users management - Mobile-optimized -- 6 UI languages with signing available in 14 languages +- 7 UI languages with signing available in 14 languages - API and Webhooks for integrations - Easy to deploy in minutes From 88466193c5bac0aca5834a5cc57bad666a82a7be Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 6 Oct 2025 18:48:00 +0300 Subject: [PATCH 06/20] fix i18n --- config/locales/i18n.yml | 42 ++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml index 023af030..02420ad0 100644 --- a/config/locales/i18n.yml +++ b/config/locales/i18n.yml @@ -5991,7 +5991,7 @@ nl: &nl provide_your_phone_in_international_format: Vul uw telefoonnummer in internationaal formaat in start: Start enforce_recipients_order: Volgorde van ontvangers afdwingen - starting: Starten... + starting: Starten invited_by_html: Uitgenodigd door %{name} you_have_been_invited_to_submit_a_form: U bent uitgenodigd om een formulier in te dienen signed_on_time: Ondertekend op %{time} @@ -5999,12 +5999,12 @@ nl: &nl document_has_been_signed_already: Document is al ondertekend form_has_been_submitted_already: Formulier is al ingediend send_copy_to_email: Kopie naar e-mail verzenden - sending: Verzenden... + sending: Verzenden resubmit: Opnieuw indienen form_has_been_deleted_by_html: Formulier is verwijderd door %{name}. or: of download_documents: Documenten downloaden - downloading: Downloaden... + downloading: Downloaden download: Downloaden decline: Weigeren declined: Geweigerd @@ -6039,7 +6039,7 @@ nl: &nl language: Taal app_url: App-URL update: Bijwerken - updating: Bijwerken... + updating: Bijwerken force_2fa_with_authenticator_app: 2FA afdwingen met authenticator-app add_signature_id_to_the_documents: Handtekening-ID toevoegen aan de documenten require_signing_reason: Reden voor ondertekening verplicht stellen @@ -6075,16 +6075,16 @@ nl: &nl minimum_password_length_characters_minimum: Minimaal %{minimum_password_length} tekens confirm_new_password: Nieuw wachtwoord bevestigen change_my_password: Mijn wachtwoord wijzigen - changing_password: Wachtwoord wijzigen... + changing_password: Wachtwoord wijzigen reset_password: Wachtwoord resetten - resetting_password: Wachtwoord resetten... + resetting_password: Wachtwoord resetten sign_in_with_name_account: Inloggen met %{name}-account two_factor_code_from_authenticator_app: Twee-factorcode van authenticator-app sign_up_in_docuseal_console_to_upgrade_on_premises_app_is_completely_standalone_console_is_used_only_to_manage_your_license: Meld u aan in de DocuSeal Console om te upgraden. De on-premises app is volledig zelfstandig; de Console wordt alleen gebruikt om uw licentie te beheren. send_from_email: Verzenden vanaf e-mailadres optional: optioneel save: Opslaan - saving: Opslaan... + saving: Opslaan changes_have_been_saved: Wijzigingen zijn opgeslagen. unlock_with_docuseal_pro: Ontgrendel met DocuSeal Pro use_your_own_certificates_to_sign_and_verify_pdf_files: Gebruik uw eigen certificaten om PDF-bestanden te ondertekenen en te verifiëren. @@ -6093,10 +6093,10 @@ nl: &nl file: Bestand use_a_valid_der_p12_or_pfx_file: Gebruik een geldig .der-, .p12- of .pfx-bestand. submit: Indienen - submitting: Indienen... + submitting: Indienen pdf_signature: PDF-handtekening upload_signed_pdf_file_to_validate_its_signature_: 'Upload een ondertekend PDF-bestand om de handtekening te valideren:' - analyzing: Analyseren... + analyzing: Analyseren verify_signed_pdf: Ondertekende PDF verifiëren click_to_upload_or_drag_and_drop_html: Klik om te uploaden of sleep bestanden hierheen click_to_upload_or_drag_and_drop_files_html: Klik om te uploaden of sleep bestanden @@ -6106,7 +6106,7 @@ nl: &nl status: Status make_default: Als standaard instellen remove: Verwijderen - removing: Verwijderen... + removing: Verwijderen delete: Verwijderen default: Standaard are_you_sure_: Weet u het zeker? @@ -6295,17 +6295,17 @@ nl: &nl home: Start templates_not_found: Geen sjablonen gevonden upload_new_document: Nieuw document uploaden - uploading: Uploaden... + uploading: Uploaden expired: Verlopen sign_now: Onderteken archive: Archiveren - archiving: Archiveren... + archiving: Archiveren restore: Herstellen - restoring: Herstellen... + restoring: Herstellen clone: Klonen edit: Bewerken move: Verplaatsen - moving: Verplaatsen... + moving: Verplaatsen preview: Voorbeeld upload: Uploaden clone_template: Sjabloon klonen @@ -6349,7 +6349,7 @@ nl: &nl invite_by_name: Uitnodigen door %{name} same_as_name: Zelfde als %{name} default_email: Standaard e-mail - processing: Verwerken... + processing: Verwerken upload_initials: Initialen uploaden draw: Tekenen upload_signature: Handtekening uploaden @@ -6372,7 +6372,7 @@ nl: &nl tenant_account: Tenantaccount tenant_accounts: Tenantaccounts impersonate: Impersoneren - loading: Laden... + loading: Laden documents: Documenten accounts: Accounts edit_account: Account bewerken @@ -6462,11 +6462,11 @@ nl: &nl ten_filed_types: 10 veldtypen multiple_signers: Meerdere ondertekenaars automatic_esignature: Automatische e-handtekening - ten_signature_request_emails_per_month: 10 e-mails voor ondertekenverzoeken per maand + ten_signature_request_emails_per_month: 10 e-mails met verzoeken/maand unlimited_sign_yourself: Onbeperkt zelf ondertekenen - free_developer_testing_sandbox: Gratis testomgeving voor ontwikkelaars + free_developer_testing_sandbox: Gratis test-sandbox voor devs continue_with_free_basic: Doorgaan met Free Basic - unlimited_signature_request_emails: Onbeperkte e-mails voor ondertekenverzoeken + unlimited_signature_request_emails: Onbeperkte ondertekenverzoeken your_company_logo: Uw bedrijfslogo connect_own_email_address: Eigen e-mailadres koppelen personalize_email_content: E-mailinhoud personaliseren @@ -6496,7 +6496,7 @@ nl: &nl via_phone: via telefoon detailed: Gedetailleerd upload_list: Lijst uploaden - creating: Aanmaken... + creating: Aanmaken open_source_documents_software: open-sourcesoftware voor documenten copy_link: Link kopiëren opened: Geopend @@ -6551,7 +6551,7 @@ nl: &nl to: Aan created_at: Aangemaakt apply: Toepassen - applying: Toepassen... + applying: Toepassen today: Vandaag yesterday: Gisteren this_week: Deze week From dab3a6f031c4d7ff1e19bd07b65a95884ac92aec Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Mon, 6 Oct 2025 21:45:46 +0300 Subject: [PATCH 07/20] fix typo --- app/javascript/submission_form/i18n.js | 24 +++++++++---------- .../submission_form/payment_step.vue | 2 +- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/app/javascript/submission_form/i18n.js b/app/javascript/submission_form/i18n.js index 41af4c7a..706bd19b 100644 --- a/app/javascript/submission_form/i18n.js +++ b/app/javascript/submission_form/i18n.js @@ -91,7 +91,7 @@ const en = { type_text: 'Type text', email_has_been_sent: 'Email has been sent', processing: 'Processing', - pay_with_strip: 'Pay with Stripe', + pay_with_stripe: 'Pay with Stripe', reupload: 'Reupload', upload: 'Upload', files: 'Files', @@ -192,7 +192,7 @@ const es = { type_text: 'Escribir texto', email_has_been_sent: 'El correo electrónico ha sido enviado', processing: 'Procesando', - pay_with_strip: 'Pagar con Stripe', + pay_with_stripe: 'Pagar con Stripe', reupload: 'Volver a subir', upload: 'Subir', files: 'Archivos', @@ -293,7 +293,7 @@ const it = { toggle_multiline_text: 'Attiva Testo Multilinea', email_has_been_sent: "L'email è stata inviata", processing: 'Elaborazione', - pay_with_strip: 'Paga con Stripe', + pay_with_stripe: 'Paga con Stripe', reupload: 'Ricarica', upload: 'Carica', files: 'File', @@ -394,7 +394,7 @@ const de = { toggle_multiline_text: 'Mehrzeiligen Text umschalten', email_has_been_sent: 'Die E-Mail wurde gesendet', processing: 'Verarbeitung', - pay_with_strip: 'Mit Stripe bezahlen', + pay_with_stripe: 'Mit Stripe bezahlen', reupload: 'Erneut hochladen', upload: 'Hochladen', files: 'Dateien', @@ -495,7 +495,7 @@ const fr = { toggle_multiline_text: 'Basculer le Texte Multiligne', email_has_been_sent: "L'email a été envoyé", processing: 'Traitement', - pay_with_strip: 'Paiement avec Stripe', + pay_with_stripe: 'Paiement avec Stripe', reupload: 'Recharger', upload: 'Télécharger', files: 'Fichiers', @@ -596,7 +596,7 @@ const pl = { toggle_multiline_text: 'Przełącz Tekst Wielolinijkowy', email_has_been_sent: 'E-mail został wysłany', processing: 'Przetwarzanie', - pay_with_strip: 'Płatność za pomocą Stripe', + pay_with_stripe: 'Płatność za pomocą Stripe', reupload: 'Ponowne przesłanie', upload: 'Przesyłanie', files: 'Pliki', @@ -798,7 +798,7 @@ const cs = { toggle_multiline_text: 'Přepnout Víceřádkový Text', email_has_been_sent: 'E-mail byl odeslán', processing: 'Zpracování', - pay_with_strip: 'Zaplacení přes Stripe', + pay_with_stripe: 'Zaplacení přes Stripe', reupload: 'Znovu nahrát', upload: 'Nahrát', files: 'Soubory', @@ -899,7 +899,7 @@ const pt = { toggle_multiline_text: 'Alternar Texto Multilinha', email_has_been_sent: 'Email enviado', processing: 'Processamento', - pay_with_strip: 'Pagar com Stripe', + pay_with_stripe: 'Pagar com Stripe', reupload: 'Reenviar', upload: 'Carregar', files: 'Arquivos', @@ -1000,7 +1000,7 @@ const he = { type_text: 'הקלד טקסט', email_has_been_sent: 'האימייל נשלח', processing: 'מעבד', - pay_with_strip: 'שלם עם סטרייפ', + pay_with_stripe: 'שלם עם סטרייפ', reupload: 'העלה שוב', upload: 'העלאה', files: 'קבצים', @@ -1101,7 +1101,7 @@ const nl = { type_text: 'Typ tekst', email_has_been_sent: 'E-mail is verzonden', processing: 'Verwerken', - pay_with_strip: 'Betalen met Stripe', + pay_with_stripe: 'Betalen met Stripe', reupload: 'Opnieuw uploaden', upload: 'Uploaden', files: 'Bestanden', @@ -1303,7 +1303,7 @@ const ko = { type_text: '텍스트 입력', email_has_been_sent: '이메일이 전송되었습니다', processing: '처리 중', - pay_with_strip: '스트라이프로 결제', + pay_with_stripe: '스트라이프로 결제', reupload: '다시 업로드', upload: '업로드', files: '파일', @@ -1404,7 +1404,7 @@ const ja = { type_text: 'テキストを入力', email_has_been_sent: 'メールが送信されました', processing: '処理中', - pay_with_strip: 'Stripeで支払う', + pay_with_stripe: 'Stripeで支払う', reupload: '再アップロード', upload: 'アップロード', files: 'ファイル', diff --git a/app/javascript/submission_form/payment_step.vue b/app/javascript/submission_form/payment_step.vue index d262d3a6..adf4e19c 100644 --- a/app/javascript/submission_form/payment_step.vue +++ b/app/javascript/submission_form/payment_step.vue @@ -62,7 +62,7 @@ width="22" /> - {{ t('pay_with_strip') }} + {{ t('pay_with_stripe') }} From bf9b7859467ca2ab7d8d2578e38e14aba8711547 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 7 Oct 2025 08:45:40 +0300 Subject: [PATCH 08/20] adjust i18n --- config/locales/i18n.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml index 02420ad0..3c2eadc3 100644 --- a/config/locales/i18n.yml +++ b/config/locales/i18n.yml @@ -6639,7 +6639,7 @@ nl: &nl succeeded: Geslaagd failed: Mislukt there_are_no_events: Er zijn geen gebeurtenissen - resend: Opnieuw verzenden + resend: Opnieuw next_attempt_in_time_in_words: Volgende poging over %{time_in_words} request_email_otp_verification_with_shared_link: E-mail-OTP-verificatie vereisen bij deellink sms_rate_limit_exceeded: SMS-snelheidslimiet overschreden From f8e9787675e3d99502dd8a28f6b1e413fa60507b Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 7 Oct 2025 08:59:01 +0300 Subject: [PATCH 09/20] fix edit email detailed --- app/views/submissions/_send_email.html.erb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/views/submissions/_send_email.html.erb b/app/views/submissions/_send_email.html.erb index f9251baf..eaf04b3a 100644 --- a/app/views/submissions/_send_email.html.erb +++ b/app/views/submissions/_send_email.html.erb @@ -1,5 +1,6 @@ <% submitter_preferences_index = template&.preferences&.dig('submitters').to_a.index_by { |e| e['uuid'] } %> <% template_submitters = local_assigns[:submitter]&.submission&.template_submitters || template.submitters %> +<% message_field_id = "message_field_#{SecureRandom.hex(3)}" %>
<% can_send_emails = Accounts.can_send_emails?(current_account) %>
@@ -11,7 +12,7 @@ <% if can_send_emails %> <%= render 'submissions/email_stats' %> <%= content_for(:edit_button) || capture do %> - +
<% config = AccountConfigs.find_or_initialize_for_key(current_account, AccountConfig::SUBMITTER_INVITATION_EMAIL_KEY) %> -
-
+
+ @@ -123,6 +130,7 @@ import Upload from './upload' import { IconRouteAltLeft, IconSortDescending2 } from '@tabler/icons-vue' import ConditionsModal from './conditions_modal' import ReplaceButton from './replace' +import GoogleDriveDocumentSettings from './google_drive_document_settings' import Field from './field' import FieldType from './field_type' @@ -133,6 +141,7 @@ export default { IconRouteAltLeft, ConditionsModal, ReplaceButton, + GoogleDriveDocumentSettings, IconSortDescending2 }, inject: ['t'], diff --git a/app/javascript/template_builder/upload.vue b/app/javascript/template_builder/upload.vue index bdb633ce..be801202 100644 --- a/app/javascript/template_builder/upload.vue +++ b/app/javascript/template_builder/upload.vue @@ -3,29 +3,155 @@ + +