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', 'Request new code') }}
+
{{ 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)