diff --git a/src/views/SignPDF/_partials/ModalVerificationCode.vue b/src/views/SignPDF/_partials/ModalVerificationCode.vue index a5c1fc81d6..88ed858726 100644 --- a/src/views/SignPDF/_partials/ModalVerificationCode.vue +++ b/src/views/SignPDF/_partials/ModalVerificationCode.vue @@ -36,8 +36,10 @@

+ {{ t('libresign', 'To sign this document, we must verify your identity. Enter your contact information to receive a verification code.') }}

+ {{ displayContact }}
+

+ {{ t('libresign', 'Your identity has been verified.') }}

+ {{ t('libresign', 'You can now sign the document.') }}

@@ -94,11 +99,12 @@ + {{ t('libresign', 'Validate code') }} @@ -215,29 +222,37 @@ export default { if (this.step1Active) { return this.mode === 'email' ? t('libresign', 'Email verification') + // TRANSLATORS Title for step 1 where the signer proves they are the owner of a registered contact channel by receiving a code via SMS, WhatsApp, Telegram, Signal, or XMPP. "Identity" here means confirming who the signer is, not a reference to any specific document. Translate as a generic compound noun without a definite article. : t('libresign', 'Identity verification') } if (!this.identityVerified) { + // TRANSLATORS Dialog title for step 2 where the signer enters the numeric verification code (OTP) received by email or messaging channel. "Code" here means a short numeric one-time password, not source code or any other kind of code. return t('libresign', 'Code validation') } + // TRANSLATORS Dialog title for step 3 where the signer reviews and confirms their intent to sign the document by clicking a button. This is not a receipt or acknowledgment — it is the final user action that triggers the signing process. return t('libresign', 'Signature confirmation') }, progressText() { if (this.step1Active) { return this.mode === 'email' ? t('libresign', 'Step 1 of 3 - Email verification') + // TRANSLATORS Progress text for step 1 where the signer proves they are the owner of a registered contact channel by receiving a code via SMS, WhatsApp, Telegram, Signal, or XMPP. "Identity" here means confirming who the signer is, not a reference to any specific document. Translate as a generic compound noun without a definite article. : t('libresign', 'Step 1 of 3 - Identity verification') } if (!this.identityVerified) { + // TRANSLATORS Progress text for step 2 where the signer enters the numeric verification code (OTP) received by email or messaging channel. "Code" here means a short numeric one-time password, not source code or any other kind of code. return t('libresign', 'Step 2 of 3 - Code validation') } + // TRANSLATORS Progress text for step 3 where the signer reviews and confirms their intent to sign the document by clicking a button. This is not a receipt or acknowledgment — it is the final user action that triggers the signing process. return t('libresign', 'Step 3 of 3 - Signature confirmation') }, codeExplanationText() { const contact = this.displayContact if (this.mode === 'email') { + // TRANSLATORS {contact} is the email address where the verification code was sent. return t('libresign', 'A verification code has been sent to: {contact}. Check your email and enter the 6-digit verification code.', { contact }) } + // TRANSLATORS {contact} is the phone number or messaging channel (SMS, WhatsApp, Telegram, Signal, XMPP) where the verification code was sent. return t('libresign', 'A verification code has been sent to: {contact}. Please enter the code to continue.', { contact }) }, displayContact() { @@ -367,6 +382,7 @@ export default { const msg = err.response?.data?.ocs?.data?.message || err.response?.data?.message || err.message if (this.mode === 'token' && msg?.includes('Invalid configuration')) { const method = this.activeTokenMethod.charAt(0).toUpperCase() + this.activeTokenMethod.slice(1) + // TRANSLATORS {method} is the name of a messaging service (e.g. SmsToken, WhatsappToken, TelegramToken, SignalToken, XmppToken). showError(t('libresign', '{method} is not configured. Please contact your administrator.', { method })) } else { showError(msg)