fix i18n
This commit is contained in:
committed by
Oleksandr Turchyn
parent
c7b08e8d30
commit
37bb987e3e
@@ -33,7 +33,9 @@ class AccountsController < ApplicationController
|
|||||||
|
|
||||||
Docuseal.refresh_default_url_options!
|
Docuseal.refresh_default_url_options!
|
||||||
|
|
||||||
redirect_to settings_account_path, notice: I18n.t('account_information_has_been_updated')
|
with_locale do
|
||||||
|
redirect_to settings_account_path, notice: I18n.t('account_information_has_been_updated')
|
||||||
|
end
|
||||||
rescue ActiveRecord::RecordInvalid
|
rescue ActiveRecord::RecordInvalid
|
||||||
render :show, status: :unprocessable_entity
|
render :show, status: :unprocessable_entity
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ class ApplicationController < ActionController::Base
|
|||||||
|
|
||||||
check_authorization unless: :devise_controller?
|
check_authorization unless: :devise_controller?
|
||||||
|
|
||||||
before_action :set_locale
|
around_action :with_locale
|
||||||
before_action :sign_in_for_demo, if: -> { Docuseal.demo? }
|
before_action :sign_in_for_demo, if: -> { Docuseal.demo? }
|
||||||
before_action :maybe_redirect_to_setup, unless: :signed_in?
|
before_action :maybe_redirect_to_setup, unless: :signed_in?
|
||||||
before_action :authenticate_user!, unless: :devise_controller?
|
before_action :authenticate_user!, unless: :devise_controller?
|
||||||
@@ -52,18 +52,18 @@ class ApplicationController < ActionController::Base
|
|||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def set_locale
|
def with_locale(&)
|
||||||
I18n.locale =
|
return yield unless current_account
|
||||||
if Rails.env.development? && params[:locale].present?
|
|
||||||
params[:locale]
|
locale = params[:lang].presence if Rails.env.development?
|
||||||
elsif current_user && current_account.locale.present?
|
locale ||= current_account.locale
|
||||||
current_account.locale.to_sym
|
|
||||||
else
|
I18n.with_locale(locale, &)
|
||||||
I18n.default_locale
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def with_browser_locale(&)
|
def with_browser_locale(&)
|
||||||
|
return yield if I18n.locale != :'en-US'
|
||||||
|
|
||||||
locale = params[:lang].presence
|
locale = params[:lang].presence
|
||||||
locale ||= request.env['HTTP_ACCEPT_LANGUAGE'].to_s[BROWSER_LOCALE_REGEXP].to_s
|
locale ||= request.env['HTTP_ACCEPT_LANGUAGE'].to_s[BROWSER_LOCALE_REGEXP].to_s
|
||||||
|
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ class SetupController < ApplicationController
|
|||||||
def account_params
|
def account_params
|
||||||
return {} unless params[:account]
|
return {} unless params[:account]
|
||||||
|
|
||||||
params.require(:account).permit(:name, :timezone)
|
params.require(:account).permit(:name, :timezone, :locale)
|
||||||
end
|
end
|
||||||
|
|
||||||
def encrypted_config_params
|
def encrypted_config_params
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ safeRegisterElement('submission-form', class extends HTMLElement {
|
|||||||
isDemo: this.dataset.isDemo === 'true',
|
isDemo: this.dataset.isDemo === 'true',
|
||||||
attribution: this.dataset.attribution !== 'false',
|
attribution: this.dataset.attribution !== 'false',
|
||||||
scrollPadding: this.dataset.scrollPadding || '-80px',
|
scrollPadding: this.dataset.scrollPadding || '-80px',
|
||||||
|
language: this.dataset.language,
|
||||||
dryRun: this.dataset.dryRun === 'true',
|
dryRun: this.dataset.dryRun === 'true',
|
||||||
expand: ['true', 'false'].includes(this.dataset.expand) ? this.dataset.expand === 'true' : null,
|
expand: ['true', 'false'].includes(this.dataset.expand) ? this.dataset.expand === 'true' : null,
|
||||||
withSignatureId: this.dataset.withSignatureId === 'true',
|
withSignatureId: this.dataset.withSignatureId === 'true',
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ class Template < ApplicationRecord
|
|||||||
attribute :preferences, :string, default: -> { {} }
|
attribute :preferences, :string, default: -> { {} }
|
||||||
attribute :fields, :string, default: -> { [] }
|
attribute :fields, :string, default: -> { [] }
|
||||||
attribute :schema, :string, default: -> { [] }
|
attribute :schema, :string, default: -> { [] }
|
||||||
attribute :submitters, :string, default: -> { [{ name: DEFAULT_SUBMITTER_NAME, uuid: SecureRandom.uuid }] }
|
attribute :submitters, :string, default: -> { [{ name: I18n.t(:first_party), uuid: SecureRandom.uuid }] }
|
||||||
attribute :slug, :string, default: -> { SecureRandom.base58(14) }
|
attribute :slug, :string, default: -> { SecureRandom.base58(14) }
|
||||||
attribute :source, :string, default: 'native'
|
attribute :source, :string, default: 'native'
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<%= ff.label :locale, t('language'), class: 'label' %>
|
<%= ff.label :locale, t('language'), class: 'label' %>
|
||||||
<%= ff.select :locale, options_for_select(controller.class::LOCALE_OPTIONS.invert, current_account.locale), {}, class: 'base-select' %>
|
<%= ff.select :locale, options_for_select(AccountsController::LOCALE_OPTIONS.invert, current_account.locale), {}, class: 'base-select' %>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -2,19 +2,19 @@
|
|||||||
<td class="flex items-center space-x-1">
|
<td class="flex items-center space-x-1">
|
||||||
<%= svg_icon('discount_check_filled', class: 'w-6 h-6 text-green-500') %>
|
<%= svg_icon('discount_check_filled', class: 'w-6 h-6 text-green-500') %>
|
||||||
<span class="flex items-center">
|
<span class="flex items-center">
|
||||||
DocuSeal Trusted Signature
|
<%= t('docuseal_trusted_signature') %>
|
||||||
<div class="tooltip ml-1" data-tip="Sign documents with trusted certificate provided by DocuSeal. Your documents and data are never shared with DocuSeal. PDF checksum is provided to generate a trusted signature.">
|
<div class="tooltip ml-1" data-tip="<%= t('sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature') %>">
|
||||||
<%= svg_icon('circle_question', class: 'w-4 h-4 stroke-1') %>
|
<%= svg_icon('circle_question', class: 'w-4 h-4 stroke-1') %>
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="<%= "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premise" }.to_query}" %>" class="btn btn-neutral btn-sm text-white">
|
<a href="<%= "#{Docuseal::CLOUD_URL}/sign_up?#{{ redir: "#{Docuseal::CONSOLE_URL}/on_premise" }.to_query}" %>" class="btn btn-neutral btn-sm text-white">
|
||||||
Upgrade to Pro
|
<%= t('unlock_with_docuseal_pro') %>
|
||||||
</a>
|
</a>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<div class="tooltip" data-tip="Upgrade to Pro">
|
<div class="tooltip" data-tip="<%= t('unlock_with_docuseal_pro') %>">
|
||||||
<%= button_to settings_esign_path, method: :put, params: { name: Docuseal::AATL_CERT_NAME }, class: 'btn btn-outline btn-neutral btn-xs whitespace-nowrap', title: t('make_default'), disabled: true do %>
|
<%= button_to settings_esign_path, method: :put, params: { name: Docuseal::AATL_CERT_NAME }, class: 'btn btn-outline btn-neutral btn-xs whitespace-nowrap', title: t('make_default'), disabled: true do %>
|
||||||
<%= t('make_default') %>
|
<%= t('make_default') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@@ -56,6 +56,12 @@
|
|||||||
<%= ff.text_field :value, required: true, class: 'base-input' %>
|
<%= ff.text_field :value, required: true, class: 'base-input' %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<%= fields_for @account do |ff| %>
|
||||||
|
<div class="form-control">
|
||||||
|
<%= ff.label :locale, t('language'), class: 'label' %>
|
||||||
|
<%= ff.select :locale, options_for_select(AccountsController::LOCALE_OPTIONS.invert, @account.locale), {}, class: 'base-select' %>
|
||||||
|
</div>
|
||||||
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<div class="form-control">
|
<div class="form-control">
|
||||||
<%= f.button button_title, class: 'base-button' %>
|
<%= f.button button_title, class: 'base-button' %>
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
<label tabindex="0" class="cursor-pointer bg-base-content text-purple-300 rounded-full p-2 w-9 justify-center flex">
|
<label tabindex="0" class="cursor-pointer bg-base-content text-purple-300 rounded-full p-2 w-9 justify-center flex">
|
||||||
<span class="text-sm align-text-top"><%= current_user.initials %></span>
|
<span class="text-sm align-text-top"><%= current_user.initials %></span>
|
||||||
</label>
|
</label>
|
||||||
<ul tabindex="0" class="z-10 dropdown-content p-2 mt-2 shadow menu text-base bg-base-100 rounded-box w-52 text-right">
|
<ul tabindex="0" class="z-10 dropdown-content p-2 mt-2 shadow menu text-base bg-base-100 rounded-box min-w-[160px] text-right">
|
||||||
<li>
|
<li>
|
||||||
<%= link_to settings_profile_index_path, class: 'flex items-center' do %>
|
<%= link_to settings_profile_index_path, class: 'flex items-center' do %>
|
||||||
<%= svg_icon('adjustments', class: 'w-5 h-5 flex-shrink-0 stroke-2') %>
|
<%= svg_icon('adjustments', class: 'w-5 h-5 flex-shrink-0 stroke-2') %>
|
||||||
@@ -45,14 +45,14 @@
|
|||||||
<li>
|
<li>
|
||||||
<%= link_to settings_esign_path, class: 'flex items-center' do %>
|
<%= link_to settings_esign_path, class: 'flex items-center' do %>
|
||||||
<%= svg_icon('zoom_check', class: 'w-5 h-5 flex-shrink-0 stroke-2') %>
|
<%= svg_icon('zoom_check', class: 'w-5 h-5 flex-shrink-0 stroke-2') %>
|
||||||
<span class="mr-1"><%= t('verify_pdf') %></span>
|
<span class="mr-1 whitespace-nowrap"><%= t('verify_pdf') %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
<li>
|
<li>
|
||||||
<%= button_to destroy_user_session_path, method: :delete, data: { turbo: false }, class: 'flex items-center' do %>
|
<%= button_to destroy_user_session_path, method: :delete, data: { turbo: false }, class: 'flex items-center' do %>
|
||||||
<%= svg_icon('logout', class: 'w-5 h-5 flex-shrink-0 stroke-2 mr-2 inline') %>
|
<%= svg_icon('logout', class: 'w-5 h-5 flex-shrink-0 stroke-2 mr-2 inline') %>
|
||||||
<span class="mr-1"><%= t('sign_out') %></span>
|
<span class="mr-1 whitespace-nowrap"><%= t('sign_out') %></span>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<% options.each_with_index do |(label, value), index| %>
|
<% options.each_with_index do |(label, value), index| %>
|
||||||
<div>
|
<div>
|
||||||
<%= radio_button_tag 'option', value, value == 'email', class: 'peer hidden', data: { action: 'change:toggle-visible#trigger' } %>
|
<%= radio_button_tag 'option', value, value == 'email', class: 'peer hidden', data: { action: 'change:toggle-visible#trigger' } %>
|
||||||
<label for="option_<%= value %>" class="block bg-base-200 text-sm font-semibold whitespace-nowrap py-1.5 px-4 peer-checked:bg-base-300 <%= 'hidden sm:inline-block' if value == 'list' %> <%= 'rounded-l-3xl' if index.zero? %> <%= 'rounded-r-3xl sm:rounded-r-none' if value == 'detailed' %> <%= 'rounded-r-3xl' if index == options.size - 1 %>">
|
<label for="option_<%= value %>" class="block bg-base-200 md:min-w-[112px] text-sm font-semibold whitespace-nowrap py-1.5 px-4 peer-checked:bg-base-300 <%= 'hidden sm:inline-block' if value == 'list' %> <%= 'rounded-l-3xl' if index.zero? %> <%= 'rounded-r-3xl sm:rounded-r-none' if value == 'detailed' %> <%= 'rounded-r-3xl' if index == options.size - 1 %>">
|
||||||
<%= label %>
|
<%= label %>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -153,7 +153,7 @@
|
|||||||
<% if submitter&.declined_at? %>
|
<% if submitter&.declined_at? %>
|
||||||
<div class="flex items-center space-x-1 mt-1">
|
<div class="flex items-center space-x-1 mt-1">
|
||||||
<span>
|
<span>
|
||||||
<%= t('Reason') %>:
|
<%= t('reason') %>:
|
||||||
<%= simple_format(h(submitter.submission_events.find_by(event_type: :decline_form).data['reason'])) %>
|
<%= simple_format(h(submitter.submission_events.find_by(event_type: :decline_form).data['reason'])) %>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid created_at], methods: %i[url filename content_type]) %>
|
<% data_attachments = attachments_index.values.select { |e| e.record_id == submitter.id }.to_json(only: %i[uuid created_at], methods: %i[url filename content_type]) %>
|
||||||
<% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| f['submitter_uuid'] == submitter.uuid }.to_json %>
|
<% data_fields = (submitter.submission.template_fields || submitter.submission.template.fields).select { |f| f['submitter_uuid'] == submitter.uuid }.to_json %>
|
||||||
<% invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %>
|
<% invite_submitters = (submitter.submission.template_submitters || submitter.submission.template.submitters).select { |s| s['invite_by_uuid'] == submitter.uuid && submitter.submission.submitters.none? { |e| e.uuid == s['uuid'] } }.to_json %>
|
||||||
<submission-form data-is-demo="<%= Docuseal.demo? %>" data-require-signing-reason="<%= configs[:require_signing_reason] %>" data-with-signature-id="<%= configs[:with_signature_id] %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'].presence || submitter.submission.template.preferences['completed_redirect_url'] %>" data-completed-message="<%= (configs[:completed_message]&.compact_blank.presence || submitter.submission.template.preferences['completed_message'] || {}).to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-invite-submitters="<%= invite_submitters %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>" data-remember-signature="<%= configs[:prefill_signature] %>" data-dry-run="<%= local_assigns[:dry_run] %>" data-expand="<%= local_assigns[:expand] %>" data-scroll-padding="<%= local_assigns[:scroll_padding] %>"></submission-form>
|
<submission-form data-is-demo="<%= Docuseal.demo? %>" data-require-signing-reason="<%= configs[:require_signing_reason] %>" data-with-signature-id="<%= configs[:with_signature_id] %>" data-with-confetti="<%= configs[:with_confetti] %>" data-completed-redirect-url="<%= submitter.preferences['completed_redirect_url'].presence || submitter.submission.template.preferences['completed_redirect_url'] %>" data-completed-message="<%= (configs[:completed_message]&.compact_blank.presence || submitter.submission.template.preferences['completed_message'] || {}).to_json %>" data-completed-button="<%= configs[:completed_button].to_json %>" data-go-to-last="<%= submitter.preferences.key?('go_to_last') ? submitter.preferences['go_to_last'] : submitter.opened_at? %>" data-submitter="<%= submitter.to_json(only: %i[uuid slug name phone email]) %>" data-can-send-email="<%= Accounts.can_send_emails?(submitter.submission.account) %>" data-invite-submitters="<%= invite_submitters %>" data-attachments="<%= data_attachments %>" data-fields="<%= data_fields %>" data-values="<%= submitter.values.to_json %>" data-with-typed-signature="<%= configs[:with_typed_signature] %>" data-previous-signature-value="<%= local_assigns[:signature_attachment]&.uuid %>" data-remember-signature="<%= configs[:prefill_signature] %>" data-dry-run="<%= local_assigns[:dry_run] %>" data-expand="<%= local_assigns[:expand] %>" data-scroll-padding="<%= local_assigns[:scroll_padding] %>" data-language="<%= I18n.locale.to_s.split('-').first %>"></submission-form>
|
||||||
|
|||||||
@@ -57,8 +57,8 @@
|
|||||||
<% if submitter.completed_at? %>
|
<% if submitter.completed_at? %>
|
||||||
<form onsubmit="event.preventDefault()" class="flex-1 md:flex-none">
|
<form onsubmit="event.preventDefault()" class="flex-1 md:flex-none">
|
||||||
<button onclick="event.stopPropagation()" class="w-full md:w-fit">
|
<button onclick="event.stopPropagation()" class="w-full md:w-fit">
|
||||||
<download-button data-src="<%= submitter_download_index_path(submitter.slug) %>" class="btn btn-sm btn-neutral text-white w-full md:w-40">
|
<download-button data-src="<%= submitter_download_index_path(submitter.slug) %>" class="btn btn-sm btn-neutral text-white w-full md:w-36">
|
||||||
<span class="flex items-center justify-center space-x-1 md:space-x-2" data-target="download-button.defaultButton">
|
<span class="flex items-center justify-center space-x-1 <%= 'md:space-x-2' if t('download').length < 11 %>" data-target="download-button.defaultButton">
|
||||||
<%= svg_icon('download', class: 'w-5 h-5 stroke-2') %>
|
<%= svg_icon('download', class: 'w-5 h-5 stroke-2') %>
|
||||||
<span class="inline"><%= t('download') %></span>
|
<span class="inline"><%= t('download') %></span>
|
||||||
</span>
|
</span>
|
||||||
@@ -72,16 +72,18 @@
|
|||||||
<% elsif !submission.archived_at? && !template.archived_at? && !submission.expired? && !submitter.declined_at? %>
|
<% elsif !submission.archived_at? && !template.archived_at? && !submission.expired? && !submitter.declined_at? %>
|
||||||
<% if current_user.email == submitter.email %>
|
<% if current_user.email == submitter.email %>
|
||||||
<form data-turbo="false" method="get" action="<%= submit_form_url(slug: submitter.slug) %>" class="flex-1 md:flex-none">
|
<form data-turbo="false" method="get" action="<%= submit_form_url(slug: submitter.slug) %>" class="flex-1 md:flex-none">
|
||||||
<button onclick="event.stopPropagation()" class="btn btn-sm btn-neutral btn-outline bg-white w-full md:w-40 flex">
|
<button onclick="event.stopPropagation()" class="btn btn-sm btn-neutral btn-outline bg-white w-full md:w-36 flex">
|
||||||
<span class="flex items-center justify-center space-x-1 md:space-x-2">
|
<span class="flex items-center justify-center space-x-1 md:space-x-2">
|
||||||
<%= svg_icon('writing_sign', class: 'w-4 h-4 stroke-2') %>
|
<% if t('sign_now').length < 12 %>
|
||||||
|
<%= svg_icon('writing_sign', class: 'w-4 h-4 stroke-2') %>
|
||||||
|
<% end %>
|
||||||
<span class="inline shrink-0"><%= t('sign_now') %></span>
|
<span class="inline shrink-0"><%= t('sign_now') %></span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
<% else %>
|
<% else %>
|
||||||
<div class="flex-1 md:flex-none">
|
<div class="flex-1 md:flex-none">
|
||||||
<%= render 'shared/clipboard_copy', text: submit_form_url(slug: submitter.slug), class: 'btn btn-sm btn-neutral text-white md:w-40 flex', icon_class: 'w-6 h-6 text-white', copy_title: t('copy_link'), copy_title_md: t('copy'), copied_title_md: t('copied') %>
|
<%= render 'shared/clipboard_copy', text: submit_form_url(slug: submitter.slug), class: 'btn btn-sm btn-neutral text-white md:w-36 flex', icon_class: 'w-6 h-6 text-white', copy_title: t('copy_link').length < 10 ? t('copy_link') : t('copy'), copy_title_md: t('copy'), copied_title_md: t('copied') %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -134,7 +136,7 @@
|
|||||||
<% if submitter.completed_at? && !is_submission_completed %>
|
<% if submitter.completed_at? && !is_submission_completed %>
|
||||||
<form onsubmit="event.preventDefault()">
|
<form onsubmit="event.preventDefault()">
|
||||||
<button onclick="event.stopPropagation()">
|
<button onclick="event.stopPropagation()">
|
||||||
<download-button data-src="<%= submitter_download_index_path(submitter.slug) %>" class="absolute md:relative top-0 right-0 btn btn-xs btn-neutral text-white md:w-40">
|
<download-button data-src="<%= submitter_download_index_path(submitter.slug) %>" class="absolute md:relative top-0 right-0 btn btn-xs btn-neutral text-white md:w-36">
|
||||||
<span class="flex items-center justify-center space-x-1 md:space-x-2" data-target="download-button.defaultButton">
|
<span class="flex items-center justify-center space-x-1 md:space-x-2" data-target="download-button.defaultButton">
|
||||||
<%= svg_icon('download', class: 'w-4 h-4 stroke-2') %>
|
<%= svg_icon('download', class: 'w-4 h-4 stroke-2') %>
|
||||||
<span class="inline"><%= t('download') %></span>
|
<span class="inline"><%= t('download') %></span>
|
||||||
@@ -150,15 +152,17 @@
|
|||||||
<div class="relative flex items-center space-x-3">
|
<div class="relative flex items-center space-x-3">
|
||||||
<% if current_user.email == submitter.email %>
|
<% if current_user.email == submitter.email %>
|
||||||
<form data-turbo="false" method="get" action="<%= submit_form_url(slug: submitter.slug) %>">
|
<form data-turbo="false" method="get" action="<%= submit_form_url(slug: submitter.slug) %>">
|
||||||
<button onclick="event.stopPropagation()" class="absolute md:relative top-0 right-0 btn btn-xs btn-outline btn-neutral bg-white w-28 md:w-40">
|
<button onclick="event.stopPropagation()" class="absolute md:relative top-0 right-0 btn btn-xs btn-outline btn-neutral bg-white w-28 md:w-36">
|
||||||
<span class="flex items-center justify-center space-x-1 md:space-x-2">
|
<span class="flex items-center justify-center space-x-1 md:space-x-2">
|
||||||
<%= svg_icon('writing_sign', class: 'w-4 h-4 stroke-2') %>
|
<% if t('sign_now').length < 12 %>
|
||||||
|
<%= svg_icon('writing_sign', class: 'w-4 h-4 stroke-2') %>
|
||||||
|
<% end %>
|
||||||
<span class="inline shrink-0"><%= t('sign_now') %></span>
|
<span class="inline shrink-0"><%= t('sign_now') %></span>
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= render 'shared/clipboard_copy', text: submit_form_url(slug: submitter.slug), class: 'absolute md:relative top-0 right-0 btn btn-xs text-xs btn-neutral text-white w-28 md:w-40 flex', icon_class: 'w-4 h-4 text-white', copy_title: t('copy_link'), copy_title_md: t('copy_link'), copied_title_md: t('copied') %>
|
<%= render 'shared/clipboard_copy', text: submit_form_url(slug: submitter.slug), class: 'absolute md:relative top-0 right-0 btn btn-xs text-xs btn-neutral text-white w-28 md:w-36 flex', icon_class: 'w-4 h-4 text-white', copy_title: t('copy_link'), copy_title_md: t('copy_link').length < 10 ? t('copy_link') : t('copy'), copied_title_md: t('copied') %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -173,7 +177,7 @@
|
|||||||
<div class="flex-1 md:flex-none">
|
<div class="flex-1 md:flex-none">
|
||||||
<form onsubmit="event.preventDefault()" class="w-full md:w-fit">
|
<form onsubmit="event.preventDefault()" class="w-full md:w-fit">
|
||||||
<button onclick="event.stopPropagation()" class="w-full">
|
<button onclick="event.stopPropagation()" class="w-full">
|
||||||
<download-button data-src="<%= submitter_download_index_path(latest_submitter.slug) %>" class="btn btn-sm btn-neutral text-white w-full md:w-40">
|
<download-button data-src="<%= submitter_download_index_path(latest_submitter.slug) %>" class="btn btn-sm btn-neutral text-white w-full md:w-36">
|
||||||
<span class="flex items-center justify-center space-x-1 md:space-x-2" data-target="download-button.defaultButton">
|
<span class="flex items-center justify-center space-x-1 md:space-x-2" data-target="download-button.defaultButton">
|
||||||
<%= svg_icon('download', class: 'w-5 h-5 stroke-2') %>
|
<%= svg_icon('download', class: 'w-5 h-5 stroke-2') %>
|
||||||
<span class="inline"><%= t('download') %></span>
|
<span class="inline"><%= t('download') %></span>
|
||||||
|
|||||||
@@ -20,6 +20,9 @@ en: &en
|
|||||||
language_ko: 한국어
|
language_ko: 한국어
|
||||||
hi_there: Hi there
|
hi_there: Hi there
|
||||||
thanks: Thanks
|
thanks: Thanks
|
||||||
|
first_party: 'First Party'
|
||||||
|
docuseal_trusted_signature: DocuSeal Trusted Signature
|
||||||
|
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Sign documents with trusted certificate provided by DocuSeal. Your documents and data are never shared with DocuSeal. PDF checksum is provided to generate a trusted signature.
|
||||||
you_have_been_invited_to_submit_the_name_form: 'You have been invited to submit the "%{name}" form.'
|
you_have_been_invited_to_submit_the_name_form: 'You have been invited to submit the "%{name}" form.'
|
||||||
you_have_been_invited_to_sign_the_name: 'You have been invited to sign the "%{name}".'
|
you_have_been_invited_to_sign_the_name: 'You have been invited to sign the "%{name}".'
|
||||||
alternatively_you_can_review_and_download_your_copy_using_the_link_below: "Alternatively, you can review and download your copy using the link below:"
|
alternatively_you_can_review_and_download_your_copy_using_the_link_below: "Alternatively, you can review and download your copy using the link below:"
|
||||||
@@ -596,6 +599,11 @@ en: &en
|
|||||||
read: Read your data
|
read: Read your data
|
||||||
|
|
||||||
es: &es
|
es: &es
|
||||||
|
awaiting_completion_by_the_other_party: "Esperando la finalización por la otra parte"
|
||||||
|
enforce_recipients_order: 'Hacer cumplir el orden de los destinatarios'
|
||||||
|
first_party: 'Primera Parte'
|
||||||
|
docuseal_trusted_signature: Firma de confianza DocuSeal
|
||||||
|
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Firme documentos con un certificado de confianza proporcionado por DocuSeal. Sus documentos y datos nunca se comparten con DocuSeal. Se proporciona un checksum de PDF para generar una firma de confianza.
|
||||||
hi_there: Hola
|
hi_there: Hola
|
||||||
thanks: Gracias
|
thanks: Gracias
|
||||||
you_have_been_invited_to_submit_the_name_form: 'Has sido invitado/a a enviar el formulario "%{name}".'
|
you_have_been_invited_to_submit_the_name_form: 'Has sido invitado/a a enviar el formulario "%{name}".'
|
||||||
@@ -872,7 +880,7 @@ es: &es
|
|||||||
plans: Planes
|
plans: Planes
|
||||||
new: Nuevo
|
new: Nuevo
|
||||||
embedding: Integración
|
embedding: Integración
|
||||||
background_jobs: Trabajos en segundo plano
|
background_jobs: Trabajos asíncronos
|
||||||
need_help_ask_a_question_: '¿Necesitas ayuda? Haz una pregunta:'
|
need_help_ask_a_question_: '¿Necesitas ayuda? Haz una pregunta:'
|
||||||
testing_environment: Entorno de pruebas
|
testing_environment: Entorno de pruebas
|
||||||
exit: Salir
|
exit: Salir
|
||||||
@@ -903,7 +911,7 @@ es: &es
|
|||||||
add_new: Agregar nuevo
|
add_new: Agregar nuevo
|
||||||
add_recipients: Agregar destinatarios
|
add_recipients: Agregar destinatarios
|
||||||
add_new_recipients: Agregar nuevos destinatarios
|
add_new_recipients: Agregar nuevos destinatarios
|
||||||
add_recipients_html: <span>Agregar <span class="hidden md:inline">destinatarios</span></span>
|
add_recipients_html: <span>Agregar</span>
|
||||||
type_emails_here: Escribe correos electrónicos aquí
|
type_emails_here: Escribe correos electrónicos aquí
|
||||||
or_embed_on_your_website: O integra en tu sitio web
|
or_embed_on_your_website: O integra en tu sitio web
|
||||||
phone: Teléfono
|
phone: Teléfono
|
||||||
@@ -1172,6 +1180,11 @@ es: &es
|
|||||||
read: Leer tus datos
|
read: Leer tus datos
|
||||||
|
|
||||||
it: &it
|
it: &it
|
||||||
|
awaiting_completion_by_the_other_party: "In attesa di completamento da parte dell'altra parte"
|
||||||
|
enforce_recipients_order: Aplicar el orden de los destinatarios
|
||||||
|
first_party: 'Prima parte'
|
||||||
|
docuseal_trusted_signature: "Firma Fiduciaria DocuSeal"
|
||||||
|
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: "Firma documenti con un certificato di fiducia fornito da DocuSeal. I tuoi documenti e i tuoi dati non vengono mai condivisi con DocuSeal. Il checksum PDF è fornito per generare una firma di fiducia."
|
||||||
hi_there: Ciao
|
hi_there: Ciao
|
||||||
thanks: Grazie
|
thanks: Grazie
|
||||||
you_have_been_invited_to_submit_the_name_form: 'Sei stato invitato a inviare il modulo "%{name}".'
|
you_have_been_invited_to_submit_the_name_form: 'Sei stato invitato a inviare il modulo "%{name}".'
|
||||||
@@ -1479,7 +1492,7 @@ it: &it
|
|||||||
add_new: Aggiungi nuovo
|
add_new: Aggiungi nuovo
|
||||||
add_recipients: Aggiungi destinatari
|
add_recipients: Aggiungi destinatari
|
||||||
add_new_recipients: Aggiungi nuovi destinatari
|
add_new_recipients: Aggiungi nuovi destinatari
|
||||||
add_recipients_html: <span>Aggiungi <span class="hidden md:inline">destinatari</span></span>
|
add_recipients_html: <span>Aggiungi</span>
|
||||||
type_emails_here: Digita qui le email
|
type_emails_here: Digita qui le email
|
||||||
or_embed_on_your_website: Oppure integra nel tuo sito web
|
or_embed_on_your_website: Oppure integra nel tuo sito web
|
||||||
phone: Telefono
|
phone: Telefono
|
||||||
@@ -1748,6 +1761,11 @@ it: &it
|
|||||||
read: Leggi i tuoi dati
|
read: Leggi i tuoi dati
|
||||||
|
|
||||||
fr: &fr
|
fr: &fr
|
||||||
|
awaiting_completion_by_the_other_party: "En attente de la complétion par l'autre partie"
|
||||||
|
enforce_recipients_order: "Respecter l'ordre des destinataires"
|
||||||
|
first_party: 'Première partie'
|
||||||
|
docuseal_trusted_signature: Signature de confiance DocuSeal
|
||||||
|
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Signez des documents avec un certificat de confiance fourni par DocuSeal. Vos documents et données ne sont jamais partagés avec DocuSeal. Un checksum PDF est fourni pour générer une signature de confiance.
|
||||||
hi_there: Bonjour
|
hi_there: Bonjour
|
||||||
thanks: Merci
|
thanks: Merci
|
||||||
you_have_been_invited_to_submit_the_name_form: 'Vous avez été invité à remplir le formulaire "%{name}".'
|
you_have_been_invited_to_submit_the_name_form: 'Vous avez été invité à remplir le formulaire "%{name}".'
|
||||||
@@ -1870,7 +1888,7 @@ fr: &fr
|
|||||||
account_information_has_been_updated: Les informations du compte ont été mises à jour.
|
account_information_has_been_updated: Les informations du compte ont été mises à jour.
|
||||||
should_be_a_valid_url: doit être une URL valide
|
should_be_a_valid_url: doit être une URL valide
|
||||||
your_account_removal_request_will_be_processed_within_2_weeks_please_contact_us_if_you_want_to_keep_your_account: Votre demande de suppression du compte sera traitée dans un délai de 2 semaines. Veuillez nous contacter si vous souhaitez conserver votre compte.
|
your_account_removal_request_will_be_processed_within_2_weeks_please_contact_us_if_you_want_to_keep_your_account: Votre demande de suppression du compte sera traitée dans un délai de 2 semaines. Veuillez nous contacter si vous souhaitez conserver votre compte.
|
||||||
test_environment: Environnement de test
|
test_environment: Mode de test
|
||||||
copy: Copier
|
copy: Copier
|
||||||
copied: Copié
|
copied: Copié
|
||||||
rotate: Pivoter
|
rotate: Pivoter
|
||||||
@@ -2056,7 +2074,7 @@ fr: &fr
|
|||||||
add_new: Ajouter nouveau
|
add_new: Ajouter nouveau
|
||||||
add_recipients: Ajouter des destinataires
|
add_recipients: Ajouter des destinataires
|
||||||
add_new_recipients: Ajouter de nouveaux destinataires
|
add_new_recipients: Ajouter de nouveaux destinataires
|
||||||
add_recipients_html: <span>Ajouter <span class="hidden md:inline">des destinataires</span></span>
|
add_recipients_html: <span>Ajouter</span>
|
||||||
type_emails_here: Saisissez les e-mails ici
|
type_emails_here: Saisissez les e-mails ici
|
||||||
or_embed_on_your_website: Ou intégrez-le sur votre site web
|
or_embed_on_your_website: Ou intégrez-le sur votre site web
|
||||||
phone: Téléphone
|
phone: Téléphone
|
||||||
@@ -2325,6 +2343,11 @@ fr: &fr
|
|||||||
read: Lire vos données
|
read: Lire vos données
|
||||||
|
|
||||||
pt: &pt
|
pt: &pt
|
||||||
|
awaiting_completion_by_the_other_party: "Aguardando a conclusão pela outra parte"
|
||||||
|
enforce_recipients_order: 'Forçar a ordem dos recipientes'
|
||||||
|
first_party: 'Primeira Parte'
|
||||||
|
docuseal_trusted_signature: Assinatura Confiável DocuSeal
|
||||||
|
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Assine documentos com certificado confiável fornecido pela DocuSeal. Seus documentos e dados nunca são compartilhados com a DocuSeal. O checksum do PDF é fornecido para gerar uma assinatura confiável.
|
||||||
hi_there: Olá
|
hi_there: Olá
|
||||||
thanks: Obrigado
|
thanks: Obrigado
|
||||||
you_have_been_invited_to_submit_the_name_form: 'Você foi convidado a submeter o formulário "%{name}".'
|
you_have_been_invited_to_submit_the_name_form: 'Você foi convidado a submeter o formulário "%{name}".'
|
||||||
@@ -2601,7 +2624,7 @@ pt: &pt
|
|||||||
plans: Planos
|
plans: Planos
|
||||||
new: Novo
|
new: Novo
|
||||||
embedding: Incorporação
|
embedding: Incorporação
|
||||||
background_jobs: Tarefas em segundo plano
|
background_jobs: Trabalhos assíncronos
|
||||||
need_help_ask_a_question_: 'Precisa de ajuda? Faça uma pergunta:'
|
need_help_ask_a_question_: 'Precisa de ajuda? Faça uma pergunta:'
|
||||||
testing_environment: Ambiente de teste
|
testing_environment: Ambiente de teste
|
||||||
exit: Sair
|
exit: Sair
|
||||||
@@ -2632,7 +2655,7 @@ pt: &pt
|
|||||||
add_new: Adicionar novo
|
add_new: Adicionar novo
|
||||||
add_recipients: Adicionar destinatários
|
add_recipients: Adicionar destinatários
|
||||||
add_new_recipients: Adicionar novos destinatários
|
add_new_recipients: Adicionar novos destinatários
|
||||||
add_recipients_html: <span>Adicionar <span class="hidden md:inline">destinatários</span></span>
|
add_recipients_html: <span>Adicionar</span>
|
||||||
type_emails_here: Digite os e-mails aqui
|
type_emails_here: Digite os e-mails aqui
|
||||||
or_embed_on_your_website: Ou incorpore em seu site
|
or_embed_on_your_website: Ou incorpore em seu site
|
||||||
phone: Telefone
|
phone: Telefone
|
||||||
@@ -2901,6 +2924,11 @@ pt: &pt
|
|||||||
read: Ler seus dados
|
read: Ler seus dados
|
||||||
|
|
||||||
de: &de
|
de: &de
|
||||||
|
awaiting_completion_by_the_other_party: "Warten auf die Fertigstellung durch die andere Partei"
|
||||||
|
enforce_recipients_order: 'Empfängerreihenfolge durchsetzen'
|
||||||
|
first_party: 'Erste Partei'
|
||||||
|
docuseal_trusted_signature: DocuSeal-Vertrauenssignatur
|
||||||
|
sign_documents_with_trusted_certificate_provided_by_docu_seal_your_documents_and_data_are_never_shared_with_docu_seal_p_d_f_checksum_is_provided_to_generate_a_trusted_signature: Unterzeichnen Sie Dokumente mit einem vertrauenswürdigen Zertifikat von DocuSeal. Ihre Dokumente und Daten werden niemals mit DocuSeal geteilt. Eine PDF-Prüfziffer wird bereitgestellt, um eine vertrauenswürdige Signatur zu generieren.
|
||||||
hi_there: Hallo
|
hi_there: Hallo
|
||||||
thanks: Danke
|
thanks: Danke
|
||||||
you_have_been_invited_to_submit_the_name_form: 'Du wurdest eingeladen, das Formular "%{name}" einzureichen.'
|
you_have_been_invited_to_submit_the_name_form: 'Du wurdest eingeladen, das Formular "%{name}" einzureichen.'
|
||||||
@@ -3208,7 +3236,7 @@ de: &de
|
|||||||
add_new: Neu hinzufügen
|
add_new: Neu hinzufügen
|
||||||
add_recipients: Empfänger hinzufügen
|
add_recipients: Empfänger hinzufügen
|
||||||
add_new_recipients: Neue Empfänger hinzufügen
|
add_new_recipients: Neue Empfänger hinzufügen
|
||||||
add_recipients_html: <span>Empfänger hinzufügen<span class="hidden md:inline"></span></span>
|
add_recipients_html: <span>Empfänger</span>
|
||||||
type_emails_here: E-Mail-Adressen hier eingeben
|
type_emails_here: E-Mail-Adressen hier eingeben
|
||||||
or_embed_on_your_website: Oder auf deiner Website einbetten
|
or_embed_on_your_website: Oder auf deiner Website einbetten
|
||||||
phone: Telefon
|
phone: Telefon
|
||||||
@@ -3477,6 +3505,7 @@ de: &de
|
|||||||
read: Lese deine Daten
|
read: Lese deine Daten
|
||||||
|
|
||||||
pl:
|
pl:
|
||||||
|
awaiting_completion_by_the_other_party: "Oczekuje na dokończenie przez drugą stronę"
|
||||||
view: Widok
|
view: Widok
|
||||||
hi_there: Cześć,
|
hi_there: Cześć,
|
||||||
download: Pobierz
|
download: Pobierz
|
||||||
@@ -3530,6 +3559,7 @@ pl:
|
|||||||
enter_email_to_continue: Wprowadź e-mail, aby kontynuować
|
enter_email_to_continue: Wprowadź e-mail, aby kontynuować
|
||||||
|
|
||||||
uk:
|
uk:
|
||||||
|
awaiting_completion_by_the_other_party: "Очікує завершення з боку іншої сторони"
|
||||||
view: Переглянути
|
view: Переглянути
|
||||||
hi_there: Привіт,
|
hi_there: Привіт,
|
||||||
download: Завантажити
|
download: Завантажити
|
||||||
@@ -3583,6 +3613,7 @@ uk:
|
|||||||
enter_email_to_continue: Введіть електронну пошту, щоб продовжити
|
enter_email_to_continue: Введіть електронну пошту, щоб продовжити
|
||||||
|
|
||||||
cs:
|
cs:
|
||||||
|
awaiting_completion_by_the_other_party: "Čeká se na dokončení druhou stranou"
|
||||||
view: Zobrazit
|
view: Zobrazit
|
||||||
hi_there: Ahoj,
|
hi_there: Ahoj,
|
||||||
download: Stáhnout
|
download: Stáhnout
|
||||||
@@ -3636,6 +3667,7 @@ cs:
|
|||||||
enter_email_to_continue: Zadejte e-mail pro pokračování
|
enter_email_to_continue: Zadejte e-mail pro pokračování
|
||||||
|
|
||||||
he:
|
he:
|
||||||
|
awaiting_completion_by_the_other_party: "המתנה להשלמה מצד הצד השני"
|
||||||
view: תצוגה
|
view: תצוגה
|
||||||
hi_there: שלום,
|
hi_there: שלום,
|
||||||
download: הורד
|
download: הורד
|
||||||
@@ -3689,6 +3721,7 @@ he:
|
|||||||
enter_email_to_continue: הכנס דוא"ל כדי להמשיך
|
enter_email_to_continue: הכנס דוא"ל כדי להמשיך
|
||||||
|
|
||||||
nl:
|
nl:
|
||||||
|
awaiting_completion_by_the_other_party: "In afwachting van voltooiing door de andere partij"
|
||||||
view: Bekijken
|
view: Bekijken
|
||||||
hi_there: Hallo,
|
hi_there: Hallo,
|
||||||
download: Downloaden
|
download: Downloaden
|
||||||
@@ -3742,6 +3775,7 @@ nl:
|
|||||||
enter_email_to_continue: Voer e-mail in om door te gaan
|
enter_email_to_continue: Voer e-mail in om door te gaan
|
||||||
|
|
||||||
ar:
|
ar:
|
||||||
|
awaiting_completion_by_the_other_party: "في انتظار إكتمال الطرف الآخر"
|
||||||
view: عرض
|
view: عرض
|
||||||
hi_there: مرحبا,
|
hi_there: مرحبا,
|
||||||
download: تحميل
|
download: تحميل
|
||||||
@@ -3795,6 +3829,7 @@ ar:
|
|||||||
enter_email_to_continue: أدخل البريد الإلكتروني للمتابعة
|
enter_email_to_continue: أدخل البريد الإلكتروني للمتابعة
|
||||||
|
|
||||||
ko:
|
ko:
|
||||||
|
awaiting_completion_by_the_other_party: "다른 당사자의 완료를 기다리고 있습니다"
|
||||||
view: 보기
|
view: 보기
|
||||||
hi_there: 안녕하세요,
|
hi_there: 안녕하세요,
|
||||||
download: 다운로드
|
download: 다운로드
|
||||||
Reference in New Issue
Block a user