From 9356247ef01a52a28266f6e913182f2ac1bb15b5 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Tue, 9 Jan 2024 01:25:11 +0200 Subject: [PATCH] add signer user forms translations --- app/controllers/application_controller.rb | 17 ++ app/controllers/start_form_controller.rb | 1 + app/controllers/submit_form_controller.rb | 1 + app/javascript/submission_form/i18n.js | 2 +- app/views/start_form/completed.html.erb | 12 +- app/views/start_form/show.html.erb | 16 +- app/views/submit_form/archived.html.erb | 4 +- app/views/submit_form/completed.html.erb | 16 +- config/application.rb | 2 +- config/environments/development.rb | 2 +- config/locales/en.yml | 215 ++++++++++++++++++++-- 11 files changed, 250 insertions(+), 38 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 16aa80fa..30e0a488 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true class ApplicationController < ActionController::Base + BROWSER_LOCALE_REGEXP = /\A\w{2}(?:-\w{2})?/ + include ActiveStorage::SetCurrent include Pagy::Backend @@ -32,6 +34,21 @@ class ApplicationController < ActionController::Base private + def with_browser_locale(&) + locale = request.env['HTTP_ACCEPT_LANGUAGE'].to_s[BROWSER_LOCALE_REGEXP].to_s + + locale = + if locale.starts_with?('en-') && locale != 'en-US' + 'en-GB' + else + locale.split('-').first.presence || 'en-GB' + end + + locale = 'en-GB' unless I18n.locale_available?(locale) + + I18n.with_locale(locale, &) + end + def sign_in_for_demo sign_in(User.active.order('random()').take) unless signed_in? end diff --git a/app/controllers/start_form_controller.rb b/app/controllers/start_form_controller.rb index bad00328..d19c69b1 100644 --- a/app/controllers/start_form_controller.rb +++ b/app/controllers/start_form_controller.rb @@ -6,6 +6,7 @@ class StartFormController < ApplicationController skip_before_action :authenticate_user! skip_authorization_check + around_action :with_browser_locale, only: %i[show completed] before_action :load_template def show diff --git a/app/controllers/submit_form_controller.rb b/app/controllers/submit_form_controller.rb index a9ae111b..1564cfc6 100644 --- a/app/controllers/submit_form_controller.rb +++ b/app/controllers/submit_form_controller.rb @@ -3,6 +3,7 @@ class SubmitFormController < ApplicationController layout 'form' + around_action :with_browser_locale, only: %i[show completed] skip_before_action :authenticate_user! skip_authorization_check diff --git a/app/javascript/submission_form/i18n.js b/app/javascript/submission_form/i18n.js index 83c16850..19b94434 100644 --- a/app/javascript/submission_form/i18n.js +++ b/app/javascript/submission_form/i18n.js @@ -453,7 +453,7 @@ const he = { use_international_format: 'השתמש בפורמט בינלאומי: +1xxx', six_digits_code: 'קוד משתמש שש ספרות', change_phone_number: 'שינוי מספר טלפון', - sending: 'שולח...', + sending: 'שולח', resend_code: 'שלח מחדש קוד', verification_code_has_been_resent: 'קוד האימות נשלח מחדש בSMS', please_fill_all_required_fields: 'אנא מלא את כל השדות הדרושים', diff --git a/app/views/start_form/completed.html.erb b/app/views/start_form/completed.html.erb index 145f2ba1..e78bc48f 100644 --- a/app/views/start_form/completed.html.erb +++ b/app/views/start_form/completed.html.erb @@ -10,23 +10,23 @@ <%= svg_icon('writing_sign', class: 'w-10 h-10') %>
-

<%= @submitter.submission.template.name %>

-

Signed on <%= l(@submitter.completed_at.to_date, format: :long, locale: @submitter.submission.template.account.locale) %>

+

<%= @submitter.submission.template.name %>

+

<%= t('signed_on_time', time: l(@submitter.completed_at.to_date, format: :long)) %>

-
- Form has been submitted already +
+ <%= t('form_has_been_submitted_already') %>
<% if Accounts.can_send_emails?(@submitter.submission.template.account) %>
- <%= button_to button_title(title: 'Send copy to Email', disabled_with: 'Sending', icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'base-button w-full' %> + <%= button_to button_title(title: t('send_copy_to_email'), disabled_with: t('sending'), icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'base-button w-full' %>
<% end %> <% if @template.submitters.to_a.size == 1 %>
- <%= button_to button_title(title: 'Resubmit', disabled_with: 'Resubmit', icon: svg_icon('reload', class: 'w-6 h-6')), start_form_path(@template.slug), params: { submitter: { email: params[:email] }, resubmit: @submitter.slug }, method: :put, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %> + <%= button_to button_title(title: t('resubmit'), disabled_with: t('resubmit'), icon: svg_icon('reload', class: 'w-6 h-6')), start_form_path(@template.slug), params: { submitter: { email: params[:email] }, resubmit: @submitter.slug }, method: :put, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %>
<% end %>
diff --git a/app/views/start_form/show.html.erb b/app/views/start_form/show.html.erb index a9a505cb..cb46e97f 100644 --- a/app/views/start_form/show.html.erb +++ b/app/views/start_form/show.html.erb @@ -4,7 +4,7 @@
<%= render 'banner' %> <% unless @template.archived_at? %> -

You have been invited to submit a form

+

<%= t('you_have_been_invited_to_submit_a_form') %>

<% end %>
@@ -15,9 +15,9 @@

<%= @template.name %>

<% if @template.archived_at? %> -

Form has been deleted by <%= @template.account.name %>.

+

<%= t('form_has_been_deleted_by_html', name: @template.account.name) %>

<% else %> -

Invited by <%= @template.account.name %>

+

<%= t('invited_by_html', name: @template.account.name) %>

<% end %>
@@ -25,13 +25,13 @@ <% unless @template.archived_at? %> <%= form_for @submitter, url: start_form_path(@template.slug), data: { turbo_frame: :_top }, method: :put, html: { class: 'space-y-4', onsubmit: 'event.submitter.disabled = true' } do |f| %> -
- <%= f.label :email, class: 'label' %> - <%= f.email_field :email, value: current_user&.email || params[:email] || @submitter.email, required: true, class: 'base-input', placeholder: 'Provide your email to start' %> +
+ <%= f.label :email, t('email'), class: 'label' %> + <%= f.email_field :email, value: current_user&.email || params[:email] || @submitter.email, required: true, class: 'base-input', placeholder: t('provide_your_email_to_start') %> <%= @error_message %>
-
- <%= f.button button_title(title: 'Start', disabled_with: 'Starting'), class: 'base-button' %> +
+ <%= f.button button_title(title: t('start'), disabled_with: t('starting')), class: 'base-button' %>
<% end %> <% end %> diff --git a/app/views/submit_form/archived.html.erb b/app/views/submit_form/archived.html.erb index a4e6e821..dec90d96 100644 --- a/app/views/submit_form/archived.html.erb +++ b/app/views/submit_form/archived.html.erb @@ -9,9 +9,9 @@
<%= svg_icon('writing_sign', class: 'w-10 h-10') %>
-
+

<%= @submitter.submission.template.name %>

-

Form has been deleted by <%= @submitter.submission.template.account.name %>.

+

<%= t('form_has_been_deleted_by', name: @submitter.submission.template.account.name %>

diff --git a/app/views/submit_form/completed.html.erb b/app/views/submit_form/completed.html.erb index 3dc8ce2c..39fd6978 100644 --- a/app/views/submit_form/completed.html.erb +++ b/app/views/submit_form/completed.html.erb @@ -10,17 +10,17 @@ <%= svg_icon('writing_sign', class: 'w-10 h-10') %>
-

<%= @submitter.submission.template.name %>

-

Signed on <%= l(@submitter.completed_at.to_date, format: :long, locale: @submitter.submission.template.account.locale) %>

+

<%= @submitter.submission.template.name %>

+

<%= t('signed_on_time', time: l(@submitter.completed_at.to_date, format: :long)) %>

<% if Accounts.can_send_emails?(@submitter.submission.template.account) && @submitter.email.present? %> - <%= button_to button_title(title: 'Send copy to Email', disabled_with: 'Sending', icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %> + <%= button_to button_title(title: t('send_copy_to_email'), disabled_with: t('sending'), icon: svg_icon('mail_forward', class: 'w-6 h-6')), send_submission_email_index_path, params: { submitter_slug: @submitter.slug }, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %> <% if @submitter.submission.template.submitters.size != 1 %> -
OR
+
<%= t('or') %>
<% else %>
<% end %> @@ -28,18 +28,18 @@ <%= svg_icon('download', class: 'w-6 h-6') %> - Download documents + <%= t('download_documents') %>
<% if @submitter.submission.template.submitters.size == 1 %> -
OR
+
<%= t('or') %>
- <%= button_to button_title(title: 'Resubmit', disabled_with: 'Resubmit', icon: svg_icon('reload', class: 'w-6 h-6')), start_form_path(@submitter.submission.template.slug), params: { submitter: { email: @submitter.email, phone: @submitter.phone, name: @submitter.name }, resubmit: @submitter.slug }, method: :put, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %> + <%= button_to button_title(title: t('resubmit'), disabled_with: t('resubmit'), icon: svg_icon('reload', class: 'w-6 h-6')), start_form_path(@submitter.submission.template.slug), params: { submitter: { email: @submitter.email, phone: @submitter.phone, name: @submitter.name }, resubmit: @submitter.slug }, method: :put, form: { onsubmit: 'event.submitter.disabled = true' }, class: 'white-button w-full' %>
<% end %> diff --git a/config/application.rb b/config/application.rb index b48291c7..01bd3d68 100644 --- a/config/application.rb +++ b/config/application.rb @@ -22,7 +22,7 @@ module DocuSeal config.active_storage.routes_prefix = '' - config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE pt] + config.i18n.available_locales = %i[en en-US en-GB es-ES fr-FR pt-PT de-DE es it de fr pl uk cs pt he] config.i18n.fallbacks = [:en] config.exceptions_app = ->(env) { ErrorsController.action(:show).call(env) } diff --git a/config/environments/development.rb b/config/environments/development.rb index 127c1417..90bcaa3c 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -82,7 +82,7 @@ Rails.application.configure do ActiveRecord::Encryption.configure(**config.active_record.encryption) # Raises error for missing translations. - # config.i18n.raise_on_missing_translations = true + config.i18n.raise_on_missing_translations = true # Annotate rendered view with file names. # config.action_view.annotate_rendered_view_with_filenames = true diff --git a/config/locales/en.yml b/config/locales/en.yml index e8d944c9..4d03c9f6 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,29 +1,222 @@ -en-US: +en: &en + email: Email digitally_signed_by: Digitally signed by role: Role + provide_your_email_to_start: Provide your email to start + start: Start + starting: Starting + form_has_been_deleted_by_html: 'Form has been deleted by %{name}.' + invited_by_html: 'Invited by %{name}' + you_have_been_invited_to_submit_a_form: You have been invited to submit a form + signed_on_time: 'Signed on %{time}' + form_has_been_submitted_already: Form has been submitted already + send_copy_to_email: Send copy to Email + sending: Sending + resubmit: Resubmit + form_has_been_deleted_by_html: 'Form has been deleted by %{name}.' + or: or + download_documents: Download documents + downloading: Downloading + +es: &es + digitally_signed_by: Firmado digitalmente por + role: Rol + email: Correo electrónico + digitally_signed_by: Firmado digitalmente por + role: Rol + provide_your_email_to_start: Proporciona tu correo electrónico para comenzar + start: Comenzar + starting: Comenzando + form_has_been_deleted_by_html: 'El formulario ha sido eliminado por %{name}.' + invited_by_html: 'Invitado por %{name}' + you_have_been_invited_to_submit_a_form: Has sido invitado/a a enviar un formulario + signed_on_time: 'Firmado en %{time}' + form_has_been_submitted_already: El formulario ya ha sido enviado + send_copy_to_email: Enviar copia a Correo electrónico + sending: Enviando + resubmit: Reenviar + or: o + download_documents: Descargar documentos + downloading: Descargando + +it: + digitally_signed_by: Signé numériquement par + role: Rôle + email: Email + digitally_signed_by: Firmato digitalmente da + role: Ruolo + provide_your_email_to_start: Fornisci la tua email per iniziare + start: Inizia + starting: Iniziando + 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}' + form_has_been_submitted_already: Il modulo è già stato inviato + send_copy_to_email: Invia copia via email + sending: Inviando + resubmit: Reinvia + or: o + download_documents: Scarica documenti + downloading: Scaricamento + +fr: &fr + email: Email + digitally_signed_by: Signé numériquement par + role: Rôle + provide_your_email_to_start: Entrez votre email pour commencer + start: Démarrer + starting: Démarrage + form_has_been_deleted_by_html: 'Le formulaire a été supprimé par %{name}.' + invited_by_html: 'Invité par %{name}' + you_have_been_invited_to_submit_a_form: Vous avez été invité à soumettre un formulaire + signed_on_time: 'Signé à %{time}' + form_has_been_submitted_already: Le formulaire a déjà été soumis + send_copy_to_email: Envoyer une copie par email + sending: Envoi + resubmit: Soumettre à nouveau + or: ou + download_documents: Télécharger des documents + downloading: Téléchargement + +pt: &pt + digitally_signed_by: Assinado digitalmente por + role: Função + email: Email + digitally_signed_by: Assinado digitalmente por + role: Função + provide_your_email_to_start: Forneça o seu email para começar + start: Iniciar + starting: Iniciando + form_has_been_deleted_by_html: 'O formulário foi eliminado por %{name}.' + invited_by_html: 'Convidado por %{name}' + you_have_been_invited_to_submit_a_form: Foi convidado a submeter um formulário + signed_on_time: 'Assinado em %{time}' + form_has_been_submitted_already: O formulário já foi submetido + send_copy_to_email: Enviar cópia para Email + sending: Enviando + resubmit: Reenviar + or: ou + download_documents: Baixar documentos + downloading: Baixando + +de: &de + digitally_signed_by: Digital signiert von + role: Rolle + email: E-Mail + digitally_signed_by: Digital unterzeichnet von + role: Rolle + provide_your_email_to_start: Gib deine E-Mail-Adresse ein, um zu starten + start: Starten + starting: Starten + form_has_been_deleted_by_html: 'Das Formular wurde von %{name} gelöscht.' + invited_by_html: 'Eingeladen von %{name}' + you_have_been_invited_to_submit_a_form: Du wurdest eingeladen, ein Formular einzureichen + signed_on_time: 'Unterzeichnet um %{time}' + form_has_been_submitted_already: Formular wurde bereits eingereicht + send_copy_to_email: Kopie per E-Mail senden + sending: Senden + resubmit: Erneut einreichen + or: oder + download_documents: Dokumente herunterladen + downloading: Herunterladen + +pl: + email: Email + digitally_signed_by: Podpis cyfrowy przez + role: Rola + provide_your_email_to_start: Podaj swój adres email, aby rozpocząć + start: Rozpocznij + starting: Rozpoczynanie + form_has_been_deleted_by_html: 'Formularz został usunięty przez %{name}.' + invited_by_html: 'Zaproszony przez %{name}' + you_have_been_invited_to_submit_a_form: Zostałeś zaproszony do przesłania formularza + signed_on_time: 'Podpisano %{time}' + form_has_been_submitted_already: Formularz został już przesłany + send_copy_to_email: Wyślij kopię na Email + sending: Wysyłanie + resubmit: Prześlij ponownie + or: lub + download_documents: Pobierz dokumenty + downloading: Pobieranie + +uk: + email: Email + digitally_signed_by: Цифровий підпис від + role: Роль + provide_your_email_to_start: Введіть свій email, щоб почати + start: Почати + starting: Початок + form_has_been_deleted_by_html: 'Форму було видалено користувачем %{name}.' + invited_by_html: 'Запрошений користувачем %{name}' + you_have_been_invited_to_submit_a_form: Вас запросили подати форму + signed_on_time: 'Підписаний %{time}' + form_has_been_submitted_already: Форма вже була подана + send_copy_to_email: Надіслати копію на Email + sending: Надсилання + resubmit: Подати знову + or: або + download_documents: Завантажити документи + downloading: Завантаження + +cs: + email: Email + digitally_signed_by: Digitálně podepsáno uživatelem + role: Role + provide_your_email_to_start: Zadejte svůj email pro zahájení + start: Zahájit + starting: Zahajování + form_has_been_deleted_by_html: 'Formulář byl smazán uživatelem %{name}.' + invited_by_html: 'Pozván uživatelem %{name}' + you_have_been_invited_to_submit_a_form: Byli jste pozváni k odeslání formuláře + signed_on_time: 'Podepsáno %{time}' + form_has_been_submitted_already: Formulář již byl odeslán + send_copy_to_email: Odeslat kopii na Email + sending: Odesílání + resubmit: Odeslat znovu + or: nebo + download_documents: Stáhnout dokumenty + downloading: Stahování + +he: + email: דוא"ל + digitally_signed_by: חתום דיגיטלית על ידי + role: תפקיד + provide_your_email_to_start: ספק את כתובת הדוא"ל שלך כדי להתחיל + start: התחל + starting: מתחיל + form_has_been_deleted_by_html: 'הטופס נמחק על ידי %{name}.' + invited_by_html: 'הוזמן על ידי %{name}' + you_have_been_invited_to_submit_a_form: הוזמנת להגיש טופס + signed_on_time: 'חתום ב-%{time}' + form_has_been_submitted_already: הטופס כבר נשלח + send_copy_to_email: שלח עותק לדוא"ל + sending: שולח + resubmit: שלח מחדש + or: או + download_documents: הורד מסמכים + downloading: מוריד + +en-US: + <<: *en date: formats: default: "%m/%d/%Y" en-GB: - digitally_signed_by: Digitally signed by - role: Role + <<: *en date: formats: default: "%d/%m/%Y" es-ES: - digitally_signed_by: Firmado digitalmente por - role: Rol + <<: *es fr-FR: - digitally_signed_by: Signé numériquement par - role: Rôle + <<: *fr pt-PT: - digitally_signed_by: Assinado digitalmente por - role: Função + <<: *pt de-DE: - digitally_signed_by: Digital signiert von - role: Rolle + <<: *de