start translating the form
This commit is contained in:
@@ -7,13 +7,13 @@
|
|||||||
:height="30"
|
:height="30"
|
||||||
/>
|
/>
|
||||||
<span>
|
<span>
|
||||||
Form has been completed!
|
{{ t('form_has_been_completed') }}
|
||||||
</span>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
<div class="space-y-3 mt-5">
|
<div class="space-y-3 mt-5">
|
||||||
<button
|
<button
|
||||||
v-if="canSendEmail && !isDemo"
|
v-if="canSendEmail && !isDemo"
|
||||||
class="white-button flex items-center space-x-1 w-full"
|
class="white-button !h-auto flex items-center space-x-1 w-full"
|
||||||
:disabled="isSendingCopy"
|
:disabled="isSendingCopy"
|
||||||
@click.prevent="sendCopyToEmail"
|
@click.prevent="sendCopyToEmail"
|
||||||
>
|
>
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
/>
|
/>
|
||||||
<IconMail v-else />
|
<IconMail v-else />
|
||||||
<span>
|
<span>
|
||||||
Send copy via email
|
{{ t('send_copy_via_email') }}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
/>
|
/>
|
||||||
<IconDownload v-else />
|
<IconDownload v-else />
|
||||||
<span>
|
<span>
|
||||||
Download
|
{{ t('download') }}
|
||||||
</span>
|
</span>
|
||||||
</button>
|
</button>
|
||||||
<a
|
<a
|
||||||
@@ -58,17 +58,17 @@
|
|||||||
>
|
>
|
||||||
<IconLogin />
|
<IconLogin />
|
||||||
<span>
|
<span>
|
||||||
Create a Free Account
|
{{ t('create_a_free_account') }}
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
<div class="text-center mt-4">
|
<div class="text-center mt-4">
|
||||||
Signed with
|
{{ t('signed_with') }}
|
||||||
<a
|
<a
|
||||||
href="https://www.docuseal.co"
|
href="https://www.docuseal.co"
|
||||||
target="_blank"
|
target="_blank"
|
||||||
class="underline"
|
class="underline"
|
||||||
>DocuSeal</a> - open source documents software
|
>DocuSeal</a> - {{ t('open_source_documents_software') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -86,7 +86,7 @@ export default {
|
|||||||
IconLogin,
|
IconLogin,
|
||||||
IconDownload
|
IconDownload
|
||||||
},
|
},
|
||||||
inject: ['baseUrl'],
|
inject: ['baseUrl', 't'],
|
||||||
props: {
|
props: {
|
||||||
submitterSlug: {
|
submitterSlug: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
{{ message }}
|
{{ message }}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-xs">
|
<div class="text-xs">
|
||||||
<span class="font-medium">Click to upload</span> or drag and drop files
|
<span class="font-medium">{{ t('click_to_upload') }}</span> {{ t('or_drag_and_drop_files') }}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -55,7 +55,7 @@ export default {
|
|||||||
IconCloudUpload,
|
IconCloudUpload,
|
||||||
IconInnerShadowTop
|
IconInnerShadowTop
|
||||||
},
|
},
|
||||||
inject: ['baseUrl'],
|
inject: ['baseUrl', 't'],
|
||||||
props: {
|
props: {
|
||||||
message: {
|
message: {
|
||||||
type: String,
|
type: String,
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
class="btn btn-neutral flex text-white absolute rounded-none border-x-0 md:border md:rounded-full bottom-0 w-full md:mb-4 text-base"
|
class="btn btn-neutral flex text-white absolute rounded-none border-x-0 md:border md:rounded-full bottom-0 w-full md:mb-4 text-base"
|
||||||
@click.prevent="isFormVisible = true"
|
@click.prevent="isFormVisible = true"
|
||||||
>
|
>
|
||||||
Submit Form
|
{{ t('submit_form') }}
|
||||||
<IconArrowsDiagonal
|
<IconArrowsDiagonal
|
||||||
class="absolute right-0 mr-4"
|
class="absolute right-0 mr-4"
|
||||||
:width="20"
|
:width="20"
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
:for="currentField.uuid"
|
:for="currentField.uuid"
|
||||||
class="label text-2xl mb-2"
|
class="label text-2xl mb-2"
|
||||||
>{{ currentField.name }}
|
>{{ currentField.name }}
|
||||||
<template v-if="!currentField.required">(optional)</template>
|
<template v-if="!currentField.required">({{ t('optional') }})</template>
|
||||||
</label>
|
</label>
|
||||||
<div
|
<div
|
||||||
v-else
|
v-else
|
||||||
@@ -75,7 +75,7 @@
|
|||||||
v-model="values[currentField.uuid]"
|
v-model="values[currentField.uuid]"
|
||||||
class="base-input !text-2xl w-full"
|
class="base-input !text-2xl w-full"
|
||||||
:required="currentField.required"
|
:required="currentField.required"
|
||||||
:placeholder="`Type here...${currentField.required ? '' : ' (optional)'}`"
|
:placeholder="`${t('type_here')}...${currentField.required ? '' : ` (${t('optional')})`}`"
|
||||||
type="text"
|
type="text"
|
||||||
:name="`values[${currentField.uuid}]`"
|
:name="`values[${currentField.uuid}]`"
|
||||||
@focus="$refs.areas.scrollIntoField(currentField)"
|
@focus="$refs.areas.scrollIntoField(currentField)"
|
||||||
@@ -88,7 +88,7 @@
|
|||||||
:for="currentField.uuid"
|
:for="currentField.uuid"
|
||||||
class="label text-2xl mb-2"
|
class="label text-2xl mb-2"
|
||||||
>{{ currentField.name }}
|
>{{ currentField.name }}
|
||||||
<template v-if="!currentField.required">(optional)</template>
|
<template v-if="!currentField.required">({{ t('optional') }})</template>
|
||||||
</label>
|
</label>
|
||||||
<div
|
<div
|
||||||
v-else
|
v-else
|
||||||
@@ -112,7 +112,7 @@
|
|||||||
:for="currentField.uuid"
|
:for="currentField.uuid"
|
||||||
class="label text-2xl mb-2"
|
class="label text-2xl mb-2"
|
||||||
>{{ currentField.name }}
|
>{{ currentField.name }}
|
||||||
<template v-if="!currentField.required">(optional)</template>
|
<template v-if="!currentField.required">({{ t('optional') }})</template>
|
||||||
</label>
|
</label>
|
||||||
<div
|
<div
|
||||||
v-else
|
v-else
|
||||||
@@ -130,7 +130,7 @@
|
|||||||
value=""
|
value=""
|
||||||
:selected="!values[currentField.uuid]"
|
:selected="!values[currentField.uuid]"
|
||||||
>
|
>
|
||||||
Select your option
|
{{ t('select_your_option') }}
|
||||||
</option>
|
</option>
|
||||||
<option
|
<option
|
||||||
v-for="(option, index) in currentField.options"
|
v-for="(option, index) in currentField.options"
|
||||||
@@ -148,7 +148,7 @@
|
|||||||
:for="currentField.uuid"
|
:for="currentField.uuid"
|
||||||
class="label text-2xl mb-2"
|
class="label text-2xl mb-2"
|
||||||
>{{ currentField.name }}
|
>{{ currentField.name }}
|
||||||
<template v-if="!currentField.required">(optional)</template>
|
<template v-if="!currentField.required">({{ t('optional') }})</template>
|
||||||
</label>
|
</label>
|
||||||
<div class="flex w-full">
|
<div class="flex w-full">
|
||||||
<div class="space-y-3.5 mx-auto">
|
<div class="space-y-3.5 mx-auto">
|
||||||
@@ -196,7 +196,7 @@
|
|||||||
>
|
>
|
||||||
<template v-if="isAnonymousChecboxes">
|
<template v-if="isAnonymousChecboxes">
|
||||||
<span class="text-xl">
|
<span class="text-xl">
|
||||||
Complete hightlighted checkboxes and click <span class="font-semibold">{{ stepFields.length === currentStep + 1 ? 'submit' : 'next' }}</span>.
|
{{ t('complete_hightlighted_checkboxes_and_click') }} <span class="font-semibold">{{ stepFields.length === currentStep + 1 ? t('submit') : t('next') }}</span>.
|
||||||
</span>
|
</span>
|
||||||
<input
|
<input
|
||||||
v-for="field in currentStepFields"
|
v-for="field in currentStepFields"
|
||||||
@@ -278,10 +278,10 @@
|
|||||||
class="mr-1 animate-spin"
|
class="mr-1 animate-spin"
|
||||||
/>
|
/>
|
||||||
<span v-if="stepFields.length === currentStep + 1">
|
<span v-if="stepFields.length === currentStep + 1">
|
||||||
Submit
|
{{ t('submit') }}
|
||||||
</span>
|
</span>
|
||||||
<span v-else>
|
<span v-else>
|
||||||
Next
|
{{ t('next') }}
|
||||||
</span><span
|
</span><span
|
||||||
v-if="isSubmitting"
|
v-if="isSubmitting"
|
||||||
class="w-6 flex justify-start mr-1"
|
class="w-6 flex justify-start mr-1"
|
||||||
@@ -321,6 +321,7 @@ import AttachmentStep from './attachment_step'
|
|||||||
import MultiSelectStep from './multi_select_step'
|
import MultiSelectStep from './multi_select_step'
|
||||||
import FormCompleted from './completed'
|
import FormCompleted from './completed'
|
||||||
import { IconInnerShadowTop, IconArrowsDiagonal, IconArrowsDiagonalMinimize2 } from '@tabler/icons-vue'
|
import { IconInnerShadowTop, IconArrowsDiagonal, IconArrowsDiagonalMinimize2 } from '@tabler/icons-vue'
|
||||||
|
import { t } from './i18n'
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: 'SubmissionForm',
|
name: 'SubmissionForm',
|
||||||
@@ -337,7 +338,8 @@ export default {
|
|||||||
},
|
},
|
||||||
provide () {
|
provide () {
|
||||||
return {
|
return {
|
||||||
baseUrl: this.baseUrl
|
baseUrl: this.baseUrl,
|
||||||
|
t: this.t
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
props: {
|
props: {
|
||||||
@@ -468,6 +470,7 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
t,
|
||||||
goToStep (step, scrollToArea = false, clickUpload = false) {
|
goToStep (step, scrollToArea = false, clickUpload = false) {
|
||||||
this.currentStep = this.stepFields.indexOf(step)
|
this.currentStep = this.stepFields.indexOf(step)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,134 @@
|
|||||||
|
const en = {
|
||||||
|
submit_form: 'Submit Form',
|
||||||
|
type_here: 'Type here',
|
||||||
|
optional: 'optional',
|
||||||
|
select_your_option: 'Select your option',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Complete hightlighted checkboxes and click',
|
||||||
|
submit: 'submit',
|
||||||
|
next: 'next',
|
||||||
|
click_to_upload: 'Click to upload',
|
||||||
|
or_drag_and_drop_files: 'or drag and drop files',
|
||||||
|
send_copy_via_email: 'Send copy via email',
|
||||||
|
download: 'Download',
|
||||||
|
form_has_been_completed: 'Form has been completed!',
|
||||||
|
create_a_free_account: 'Create a Free Account',
|
||||||
|
signed_with: 'Signed with',
|
||||||
|
open_source_documents_software: 'open source documents software'
|
||||||
|
}
|
||||||
|
|
||||||
|
const es = {
|
||||||
|
submit_form: 'Enviar Formulario',
|
||||||
|
type_here: 'Escribe aquí',
|
||||||
|
optional: 'opcional',
|
||||||
|
select_your_option: 'Selecciona tu opción',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Completa las casillas resaltadas y haz clic',
|
||||||
|
submit: 'enviar',
|
||||||
|
next: 'siguiente',
|
||||||
|
click_to_upload: 'Haz clic para cargar',
|
||||||
|
or_drag_and_drop_files: 'o arrastra y suelta archivos',
|
||||||
|
send_copy_via_email: 'Enviar copia por correo electrónico',
|
||||||
|
download: 'Descargar',
|
||||||
|
form_has_been_completed: '¡El formulario ha sido completado!',
|
||||||
|
create_a_free_account: 'Crear una Cuenta Gratuita',
|
||||||
|
signed_with: 'Firmado con',
|
||||||
|
open_source_documents_software: 'software de documentos de código abierto'
|
||||||
|
}
|
||||||
|
|
||||||
|
const it = {
|
||||||
|
submit_form: 'Invia Modulo',
|
||||||
|
type_here: 'Digita qui',
|
||||||
|
optional: 'opzionale',
|
||||||
|
select_your_option: 'Seleziona la tua opzione',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Completa le caselle evidenziate e fai clic',
|
||||||
|
submit: 'invia',
|
||||||
|
next: 'avanti',
|
||||||
|
click_to_upload: 'Clicca per caricare',
|
||||||
|
or_drag_and_drop_files: 'oppure trascina e rilascia i file',
|
||||||
|
send_copy_via_email: 'Invia copia via email',
|
||||||
|
download: 'Scarica',
|
||||||
|
form_has_been_completed: 'Il modulo è stato completato!',
|
||||||
|
create_a_free_account: 'Crea un Account Gratuito',
|
||||||
|
signed_with: 'Firmato con',
|
||||||
|
open_source_documents_software: 'software di documenti open source'
|
||||||
|
}
|
||||||
|
|
||||||
|
const de = {
|
||||||
|
submit_form: 'Formular absenden',
|
||||||
|
type_here: 'Hier eingeben',
|
||||||
|
optional: 'optional',
|
||||||
|
select_your_option: 'Wähle deine Option',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Markierte Kontrollkästchen ausfüllen und klicken',
|
||||||
|
submit: 'absenden',
|
||||||
|
next: 'weiter',
|
||||||
|
click_to_upload: 'Klicken zum Hochladen',
|
||||||
|
or_drag_and_drop_files: 'oder Dateien hierher ziehen und ablegen',
|
||||||
|
send_copy_via_email: 'Kopie per E-Mail senden',
|
||||||
|
download: 'Herunterladen',
|
||||||
|
form_has_been_completed: 'Formular wurde ausgefüllt!',
|
||||||
|
create_a_free_account: 'Kostenloses Konto erstellen',
|
||||||
|
signed_with: 'Unterschrieben mit',
|
||||||
|
open_source_documents_software: 'Open-Source-Dokumentensoftware'
|
||||||
|
}
|
||||||
|
|
||||||
|
const fr = {
|
||||||
|
submit_form: 'Envoyer le Formulaire',
|
||||||
|
type_here: 'Tapez ici',
|
||||||
|
optional: 'facultatif',
|
||||||
|
select_your_option: 'Sélectionnez votre option',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Complétez les cases à cocher en surbrillance et cliquez',
|
||||||
|
submit: 'envoyer',
|
||||||
|
next: 'suivant',
|
||||||
|
click_to_upload: 'Cliquez pour télécharger',
|
||||||
|
or_drag_and_drop_files: 'ou faites glisser-déposer les fichiers',
|
||||||
|
send_copy_via_email: 'Envoyer une copie par e-mail',
|
||||||
|
download: 'Télécharger',
|
||||||
|
form_has_been_completed: 'Le formulaire a été complété !',
|
||||||
|
create_a_free_account: 'Créer un Compte Gratuit',
|
||||||
|
signed_with: 'Signé avec',
|
||||||
|
open_source_documents_software: 'logiciel de documents open source'
|
||||||
|
}
|
||||||
|
|
||||||
|
const pl = {
|
||||||
|
submit_form: 'Wyślij Formularz',
|
||||||
|
type_here: 'Wpisz tutaj',
|
||||||
|
optional: 'opcjonalny',
|
||||||
|
select_your_option: 'Wybierz swoją opcję',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Wypełnij zaznaczone pola wyboru i kliknij',
|
||||||
|
submit: 'wyślij',
|
||||||
|
next: 'dalej',
|
||||||
|
click_to_upload: 'Kliknij, aby przesłać',
|
||||||
|
or_drag_and_drop_files: 'lub przeciągnij i upuść pliki',
|
||||||
|
send_copy_via_email: 'Wyślij kopię drogą mailową',
|
||||||
|
download: 'Pobierz',
|
||||||
|
form_has_been_completed: 'Formularz został wypełniony!',
|
||||||
|
create_a_free_account: 'Utwórz darmowe konto',
|
||||||
|
signed_with: 'Podpisane za pomocą',
|
||||||
|
open_source_documents_software: 'oprogramowanie do dokumentów open source'
|
||||||
|
}
|
||||||
|
|
||||||
|
const uk = {
|
||||||
|
submit_form: 'Надіслати Форму',
|
||||||
|
type_here: 'Введіть тут',
|
||||||
|
optional: 'необов’язково',
|
||||||
|
select_your_option: 'Виберіть свій варіант',
|
||||||
|
complete_hightlighted_checkboxes_and_click: 'Заповніть позначені прапорці та натисніть',
|
||||||
|
submit: 'надіслати',
|
||||||
|
next: 'далі',
|
||||||
|
click_to_upload: 'Клацніть, щоб завантажити',
|
||||||
|
or_drag_and_drop_files: 'або перетягніть файли сюди',
|
||||||
|
send_copy_via_email: 'Надіслати копію електронною поштою',
|
||||||
|
download: 'Завантажити',
|
||||||
|
form_has_been_completed: 'Форму заповнено!',
|
||||||
|
create_a_free_account: 'Створити безкоштовний обліковий запис',
|
||||||
|
signed_with: 'Підписано за допомогою',
|
||||||
|
open_source_documents_software: 'відкритий програмний засіб для документів'
|
||||||
|
}
|
||||||
|
|
||||||
|
const i18n = { en, es, it, de, fr, pl, uk }
|
||||||
|
|
||||||
|
const browserLanguage = (navigator.language || navigator.userLanguage || 'en').split('-')[0]
|
||||||
|
|
||||||
|
const t = (key) => i18n[browserLanguage][key] || i18n.en[key] || key
|
||||||
|
|
||||||
|
export default i18n
|
||||||
|
export { t }
|
||||||
Reference in New Issue
Block a user