From a1c117f1ca3d49bc307757103cdee8f43ea595a8 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 2 Dec 2025 12:50:58 +0200 Subject: [PATCH 01/14] add i18n --- config/locales/i18n.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml index 0d47623a..0e696ba5 100644 --- a/config/locales/i18n.yml +++ b/config/locales/i18n.yml @@ -32,6 +32,7 @@ en: &en enabled: Enabled disabled: Disabled party: Party + make_owner: Make Owner use_direct_file_attachment_links_in_the_documents: Use direct file attachment links in the documents click_here_to_send_a_reset_password_email_html: ' to send a reset password email.' edit_order: Edit Order @@ -980,6 +981,7 @@ en: &en range_without_total: "%{from}-%{to} events" es: &es + make_owner: Hacer propietario billing: Facturación add_from_google_drive: Agregar desde Google Drive or_add_from: O agregar desde @@ -1940,6 +1942,7 @@ es: &es range_without_total: "%{from}-%{to} eventos" it: &it + make_owner: Rendi proprietario billing: Fatturazione add_from_google_drive: Aggiungi da Google Drive or_add_from: Oppure aggiungi da @@ -2901,6 +2904,7 @@ it: &it range_without_total: "%{from}-%{to} eventi" fr: &fr + make_owner: Devenir propriétaire billing: Facturation add_from_google_drive: Ajouter depuis Google Drive or_add_from: Ou ajouter depuis @@ -3858,6 +3862,7 @@ fr: &fr range_without_total: "%{from}-%{to} événements" pt: &pt + make_owner: Tornar proprietário billing: Pagamentos add_from_google_drive: Adicionar do Google Drive or_add_from: Ou adicionar de @@ -4818,6 +4823,7 @@ pt: &pt range_without_total: "%{from}-%{to} eventos" de: &de + make_owner: Eigentümer machen billing: Abrechnung add_from_google_drive: Aus Google Drive hinzufügen or_add_from: Oder hinzufügen aus @@ -6142,6 +6148,7 @@ he: your_email_could_not_be_reached_this_may_happen_if_there_was_a_typo_in_your_address_or_if_your_mailbox_is_not_available_please_contact_support_email_to_log_in: לא ניתן היה לגשת לדוא"ל שלך. ייתכן שזה קרה עקב שגיאת כתיב בכתובת או אם תיבת הדואר אינה זמינה. אנא פנה ל־support@docuseal.com כדי להתחבר. nl: &nl + make_owner: Eigenaar maken billing: Facturatie add_from_google_drive: Toevoegen vanuit Google Drive or_add_from: Of toevoegen vanuit From cb2f58c04cee5806cc08d5fb4542137d05d3a574 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 2 Dec 2025 13:31:35 +0200 Subject: [PATCH 02/14] fix i18n --- config/locales/i18n.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml index 0e696ba5..7838c04a 100644 --- a/config/locales/i18n.yml +++ b/config/locales/i18n.yml @@ -2904,7 +2904,7 @@ it: &it range_without_total: "%{from}-%{to} eventi" fr: &fr - make_owner: Devenir propriétaire + make_owner: Rendre propriétaire billing: Facturation add_from_google_drive: Ajouter depuis Google Drive or_add_from: Ou ajouter depuis From 7a7d3c6ee367e82bec356988e44dea89b77f8d15 Mon Sep 17 00:00:00 2001 From: Alex Turchyn Date: Mon, 1 Dec 2025 20:46:03 +0200 Subject: [PATCH 03/14] add translations for reset password instructions email --- .../reset_password_instructions.html.erb | 15 ++++++++----- config/locales/i18n.yml | 21 +++++++++++++++++++ .../mailers/previews/devise_mailer_preview.rb | 9 ++++++++ 3 files changed, 40 insertions(+), 5 deletions(-) create mode 100644 spec/mailers/previews/devise_mailer_preview.rb diff --git a/app/views/devise/mailer/reset_password_instructions.html.erb b/app/views/devise/mailer/reset_password_instructions.html.erb index 1e581429..ae3aa1a4 100644 --- a/app/views/devise/mailer/reset_password_instructions.html.erb +++ b/app/views/devise/mailer/reset_password_instructions.html.erb @@ -1,5 +1,10 @@ -

Hello <%= @resource.email %>!

-

Someone has requested a link to change your password. You can do this through the link below.

-

<%= link_to 'Change my password', edit_password_url(@resource, reset_password_token: @token) %>

-

If you didn't request this, please ignore this email.

-

Your password won't change until you access the link above and create a new one.

+

<%= @resource.first_name.present? ? t('hello_name', name: @resource.first_name) : t('hi_there') %>,

+

<%= t('you_requested_to_reset_your_password_use_the_link_below_to_continue') %>:

+

<%= link_to t('change_my_password'), edit_password_url(@resource, reset_password_token: @token) %>

+

<%= t('your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one') %>

+

<%= t('if_you_didnt_request_this_you_can_ignore_this_email') %>

+

+ <%= t('thanks') %>,
+ <%= Docuseal.product_name %> +

+<% content_for(:remove_attribution, true) %> diff --git a/config/locales/i18n.yml b/config/locales/i18n.yml index 7838c04a..c4bd5066 100644 --- a/config/locales/i18n.yml +++ b/config/locales/i18n.yml @@ -867,6 +867,9 @@ en: &en please_confirm_your_email_address_using_the_link_below_: 'Please confirm your email address using the link below:' confirm_email: Confirm email unconfirmed: Unconfirmed + you_requested_to_reset_your_password_use_the_link_below_to_continue: You requested to reset your password. Use the link below to continue + if_you_didnt_request_this_you_can_ignore_this_email: "If you didn't request this, please ignore this email." + your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Your password won't change until you open the link above and set a new one." devise: confirmations: confirmed: Your email address has been successfully confirmed. @@ -1828,6 +1831,9 @@ es: &es please_confirm_your_email_address_using_the_link_below_: 'Por favor, confirma tu dirección de correo electrónico utilizando el enlace a continuación:' confirm_email: Confirmar correo unconfirmed: No confirmado + you_requested_to_reset_your_password_use_the_link_below_to_continue: Solicitaste restablecer tu contraseña. Usa el enlace a continuación para continuar. + if_you_didnt_request_this_you_can_ignore_this_email: "Si no solicitaste esto, puedes ignorar este correo electrónico." + your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Tu contraseña no cambiará hasta que abras el enlace anterior y establezcas una nueva." devise: confirmations: confirmed: Tu dirección de correo electrónico ha sido confirmada correctamente. @@ -2790,6 +2796,9 @@ it: &it please_confirm_your_email_address_using_the_link_below_: 'Conferma il tuo indirizzo email utilizzando il link qui sotto:' confirm_email: Conferma email unconfirmed: Non confermato + you_requested_to_reset_your_password_use_the_link_below_to_continue: Hai richiesto di reimpostare la tua password. Usa il link qui sotto per continuare. + if_you_didnt_request_this_you_can_ignore_this_email: "Se non hai richiesto questo, puoi ignorare questa email." + your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "La tua password non cambierà finché non apri il link sopra e ne imposti una nuova." devise: confirmations: confirmed: Il tuo indirizzo email è stato confermato con successo. @@ -3748,6 +3757,9 @@ fr: &fr please_confirm_your_email_address_using_the_link_below_: 'Veuillez confirmer votre adresse e-mail en utilisant le lien ci-dessous :' confirm_email: "Confirmer l'e-mail" unconfirmed: Non confirmé + you_requested_to_reset_your_password_use_the_link_below_to_continue: Vous avez demandé à réinitialiser votre mot de passe. Utilisez le lien ci-dessous pour continuer. + if_you_didnt_request_this_you_can_ignore_this_email: "Si vous n'avez pas fait cette demande, veuillez ignorer cet e-mail." + your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Votre mot de passe ne changera pas tant que vous n’aurez pas ouvert le lien ci-dessus et défini un nouveau mot de passe." devise: confirmations: confirmed: Votre adresse e-mail a été confirmée avec succès. @@ -4709,6 +4721,9 @@ pt: &pt please_confirm_your_email_address_using_the_link_below_: 'Por favor, confirme seu endereço de e-mail usando o link abaixo:' confirm_email: Confirmar e-mail unconfirmed: Não confirmado + you_requested_to_reset_your_password_use_the_link_below_to_continue: Você solicitou a redefinição da sua senha. Use o link abaixo para continuar. + if_you_didnt_request_this_you_can_ignore_this_email: "Se você não solicitou isso, pode ignorar este e-mail." + your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Sua senha não será alterada até que você abra o link acima e defina uma nova." devise: confirmations: confirmed: Seu endereço de e-mail foi confirmado com sucesso. @@ -5670,6 +5685,9 @@ de: &de please_confirm_your_email_address_using_the_link_below_: 'Bitte bestätigen Sie Ihre E-Mail-Adresse über den folgenden Link:' confirm_email: E-Mail bestätigen unconfirmed: Unbestätigt + you_requested_to_reset_your_password_use_the_link_below_to_continue: Sie haben angefordert, Ihr Passwort zurückzusetzen. Verwenden Sie den untenstehenden Link, um fortzufahren. + if_you_didnt_request_this_you_can_ignore_this_email: "Wenn Sie dies nicht angefordert haben, können Sie diese E-Mail ignorieren." + your_password_wont_change_until_you_open_the_link_above_and_set_a_new_one: "Ihr Passwort wird erst geändert, wenn Sie den obigen Link öffnen und ein neues festlegen." devise: confirmations: confirmed: Ihre E-Mail-Adresse wurde erfolgreich bestätigt. @@ -6992,6 +7010,9 @@ nl: &nl please_confirm_your_email_address_using_the_link_below_: 'Bevestig je e-mailadres via de onderstaande link:' confirm_email: E-mailadres bevestigen 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." devise: confirmations: confirmed: Je e-mailadres is succesvol bevestigd. diff --git a/spec/mailers/previews/devise_mailer_preview.rb b/spec/mailers/previews/devise_mailer_preview.rb new file mode 100644 index 00000000..ca1373ae --- /dev/null +++ b/spec/mailers/previews/devise_mailer_preview.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class DeviseMailerPreview < ActionMailer::Preview + def reset_password_instructions + user = User.first + user.send_reset_password_instructions + Devise::Mailer.reset_password_instructions(user, user.reset_password_token) + end +end From 5934bdec555fba6c8b5660f97d682d1d6fc2b188 Mon Sep 17 00:00:00 2001 From: Alex Turchyn Date: Tue, 2 Dec 2025 01:16:42 +0200 Subject: [PATCH 04/14] use set_reset_password_token --- spec/mailers/previews/devise_mailer_preview.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/mailers/previews/devise_mailer_preview.rb b/spec/mailers/previews/devise_mailer_preview.rb index ca1373ae..3565ce97 100644 --- a/spec/mailers/previews/devise_mailer_preview.rb +++ b/spec/mailers/previews/devise_mailer_preview.rb @@ -3,7 +3,7 @@ class DeviseMailerPreview < ActionMailer::Preview def reset_password_instructions user = User.first - user.send_reset_password_instructions - Devise::Mailer.reset_password_instructions(user, user.reset_password_token) + token = user.send(:set_reset_password_token) + Devise::Mailer.reset_password_instructions(user, token) end end From f1eaa77092fd039f415da07af04b05a6cd9827d4 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 2 Dec 2025 14:25:45 +0200 Subject: [PATCH 05/14] password reset i18n --- app/controllers/passwords_controller.rb | 2 ++ config/initializers/devise.rb | 5 ++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/controllers/passwords_controller.rb b/app/controllers/passwords_controller.rb index 60de5b12..e166da35 100644 --- a/app/controllers/passwords_controller.rb +++ b/app/controllers/passwords_controller.rb @@ -5,6 +5,8 @@ class PasswordsController < Devise::PasswordsController skip_before_action :require_no_authentication, only: %i[edit update] # rubocop:enable Rails/LexicallyScopedActionFilter + around_action :with_browser_locale + class Current < ActiveSupport::CurrentAttributes attribute :user end diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 1329ce87..efa97448 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -17,7 +17,10 @@ module Devise assign_message_metadata(action, record) initialize_from_record(record) - mail(headers_for(action, opts), &) + + I18n.with_locale(record.account.locale) do + mail(headers_for(action, opts), &) + end end end end From e92fc0d3e195f0f08636bdbcac9ca9f7a6a35bc5 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 3 Dec 2025 10:33:22 +0200 Subject: [PATCH 06/14] adjust mobile field types --- app/javascript/template_builder/mobile_fields.vue | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/javascript/template_builder/mobile_fields.vue b/app/javascript/template_builder/mobile_fields.vue index 004051e4..bc88491d 100644 --- a/app/javascript/template_builder/mobile_fields.vue +++ b/app/javascript/template_builder/mobile_fields.vue @@ -49,7 +49,12 @@ -