<%= button_to settings_webhook_path(@webhook_url), class: 'btn btn-warning btn-sm', method: :delete, data: { turbo_confirm: t('are_you_sure_') } do %>
diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml
index c8868672..b9ae8ac5 100644
--- a/config/locales/i18n.yml
+++ b/config/locales/i18n.yml
@@ -623,6 +623,12 @@ en: &en
unable_to_resend_webhook_request: Unable to resend webhook request.
new_webhook: New Webhook
delete_webhook: Delete webhook
+ security: Security
+ webhook_security: Webhook Security
+ secret: Secret
+ hmac: HMAC
+ hmac_signing_secret: HMAC Signing Secret
+ hmac_signature_header_hint_html: 'Each request is signed with the %{header} header: <timestamp>.<sha256>.'
count_submissions_have_been_created: '%{count} submissions have been created.'
sms_length_cant_be_longer_than_120_bytes: SMS length can't be longer than 120 bytes
connected_successfully: Connected successfully.
@@ -653,7 +659,7 @@ en: &en
free: Free
unlimited_documents_storage: Unlimited documents storage
users_management: Users management
- ten_filed_types: 10 field types
+ ten_field_types: 10 field types
multiple_signers: Multiple signers
automatic_esignature: Automatic eSignature
ten_signature_request_emails_per_month: 10 signature request emails per month
@@ -796,7 +802,7 @@ en: &en
manage_plan: Manage plan
this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: This submission has multiple signers, which prevents the use of a sharing link as it's unclear which signer is responsible for specific fields. To resolve this, follow this guide to define the default signer details.
welcome_to_docuseal: Welcome to DocuSeal
- start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Start a quick tour to learn how to create and send your first document
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Start a quick tour to learn how to create and send your first document
start_tour: Start Tour
name_a_z: Name A-Z
recently_used: Recently used
@@ -1113,7 +1119,7 @@ es: &es
expirable_file_download_links: Enlaces de descarga de archivos con vencimiento
create_templates_with_private_access_by_default: Crear plantillas con acceso privado por defecto
party: Parte
- edit_order: Edita Pedido
+ edit_order: Editar orden
select: Seleccionar
sender_form_fields: Campos del formulario del remitente
pro: Pro
@@ -1134,8 +1140,8 @@ es: &es
when_checked_each_signer_must_verify_their_phone_with_a_one_time_code_before_accessing_the_document: Cuando está marcado, cada firmante debe verificar su teléfono con un código de un solo uso antes de acceder al documento.
resend_pending: Reenviar pendiente
ensure_unique_recipients: Asegurar destinatarios únicos
- require_phone_2fa_to_open: Requiere 2FA por teléfono para abrir
- the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: El remitente ha solicitado una autenticación de dos factores mediante una contraseña de un solo uso enviada a su número de teléfono %{phone}.
+ require_phone_2fa_to_open: Requerir 2FA por teléfono para abrir
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: El remitente ha solicitado una autenticación de dos factores mediante una contraseña de un solo uso enviada a tu número de teléfono %{phone}.
send_verification_code: Enviar código de verificación
code_has_been_resent: El código ha sido reenviado
invalid_code: Código inválido
@@ -1145,7 +1151,7 @@ es: &es
signed: Firmado
reply_to: Responder a
partially_completed: Parcialmente completado
- pending_by_me: Pendiente por mi
+ pending_by_me: Pendiente por mí
add: Agregar
adding: Agregando
owner: Propietario
@@ -1245,11 +1251,11 @@ es: &es
page: Página
decline: Rechazar
delegate: Delegar
- enter_the_email_address_of_the_person_you_want_to_delegate_to: Ingrese la dirección de correo electrónico de la persona a quien desea delegar
+ enter_the_email_address_of_the_person_you_want_to_delegate_to: Ingresa la dirección de correo electrónico de la persona a quien deseas delegar
declined: Rechazado
decline_reason: Motivo de rechazo
- provide_a_reason: Proporcione un motivo
- notify_the_sender_with_the_reason_you_declined: Notifique al remitente con el motivo por el que rechazó
+ provide_a_reason: Proporciona un motivo
+ notify_the_sender_with_the_reason_you_declined: Notifica al remitente por qué rechazaste
form_has_been_declined_on_html: 'El formulario ha sido rechazado el %{time}'
document_has_been_delegated_on_html: 'El documento ha sido delegado el %{time}'
name_declined_by_submitter: '"%{name}" rechazado por %{submitter}'
@@ -1472,7 +1478,7 @@ es: &es
need_help_ask_a_question_: '¿Necesitas ayuda? Haz una pregunta:'
exit: Salir
leave: Salir
- impersonated_as: Impersonado como
+ impersonated_as: Accediendo como
ask_ai: Preguntar a la IA
ai_assistant: Asistente IA
discord_community: Comunidad en Discord
@@ -1524,7 +1530,7 @@ es: &es
back_to_active: Volver a activo
submissions: Envíos
templates: Plantillas
- document_templates_html: Documentos Plantillas
+ document_templates_html: Plantillas de documento
archived: Archivado
search: Buscar
submissions_not_found: Envíos no encontrados
@@ -1607,7 +1613,7 @@ es: &es
upload_signature: Subir firma
integration: Integración
admin: Administrador
- tenant_admin: Tenant Administrador
+ tenant_admin: Tenant Admin
editor: Editor
viewer: Visor
member: Miembro
@@ -1666,7 +1672,7 @@ es: &es
document_template_has_been_moved: La plantilla de documento ha sido movida.
unable_to_move_template_into_folder: No se pudo mover la plantilla a la carpeta.
template_has_been_unarchived: La plantilla ha sido desarchivada.
- submission_has_been_unarchived: La presentación ha sido desarchivada.
+ submission_has_been_unarchived: El envío ha sido desarchivado.
unable_to_update_file: No se pudo subir el archivo.
user_has_been_invited: El usuario ha sido invitado.
unable_to_update_user: No se pudo actualizar el usuario.
@@ -1690,6 +1696,12 @@ es: &es
unable_to_resend_webhook_request: No se pudo reenviar la solicitud del webhook.
new_webhook: Nuevo Webhook
delete_webhook: Eliminar webhook
+ security: Seguridad
+ webhook_security: Seguridad del Webhook
+ secret: Secreto
+ hmac: HMAC
+ hmac_signing_secret: Secreto de firma HMAC
+ hmac_signature_header_hint_html: 'Cada solicitud se firma con el encabezado %{header}: <timestamp>.<sha256>.'
count_submissions_have_been_created: '%{count} envíos han sido creados.'
sms_length_cant_be_longer_than_120_bytes: La longitud del SMS no puede ser mayor a 120 bytes.
connected_successfully: Conectado con éxito.
@@ -1704,7 +1716,7 @@ es: &es
upload_file: Subir archivo
upgrade_your_plan_to_invite_more_users_contact_email: 'Actualiza tu plan para invitar a más usuarios (contacta a %{email}).'
contact_your_admin_email_to_invite_more_users: 'Contacta a tu administrador %{email} para invitar a más usuarios.'
- contact_your_administrator_to_add_new_users: Contacta a tu administrador para agregar un nuevo usuario.
+ contact_your_administrator_to_add_new_users: Contacta a tu administrador para agregar nuevos usuarios.
one_hour: 1 hora
two_hours: 2 horas
four_hours: 4 horas
@@ -1720,7 +1732,7 @@ es: &es
free: Gratis
unlimited_documents_storage: Almacenamiento ilimitado
users_management: Gestión de usuarios
- ten_filed_types: 10 tipos de campos
+ ten_field_types: 10 tipos de campos
multiple_signers: Múltiples firmantes
automatic_esignature: Firma electrónica automática
ten_signature_request_emails_per_month: 10 solicitudes de firma/mes
@@ -1757,7 +1769,7 @@ es: &es
via_phone: por Teléfono
detailed: Detallado
upload_list: Subir lista
- creating: Creando
+ creating: Crear
open_source_documents_software: software de documentos de código abierto
copy_link: Copiar enlace
opened: Abierto
@@ -1800,11 +1812,11 @@ es: &es
edit_recipient: Editar Destinatario
update_recipient: Actualizar Destinatario
use_international_format_1xxx_: 'Usa el formato internacional: +1xxx...'
- submitter_cannot_be_updated: El remitente no puede ser actualizado.
+ submitter_cannot_be_updated: No se puede editar el destinatario.
at_least_one_field_must_be_filled: Al menos un campo debe estar completo.
archived_users: Usuarios Archivados
- embedding_users: Usuarios Integrados
- view_embedding_users: Ver Usuarios Integrado
+ embedding_users: Usuarios integrados
+ view_embedding_users: Ver usuarios integrados
key: Clave
value: Valor
webhook_secret: Secreto del Webhook
@@ -1812,7 +1824,7 @@ es: &es
to: A
created_at: Creado el
apply: Aplicar
- applying: Aplicando
+ applying: Aplicar
today: Hoy
yesterday: Ayer
this_week: Esta Semana
@@ -1860,7 +1872,7 @@ es: &es
manage_plan: Gestionar plan
this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Este envío tiene múltiples firmantes, lo que impide el uso de un enlace para compartir, ya que no está claro qué firmante es responsable de los campos específicos. Para resolver esto, sigue esta guía para definir los detalles predeterminados del firmante.'
welcome_to_docuseal: Bienvenido a DocuSeal
- start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Inicia una guía rápida para aprender a crear y enviar tu primer documento.
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Inicia una guía rápida para aprender a crear y enviar tu primer documento.
start_tour: Iniciar guía
name_a_z: Nombre A-Z
recently_used: Usado recientemente
@@ -1886,7 +1898,7 @@ es: &es
three_months: 3 meses
eu_data_residency: Datos alojados UE
please_enter_your_email_address_associated_with_the_completed_submission: Por favor, introduce tu dirección de correo electrónico asociada con el envío completado.
- esignature_disclosure: Uso de firma electrónica
+ esignature_disclosure: Divulgación de eFirma
share_link: Enlace para compartir
enable_shared_link: Habilitar enlace compartido
share_link_is_currently_disabled: El enlace compartido está deshabilitado actualmente
@@ -1906,12 +1918,12 @@ es: &es
request_email_otp_verification_with_shared_link: Solicitar verificación OTP por correo electrónico con enlace compartido
sms_rate_limit_exceeded: Límite de SMS excedido
invalid_phone_number: Número de teléfono inválido
- please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Contacte al solicitante para especificar su número para la autenticación de dos factores.
- we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: Enviamos un código de verificación único a su correo electrónico. Ingréselo a continuación para continuar.
+ please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Contacta al solicitante para especificar tu número para la autenticación de dos factores.
+ we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: Enviamos un código de verificación único a tu correo electrónico. Ingrésalo a continuación para continuar.
re_send_code: Reenviar código
email_verification: Verificación por correo electrónico
- your_verification_code_to_access_the_name: 'Su código de verificación para acceder a "%{name}":'
- please_reply_to_this_email_if_you_didnt_request_this: Por favor, responda este correo si no solicitó esto.
+ your_verification_code_to_access_the_name: 'Tu código de verificación para acceder a "%{name}":'
+ please_reply_to_this_email_if_you_didnt_request_this: Si no solicitaste esto, responde a este correo.
advanced_settings: Configuración avanzada
text: Texto
code: Código
@@ -1930,7 +1942,7 @@ es: &es
wrong_password: Contraseña incorrecta.
current_password: Contraseña actual
dont_remember_your_current_password_click_here_to_reset_it_html: '¿No recuerdas tu contraseña actual? para restablecerla.'
- an_email_with_password_reset_instructions_has_been_sent: Se enviará un correo electrónico con las instrucciones para restablecer tu contraseña en unos minutos.
+ an_email_with_password_reset_instructions_has_been_sent: Se ha enviado un correo electrónico con las instrucciones para restablecer tu contraseña.
api_key_access_code: Código de acceso de la clave API
use_otp_code_to_access_the_api_key_html: Usa el código %{code} para acceder a la clave API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Responde a este correo si no reconoces esta solicitud.
@@ -1971,10 +1983,10 @@ es: &es
weekly: Semanal
monthly: Mensual
api: API
- embed: Integrar
+ embed: Embed
bulk: Masivo
invite: Invitación
- api_and_embed: API e Integrar
+ api_and_embed: API y Embed
period: Período
reports: Informes
completed_submissions: Envíos completados
@@ -1982,7 +1994,7 @@ es: &es
require_email_2fa_to_open: Requerir 2FA por correo electrónico para abrir
verification_required_refresh_the_page_and_pass_2fa: Verificación requerida, actualiza la página y completa la autenticación de dos factores.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: El remitente ha solicitado autenticación de dos factores mediante una contraseña de un solo uso enviada a tu correo electrónico %{email}.
- please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Por favor, contacta al remitente para especificar tu correo electrónico para la autenticación de dos factores.
+ please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Por favor, contacta al solicitante para especificar tu correo electrónico para la autenticación de dos factores.
rate_limit_exceeded: Límite de velocidad excedido
a_confirmation_email_has_been_sent_to_the_new_email_address: Se ha enviado un correo electrónico de confirmación a la nueva dirección de correo electrónico.
email_address_is_awaiting_confirmation_follow_the_link_in_the_email_to_confirm: "%{email} está pendiente de confirmación. Sigue el enlace en el correo para confirmarla."
@@ -2181,7 +2193,7 @@ it: &it
select: Seleziona
sender_form_fields: Campi del modulo del mittente
pro: Pro
- default_parties: Parti predefiniti
+ default_parties: Parti predefinite
authenticate_embedded_form_preview_with_token: "Autentica l'anteprima del modulo incorporato con il token"
require_all_recipients: Richiedi tutti i destinatari
stripe_integration: Integrazione Stripe
@@ -2190,14 +2202,14 @@ it: &it
private: Privato
_variables: Variabili
your_email_address_has_been_released_immediately_you_can_now_be_added_to_your_company_team_without_waiting_for_the_deletion_period_to_end: Il tuo indirizzo email è stato rilasciato immediatamente. Se stai per unirti a un team, ora puoi essere invitato nel team della tua azienda senza aspettare la fine del periodo di eliminazione.
- make_all_newly_created_templates_private_to_their_creator_and_admins_by_default: Rendere tutte le nuove template private per il creatore e gli amministratori per impostazione predefinita.
+ make_all_newly_created_templates_private_to_their_creator_and_admins_by_default: Rendere tutti i nuovi modelli privati per il creatore e gli amministratori per impostazione predefinita.
create_templates_with_admin_access_by_default: Crea modelli con accesso amministratore per impostazione predefinita
require_email_2fa: Richiedi 2FA email
when_checked_each_signer_must_verify_their_email_with_a_one_time_code_before_accessing_the_document: Quando selezionato, ogni firmatario deve verificare la propria email con un codice monouso prima di accedere al documento.
require_phone_2fa: Richiedi 2FA telefono
when_checked_each_signer_must_verify_their_phone_with_a_one_time_code_before_accessing_the_document: Quando selezionato, ogni firmatario deve verificare il proprio numero di telefono con un codice monouso prima di accedere al documento.
resend_pending: Reinvia in sospeso
- ensure_unique_recipients: Assicurarsi destinatari unici
+ ensure_unique_recipients: Garantire destinatari unici
require_phone_2fa_to_open: Richiedi l'autenticazione a due fattori tramite telefono per aprire
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: Il mittente ha richiesto un'autenticazione a due fattori tramite una password monouso inviata al tuo numero di telefono %{phone}.
send_verification_code: Invia codice di verifica
@@ -2205,7 +2217,7 @@ it: &it
invalid_code: Codice non valido
always_enforce_signing_order: Applicare sempre l'ordine di firma
bcc_recipients: Destinatari BCC
- edit_per_party: Modifica per partito
+ edit_per_party: Modifica per parte
signed: Firmato
reply_to: Rispondi a
partially_completed: Parzialmente completato
@@ -2277,13 +2289,13 @@ it: &it
Grazie,
{account.name}
- view: Vista
+ view: Vedi
email: Email
form_expired_at_html: 'Il modulo è scaduto il %{time}'
verification_code_code: 'Codice di verifica: %{code}'
digitally_signed_by: Firmato digitalmente da
role: Ruolo
- reason: Ragione
+ reason: Motivo
provide_your_email_to_start: Fornisci la tua email per iniziare
provide_your_email: Fornisci la tua email
provide_your_name_to_start: Fornisci il tuo nome per iniziare
@@ -2295,7 +2307,7 @@ it: &it
form_has_been_deleted_by_html: 'Il modulo è stato eliminato da %{name}.'
invited_by_html: 'Invitato da %{name}'
you_have_been_invited_to_submit_a_form: Sei stato invitato a inviare un modulo
- signed_on_time: 'Firmato alle %{time}'
+ signed_on_time: 'Firmato il %{time}'
completed_on_time: 'Completato il %{time}'
document_has_been_signed_already: 'Il documento è già stato firmato'
form_has_been_submitted_already: Il modulo è già stato inviato
@@ -2572,7 +2584,7 @@ it: &it
configure_smtp_settings_in_order_to_send_emails_: 'Configura le impostazioni SMTP per inviare email:'
go_to_smtp_settings: Vai alle impostazioni SMTP
save_as_default_template_message: Salva come messaggio modello predefinito
- re_send_sms: Reinvio SMS
+ re_send_sms: Reinvia SMS
send_sms: Invia SMS
preserve_order: Mantieni ordine
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: Quando selezionato, le notifiche saranno inviate alla seconda parte una volta che la parte precedente ha completato il modulo. Deseleziona questa opzione per inviare notifiche a tutte le parti simultaneamente.
@@ -2588,7 +2600,7 @@ it: &it
back_to_active: Torna attivo
submissions: Invii
templates: Modelli
- document_templates_html: Documenti Modelli
+ document_templates_html: Modelli di documento
archived: Archiviato
search: Cerca
submissions_not_found: Invii non trovati
@@ -2730,7 +2742,7 @@ it: &it
document_template_has_been_moved: Il modello di documento è stato spostato.
unable_to_move_template_into_folder: Impossibile spostare il modello nella cartella.
template_has_been_unarchived: Il modello è stato disarchiviato.
- submission_has_been_unarchived: La sottomissione è stata dearchiviata.
+ submission_has_been_unarchived: L'invio è stato disarchiviato.
unable_to_update_file: Impossibile caricare il file.
user_has_been_invited: "L'utente è stato invitato."
unable_to_update_user: Impossibile aggiornare l'utente.
@@ -2749,11 +2761,17 @@ it: &it
webhook_secret_has_been_saved: Il segreto del Webhook è stato salvato.
webhook_url_has_been_saved: "L'URL del Webhook è stato salvato."
webhook_request_has_been_sent: La richiesta del Webhook è stata inviata.
- webhook_url_has_been_updated: "L'URL del Webhook è stata aggiornata."
- webhook_url_has_been_deleted: "L'URL del Webhook è stata eliminata."
+ webhook_url_has_been_updated: "L'URL del Webhook è stato aggiornato."
+ webhook_url_has_been_deleted: "L'URL del Webhook è stato eliminato."
unable_to_resend_webhook_request: Impossibile reinviare la richiesta del webhook.
new_webhook: Nuovo Webhook
delete_webhook: Elimina webhook
+ security: Sicurezza
+ webhook_security: Sicurezza del Webhook
+ secret: Segreto
+ hmac: HMAC
+ hmac_signing_secret: Segreto di firma HMAC
+ hmac_signature_header_hint_html: 'Ogni richiesta viene firmata con l''intestazione %{header}: <timestamp>.<sha256>.'
count_submissions_have_been_created: '%{count} invii sono stati creati.'
sms_length_cant_be_longer_than_120_bytes: "La lunghezza dell'SMS non può superare i 120 byte."
connected_successfully: Collegamento avvenuto con successo.
@@ -2784,7 +2802,7 @@ it: &it
free: Gratuito
unlimited_documents_storage: Archiviazione illimitata di documenti
users_management: Gestione utenti
- ten_filed_types: 10 tipi di campi
+ ten_field_types: 10 tipi di campi
multiple_signers: Firmatari multipli
automatic_esignature: Firma elettronica automatica
ten_signature_request_emails_per_month: 10 email di richiesta di firma al mese
@@ -2797,7 +2815,7 @@ it: &it
personalize_email_content: "Personalizza il contenuto dell'email"
automated_reminders: Promemoria automatici
bulk_send_from_spreadsheet: Invio massivo da foglio di calcolo
- identify_verification_via_sms: "Verifica dell'identità tramite SMS"
+ identify_verification_via_sms: Verifica via SMS
start_with_pro: Inizia con Pro
user_month: utente / mese
developer_sandbox: Sandbox per sviluppatori
@@ -2821,7 +2839,7 @@ it: &it
via_phone: via telefono
detailed: Dettagliato
upload_list: Carica elenco
- creating: Creazione
+ creating: Crea
open_source_documents_software: software di documenti open source
copy_link: Copia link
opened: Aperto
@@ -2864,11 +2882,11 @@ it: &it
edit_recipient: Modifica Destinatario
update_recipient: Aggiorna Destinatario
use_international_format_1xxx_: 'Utilizza il formato internazionale: +1xxx...'
- submitter_cannot_be_updated: Il mittente non può essere aggiornato.
+ submitter_cannot_be_updated: Non è possibile modificare il destinatario.
at_least_one_field_must_be_filled: Almeno un campo deve essere compilato.
archived_users: Utenti Archiviati
- embedding_users: Utenti Incorporati
- view_embedding_users: Visualizza Utenti Incorporati
+ embedding_users: Utenti integrati
+ view_embedding_users: Vedi utenti integrati
key: Chiave
value: Valore
webhook_secret: Segreto del Webhook
@@ -2876,7 +2894,7 @@ it: &it
to: A
created_at: Creato il
apply: Applica
- applying: Applicazione
+ applying: Applica
today: Oggi
yesterday: Ieri
this_week: Questa Settimana
@@ -2889,7 +2907,7 @@ it: &it
privacy_policy: Politica sulla Privacy
the_code_has_been_sent_to_your_email: Il codice è stato inviato alla tua e-mail.
enter_the_verification_code_from_your_email: Inserisci il codice di verifica dalla tua e-mail.
- too_many_attempts: Troppe tentativi.
+ too_many_attempts: Troppi tentativi.
verification_code: Codice di Verifica
resend_code: Reinvia Codice
verify_new_sign_in: Verifica nuovo accesso
@@ -2906,7 +2924,7 @@ it: &it
find_suitable_zapier_templates_to_automate_your_workflow: Trova modelli Zapier adatti per automatizzare il tuo flusso di lavoro.
get_started: Inizia
click_here_to_learn_more_about_user_roles_and_permissions_html: 'Fai clic qui per saperne di più sui ruoli e le autorizzazioni degli utenti.'
- count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 e-mail di richiesta di firma inviati questo mese. Passa a Pro per inviare richieste di firma illimitate.'
+ count_10_signature_request_emails_sent_this_month_upgrade_to_pro_to_send_unlimited_signature_request_email: '%{count} / 10 e-mail di richiesta di firma inviate questo mese. Passa a Pro per inviare richieste di firma illimitate.'
test_mode_emails_limit_will_be_reset_within_24_hours: Il limite di e-mail in modalità di test verrà ripristinato entro 24 ore.
on_a_scale_of_1_to_10_how_satisfied_are_you_with_the_docuseal_product_: 'Su una scala da 1 a 10, quanto sei soddisfatto del prodotto DocuSeal?'
tell_us_more_about_your_experience: Raccontaci di più sulla tua esperienza
@@ -2924,7 +2942,7 @@ it: &it
manage_plan: Gestisci piano
this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: "Questa sottomissione ha più firmatari, il che impedisce l'uso di un link di condivisione poiché non è chiaro quale firmatario sia responsabile di specifici campi. Per risolvere questo problema, segui questa guida per definire i dettagli predefiniti del firmatario."
welcome_to_docuseal: Benvenuto in DocuSeal
- start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Inizia un tour rapido per imparare a creare e inviare il tuo primo documento.
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Inizia un tour rapido per imparare a creare e inviare il tuo primo documento.
start_tour: Inizia il tour
name_a_z: Nome A-Z
recently_used: Recentemente usato
@@ -2950,11 +2968,11 @@ it: &it
three_months: 3 mesi
eu_data_residency: "Dati nell'UE"
please_enter_your_email_address_associated_with_the_completed_submission: "Inserisci il tuo indirizzo email associato all'invio completato."
- esignature_disclosure: Uso della firma elettronica
+ esignature_disclosure: Divulgazione della eFirma
share_link: Link di condivisione
enable_shared_link: Abilita link condiviso
share_link_is_currently_disabled: Il link condiviso è attualmente disabilitato
- dynamic_template_with_variables_cannot_be_used_via_shared_link: Il template dinamico con variabili non può essere utilizzato tramite link condiviso
+ dynamic_template_with_variables_cannot_be_used_via_shared_link: Il modello dinamico con variabili non può essere utilizzato tramite link condiviso
select_data_residency: Seleziona la residenza dei dati
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} ti ha invitato a compilare e firmare documenti online con facilità utilizzando una soluzione di firma digitale sicura, veloce e facile da usare.'
review_or_download_completed_documents_fill_and_sign_documents_online_effortlessly_with_a_secure_fast_and_user_friendly_digital_document_signing_solution: Rivedi o scarica i documenti completati. Compila e firma documenti online facilmente con una soluzione di firma digitale sicura, veloce e facile da usare.
@@ -2967,7 +2985,6 @@ it: &it
there_are_no_events: Nessun evento
resend: Invia di nuovo
next_attempt_in_time_in_words: Prossimo tentativo tra %{time_in_words}
- this_template_has_multiple_parties_which_prevents_the_use_of_a_sharing_link: "Questo modello ha più parti, il che impedisce l'uso di un link di condivisione perché non è chiaro quale parte sia responsabile di campi specifici. Per risolvere, definisci i dettagli predefiniti della parte."
request_email_otp_verification_with_shared_link: "Richiedi la verifica OTP tramite email con link condiviso"
sms_rate_limit_exceeded: Limite SMS superato
invalid_phone_number: Numero di telefono non valido
@@ -2976,7 +2993,7 @@ it: &it
re_send_code: Invia di nuovo il codice
email_verification: Verifica email
your_verification_code_to_access_the_name: 'Il tuo codice per accedere a "%{name}":'
- please_reply_to_this_email_if_you_didnt_request_this: Rispondi a questa email se non hai richiesto questo.
+ please_reply_to_this_email_if_you_didnt_request_this: Se non hai richiesto questo, rispondi a questa email.
advanced_settings: Impostazioni avanzate
text: Testo
code: Codice
@@ -2995,7 +3012,7 @@ it: &it
wrong_password: Password errata.
current_password: Password attuale
dont_remember_your_current_password_click_here_to_reset_it_html: 'Non ricordi la tua password attuale? per reimpostarla.'
- an_email_with_password_reset_instructions_has_been_sent: Un'email con le istruzioni per reimpostare la password ti è stata inviata e arriverà entro pochi minuti.
+ an_email_with_password_reset_instructions_has_been_sent: Un'email con le istruzioni per reimpostare la password è stata inviata.
api_key_access_code: Codice di accesso della chiave API
use_otp_code_to_access_the_api_key_html: Usa il codice %{code} per accedere alla chiave API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Rispondi a questa email se non riconosci questa richiesta.
@@ -3016,7 +3033,7 @@ it: &it
require_authentication_with_user_login_or_api_key_to_access_the_document_download_links: "Richiedere l'autenticazione con login utente o chiave API per accedere ai link di download dei documenti."
combine_signed_documents_and_the_audit_log_into_a_single_pdf_file_for_easier_recordkeeping_and_compliance: Combinare documenti firmati e registro di audit in un unico file PDF per una gestione e conformità più semplici.
require_a_jwt_authorization_to_preview_embedded_forms_ensuring_only_authorized_users_can_view_them: "Richiedere un'autorizzazione JWT per visualizzare in anteprima i moduli incorporati, garantendo che solo gli utenti autorizzati possano vederli."
- make_all_newly_created_templates_private_to_their_creator_by_default: Rendere tutte le nuove template private per il creatore per impostazione predefinita.
+ make_all_newly_created_templates_private_to_their_creator_by_default: Rendere tutti i nuovi modelli privati per il creatore per impostazione predefinita.
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: "Rendere sempre obbligatorio l'ordine di firma dei destinatari, in modo che il secondo firmatario possa iniziare solo dopo che il primo ha completato la firma."
the_file_is_missing_make_sure_you_have_access_to_it_on_google_drive: Il file è mancante. Assicurati di avere accesso a esso su Google Drive.
connect_google_drive: Connetti Google Drive
@@ -3036,10 +3053,10 @@ it: &it
weekly: Settimanale
monthly: Mensile
api: API
- embed: Incorporare
+ embed: Embed
bulk: Massivo
invite: Invito
- api_and_embed: API e Incorporare
+ api_and_embed: API e Embed
period: Periodo
reports: Rapporti
completed_submissions: Invii completati
@@ -3106,7 +3123,7 @@ it: &it
send_email_to_html: 'Email inviata a %{submitter_name}'
bounce_email_html: 'Email respinta %{submitter_name}'
complaint_email_html: 'Segnalazione spam %{submitter_name}'
- send_reminder_email_to_html: 'E-mail di promemoria inviato a %{submitter_name}'
+ send_reminder_email_to_html: 'E-mail di promemoria inviata a %{submitter_name}'
send_sms_to_html: 'SMS inviato a %{submitter_name}'
send_2fa_sms_to_html: 'SMS di verifica inviato a %{submitter_name}'
send_2fa_email_to_html: 'Email di verifica inviata a %{submitter_name}'
@@ -3601,7 +3618,7 @@ fr: &fr
need_help_ask_a_question_: 'Besoin d’aide ? Posez une question :'
exit: Quitter
leave: Quitter
- impersonated_as: Usurpation en tant que
+ impersonated_as: Connecté en tant que
ask_ai: Demander à l’IA
ai_assistant: Assistant IA
discord_community: Communauté Discord
@@ -3752,7 +3769,7 @@ fr: &fr
team_accounts: Comptes d’équipe
tenant_account: Compte locataire
tenant_accounts: Comptes locataires
- impersonate: Usurper l’identité
+ impersonate: Accéder en tant que
loading: Chargement
documents: Documents
accounts: Comptes
@@ -3819,6 +3836,12 @@ fr: &fr
unable_to_resend_webhook_request: Impossible de renvoyer la requête webhook.
new_webhook: Nouveau webhook
delete_webhook: Supprimer le webhook
+ security: Sécurité
+ webhook_security: Sécurité du webhook
+ secret: Secret
+ hmac: HMAC
+ hmac_signing_secret: Secret de signature HMAC
+ hmac_signature_header_hint_html: 'Chaque requête est signée avec l''en-tête %{header} : <timestamp>.<sha256>.'
count_submissions_have_been_created: "%{count} soumissions ont été créées."
sms_length_cant_be_longer_than_120_bytes: La longueur du SMS ne peut pas dépasser 120 octets
connected_successfully: Connecté avec succès.
@@ -3849,7 +3872,7 @@ fr: &fr
free: Gratuit
unlimited_documents_storage: Stockage de documents illimité
users_management: Gestion des utilisateurs
- ten_filed_types: 10 types de champs
+ ten_field_types: 10 types de champs
multiple_signers: Plusieurs signataires
automatic_esignature: Signature électronique automatique
ten_signature_request_emails_per_month: 10 e‑mails de demande de signature/mois
@@ -3862,7 +3885,7 @@ fr: &fr
personalize_email_content: Personnaliser le contenu des e‑mails
automated_reminders: Rappels automatisés
bulk_send_from_spreadsheet: Envoi en masse depuis tableur
- identify_verification_via_sms: Vérification d’identité par SMS
+ identify_verification_via_sms: Vérification par SMS
start_with_pro: Commencer avec Pro
user_month: utilisateur / mois
developer_sandbox: Bac à sable développeur.
@@ -3886,7 +3909,7 @@ fr: &fr
via_phone: Par téléphone
detailed: Détaillé
upload_list: Téléverser une liste
- creating: Création en cours
+ creating: Créer
open_source_documents_software: logiciel de documents open source
copy_link: Copier le lien
opened: Ouvert
@@ -3929,11 +3952,11 @@ fr: &fr
edit_recipient: Modifier le destinataire
update_recipient: Mettre à jour le destinataire
use_international_format_1xxx_: 'Utilisez le format international : +1xxx...'
- submitter_cannot_be_updated: Le soumissionnaire ne peut pas être mis à jour.
+ submitter_cannot_be_updated: Impossible de modifier le destinataire.
at_least_one_field_must_be_filled: Au moins un champ doit être rempli.
archived_users: Utilisateurs archivés
- embedding_users: Utilisateurs d’embedding
- view_embedding_users: Voir les utilisateurs d’embedding
+ embedding_users: Utilisateurs intégrés
+ view_embedding_users: Voir les utilisateurs intégrés
key: Clé
value: Valeur
webhook_secret: Secret du webhook
@@ -3941,7 +3964,7 @@ fr: &fr
to: À
created_at: Créé le
apply: Appliquer
- applying: Application en cours
+ applying: Appliquer
today: Aujourd’hui
yesterday: Hier
this_week: Cette semaine
@@ -3989,7 +4012,7 @@ fr: &fr
manage_plan: Gérer la formule
this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: Cette soumission comporte plusieurs signataires, ce qui empêche l’utilisation d’un lien de partage car il n’est pas clair quel signataire est responsable de quels champs. Pour résoudre cela, suivez ce guide pour définir les détails du signataire par défaut.
welcome_to_docuseal: Bienvenue sur DocuSeal
- start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Lancez une visite rapide pour apprendre à créer et envoyer votre premier document
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Lancez une visite rapide pour apprendre à créer et envoyer votre premier document
start_tour: Démarrer la visite
name_a_z: Nom A‑Z
recently_used: Récemment utilisés
@@ -4012,7 +4035,7 @@ fr: &fr
three_months: 3 mois
eu_data_residency: Résidence des données UE
please_enter_your_email_address_associated_with_the_completed_submission: Veuillez saisir l’adresse e‑mail associée à la soumission complétée.
- esignature_disclosure: Divulgation de signature électronique
+ esignature_disclosure: Déclaration eSignature
share_link: Lien de partage
enable_shared_link: Activer le lien partagé
share_link_is_currently_disabled: Le lien de partage est actuellement désactivé
@@ -4036,7 +4059,7 @@ fr: &fr
we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: Nous avons envoyé un code de vérification à usage unique à votre adresse e‑mail. Veuillez saisir le code ci‑dessous pour continuer.
re_send_code: Renvoyer le code
your_verification_code_to_access_the_name: 'Votre code de vérification pour accéder à "%{name}" :'
- please_reply_to_this_email_if_you_didnt_request_this: Veuillez répondre à cet e‑mail si vous n’avez pas fait cette demande.
+ please_reply_to_this_email_if_you_didnt_request_this: Si vous n’avez pas demandé cela, répondez à cet e‑mail.
advanced_settings: Paramètres avancés
text: Texte
code: Code
@@ -4091,16 +4114,16 @@ fr: &fr
last_3_months: 3 derniers mois
last_6_months: 6 derniers mois
last_year: Année dernière
- all_time: Tout le temps
+ all_time: Depuis le début
everyone: Tout le monde
daily: Quotidien
weekly: Hebdomadaire
monthly: Mensuel
api: API
- embed: Intégrer
+ embed: Embed
bulk: En masse
invite: Invitation
- api_and_embed: API et Intégrer
+ api_and_embed: API et Embed
period: Période
reports: Rapports
completed_submissions: Soumissions terminées
@@ -4225,9 +4248,9 @@ fr: &fr
added_fields: Champs ajoutés
added_fields_description: Liste des champs ajoutés au document. Vous pouvez les réorganiser, les modifier ou les supprimer.
open_field_settings: Ouvrir les paramètres du champ
- open_field_settings_description: Un icône de paramètres à droite du nom du champ permet d’ouvrir ses paramètres.
+ open_field_settings_description: Une icône de paramètres à droite du nom du champ permet d’ouvrir ses paramètres.
field_settings: Paramètres du champ
- field_settings_description: Chaque champ peut être personnalisé (taille de police, caractère obligatoire, description, etc.).
+ field_settings_description: Chaque champ peut être personnalisé (taille de police, champ obligatoire, description, etc.).
send_document: Envoyer le document pour signature
send_document_description: Avant l’envoi, vous pouvez configurer les destinataires, saisir leurs e‑mails ou numéros de téléphone et personnaliser le contenu de l’e‑mail.
sign_yourself: Signer le document soi‑même
@@ -4292,7 +4315,7 @@ pt: &pt
passed: Aprovado
templates_that_require_email_or_phone_2fa_cannot_be_used_via_a_shared_link: Modelos que exigem 2FA por e-mail ou telefone não podem ser usados por meio de um link compartilhado.
make_owner: Tornar proprietário
- billing: Pagamentos
+ billing: Faturamento
add_from_google_drive: Adicionar do Google Drive
or_add_from: Ou adicionar de
upload_a_new_document: Enviar novo documento
@@ -4303,7 +4326,7 @@ pt: &pt
expirable_file_download_links: Links de download de arquivos com expiração
create_templates_with_private_access_by_default: Criar modelos com acesso privado por padrão
party: Parte
- edit_order: Edita Pedido
+ edit_order: Editar Ordem
select: Selecionar
sender_form_fields: Campos do formulário do remetente
pro: Pro
@@ -4322,7 +4345,7 @@ pt: &pt
when_checked_each_signer_must_verify_their_email_with_a_one_time_code_before_accessing_the_document: Quando marcado, cada signatário deve verificar seu email com um código de uso único antes de acessar o documento.
require_phone_2fa: Exigir 2FA por telefone
when_checked_each_signer_must_verify_their_phone_with_a_one_time_code_before_accessing_the_document: Quando marcado, cada signatário deve verificar seu telefone com um código de uso único antes de acessar o documento.
- resend_pending: Re-enviar pendente
+ resend_pending: Reenviar pendente
ensure_unique_recipients: Garantir destinatários únicos
require_phone_2fa_to_open: Necessário autenticação de dois fatores via telefone para abrir
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: O remetente solicitou uma autenticação de dois fatores via senha de uso único enviada para seu número %{phone}.
@@ -4331,7 +4354,7 @@ pt: &pt
invalid_code: Código inválido
always_enforce_signing_order: Sempre impor a ordem de assinatura
bcc_recipients: Destinatários BCC
- edit_per_party: Edita por festa
+ edit_per_party: Editar por parte
signed: Assinado
reply_to: Responder a
partially_completed: Parcialmente concluído
@@ -4348,7 +4371,7 @@ pt: &pt
remove_filter: Remover filtro
document_download_filename_format: Formato do nome do arquivo de download do documento
awaiting_completion_by_the_other_party: "Aguardando a conclusão pela outra parte"
- enforce_recipients_order: 'Forçar a ordem dos recipientes'
+ enforce_recipients_order: 'Forçar a ordem dos destinatários'
first_party: 'Primeira Parte'
docuseal_trusted_signature: Assinatura Confiável DocuSeal
hello_name: Olá %{name}
@@ -4662,7 +4685,7 @@ pt: &pt
need_help_ask_a_question_: 'Precisa de ajuda? Faça uma pergunta:'
exit: Sair
leave: Deixar
- impersonated_as: Impersonado como
+ impersonated_as: Acessando como
ask_ai: Perguntar para a IA
ai_assistant: Assistente de IA
discord_community: Comunidade Discord
@@ -4714,7 +4737,7 @@ pt: &pt
back_to_active: Voltar para ativo
submissions: Submissões
templates: Modelos
- document_templates_html: Documento Modelos
+ document_templates_html: Modelos de documento
archived: Arquivado
search: Buscar
submissions_not_found: Submissões não encontradas
@@ -4797,7 +4820,7 @@ pt: &pt
upload_signature: Enviar assinatura
integration: Integração
admin: Administrador
- tenant_admin: Tenant Administrador
+ tenant_admin: Tenant Admin
editor: Editor
viewer: Visualizador
member: Membro
@@ -4813,7 +4836,7 @@ pt: &pt
team_accounts: Contas de equipe
tenant_account: Conta de locatário
tenant_accounts: Contas de locatário
- impersonate: Usurpar
+ impersonate: Acessar como
loading: Carregando
documents: Documentos
accounts: Contas
@@ -4856,7 +4879,7 @@ pt: &pt
document_template_has_been_moved: O modelo de documento foi movido.
unable_to_move_template_into_folder: Não foi possível mover o modelo para a pasta.
template_has_been_unarchived: O modelo foi desarquivado.
- submission_has_been_unarchived: A submissao foi desarquivada.
+ submission_has_been_unarchived: A submissão foi desarquivada.
unable_to_update_file: Não foi possível atualizar o arquivo.
user_has_been_updated: O usuário foi atualizado.
unable_to_remove_user: Não foi possível remover o usuário.
@@ -4880,6 +4903,12 @@ pt: &pt
unable_to_resend_webhook_request: Não foi possível reenviar a solicitação do webhook.
new_webhook: Novo Webhook
delete_webhook: Excluir webhook
+ security: Segurança
+ webhook_security: Segurança do Webhook
+ secret: Segredo
+ hmac: HMAC
+ hmac_signing_secret: Segredo de assinatura HMAC
+ hmac_signature_header_hint_html: 'Cada requisição é assinada com o cabeçalho %{header}: <timestamp>.<sha256>.'
count_submissions_have_been_created: '%{count} submissões foram criadas.'
sms_length_cant_be_longer_than_120_bytes: O comprimento do SMS não pode ultrapassar 120 bytes
connected_successfully: Conectado com sucesso.
@@ -4910,7 +4939,7 @@ pt: &pt
free: Gratuito
unlimited_documents_storage: Armazenamento ilimitado
users_management: Gerenciamento de usuários
- ten_filed_types: 10 tipos de campo
+ ten_field_types: 10 tipos de campo
multiple_signers: Múltiplos signatários
automatic_esignature: Assinatura eletrônica automática
ten_signature_request_emails_per_month: 10 e-mails/mês
@@ -4923,7 +4952,7 @@ pt: &pt
personalize_email_content: Personalizar conteúdo do e-mail
automated_reminders: Lembretes automáticos
bulk_send_from_spreadsheet: Envio em massa de uma planilha
- identify_verification_via_sms: Verificação de identidade via SMS
+ identify_verification_via_sms: Verificação por SMS
start_with_pro: Começar com Pro
user_month: usuário / mês
developer_sandbox: Sandbox para desenvolvedores
@@ -4947,7 +4976,7 @@ pt: &pt
via_phone: via Telefone
detailed: Detalhado
upload_list: Carregar lista
- creating: Criando
+ creating: Criar
open_source_documents_software: software de documentos de código aberto
copy_link: Copiar link
opened: Aberto
@@ -4990,11 +5019,11 @@ pt: &pt
edit_recipient: Editar Destinatário
update_recipient: Atualizar Destinatário
use_international_format_1xxx_: 'Use o formato internacional: +1xxx...'
- submitter_cannot_be_updated: O remetente não pode ser atualizado.
+ submitter_cannot_be_updated: Não é possível editar o destinatário.
at_least_one_field_must_be_filled: Pelo menos um campo deve ser preenchido.
archived_users: Usuários Arquivados
- embedding_users: Usuários Incorporados
- view_embedding_users: Ver Usuários Incorporados
+ embedding_users: Usuários integrados
+ view_embedding_users: Ver usuários integrados
key: Chave
value: Valor
webhook_secret: Segredo do Webhook
@@ -5002,7 +5031,7 @@ pt: &pt
to: Para
created_at: Criado em
apply: Aplicar
- applying: Aplicando
+ applying: Aplicar
today: Hoje
yesterday: Ontem
this_week: Esta Semana
@@ -5050,7 +5079,7 @@ pt: &pt
manage_plan: Gerenciar plano
this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Este envio tem vários signatários, o que impede o uso de um link de compartilhamento, pois não está claro qual signatário é responsável por quais campos. Para resolver isso, siga este guia para definir os detalhes padrão do signatário.'
welcome_to_docuseal: Bem-vindo ao DocuSeal
- start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Comece um tour rápido para aprender a criar e enviar seu primeiro documento.
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Comece um tour rápido para aprender a criar e enviar seu primeiro documento.
start_tour: Iniciar tour
name_a_z: Nome A-Z
recently_used: Recentemente usado
@@ -5076,7 +5105,7 @@ pt: &pt
three_months: 3 meses
eu_data_residency: Dados na UE
please_enter_your_email_address_associated_with_the_completed_submission: Por favor, insira seu e-mail associado ao envio concluído.
- esignature_disclosure: Uso de assinatura eletrônica
+ esignature_disclosure: Informação sobre eAssinatura
share_link: Link de compartilhamento
enable_shared_link: Ativar link compartilhado
share_link_is_currently_disabled: O link compartilhado está desativado no momento
@@ -5101,7 +5130,7 @@ pt: &pt
re_send_code: Reenviar código
email_verification: Verificação de e-mail
your_verification_code_to_access_the_name: 'Seu código de verificação para acessar "%{name}":'
- please_reply_to_this_email_if_you_didnt_request_this: Responda a este e-mail se você não solicitou isso.
+ please_reply_to_this_email_if_you_didnt_request_this: Se você não solicitou isso, responda a este e-mail.
advanced_settings: Configurações avançadas
text: Texto
code: Código
@@ -5120,7 +5149,7 @@ pt: &pt
wrong_password: Senha incorreta.
current_password: Senha atual
dont_remember_your_current_password_click_here_to_reset_it_html: 'Não se lembra da sua senha atual? para redefini-la.'
- an_email_with_password_reset_instructions_has_been_sent: Um e-mail com instruções para redefinir sua senha será enviado em alguns minutos.
+ an_email_with_password_reset_instructions_has_been_sent: Um e-mail com instruções para redefinir sua senha foi enviado.
api_key_access_code: Código de acesso da chave API
use_otp_code_to_access_the_api_key_html: Use o código %{code} para acessar a chave API.
please_reply_to_this_email_if_you_dont_recognize_this_request: Responda a este e-mail se você não reconhecer esta solicitação.
@@ -5378,7 +5407,7 @@ de: &de
party: Partei
use_direct_file_attachment_links_in_the_documents: Direkte Dateianhang-Links in den Dokumenten verwenden
click_here_to_send_a_reset_password_email_html: ', um eine E-Mail zum Zurücksetzen des Passworts zu senden.'
- edit_order: Bestellung bearbeiten
+ edit_order: Reihenfolge bearbeiten
expirable_file_download_links: Ablaufbare Datei-Download-Links
sender_form_fields: Absenderformular-Felder
default_parties: Standardparteien
@@ -5726,7 +5755,7 @@ de: &de
need_help_ask_a_question_: 'Brauchen Sie Hilfe? Stellen Sie eine Frage:'
exit: Beenden
leave: Verlassen
- impersonated_as: Angemeldet als
+ impersonated_as: Eingeloggt als
ask_ai: KI fragen
ai_assistant: KI-Assistent
discord_community: Discord-Community
@@ -5778,7 +5807,7 @@ de: &de
back_to_active: Zurück zu Aktiv
submissions: Einreichungen
templates: Vorlagen
- document_templates_html: Dokument-Vorlagen
+ document_templates_html: VorlagenDokumentvorlagen
archived: Archiviert
search: Suchen
submissions_not_found: Einreichungen nicht gefunden
@@ -5877,7 +5906,7 @@ de: &de
team_accounts: Teamkonten
tenant_account: Mandantenkonto
tenant_accounts: Mandantenkonten
- impersonate: Als Benutzer auftreten
+ impersonate: Einloggen als
loading: Wird geladen
documents: Dokumente
accounts: Konten
@@ -5944,6 +5973,12 @@ de: &de
unable_to_resend_webhook_request: Webhook-Anfrage konnte nicht erneut gesendet werden.
new_webhook: Neuer Webhook
delete_webhook: Webhook löschen
+ security: Sicherheit
+ webhook_security: Webhook-Sicherheit
+ secret: Geheimnis
+ hmac: HMAC
+ hmac_signing_secret: HMAC-Signaturgeheimnis
+ hmac_signature_header_hint_html: 'Jede Anfrage wird mit dem %{header}-Header signiert: <timestamp>.<sha256>.'
count_submissions_have_been_created: '%{count} Einreichungen wurden erstellt.'
sms_length_cant_be_longer_than_120_bytes: Die SMS-Länge darf 120 Bytes nicht überschreiten.
connected_successfully: Erfolgreich verbunden.
@@ -5974,7 +6009,7 @@ de: &de
free: Kostenlos
unlimited_documents_storage: Unbegrenzter Dokumentenspeicher
users_management: Benutzerverwaltung
- ten_filed_types: 10 Feldtypen
+ ten_field_types: 10 Feldtypen
multiple_signers: Mehrere Unterzeichner
automatic_esignature: Automatische E‑Signatur
ten_signature_request_emails_per_month: 10 E-Mails für Signaturanfragen pro Monat
@@ -6037,9 +6072,9 @@ de: &de
image_field: Bildfeld
file_field: Dateifeld
select_field: Auswahlfeld
- checkbox_field: Checkboxveld
- multiple_field: Meerkeuzeveld
- radio_field: Radiogroepveld
+ checkbox_field: Kontrollkästchen
+ multiple_field: Mehrfachauswahl
+ radio_field: Radiogruppe
cells_field: Zellenfeld
stamp_field: Stempelfeld
payment_field: Zahlungsfeld
@@ -6054,11 +6089,11 @@ de: &de
edit_recipient: Empfänger bearbeiten
update_recipient: Empfänger aktualisieren
use_international_format_1xxx_: 'Verwenden Sie das internationale Format: +1xxx...'
- submitter_cannot_be_updated: Der Einreicher kann nicht aktualisiert werden.
+ submitter_cannot_be_updated: Der Empfänger kann nicht bearbeitet werden.
at_least_one_field_must_be_filled: Mindestens ein Feld muss ausgefüllt werden.
archived_users: Archivierte Benutzer
- embedding_users: Einbettende Benutzer
- view_embedding_users: Einbettende Benutzer anzeigen
+ embedding_users: Integrationsbenutzer
+ view_embedding_users: Integrationsbenutzer anzeigen
key: Schlüssel
value: Wert
webhook_secret: Webhook-Geheimnis
@@ -6114,7 +6149,7 @@ de: &de
manage_plan: Plan verwalten
this_submission_has_multiple_signers_which_prevents_the_use_of_a_sharing_link_html: 'Diese Einreichung hat mehrere Unterzeichner, was die Nutzung eines Freigabelinks verhindert, da unklar ist, welcher Unterzeichner für welche Felder verantwortlich ist. Um dies zu lösen, folgen Sie dieser Anleitung, um die Standarddetails des Unterzeichners festzulegen.'
welcome_to_docuseal: Willkommen bei DocuSeal
- start_a_quick_tour_to_learn_how_to_create_an_send_your_first_document: Starten Sie eine kurze Tour, um zu lernen, wie Sie Ihr erstes Dokument erstellen und versenden.
+ start_a_quick_tour_to_learn_how_to_create_and_send_your_first_document: Starten Sie eine kurze Tour, um zu lernen, wie Sie Ihr erstes Dokument erstellen und versenden.
start_tour: Starten
name_a_z: Name A-Z
recently_used: Kürzlich verwendet
@@ -6140,7 +6175,7 @@ de: &de
three_months: 3 Monate
eu_data_residency: EU-Datenresidenz
please_enter_your_email_address_associated_with_the_completed_submission: Bitte geben Sie Ihre E-Mail-Adresse ein, die mit der abgeschlossenen Einreichung verknüpft ist.
- esignature_disclosure: Hinweis zur E‑Signatur
+ esignature_disclosure: Hinweis zur eSignatur
share_link: Freigabelink
enable_shared_link: Freigabelink aktivieren
share_link_is_currently_disabled: Freigabelink ist derzeit deaktiviert
@@ -6165,7 +6200,7 @@ de: &de
re_send_code: Code erneut senden
email_verification: E-Mail-Verifizierung
your_verification_code_to_access_the_name: 'Ihr Verifizierungscode für den Zugriff auf "%{name}":'
- please_reply_to_this_email_if_you_didnt_request_this: Bitte antworten Sie auf diese E-Mail, wenn Sie dies nicht angefordert haben.
+ please_reply_to_this_email_if_you_didnt_request_this: Wenn Sie dies nicht angefordert haben, antworten Sie bitte auf diese E-Mail.
advanced_settings: Erweiterte Einstellungen
text: Text
code: Code
@@ -6231,7 +6266,7 @@ de: &de
api_and_embed: API und Einbetten
period: Zeitraum
reports: Berichte
- completed_submissions: Abgeschlossene Übermittlungen
+ completed_submissions: Abgeschlossene Einreichungen
sms: SMS
require_email_2fa_to_open: E-Mail-2FA erforderlich, um zu öffnen
verification_required_refresh_the_page_and_pass_2fa: Verifikation erforderlich. Aktualisieren Sie die Seite und führen Sie die Zwei-Faktor-Authentifizierung durch.
@@ -6416,7 +6451,7 @@ de: &de
pl:
require_phone_2fa_to_open: Wymagaj uwierzytelniania telefonicznego 2FA do otwarcia
- the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: Nadawca zażądał uwierzytelnienia dwuetapowego poprzez jednorazowe hasło wysłane na Twój %{phone} numer telefonu.
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: Nadawca zażądał uwierzytelnienia dwuskładnikowego poprzez jednorazowe hasło wysłane na Twój numer telefonu %{phone}.
send_verification_code: Wyślij kod weryfikacyjny
code_has_been_resent: Kod został wysłany ponownie
invalid_code: Niepoprawny kod
@@ -6488,13 +6523,13 @@ pl:
too_many_attempts: Zbyt wiele prób.
verification_code: Kod Weryfikacyjny
resend_code: Wyślij Kod Ponownie
- powered_by: 'Napędzany prze'
+ powered_by: 'Napędzany przez'
count_documents_signed_with_html: '%{count} dokumentów podpisanych za pomocą'
open_source_documents_software: 'oprogramowanie do dokumentów open source'
eu_data_residency: Dane w UE
please_enter_your_email_address_associated_with_the_completed_submission: Wprowadź adres e-mail powiązany z ukończonym zgłoszeniem.
privacy_policy: Polityka Prywatności
- esignature_disclosure: Użycie e-podpisu
+ esignature_disclosure: Informacja o e-podpisie
select_data_residency: Wybierz lokalizację danych
company_name: Nazwa firmy
optional: opcjonalne
@@ -6517,8 +6552,8 @@ pl:
uk:
require_phone_2fa_to_open: Вимагати двофакторну автентифікацію через телефон для відкриття
- the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: Відправник запросив двофакторну автентифікацію за допомогою одноразового пароля, відправленого на ваш номер телефону %{phone}.
- send_verification_code: Надіслати код підтвердження
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: Відправник запитав двофакторну автентифікацію за допомогою одноразового пароля, надісланого на ваш номер телефону %{phone}.
+ send_verification_code: Надіслати код перевірки
code_has_been_resent: Код повторно надіслано
invalid_code: Невірний код
awaiting_completion_by_the_other_party: "Очікує завершення з боку іншої сторони"
@@ -6532,14 +6567,14 @@ uk:
declined: Відхилено
decline_reason: Причина відхилення
provide_a_reason: Надайте причину
- notify_the_sender_with_the_reason_you_declined: Повідомте відправника про причину, з якої ви відхилили
+ notify_the_sender_with_the_reason_you_declined: Повідомте відправника про причину свого відхилення
form_has_been_declined_on_html: 'Форму було відхилено о %{time}'
document_has_been_delegated_on_html: 'Документ було делеговано о %{time}'
name_declined_by_submitter: '"%{name}" відхилено %{submitter}'
name_declined_by_submitter_with_the_following_reason: '"%{name}" було відхилено %{submitter} з такою причиною:'
email: E-mail
digitally_signed_by: Цифровий підпис від
- verification_code_code: 'Код підтвердження: %{code}'
+ verification_code_code: 'Код перевірки: %{code}'
role: Роль
provide_your_email_to_start: Введіть свій емейл, щоб почати
provide_your_email: Введіть свій емейл
@@ -6548,14 +6583,14 @@ uk:
provide_your_phone_in_international_format_to_start: Введіть номер телефону у міжнародному форматі, щоб почати
provide_your_phone_in_international_format: Введіть номер телефону у міжнародному форматі
use_international_format_1xxx_: 'Використовуйте міжнародний формат: +1xxx...'
- form_expired_at_html: 'Строк подачі завершився о %{time}'
+ form_expired_at_html: 'Термін дії форми завершився %{time}'
start: Почати
reason: Причина
starting: Початок
form_has_been_deleted_by_html: 'Форму було видалено користувачем %{name}.'
- invited_by_html: 'Запрошений користувачем %{name}'
+ invited_by_html: 'Запрошено користувачем %{name}'
you_have_been_invited_to_submit_a_form: Вас запросили подати форму
- signed_on_time: 'Підписаний %{time}'
+ signed_on_time: 'Підписано %{time}'
completed_on_time: 'Завершено %{time}'
document_has_been_signed_already: 'Документ уже був підписаний'
form_has_been_submitted_already: Форма вже була подана
@@ -6588,20 +6623,20 @@ uk:
enter_the_verification_code_from_your_email: Введіть код перевірки з вашої електронної пошти.
too_many_attempts: Забагато спроб.
verification_code: Код перевірки
- resend_code: Відправити код знову
+ resend_code: Надіслати код знову
powered_by: 'Працює на базі'
count_documents_signed_with_html: '%{count} документів підписано за допомогою'
open_source_documents_software: 'відкрите програмне забезпечення для документів'
eu_data_residency: 'Зберігання даних в ЄС'
please_enter_your_email_address_associated_with_the_completed_submission: "Введіть адресу електронної пошти, пов'язану із завершеним поданням."
privacy_policy: Політика конфіденційності
- esignature_disclosure: Використання e-підпису
+ esignature_disclosure: Інформація про е-підпис
select_data_residency: Виберіть місце зберігання даних
company_name: Назва компанії
optional: необов’язково
submit: Надіслати
sms_rate_limit_exceeded: Перевищено ліміт SMS
- invalid_phone_number: Невірний номер телефону
+ invalid_phone_number: Недійсний номер телефону
please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Зв’яжіться з відправником, щоб вказати номер телефону для двофакторної автентифікації.
we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: Ми надіслали одноразовий код підтвердження на вашу електронну пошту. Введіть його нижче, щоб продовжити.
re_send_code: Надіслати код повторно
@@ -6611,7 +6646,7 @@ uk:
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, щоб увійти.
verification_required_refresh_the_page_and_pass_2fa: Необхідна верифікація, оновіть сторінку та пройдіть двофакторну автентифікацію.
- the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: Відправник запросив двофакторну автентифікацію за допомогою одноразового пароля, відправленого на вашу електронну пошту %{email}.
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: Відправник запитав двофакторну автентифікацію за допомогою одноразового пароля, надісланого на вашу електронну пошту %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Будь ласка, зв'яжіться з відправником, щоб вказати вашу електронну пошту для двофакторної автентифікації.
rate_limit_exceeded: Перевищено ліміт
too_many_requests_try_again_later: Забагато запитів. Спробуйте пізніше.
@@ -6688,33 +6723,33 @@ cs:
the_code_has_been_sent_to_your_email: Kód byl odeslán na váš e-mail.
enter_the_verification_code_from_your_email: Zadejte ověřovací kód z vašeho e-mailu.
too_many_attempts: Příliš mnoho pokusů.
- verification_code: Ověřovací Kód
- resend_code: Znovu Odeslat Kód
+ verification_code: Ověřovací kód
+ resend_code: Znovu odeslat kód
powered_by: 'Poháněno'
count_documents_signed_with_html: '%{count} dokumentů podepsáno pomocí'
open_source_documents_software: 'open source software pro dokumenty'
eu_data_residency: 'Uložení dat v EU'
please_enter_your_email_address_associated_with_the_completed_submission: Zadejte e-mailovou adresu spojenou s dokončeným odesláním.
- privacy_policy: Zásady Ochrany Osobních Údajů
- esignature_disclosure: Použití e-podpisu
+ privacy_policy: Zásady ochrany osobních údajů
+ esignature_disclosure: Informace o e-podpisu
select_data_residency: Vyberte umístění dat
company_name: Název společnosti
optional: volitelné
submit: Odeslat
- sms_rate_limit_exceeded: Překročena hranice SMS
+ sms_rate_limit_exceeded: Překročen limit SMS
invalid_phone_number: Neplatné telefonní číslo
- please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Kontaktujte odesílatele kvůli zadání vašeho čísla pro dvoufázové ověření.
+ please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: Kontaktujte odesílatele kvůli zadání vašeho čísla pro dvoufaktorové ověření.
we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: Poslali jsme jednorázový ověřovací kód na váš e-mail. Zadejte ho níže pro pokračování.
re_send_code: Znovu odeslat kód
email_verification: Ověření e-mailu
your_verification_code_to_access_the_name: 'Váš ověřovací kód pro přístup k "%{name}":'
please_reply_to_this_email_if_you_didnt_request_this: Odpovězte na tento e-mail, pokud jste o to nežádali.
your_user_account_has_been_archived_contact_your_administrator_to_restore_access_to_your_account: Váš uživatelský účet byl archivován. Kontaktujte svého administrátora pro obnovení přístupu.
- 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: Nepodařilo se dosáhnout na váš e-mail. To se může stát, pokud je v adrese překlep nebo vaše schránka není dostupná. Kontaktujte support@docuseal.com pro přihlášení.
+ 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: Na váš e-mail se nepodařilo doručit zprávu. To se může stát, pokud je v adrese překlep nebo vaše schránka není dostupná. Pro přihlášení kontaktujte support@docuseal.com.
verification_required_refresh_the_page_and_pass_2fa: Ověření vyžadováno. Aktualizujte stránku a dokončete dvoufaktorové ověření.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: Odesílatel požádal o dvoufaktorové ověření pomocí jednorázového hesla odeslaného na vaši e-mailovou adresu %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: Prosím kontaktujte odesílatele a uveďte svůj e-mail pro dvoufaktorové ověření.
- rate_limit_exceeded: Překročena hranice
+ rate_limit_exceeded: Překročen limit
too_many_requests_try_again_later: Příliš mnoho požadavků. Zkuste to později.
he:
@@ -6725,18 +6760,18 @@ he:
invalid_code: קוד שגוי
awaiting_completion_by_the_other_party: "המתנה להשלמה מצד הצד השני"
view: תצוגה
- hi_there: שלום,
+ hi_there: שלום
download: הורד
page: עמוד
decline: דחייה
- delegate: הואלה
+ delegate: האצלה
enter_the_email_address_of_the_person_you_want_to_delegate_to: הזן את כתובת הדוא"ל של האדם שברצונך להאציל אליו
declined: דחוי
decline_reason: סיבת דחייה
provide_a_reason: אנא ספק סיבה
notify_the_sender_with_the_reason_you_declined: הודע לשולח על הסיבה לדחייה
form_has_been_declined_on_html: 'הטופס נדחה בתאריך %{time}'
- document_has_been_delegated_on_html: 'המסמך הועבר בתאריך %{time}'
+ document_has_been_delegated_on_html: 'המסמך הואצל בתאריך %{time}'
name_declined_by_submitter: '"%{name}" נדחה על ידי %{submitter}'
name_declined_by_submitter_with_the_following_reason: '"%{name}" נדחה על ידי %{submitter} עם הסיבה הבאה:'
email: דוא"ל
@@ -6794,10 +6829,10 @@ he:
powered_by: 'מופעל על ידי'
count_documents_signed_with_html: '%{count} מסמכים נחתמו באמצעות'
open_source_documents_software: 'תוכנה בקוד פתוח למסמכים'
- eu_data_residency: 'נתונים באיחוד האירופי '
- please_enter_your_email_address_associated_with_the_completed_submission: 'אנא הזן את כתובת הדוא"ל המשויכת למשלוח שהושלם.'
+ eu_data_residency: 'נתונים באיחוד האירופי'
+ please_enter_your_email_address_associated_with_the_completed_submission: 'אנא הזן את כתובת הדוא"ל המשויכת להגשה שהושלמה.'
privacy_policy: 'מדיניות פרטיות'
- esignature_disclosure: 'גילוי חתימה אלקטרונית'
+ esignature_disclosure: 'חשיפת חתימה אלקטרונית'
select_data_residency: בחר מיקום נתונים
company_name: שם החברה
optional: אופציונלי
@@ -6812,10 +6847,10 @@ he:
please_reply_to_this_email_if_you_didnt_request_this: 'השב למייל זה אם לא ביקשת זאת.'
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 כדי להתחבר.
- verification_required_refresh_the_page_and_pass_2fa: נדרשת אימות. רענן את הדף והשלם אימות דו-שלבי.
+ verification_required_refresh_the_page_and_pass_2fa: נדרש אימות. רענן את הדף והשלם אימות דו-שלבי.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: השולח ביקש אימות דו-שלבי באמצעות סיסמה חד-פעמית שנשלחה לכתובת הדוא"ל שלך %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: אנא פנה לשולח וציין את כתובת הדוא"ל שלך לאימות דו-שלבי.
- rate_limit_exceeded: חריגה ממגבלת
+ rate_limit_exceeded: חריגה מהמגבלה
too_many_requests_try_again_later: יותר מדי בקשות. נסה שוב מאוחר יותר.
nl: &nl
@@ -7018,12 +7053,12 @@ nl: &nl
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
+ danger_zone: Gevarenzone
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_will_be_permanently_deleted_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.
+ your_account_will_be_permanently_deleted_within_2_months_please_contact_us_if_you_want_to_keep_your_account: Uw account wordt binnen 2 maanden permanent verwijderd. Neem contact met ons op als u uw account wilt behouden.
test_mode: Testmodus
copy: Kopiëren
copied: Gekopieerd
@@ -7195,7 +7230,7 @@ nl: &nl
need_help_ask_a_question_: 'Hulp nodig? Stel een vraag:'
exit: Afsluiten
leave: Verlaten
- impersonated_as: Geïmpersonificeerd als
+ impersonated_as: Ingelogd als
ask_ai: AI vragen
ai_assistant: AI-assistent
discord_community: Discord-community
@@ -7247,7 +7282,7 @@ nl: &nl
back_to_active: Terug naar Actief
submissions: Inzendingen
templates: Sjablonen
- document_templates_html: Documentsjablonen
+ document_templates_html: SjablonenDocumentsjablonen
archived: Gearchiveerd
search: Zoeken
submissions_not_found: Geen inzendingen gevonden
@@ -7346,7 +7381,7 @@ nl: &nl
team_accounts: Teamaccounts
tenant_account: Tenantaccount
tenant_accounts: Tenantaccounts
- impersonate: Impersoneren
+ impersonate: Inloggen als
loading: Laden
documents: Documenten
accounts: Accounts
@@ -7413,6 +7448,12 @@ nl: &nl
unable_to_resend_webhook_request: Kan webhook-verzoek niet opnieuw verzenden.
new_webhook: Nieuwe webhook
delete_webhook: Webhook verwijderen
+ security: Beveiliging
+ webhook_security: Webhook-beveiliging
+ secret: Geheim
+ hmac: HMAC
+ hmac_signing_secret: HMAC-ondertekeningsgeheim
+ hmac_signature_header_hint_html: 'Elk verzoek wordt ondertekend met de %{header}-header: <timestamp>.<sha256>.'
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.
@@ -7443,7 +7484,7 @@ nl: &nl
free: Gratis
unlimited_documents_storage: Onbeperkte documentopslag
users_management: Gebruikersbeheer
- ten_filed_types: 10 veldtypen
+ ten_field_types: 10 veldtypen
multiple_signers: Meerdere ondertekenaars
automatic_esignature: Automatische e-handtekening
ten_signature_request_emails_per_month: 10 e-mails met verzoeken/maand
@@ -7523,11 +7564,11 @@ nl: &nl
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.
+ submitter_cannot_be_updated: Ontvanger kan niet worden bewerkt.
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
+ embedding_users: Integratiegebruikers
+ view_embedding_users: Integratiegebruikers bekijken
key: Sleutel
value: Waarde
webhook_secret: Webhook-geheim
@@ -7583,7 +7624,7 @@ nl: &nl
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_a_quick_tour_to_learn_how_to_create_and_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
@@ -7606,7 +7647,7 @@ nl: &nl
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
+ esignature_disclosure: Openbaarmaking van eHandtekening
share_link: Deellink
enable_shared_link: Deellink inschakelen
share_link_is_currently_disabled: Deellink is momenteel uitgeschakeld
@@ -7615,7 +7656,7 @@ nl: &nl
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
+ 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
@@ -7672,10 +7713,10 @@ nl: &nl
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.
- the_file_is_missing_make_sure_you_have_access_to_it_on_google_drive: Het bestand ontbreekt. Zorg ervoor dat je er toegang toe hebt op Google Drive.
+ the_file_is_missing_make_sure_you_have_access_to_it_on_google_drive: Het bestand ontbreekt. Zorg ervoor dat u er toegang toe hebt op Google Drive.
connect_google_drive: Verbind Google Drive
google_drive_has_been_connected: Google Drive is verbonden
- unable_to_identify_reset_your_password_to_sign_in: Kan niet worden geïdentificeerd. Stel je wachtwoord opnieuw in om in te loggen.
+ unable_to_identify_reset_your_password_to_sign_in: Kan niet worden geïdentificeerd. Stel uw wachtwoord opnieuw in om in te loggen.
desktop: Desktop
mobile: Mobiel
tablet: Tablet
@@ -7705,19 +7746,19 @@ nl: &nl
rate_limit_exceeded: Snelheidslimiet overschreden
a_confirmation_email_has_been_sent_to_the_new_email_address: Er is een bevestigingsmail verzonden naar het nieuwe e-mailadres.
email_address_is_awaiting_confirmation_follow_the_link_in_the_email_to_confirm: "%{email} wacht op bevestiging. Volg de link in de e-mail om te bevestigen."
- please_confirm_your_email_address_using_the_link_below_: 'Bevestig je e-mailadres via de onderstaande link:'
+ please_confirm_your_email_address_using_the_link_below_: 'Bevestig uw e-mailadres via de onderstaande link:'
confirm_email: E-mailadres bevestigen
- please_verify_your_email_address_to_continue: Bevestig je e-mailadres om door te gaan.
- verification_code_sent_click_link_or_enter_code: Er is een verificatiecode naar je e-mail gestuurd. Je kunt op de link in de e-mail klikken of de code hieronder invoeren.
- use_otp_code_to_verify_email_or_click_link_below_html: 'Gebruik code %{code} om je e-mail te verifiëren of klik op de link hieronder:'
- verify_your_email: Je e-mail verifiëren
- your_email_has_been_confirmed: Je e-mailadres is bevestigd.
+ please_verify_your_email_address_to_continue: Bevestig uw e-mailadres om door te gaan.
+ verification_code_sent_click_link_or_enter_code: Er is een verificatiecode naar uw e-mail gestuurd. U kunt op de link in de e-mail klikken of de code hieronder invoeren.
+ use_otp_code_to_verify_email_or_click_link_below_html: 'Gebruik code %{code} om uw e-mail te verifiëren of klik op de link hieronder:'
+ verify_your_email: Uw e-mail verifiëren
+ your_email_has_been_confirmed: Uw e-mailadres is bevestigd.
invalid_or_expired_verification_code: Ongeldige of verlopen verificatiecode.
didnt_receive_an_email: Geen e-mail ontvangen?
unconfirmed: Onbevestigd
- you_requested_to_reset_your_password_use_the_link_below_to_continue: Je hebt gevraagd je wachtwoord te resetten. Gebruik de onderstaande link om verder te gaan.
- if_you_didnt_request_this_you_can_ignore_this_email: "Als je dit niet hebt aangevraagd, kun je deze e-mail negeren."
- your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Je wachtwoord wordt niet gewijzigd totdat je de bovenstaande link opent en een nieuw wachtwoord instelt."
+ you_requested_to_reset_your_password_use_the_link_below_to_continue: U hebt gevraagd uw wachtwoord te resetten. Gebruik de onderstaande link om verder te gaan.
+ if_you_didnt_request_this_you_can_ignore_this_email: "Als u dit niet hebt aangevraagd, kunt u deze e-mail negeren."
+ your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Uw wachtwoord wordt niet gewijzigd totdat u de bovenstaande link opent en een nieuw wachtwoord instelt."
too_many_requests_try_again_later: Te veel verzoeken. Probeer het later opnieuw.
bold: Vet
italic: Cursief
@@ -7738,17 +7779,17 @@ nl: &nl
connect_to_docuseal_mcp: Verbinden met DocuSeal MCP
add_the_following_to_your_mcp_client_configuration: Voeg het volgende toe aan uw MCP-clientconfiguratie
works_with_claude_desktop_cursor_windsurf_vs_code_and_any_mcp_compatible_client: Werkt met Claude Desktop, Cursor, Windsurf, VS Code en elke MCP-compatibele client.
- your_email_address_has_been_changed: Je e-mailadres is gewijzigd
- the_email_address_for_your_account_has_been_changed_to_new_email: Het e-mailadres van je account is gewijzigd naar %{new_email}.
- if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Als je deze wijziging niet hebt aangebracht, neem dan contact met ons op door op deze e-mail te antwoorden.
+ your_email_address_has_been_changed: Uw e-mailadres is gewijzigd
+ the_email_address_for_your_account_has_been_changed_to_new_email: Het e-mailadres van uw account is gewijzigd naar %{new_email}.
+ if_you_did_not_make_this_change_please_contact_us_by_replying_to_this_email: Als u deze wijziging niet hebt aangebracht, neem dan contact met ons op door op deze e-mail te antwoorden.
devise:
confirmations:
- confirmed: Je e-mailadres is succesvol bevestigd.
+ confirmed: Uw e-mailadres is succesvol bevestigd.
failure:
- unconfirmed: Je moet je e-mailadres bevestigen voordat je verdergaat.
+ unconfirmed: U moet uw e-mailadres bevestigen voordat u verdergaat.
mailer:
confirmation_instructions:
- subject: Bevestig je e-mailadres
+ subject: Bevestig uw e-mailadres
submission_sources:
api: API
bulk: Bulkverzending
@@ -7758,7 +7799,7 @@ nl: &nl
mcp: MCP
submission_event_names:
send_email_to_html: "E-mail verzonden naar %{submitter_name}"
- bounce_email_html: "E-mail gebounced %{submitter_name}"
+ bounce_email_html: "E-mail geretourneerd %{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}"
@@ -7880,14 +7921,14 @@ nl: &nl
detailed: "%d %B %Y %H:%M:%S"
ar:
- require_phone_2fa_to_open: "تطلب فتح عبر تحقق الهاتف ذو العاملين"
- the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: "المرسل طلب تحقق ذو عاملين عبر كلمة مرور لمرة واحدة مرسل إلى رقم هاتفك %{phone}."
+ require_phone_2fa_to_open: "يتطلب المصادقة الثنائية عبر الهاتف للفتح"
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: "طلب المرسل المصادقة الثنائية عبر كلمة مرور لمرة واحدة مرسلة إلى رقم هاتفك %{phone}."
send_verification_code: "إرسال رمز التحقق"
code_has_been_resent: "تم إعادة إرسال الرمز"
invalid_code: "رمز غير صالح"
awaiting_completion_by_the_other_party: "في انتظار إكتمال الطرف الآخر"
view: عرض
- hi_there: مرحبا,
+ hi_there: مرحبًا،
download: تحميل
page: صفحة
decline: رفض
@@ -7912,11 +7953,11 @@ ar:
provide_your_phone_in_international_format: أدخل رقم هاتفك بصيغة دولية
use_international_format_1xxx_: 'استخدم التنسيق الدولي: +1xxx...'
start: بدء
- starting: بداية
+ starting: جارٍ البدء
verification_code_code: 'رمز التحقق: %{code}'
reason: سبب
invited_by_html: 'تمت الدعوة بواسطة %{name}'
- form_expired_at_html: 'استمارة انتهت صلاحيتها في %{time}'
+ form_expired_at_html: 'انتهت صلاحية الاستمارة في %{time}'
you_have_been_invited_to_submit_a_form: تمت دعوتك لتقديم استمارة
signed_on_time: 'تم التوقيع في %{time}'
completed_on_time: 'تم إكماله في %{time}'
@@ -7933,7 +7974,7 @@ ar:
completed_successfully: تم الانتهاء بنجاح
password: كلمة المرور
sign_in: تسجيل الدخول
- signing_in: تسجيل الدخول
+ signing_in: جارٍ تسجيل الدخول
sign_in_with_microsoft: تسجيل الدخول باستخدام مايكروسوفت
sign_in_with_google: تسجيل الدخول باستخدام جوجل
forgot_your_password_: هل نسيت كلمة المرور؟
@@ -7942,7 +7983,7 @@ ar:
first_name: الاسم الأول
last_name: الاسم الأخير
sign_up: اشتراك
- signing_up: الاشتراك
+ signing_up: جارٍ الاشتراك
profile_details: تفاصيل الملف الشخصي
sign_up_with_google: الاشتراك باستخدام جوجل
sign_up_with_microsoft: الاشتراك باستخدام مايكروسوفت
@@ -7954,26 +7995,26 @@ ar:
verification_code: رمز التحقق
resend_code: إعادة إرسال الرمز
powered_by: 'مشغل بواسطة'
- count_documents_signed_with_html: '%{count} مستندات تم توقيعها باستخدام'
+ count_documents_signed_with_html: 'تم توقيع %{count} مستندًا باستخدام'
open_source_documents_software: 'برنامج مستندات مفتوح المصدر'
eu_data_residency: 'بيانات في الاتحاد الأوروبي'
please_enter_your_email_address_associated_with_the_completed_submission: 'يرجى إدخال عنوان البريد الإلكتروني المرتبط بالإرسال المكتمل.'
privacy_policy: 'سياسة الخصوصية'
- esignature_disclosure: 'إفصاح التوقيع الإلكتروني'
+ esignature_disclosure: 'كشف التوقيع الإلكتروني'
select_data_residency: اختر موقع تخزين البيانات
company_name: اسم الشركة
optional: اختياري
submit: 'إرسال'
sms_rate_limit_exceeded: 'تم تجاوز حد رسائل SMS'
invalid_phone_number: 'رقم الهاتف غير صالح'
- please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 'يرجى الاتصال بالمرسل لتحديد رقم هاتفك للمصادقة الثنائية.'
+ please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 'يرجى الاتصال بمقدم الطلب لتحديد رقم هاتفك للمصادقة الثنائية.'
we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: 'أرسلنا رمز تحقق لمرة واحدة إلى بريدك الإلكتروني. الرجاء إدخاله أدناه للمتابعة.'
re_send_code: 'إعادة إرسال الرمز'
email_verification: 'التحقق من البريد الإلكتروني'
your_verification_code_to_access_the_name: 'رمز التحقق الخاص بك للوصول إلى "%{name}":'
please_reply_to_this_email_if_you_didnt_request_this: 'يرجى الرد على هذا البريد إذا لم تطلب ذلك.'
- 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 لتسجيل الدخول.
+ 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 لتسجيل الدخول.
verification_required_refresh_the_page_and_pass_2fa: مطلوب التحقق. قم بتحديث الصفحة وأكمل المصادقة الثنائية.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: طلب المرسل المصادقة الثنائية عبر كلمة مرور لمرة واحدة مرسلة إلى عنوان بريدك الإلكتروني %{email}.
please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: يرجى الاتصال بالمرسل لتحديد عنوان بريدك الإلكتروني للمصادقة الثنائية.
@@ -7981,8 +8022,8 @@ ar:
too_many_requests_try_again_later: طلبات كثيرة جدًا. حاول مرة أخرى لاحقًا.
ko:
- require_phone_2fa_to_open: 휴대폰 2FA를 열 때 요구함
- the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: 발신자가 %{phone} 전화번호로 보내진 일회용 비밀번호를 통해 이중 인증을 요청했습니다.
+ require_phone_2fa_to_open: 열려면 휴대폰 2FA 요구
+ the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_html: 발신자가 %{phone} 전화번호로 전송된 일회용 비밀번호를 통해 2단계 인증을 요청했습니다.
send_verification_code: 인증 코드 보내기
code_has_been_resent: 코드가 재전송되었습니다.
invalid_code: 잘못된 코드
@@ -7997,7 +8038,7 @@ ko:
declined: 거절됨
decline_reason: 거절 사유
provide_a_reason: 사유를 제공하세요
- notify_the_sender_with_the_reason_you_declined: 거절한 이유로 발신자에게 알리기
+ notify_the_sender_with_the_reason_you_declined: 거절 사유를 발신자에게 알리기
form_has_been_declined_on_html: '양식이 %{time}에 거절되었습니다.'
document_has_been_delegated_on_html: '문서가 %{time}에 위임되었습니다.'
name_declined_by_submitter: '"%{name}"이(가) %{submitter}에 의해 거절되었습니다.'
@@ -8013,7 +8054,7 @@ ko:
provide_your_phone_in_international_format: 국제 형식의 전화번호를 입력하세요
use_international_format_1xxx_: '국제 형식을 사용하세요: +1xxx...'
start: 시작
- reason: 이유
+ reason: 사유
starting: 시작 중
form_expired_at_html: '양식이 만료되었습니다 %{time}'
invited_by_html: '%{name}에 의해 초대되었습니다.'
@@ -8047,17 +8088,17 @@ ko:
profile_details: 프로필 세부 정보
sign_up_with_google: Google로 가입
sign_up_with_microsoft: Microsoft로 가입
- by_creating_an_account_you_agree_to_our_html: '계정을 생성함으로써, 귀하는 우리의 개인정보 보호정책 및 서비스 약관에 동의하는 것입니다.'
+ by_creating_an_account_you_agree_to_our_html: '계정을 생성함으로써, 개인정보 처리방침 및 서비스 약관에 동의하게 됩니다.'
enter_email_to_continue: 계속하려면 이메일을 입력하세요
the_code_has_been_sent_to_your_email: 코드가 이메일로 전송되었습니다.
- enter_the_verification_code_from_your_email: 이메일에서 인증 코드를 입력하세요.
+ enter_the_verification_code_from_your_email: 이메일로 받은 인증 코드를 입력하세요.
too_many_attempts: 시도 횟수가 너무 많습니다.
verification_code: 인증 코드
resend_code: 코드 재전송
powered_by: '제공:'
count_documents_signed_with_html: '%{count}개의 문서가 다음을 통해 서명됨'
open_source_documents_software: '오픈소스 문서 소프트웨어'
- eu_data_residency: 'EU 데이터 보관'
+ eu_data_residency: 'EU 데이터 저장 위치'
please_enter_your_email_address_associated_with_the_completed_submission: '완료된 제출과 연결된 이메일 주소를 입력하세요.'
privacy_policy: 개인정보 처리방침
esignature_disclosure: 전자서명 공개
@@ -8067,7 +8108,7 @@ ko:
submit: 제출
sms_rate_limit_exceeded: SMS 제한 초과
invalid_phone_number: 잘못된 전화번호입니다
- please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 이중 인증을 위해 전화번호를 지정하려면 요청자에게 문의하세요.
+ please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 2단계 인증을 위해 전화번호를 지정하려면 요청자에게 문의하세요.
we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: 일회용 인증 코드를 이메일로 보냈습니다. 계속하려면 아래에 입력하세요.
re_send_code: 코드 재전송
email_verification: 이메일 인증
@@ -8077,7 +8118,7 @@ ko:
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에 문의하세요.
verification_required_refresh_the_page_and_pass_2fa: 인증이 필요합니다. 페이지를 새로 고치고 2단계 인증을 완료하세요.
the_sender_has_requested_a_two_factor_authentication_via_one_time_password_sent_to_your_email_html: 발신자가 %{email} 이메일 주소로 전송된 일회용 비밀번호를 통해 2단계 인증을 요청했습니다.
- please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: 2단계 인증을 위해 이메일 주소를 지정하려면 발신자에게 문의하세요.
+ please_contact_the_requester_to_specify_your_email_for_two_factor_authentication: 2단계 인증을 위해 이메일 주소를 지정하려면 요청자에게 문의하세요.
rate_limit_exceeded: 속도 제한 초과
too_many_requests_try_again_later: 요청이 너무 많습니다. 나중에 다시 시도하세요.
@@ -8104,7 +8145,7 @@ ja:
name_declined_by_submitter: '"%{name}" は %{submitter} により辞退されました'
name_declined_by_submitter_with_the_following_reason: '"%{name}" は %{submitter} により次の理由で辞退されました:'
email: メール
- digitally_signed_by: 電子署名者
+ digitally_signed_by: '電子署名者:'
role: 役割
provide_your_email_to_start: 開始するにはメールアドレスを入力してください
provide_your_email: メールアドレスを入力してください
@@ -8158,21 +8199,21 @@ ja:
powered_by: '提供元:'
count_documents_signed_with_html: '%{count} 件のドキュメントが以下で署名されました'
open_source_documents_software: 'オープンソースのドキュメントソフトウェア'
- eu_data_residency: 'EU データ居住'
+ eu_data_residency: 'EU データ保存場所'
please_enter_your_email_address_associated_with_the_completed_submission: '完了した提出に関連付けられたメールアドレスを入力してください。'
privacy_policy: プライバシーポリシー
- esignature_disclosure: 電子署名に関する開示
+ esignature_disclosure: 電子署名開示
select_data_residency: データ保存場所を選択
company_name: 会社名
optional: 任意
submit: 送信
sms_rate_limit_exceeded: SMSの送信制限を超えました
invalid_phone_number: 無効な電話番号です
- please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 二要素認証のため、リクエスターに電話番号を指定してください。
+ please_contact_the_requester_to_specify_your_phone_number_for_two_factor_authentication: 2段階認証用に電話番号を指定するために、送信者にお問い合わせください。
we_sent_a_one_time_verification_code_to_your_email_address_please_enter_the_code_below_to_continue: ワンタイム認証コードをメールアドレスに送信しました。続行するには、以下にコードを入力してください。
re_send_code: コードを再送信
email_verification: メール認証
- your_verification_code_to_access_the_name: '"%{name}"へのアクセスコード:'
+ your_verification_code_to_access_the_name: '"%{name}" へアクセスするための認証コード:'
please_reply_to_this_email_if_you_didnt_request_this: このリクエストを行っていない場合は、このメールに返信してください。
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 に連絡してください。
diff --git a/config/routes.rb b/config/routes.rb
index 96d791c2..320e57d7 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -87,6 +87,7 @@ Rails.application.routes.draw do
resources :submitters_resubmit, only: %i[update]
resources :template_folders_autocomplete, only: %i[index]
resources :webhook_secret, only: %i[show update]
+ resources :webhook_hmac, only: %i[show]
resources :webhook_preferences, only: %i[update]
resource :templates_upload, only: %i[create]
authenticated do
@@ -111,6 +112,7 @@ Rails.application.routes.draw do
resource :form, only: %i[show], controller: 'templates_form_preview'
resource :code_modal, only: %i[show], controller: 'templates_code_modal'
resource :preferences, only: %i[show create destroy], controller: 'templates_preferences'
+ resources :versions, only: %i[index show], controller: 'templates_versions'
resource :share_link, only: %i[show create], controller: 'templates_share_link'
resource :share_link_qr, only: %i[show], controller: 'templates_share_link_qr'
resources :recipients, only: %i[create], controller: 'templates_recipients'
diff --git a/db/migrate/20260506120000_add_hmac_to_webhook_urls.rb b/db/migrate/20260506120000_add_hmac_to_webhook_urls.rb
new file mode 100644
index 00000000..0419ad19
--- /dev/null
+++ b/db/migrate/20260506120000_add_hmac_to_webhook_urls.rb
@@ -0,0 +1,23 @@
+# frozen_string_literal: true
+
+class AddHmacToWebhookUrls < ActiveRecord::Migration[8.1]
+ class MigrationWebhookUrl < ApplicationRecord
+ self.table_name = 'webhook_urls'
+
+ encrypts :hmac_secret
+ end
+
+ def up
+ add_column :webhook_urls, :hmac_secret, :text
+
+ MigrationWebhookUrl.find_each do |webhook_url|
+ webhook_url.update_columns(hmac_secret: WebhookUrls::Signatures.generate_secret)
+ end
+
+ change_column_null :webhook_urls, :hmac_secret, false
+ end
+
+ def down
+ remove_column :webhook_urls, :hmac_secret
+ end
+end
diff --git a/db/migrate/20260506121640_create_template_versions.rb b/db/migrate/20260506121640_create_template_versions.rb
new file mode 100644
index 00000000..7a7bc0b0
--- /dev/null
+++ b/db/migrate/20260506121640_create_template_versions.rb
@@ -0,0 +1,16 @@
+# frozen_string_literal: true
+
+class CreateTemplateVersions < ActiveRecord::Migration[8.1]
+ def change
+ create_table :template_versions do |t|
+ t.references :template, null: false, foreign_key: true, index: false
+ t.references :account, null: false, foreign_key: true, index: true
+ t.references :author, null: false, foreign_key: { to_table: :users }, index: true
+ t.text :data, null: false
+ t.string :sha1, null: false
+ t.timestamps
+ end
+
+ add_index :template_versions, %i[template_id sha1], unique: true
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index e0ba7a4f..d8d7d1cb 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
-ActiveRecord::Schema[8.1].define(version: 2026_04_16_100000) do
+ActiveRecord::Schema[8.1].define(version: 2026_05_06_121640) do
# These are extensions that must be enabled in order to support this database
enable_extension "btree_gin"
enable_extension "pg_catalog.plpgsql"
@@ -444,6 +444,19 @@ ActiveRecord::Schema[8.1].define(version: 2026_04_16_100000) do
t.index ["template_id"], name: "index_template_sharings_on_template_id"
end
+ create_table "template_versions", force: :cascade do |t|
+ t.bigint "account_id", null: false
+ t.bigint "author_id", null: false
+ t.datetime "created_at", null: false
+ t.text "data", null: false
+ t.string "sha1", null: false
+ t.bigint "template_id", null: false
+ t.datetime "updated_at", null: false
+ t.index ["account_id"], name: "index_template_versions_on_account_id"
+ t.index ["author_id"], name: "index_template_versions_on_author_id"
+ t.index ["template_id", "sha1"], name: "index_template_versions_on_template_id_and_sha1", unique: true
+ end
+
create_table "templates", force: :cascade do |t|
t.bigint "account_id", null: false
t.datetime "archived_at"
@@ -545,6 +558,7 @@ ActiveRecord::Schema[8.1].define(version: 2026_04_16_100000) do
t.bigint "account_id", null: false
t.datetime "created_at", null: false
t.text "events", null: false
+ t.text "hmac_secret", null: false
t.text "secret", null: false
t.string "sha1", null: false
t.datetime "updated_at", null: false
@@ -586,6 +600,9 @@ ActiveRecord::Schema[8.1].define(version: 2026_04_16_100000) do
add_foreign_key "template_folders", "template_folders", column: "parent_folder_id"
add_foreign_key "template_folders", "users", column: "author_id"
add_foreign_key "template_sharings", "templates"
+ add_foreign_key "template_versions", "accounts"
+ add_foreign_key "template_versions", "templates"
+ add_foreign_key "template_versions", "users", column: "author_id"
add_foreign_key "templates", "accounts"
add_foreign_key "templates", "template_folders", column: "folder_id"
add_foreign_key "templates", "users", column: "author_id"
diff --git a/lib/pdfium.rb b/lib/pdfium.rb
index 158335ce..ca48593a 100644
--- a/lib/pdfium.rb
+++ b/lib/pdfium.rb
@@ -192,6 +192,71 @@ class Pdfium
attach_function :FPDFDOC_ExitFormFillEnvironment, [:FPDF_FORMHANDLE], :void
attach_function :FPDF_FFLDraw, %i[FPDF_FORMHANDLE FPDF_BITMAP FPDF_PAGE int int int int int int], :void
+ attach_function :FPDFPage_Flatten, %i[FPDF_PAGE int], :int
+
+ FLAT_NORMALDISPLAY = 0
+ FLAT_PRINT = 1
+
+ FLATTEN_FAIL = 0
+ FLATTEN_SUCCESS = 1
+ FLATTEN_NOTHINGTODO = 2
+
+ # rubocop:disable Naming/ClassAndModuleCamelCase
+ class FS_MATRIX < FFI::Struct
+ layout :a, :float,
+ :b, :float,
+ :c, :float,
+ :d, :float,
+ :e, :float,
+ :f, :float
+ end
+ # rubocop:enable Naming/ClassAndModuleCamelCase
+
+ attach_function :FPDFPage_GetRotation, [:FPDF_PAGE], :int
+ attach_function :FPDFPage_SetRotation, %i[FPDF_PAGE int], :void
+ attach_function :FPDFPage_TransFormWithClip, %i[FPDF_PAGE pointer pointer], :int
+ attach_function :FPDFPage_TransformAnnots, %i[FPDF_PAGE double double double double double double], :void
+ attach_function :FPDFPage_GenerateContent, [:FPDF_PAGE], :int
+ attach_function :FPDFPage_GetMediaBox, %i[FPDF_PAGE pointer pointer pointer pointer], :int
+ attach_function :FPDFPage_SetMediaBox, %i[FPDF_PAGE float float float float], :void
+ attach_function :FPDFPage_GetCropBox, %i[FPDF_PAGE pointer pointer pointer pointer], :int
+ attach_function :FPDFPage_SetCropBox, %i[FPDF_PAGE float float float float], :void
+ attach_function :FPDFPage_GetBleedBox, %i[FPDF_PAGE pointer pointer pointer pointer], :int
+ attach_function :FPDFPage_SetBleedBox, %i[FPDF_PAGE float float float float], :void
+ attach_function :FPDFPage_GetTrimBox, %i[FPDF_PAGE pointer pointer pointer pointer], :int
+ attach_function :FPDFPage_SetTrimBox, %i[FPDF_PAGE float float float float], :void
+ attach_function :FPDFPage_GetArtBox, %i[FPDF_PAGE pointer pointer pointer pointer], :int
+ attach_function :FPDFPage_SetArtBox, %i[FPDF_PAGE float float float float], :void
+
+ PAGE_BOX_ACCESSORS = [
+ %i[FPDFPage_GetMediaBox FPDFPage_SetMediaBox],
+ %i[FPDFPage_GetCropBox FPDFPage_SetCropBox],
+ %i[FPDFPage_GetBleedBox FPDFPage_SetBleedBox],
+ %i[FPDFPage_GetTrimBox FPDFPage_SetTrimBox],
+ %i[FPDFPage_GetArtBox FPDFPage_SetArtBox]
+ ].freeze
+
+ # rubocop:disable Naming/ClassAndModuleCamelCase
+ class FPDF_FILEWRITE < FFI::Struct
+ layout :version, :int,
+ :WriteBlock, :pointer
+ end
+ # rubocop:enable Naming/ClassAndModuleCamelCase
+
+ attach_function :FPDF_SaveAsCopy, %i[FPDF_DOCUMENT pointer ulong], :int
+
+ FPDF_INCREMENTAL = 1
+ FPDF_NO_INCREMENTAL = 2
+ FPDF_REMOVE_SECURITY = 3
+
+ attach_function :FPDF_CreateNewDocument, [], :FPDF_DOCUMENT
+
+ begin
+ attach_function :FPDF_ImportPages, %i[FPDF_DOCUMENT FPDF_DOCUMENT string int], :int
+ rescue FFI::NotFoundError
+ define_singleton_method(:FPDF_ImportPages) { |*| raise PdfiumError, 'FPDF_ImportPages is not available' } # rubocop:disable Naming/MethodName
+ end
+
FPDF_ERR_SUCCESS = 0
FPDF_ERR_UNKNOWN = 1
FPDF_ERR_FILE = 2
@@ -257,6 +322,38 @@ class Pdfium
@page_count ||= Pdfium.FPDF_GetPageCount(@document_ptr)
end
+ def import_pages(src_doc)
+ ensure_not_closed!
+
+ result = Pdfium.FPDF_ImportPages(@document_ptr, src_doc.document_ptr, nil, page_count)
+
+ raise PdfiumError, 'Failed to import pages' if result.zero?
+
+ @page_count = nil
+
+ result
+ end
+
+ def self.create
+ doc_ptr = Pdfium.FPDF_CreateNewDocument()
+
+ if doc_ptr.null?
+ Pdfium.check_last_error('Failed to create new document')
+
+ raise PdfiumError, 'Failed to create new document'
+ end
+
+ doc = new(doc_ptr)
+
+ return doc unless block_given?
+
+ begin
+ yield doc
+ ensure
+ doc.close
+ end
+ end
+
def self.open_file(file_path, password = nil)
doc_ptr = Pdfium.FPDF_LoadDocument(file_path, password)
@@ -318,6 +415,30 @@ class Pdfium
@pages[page_index] ||= Page.new(self, page_index)
end
+ def save(io, flags: Pdfium::FPDF_NO_INCREMENTAL)
+ ensure_not_closed!
+
+ file_write_mem = FFI::MemoryPointer.new(FPDF_FILEWRITE.size)
+
+ file_write_struct = FPDF_FILEWRITE.new(file_write_mem)
+ file_write_struct[:version] = 1
+ file_write_struct[:WriteBlock] = FFI::Function.new(:int, %i[pointer pointer ulong]) do |_, data, size|
+ io.write(data.read_bytes(size))
+
+ 1
+ end
+
+ result = Pdfium.FPDF_SaveAsCopy(@document_ptr, file_write_mem, flags)
+
+ if result.zero?
+ Pdfium.check_last_error('Failed to save document')
+
+ raise PdfiumError, 'Failed to save document'
+ end
+
+ io
+ end
+
def close
return if closed?
@@ -680,6 +801,88 @@ class Pdfium
@line_nodes = @line_nodes.sort { |a, b| a.endy == b.endy ? a.x <=> b.x : a.endy <=> b.endy }
end
+ def rotate
+ ensure_not_closed!
+
+ rotation = Pdfium.FPDFPage_GetRotation(page_ptr)
+
+ return false if rotation.zero?
+
+ l_ptr = FFI::MemoryPointer.new(:float)
+ b_ptr = FFI::MemoryPointer.new(:float)
+ r_ptr = FFI::MemoryPointer.new(:float)
+ t_ptr = FFI::MemoryPointer.new(:float)
+
+ has_crop = !Pdfium.FPDFPage_GetCropBox(page_ptr, l_ptr, b_ptr, r_ptr, t_ptr).zero?
+ Pdfium.FPDFPage_GetMediaBox(page_ptr, l_ptr, b_ptr, r_ptr, t_ptr) unless has_crop
+
+ pl = l_ptr.read_float
+ pb = b_ptr.read_float
+ pr = r_ptr.read_float
+ pt = t_ptr.read_float
+
+ a, b, c, d, e, f =
+ case rotation
+ when 1 then [0, -1, 1, 0, -pb, pr]
+ when 2 then [-1, 0, 0, -1, pr, pt]
+ when 3 then [0, 1, -1, 0, pt, -pl]
+ end
+
+ Pdfium::PAGE_BOX_ACCESSORS.each do |getter, setter|
+ next if Pdfium.public_send(getter, page_ptr, l_ptr, b_ptr, r_ptr, t_ptr).zero?
+
+ bl = l_ptr.read_float
+ bb = b_ptr.read_float
+ br = r_ptr.read_float
+ bt = t_ptr.read_float
+
+ c1x, c1y, c2x, c2y =
+ case rotation
+ when 1 then [br, bb, bl, bt]
+ when 2 then [br, bt, bl, bb]
+ when 3 then [bl, bt, br, bb]
+ end
+
+ new_llx = (a * c1x) + (c * c1y) + e
+ new_lly = (b * c1x) + (d * c1y) + f
+ new_urx = (a * c2x) + (c * c2y) + e
+ new_ury = (b * c2x) + (d * c2y) + f
+
+ Pdfium.public_send(setter, page_ptr, new_llx, new_lly, new_urx, new_ury)
+ end
+
+ Pdfium.FPDFPage_TransformAnnots(page_ptr, a, b, c, d, e, f)
+
+ matrix_ptr = FFI::MemoryPointer.new(FS_MATRIX.size)
+ matrix_struct = FS_MATRIX.new(matrix_ptr)
+ matrix_struct[:a] = a
+ matrix_struct[:b] = b
+ matrix_struct[:c] = c
+ matrix_struct[:d] = d
+ matrix_struct[:e] = e
+ matrix_struct[:f] = f
+
+ Pdfium.FPDFPage_TransFormWithClip(page_ptr, matrix_ptr, FFI::Pointer::NULL)
+ Pdfium.FPDFPage_SetRotation(page_ptr, 0)
+ Pdfium.FPDFPage_GenerateContent(page_ptr)
+
+ true
+ end
+
+ def flatten(flag = Pdfium::FLAT_NORMALDISPLAY)
+ ensure_not_closed!
+
+ result = Pdfium.FPDFPage_Flatten(page_ptr, flag)
+
+ if result == Pdfium::FLATTEN_FAIL
+ Pdfium.check_last_error("Failed to flatten page #{page_index}")
+
+ raise PdfiumError, "Failed to flatten page #{page_index}"
+ end
+
+ result
+ end
+
def close
return if closed?
diff --git a/lib/send_webhook_request.rb b/lib/send_webhook_request.rb
index 87de376a..2eb346e9 100644
--- a/lib/send_webhook_request.rb
+++ b/lib/send_webhook_request.rb
@@ -15,11 +15,7 @@ module SendWebhookRequest
# rubocop:disable Metrics/AbcSize
def call(webhook_url, event_uuid:, event_type:, record:, data:, attempt: 0)
- uri = begin
- URI(webhook_url.url)
- rescue URI::Error
- Addressable::URI.parse(webhook_url.url).normalize
- end
+ uri = parse_uri(webhook_url.url)
if Docuseal.multitenant?
raise HttpsError, 'Only HTTPS is allowed.' if (uri.scheme != 'https' || [443, nil].exclude?(uri.port)) &&
@@ -43,6 +39,8 @@ module SendWebhookRequest
data: data
}.to_json
+ req.headers['X-Docuseal-Signature'] = WebhookUrls::Signatures.sign(webhook_url.hmac_secret, body: req.body)
+
req.options.read_timeout = 15
req.options.open_timeout = 8
end
@@ -55,6 +53,12 @@ module SendWebhookRequest
end
# rubocop:enable Metrics/AbcSize
+ def parse_uri(url)
+ URI(url)
+ rescue URI::Error
+ Addressable::URI.parse(url).normalize
+ end
+
def create_webhook_event(webhook_url, event_uuid:, event_type:, record:)
return if event_uuid.blank?
diff --git a/lib/submissions/generate_result_attachments.rb b/lib/submissions/generate_result_attachments.rb
index 5161e977..a26025d8 100644
--- a/lib/submissions/generate_result_attachments.rb
+++ b/lib/submissions/generate_result_attachments.rb
@@ -875,6 +875,50 @@ module Submissions
pdf
end
+ def maybe_rotate_pdfium(io)
+ pdf = HexaPDF::Document.new(io:)
+
+ return pdf if pdf.pages.size > MAX_PAGE_ROTATE
+
+ root_rotate = pdf.pages.root[:Rotate].to_i
+
+ rotated_indexes = pdf.pages.each_with_index.filter_map do |page, idx|
+ page_rotate = page[:Rotate]
+
+ effective = page_rotate.nil? ? root_rotate : page_rotate.to_i
+
+ idx if effective != 0
+ end
+
+ return pdf if rotated_indexes.blank?
+
+ has_widgets = pdf.acro_form && pdf.acro_form[:Fields].present?
+
+ io.rewind
+ out_io = StringIO.new
+
+ Pdfium::Document.open_bytes(io.string) do |doc|
+ rotated_indexes.each do |idx|
+ page = doc.get_page(idx)
+ page.flatten if has_widgets
+ page.rotate
+ end
+
+ doc.save(out_io)
+ end
+
+ pdf = HexaPDF::Document.new(io: out_io.tap(&:rewind))
+ pdf.pages.root[:Rotate] = 0
+
+ pdf
+ rescue StandardError => e
+ Rollbar.error(e) if defined?(Rollbar)
+
+ io.rewind
+
+ HexaPDF::Document.new(io:)
+ end
+
def on_missing_glyph(character, font_wrapper)
Rails.logger.info("Missing glyph: #{character}") if character.present? && defined?(Rollbar)
diff --git a/lib/template_versions.rb b/lib/template_versions.rb
new file mode 100644
index 00000000..f5f1488d
--- /dev/null
+++ b/lib/template_versions.rb
@@ -0,0 +1,76 @@
+# frozen_string_literal: true
+
+module TemplateVersions
+ SERIALIZE_PARAMS = {
+ only: %i[id created_at],
+ include: { author: { only: %i[email], methods: %i[full_name] } }
+ }.freeze
+
+ DATA_FIELDS = %i[name schema submitters variables_schema fields].freeze
+
+ module_function
+
+ def find_or_create_for(template, author:)
+ data = build_data(template)
+ sha1 = Digest::SHA1.hexdigest(data.to_json)
+
+ version = template.template_versions.find_by(sha1:)
+ version ||= template.template_versions.create!(data:, sha1:, author:)
+
+ version
+ rescue ActiveRecord::RecordNotUnique
+ retry
+ end
+
+ def serialize(version)
+ data = version.data.dup
+
+ data['documents'] = serialize_documents(version.template, data['schema'].to_a)
+ data['dynamic_documents'] = serialize_dynamic_documents(version.template, data['dynamic_documents'].to_a)
+
+ version.as_json(SERIALIZE_PARAMS).merge('data' => data)
+ end
+
+ def build_data(template)
+ dynamic_uuids = template.schema.select { |e| e['dynamic'] }.pluck('attachment_uuid')
+
+ dynamic_documents =
+ if dynamic_uuids.present?
+ template.dynamic_documents.where(uuid: dynamic_uuids).as_json(only: %i[uuid body])
+ else
+ []
+ end
+
+ template.as_json(only: DATA_FIELDS).merge('dynamic_documents' => dynamic_documents)
+ end
+
+ def serialize_documents(template, schema)
+ return [] if schema.blank?
+
+ template.documents_attachments
+ .where(uuid: schema.pluck('attachment_uuid'))
+ .preload(:blob, preview_images_attachments: :blob)
+ .as_json(
+ only: %i[id uuid],
+ methods: %i[metadata signed_key],
+ include: { preview_images: { only: %i[id], methods: %i[url metadata filename] } }
+ )
+ end
+
+ def serialize_dynamic_documents(template, dynamic_docs)
+ return [] if dynamic_docs.blank?
+
+ dynamic_docs_index = template.dynamic_documents
+ .where(uuid: dynamic_docs.pluck('uuid'))
+ .preload(attachments_attachments: :blob)
+ .index_by(&:uuid)
+
+ dynamic_docs.map do |attrs|
+ document = dynamic_docs_index[attrs['uuid']]
+
+ attachments_data = document.attachments_attachments.as_json(only: %i[uuid], methods: %i[url metadata filename])
+
+ attrs.merge('head' => document.head, 'attachments' => attachments_data)
+ end
+ end
+end
diff --git a/lib/time_utils.rb b/lib/time_utils.rb
index c7c26bcc..4971b77c 100644
--- a/lib/time_utils.rb
+++ b/lib/time_utils.rb
@@ -92,9 +92,9 @@ module TimeUtils
end
def format_date_preview(format, locale, timezone)
- return '' if format.blank?
+ format = format.upcase if format && !format_with_time?(format)
+ format = format.presence || (locale.to_s.ends_with?('US') ? DEFAULT_DATE_FORMAT_US : DEFAULT_DATE_FORMAT)
- format = format.upcase unless format_with_time?(format)
preview_pattern = format.gsub(TOKEN_REGEX) { |token| TIME_FORMATS.key?(token) ? '--' : ALL_FORMATS[token] }
I18n.l(Time.current.in_time_zone(timezone.presence || Time.zone.name), format: preview_pattern, locale:)
@@ -122,7 +122,7 @@ module TimeUtils
def format_date_string(string, format, locale, timezone: nil)
format = format.upcase if format && !format_with_time?(format)
- format ||= locale.to_s.ends_with?('US') ? DEFAULT_DATE_FORMAT_US : DEFAULT_DATE_FORMAT
+ format = format.presence || (locale.to_s.ends_with?('US') ? DEFAULT_DATE_FORMAT_US : DEFAULT_DATE_FORMAT)
date =
if format_with_time?(format)
diff --git a/lib/webhook_urls/signatures.rb b/lib/webhook_urls/signatures.rb
new file mode 100644
index 00000000..937a316e
--- /dev/null
+++ b/lib/webhook_urls/signatures.rb
@@ -0,0 +1,40 @@
+# frozen_string_literal: true
+
+module WebhookUrls
+ module Signatures
+ SECRET_PREFIX = 'whsec_'
+ SECRET_BYTES = 24
+ TOLERANCE = 5 * 60
+
+ InvalidSignatureError = Class.new(StandardError)
+ TimestampError = Class.new(StandardError)
+
+ module_function
+
+ def generate_secret
+ SECRET_PREFIX + Base64.strict_encode64(SecureRandom.bytes(SECRET_BYTES))
+ end
+
+ def sign(secret, body:, timestamp: Time.current.to_i)
+ "#{timestamp}.#{OpenSSL::HMAC.hexdigest('sha256', secret, "#{timestamp}.#{body}")}"
+ end
+
+ def verify(secret, body:, header:, tolerance: TOLERANCE)
+ ts, sig = header.to_s.split('.', 2)
+ ts = Integer(ts, exception: false)
+
+ raise InvalidSignatureError unless ts && sig
+
+ now = Time.current.to_i
+
+ raise TimestampError, 'Too old' if ts < now - tolerance
+ raise TimestampError, 'In future' if ts > now + tolerance
+
+ expected = OpenSSL::HMAC.hexdigest('sha256', secret, "#{ts}.#{body}")
+
+ raise InvalidSignatureError unless ActiveSupport::SecurityUtils.secure_compare(expected, sig)
+
+ true
+ end
+ end
+end
diff --git a/spec/jobs/send_submission_created_webhook_request_job_spec.rb b/spec/jobs/send_submission_created_webhook_request_job_spec.rb
index 62a1d432..8a70c6fb 100644
--- a/spec/jobs/send_submission_created_webhook_request_job_spec.rb
+++ b/spec/jobs/send_submission_created_webhook_request_job_spec.rb
@@ -57,6 +57,23 @@ RSpec.describe SendSubmissionCreatedWebhookRequestJob do
).once
end
+ it 'signs the request with the HMAC secret' do
+ captured_body = nil
+ captured_signature = nil
+ stub_request(:post, webhook_url.url).with do |req|
+ captured_body = req.body
+ captured_signature = req.headers['X-Docuseal-Signature']
+ end.to_return(status: 200)
+
+ described_class.new.perform('submission_id' => submission.id, 'webhook_url_id' => webhook_url.id,
+ 'event_uuid' => SecureRandom.uuid)
+
+ expect(captured_signature).to be_present
+ expect(WebhookUrls::Signatures.verify(webhook_url.hmac_secret,
+ body: captured_body,
+ header: captured_signature)).to be(true)
+ end
+
it "doesn't send a webhook request if the event is not in the webhook's events" do
webhook_url.update!(events: ['submission.completed'])
diff --git a/spec/system/webhook_settings_spec.rb b/spec/system/webhook_settings_spec.rb
index 938b6eb9..9a27cb31 100644
--- a/spec/system/webhook_settings_spec.rb
+++ b/spec/system/webhook_settings_spec.rb
@@ -49,7 +49,7 @@ RSpec.describe 'Webhook Settings' do
expect(page).to have_field('webhook_url[url]', type: 'url', with: webhook_url.url)
expect(page).to have_button('Save')
expect(page).to have_button('Delete')
- expect(page).to have_link('Add Secret')
+ expect(page).to have_link('Security')
WebhookUrl::EVENTS.each do |event|
expect(page).to have_field(event, type: 'checkbox', checked: webhook_url.events.include?(event))
@@ -123,7 +123,7 @@ RSpec.describe 'Webhook Settings' do
expect(webhook_url.secret).to eq({})
- click_link 'Add Secret'
+ click_link 'Security'
within '#modal' do
fill_in 'Key', with: 'X-Signature'
@@ -136,7 +136,7 @@ RSpec.describe 'Webhook Settings' do
expect(webhook_url.secret).to eq({ 'X-Signature' => 'secret-value' })
end
- expect(page).to have_link('Edit Secret')
+ expect(page).to have_link('Security')
expect(page).to have_content('Webhook Secret has been saved.')
end
@@ -145,7 +145,7 @@ RSpec.describe 'Webhook Settings' do
visit settings_webhooks_path
- click_link 'Edit Secret'
+ click_link 'Security'
within '#modal' do
fill_in 'Key', with: ''
@@ -158,10 +158,26 @@ RSpec.describe 'Webhook Settings' do
expect(webhook_url.secret).to eq({})
end
- expect(page).to have_link('Add Secret')
+ expect(page).to have_link('Security')
expect(page).to have_content('Webhook Secret has been saved.')
end
+ it 'shows the HMAC signing secret on the HMAC tab' do
+ webhook_url = create(:webhook_url, account:)
+
+ visit settings_webhooks_path
+
+ click_link 'Security'
+
+ within '#modal' do
+ click_link 'HMAC'
+
+ expect(page).to have_field('hmac_secret')
+ end
+
+ expect(webhook_url.reload.hmac_secret).to start_with('whsec_')
+ end
+
context 'when testing the webhook' do
let!(:webhook_url) { create(:webhook_url, account:) }
let!(:template) { create(:template, account:, author: user) }