diff --git a/apps/OpenSign/public/locales/en/translation.json b/apps/OpenSign/public/locales/en/translation.json
index f85308bc1..0beaea5a5 100644
--- a/apps/OpenSign/public/locales/en/translation.json
+++ b/apps/OpenSign/public/locales/en/translation.json
@@ -14,7 +14,18 @@
"tagline":"Tagline ",
"has-requested-you-to-sign":"has requested you to sign",
"has-requested-you-to-review-and-sign":" has requested you to review and sign",
- "ascending":"Ascending",
+ "sort-order" :{
+ "Ascending":"Ascending",
+ "Descending":"Descending",
+ "Name":"Name",
+ "Date":"Date"
+ },
+ "context-menu": {
+ "Download": "Download",
+ "Rename": "Rename",
+ "Move": "Move",
+ "Delete": "Delete"
+ },
"action":"Action",
"add":"Add",
"add-new-folder":"ajouter un nouveau dossier",
@@ -45,6 +56,7 @@
"password-special-char":" Password should contain special character",
"agreee":"I agree to the",
"term":"Terms of Service",
+ "subscribe-to-opensign":"Subscribe to OpenSign newsletter",
"register":"Register",
"sidebar": {
"Dashboard": "Dashboard",
@@ -399,7 +411,131 @@
"decline-alert-3":"You can not sign this document as it has been declined/revoked.",
"sign here":"Sign here",
"guest-email-alert" :"verification code is sent to your email",
- "get-otp-alert" :"you will get a OTP via Email"
+ "get-otp-alert" :"you will get a OTP via Email",
+ "user-already-exist":"User already exist.",
+ "server-error":"Internal server error !",
+ "fill-required-details!":"Please fill required details!",
+ "sign-up-form":"Sign up form",
+ "sign-up":"Sign up",
+ "folder-already-exist!":"folder already exist!",
+ "please-select-position!":"please select position!",
+ "default-sign-alert":"Are you sure you want to auto sign at requested all locations?",
+ "Your-Signature":"Your Signature",
+ "auto-sign-all" :"Auto Sign All",
+ "generating-certificate":"Generating certificate",
+ "pdf-download":"PDF Download",
+ "generate-certificate-alert" :" Your completion certificate is being generated. Please wait momentarily. If the download doesn't start shortly, click the button again.",
+ "folder-already-exist" :"Folder already exist!" ,
+ "folder-created-successfully":"Folder created successfully!",
+ "fill-folder-name" :"Please fill folder name" ,
+ "already-exists-this-username" :"User already exists with this username!",
+ "verification-code-sent":"Verification mail has been sent to your E-mail!",
+ "registered-user-successfully":"Registered user successfully.",
+ "role-not-found":"Role not found.",
+ "do-not-access" :"You don't have access, please contact the admin.",
+ "add-admin":"Add admin",
+ "opensign-setup" :"Opensign Setup",
+ "join-discord" :"Join our discord server",
+ "admin-already-exist":"Admin already exist.",
+ "password-update-alert-1":"Password updated successfully.",
+ "password-update-alert-2":"Your current password is missing or incorrect.",
+ "password-update-alert-3" :"Your current password is missing or incorrect.",
+ "password-update-alert-4" :"Your password and confirmation password do not match.",
+ "current-password":" Current Password" ,
+ "new-password":"New Password",
+ "confirm-password":"Confirm Password",
+ "file-alert-1" :"The selected file size is too large. Please select a file less than",
+ "file-alert-2" :"Please select file.",
+ "file-alert-3" :"Please wait while the document is being uploaded.",
+ "enter-pdf-password" :"Enter Pdf Password",
+ "correct-password" :"Please provide correct password",
+ "decrypting-pdf" :" Decrypting pdf please wait...",
+ "invalid-otp":"Invalid Otp",
+ "user-not-found":"User not found!",
+ "enter-otp-alert" :"Please Enter OTP!",
+ "get-verification-code":"Get verification code",
+ "get-verification-code-2" :"You will get a verification code via Email",
+ "enter-verification-code":"Enter Verification Code",
+ "provide-your-details" :"Provide your details",
+ "provide-email":"Please provide email.",
+ "additional-info" :"Additional Info",
+ "signature-saved-alert":"Signature saved successfully.",
+ "fill-field" :"Please fill out this field",
+ "error-template" :"Error: Template not found!",
+ "invalid-document" :"Error: invalid document!",
+ "document-not-found" :"Document not Found!",
+ "document-signed-alert-1" :"You have successfully signed the document. You can download or print a copy of the partially signed document. A copy of the digitally signed document will be sent to the owner over email once it is signed by all signers.",
+ "encrypted-pdf-not-support" :"Currently encrypted pdf files are not supported.",
+ "document-signed-alert-4" :" Congratulations! đ This document has been successfully signed by all participants!",
+ "document-signed-alert-5" :"This document has been signed by all Signers.",
+ "document-signed-alert-6" : "This document has been declined by one or more recipient(s).",
+ "document-signed-alert-7" :"This Document is no longer available.",
+ "document-signed-alert-8" :"The document has already been dispatched for signing.",
+ "yet-to-sign":"Yet to sign",
+ "validation-alert-1" :"The input does not meet the criteria set by the regular expression.",
+ "account-already-exists" :"Account already exists!",
+ "choose-password":"Choose Password",
+ "enter-password":"Enter Password",
+ "sure":"sure",
+ "subscribed-alert" :"You have already subscribed to plan!",
+ "monthly" :"Monthly",
+ "yearly-upto" :"Yearly (upto 66% off)",
+ "billed-yearly":"Billed Yearly",
+ "billed-monthly": "Billed Monthly",
+ "plansubscription-1" :"Host it yourself for free",
+ "visit-github":"Visit Github",
+ "user-already-exist-name" :"User already exists with this username!",
+ "do-not-access-contact-admin" : "You don't have access, please contact the admin.",
+ "filed-required-correctly" :"Please fill required details correctly.",
+ "admin-created":"Admin created",
+ "invalid-masterkey" :"Invalid masterkey",
+ "opensign-Setup" :"Opensign Setup",
+ "master-key":" Master key",
+ "profile-update-alert" :"Profile updated successfully.",
+ "date":"Date",
+ "tour-mssg":{
+ "home-layout-1":"You have logged in successfully! Let's take a look.",
+ "home-layout-2":"To upload documents for self-signing or to request othersâ signatures, simply select the respective buttons.",
+ "home-layout-3":"You are ready to start using OpenSign! If you need support feel free to contact us.",
+ "generate-token":"Upgrade now to generate API token",
+ "opensign-drive-1":"Click on the breadcrumb links to easily navigate through the folder hierarchy and view the documents within each folder.",
+ "opensign-drive-2":"Click the add button to create a new folder or document.",
+ "opensign-drive-3":"Sort your documents by Date or Name using this menu.",
+ "opensign-drive-4":"Click on this menu to display the documents in list view.",
+ "opensign-drive-5":"The document list is displayed according to the selected sorting option. Icons next to each document indicate its current status.",
+ "opensign-drive-6":"Right-click on a document to see options such as Download, Rename, Move, and Delete. Click on the document to open it.",
+ "opensign-drive-7":"Right-click on any folder to see options. Choose âRenameâ to change the folderâs name or click on the folder to navigate through its contents.",
+ "pdf-request-file-1":"List of signers who still need to sign the document .",
+ "pdf-request-file-2":"Click any of the placeholders appearing on the document to sign. You will then see options to draw your signature, type it, or upload an image .",
+ "pdf-request-file-3":"Click the Back, Decline, or Finish buttons to navigate your document. Use the ellipsis menu for additional options, including the Download button .",
+ "pdf-request-file-4":"List of signers who have already signed the document .",
+ "pdf-request-file-5":"You can click 'Auto Sign All' to automatically sign at all the locations meant to be signed by you. Make sure that you review the document properly before you click this button .",
+ "placeholder-sign-1":"Select a recipient from this list to add a place-holder where he is supposed to sign.The placeholder will appear in the same colour as the recipient name once you drop it on the document.",
+ "placeholder-sign-2":"Clicking 'Add recipients' button will allow you to add more signers.",
+ "placeholder-sign-3":"Drag or click on a field to add it to the document.",
+ "placeholder-sign-4":"The PDF content area already displays the template's existing placeholders. For your convenience, these placeholders will match the color of the recipient's name, making them easily identifiable.",
+ "placeholder-sign-5":"Clicking 'Send' will save the document. In the next step you can customize the emails to be sent out to the recipients or copy the signing links and share those with the recipients yourself.",
+ "report-1":"Click the 'Add' button to create a new template. Templates are reusable documents designed to quickly generate new documents with the same structure and varying signers. For example, an HR template for onboarding could have predefined roles like âHR Managerâ and âNew Employeeâ. Each time you use the template, you can assign the âNew Employeeâ role to different incoming staff members, while the âHR Managerâ role remains constant, facilitating a seamless onboarding process for each recruit. ",
+ "signyour-self-1":"Select and drag your preferred widgets onto the PDF to customize your document before signing. Choose the perfect spots for each modification to tailor the document to your needs.",
+ "signyour-self-2":"Drag and drop anywhere in this area. You can resize and move it later.",
+ "template-placeholder-1":"Clicking 'Add role' button will allow you to add various signer roles. You can attach users to each role in subsequent steps.",
+ "template-placeholder-2":"Once roles are added, select a role from list to add a place-holder where he is supposed to sign. The placeholder will appear in the same colour as the role name once you drop it on the document.",
+ "template-placeholder-3":"Drag or click on a field to add it to the document.",
+ "template-placeholder-4":"Drag the placeholder for a role anywhere on the document.Remember, it will appear in the same colour as the name of the recipient for easy reference.",
+ "template-placeholder-5":"Clicking 'Next' will store the current template. After saving, youâll be prompted to create a new document from this template if you wish.",
+ "webhook-1":"Upgrade now to set webhook"
+
+
+ }
+
+
+
+
+
+
+
+
+
}
\ No newline at end of file
diff --git a/apps/OpenSign/public/locales/fr/translation.json b/apps/OpenSign/public/locales/fr/translation.json
index 8405706c7..dd5c130e0 100644
--- a/apps/OpenSign/public/locales/fr/translation.json
+++ b/apps/OpenSign/public/locales/fr/translation.json
@@ -14,7 +14,18 @@
"tagline":"Slogan",
"has-requested-you-to-sign":" vous a demandé de signer",
"has-requested-you-to-review-and-sign":"vous a demandé de consulter et de signer",
- "ascending":"Ascendant",
+ "sort-order" :{
+ "Ascending":"Ascendant",
+ "Descending":"Descendant",
+ "Name":"Nom",
+ "Date":"Date"
+ },
+ "context-menu": {
+ "Download": "Télécharger",
+ "Rename": "Renommer",
+ "Move": "Se déplacer",
+ "Delete": "Supprimer"
+ },
"action":"Action",
"add":"ajouter",
"add-new-folder":"ajouter un nouveau dossier",
@@ -45,6 +56,7 @@
"password-special-char":"Le mot de passe doit contenir un caractÚre spécial",
"agreee":"je suis d'accord avec le",
"term":"Conditions d'utilisation",
+ "subscribe-to-opensign":"Abonnez-vous Ă la newsletter OpenSign",
"register" :"Registre",
"sidebar": {
"Dashboard": "Tableau de bord",
@@ -399,8 +411,125 @@
"decline-alert-3": "Vous ne pouvez pas signer ce document car il a été refusé/révoqué.",
"sign here":"Signer ici",
"guest-email-alert" :"le code de vérification a été envoyé sur votre e-mail",
- "get-otp-alert":"vous recevrez un mot de passe Ă usage unique par e-mail"
-
+ "get-otp-alert":"vous recevrez un mot de passe Ă usage unique par e-mail",
+ "user-already-exist" :"L'utilisateur existe déjà .",
+ "server-error":"Erreur interne du serveur !",
+ "fill-required-details!" :"Veuillez remplir les informations requises !",
+ "sign-up-form" :"Formulaire d'inscription",
+ "sign-up":"S'inscrire",
+ "folder-already-exist!" :"le dossier existe déjà !",
+ "please-select-position!" :"Veuillez sélectionner un poste !",
+ "default-sign-alert" :"Ătes-vous sĂ»r de vouloir vous connecter automatiquement Ă tous les emplacements demandĂ©s ? ",
+ "Your-Signature":"Votre signature",
+ "auto-sign-all" :"Tout signer automatiquement",
+ "generating-certificate":"Génération du certificat",
+ "pdf-download" :"Téléchargement PDF",
+ "generate-certificate-alert" :" Votre certificat d'achÚvement est en cours de génération. Veuillez patienter quelques instants. Si le téléchargement ne démarre pas sous peu, cliquez à nouveau sur le bouton. ",
+ "folder-already-exist":"Le dossier existe déjà !",
+ "folder-created-successfully":"Dossier créé avec succÚs !",
+ "fill-folder-name":"Veuillez indiquer le nom du dossier",
+ "already-exists-this-username":"Un utilisateur existe déjà avec ce nom d'utilisateur !",
+ "verification-code-sent" :"Un e-mail de vérification a été envoyé à votre adresse e-mail !",
+ "registered-user-successfully" :"Utilisateur enregistré avec succÚs.",
+ "role-not-found" :"RĂŽle introuvable.",
+ "do-not-access" :"Vous n'y avez pas accĂšs, veuillez contacter l'administrateur.",
+ "add-admin" :"Ajouter un administrateur",
+ "opensign-setup" :"Configuration d'Opensign",
+ "join-discord" :"Rejoignez notre serveur Discord",
+ "admin-already-exist":"L'administrateur existe déjà .",
+ "password-update-alert-1" :"Mot de passe mis Ă jour avec succĂšs.",
+ "password-update-alert-2" :"Votre mot de passe actuel est manquant ou incorrect.",
+ "password-update-alert-3" :"Votre mot de passe actuel est manquant ou incorrect.",
+ "password-update-alert-4" :"Votre mot de passe et votre mot de passe de confirmation ne correspondent pas.",
+ "current-password":"Current Password",
+ "new-password" :"nouveau mot de passe",
+ "confirm-password":"Confirmez le mot de passe",
+ "file-alert-1":"La taille du fichier sélectionné est trop grande. Veuillez sélectionner un fichier inférieur à ",
+ "file-alert-2" :"Veuillez sélectionner un fichier.",
+ "file-alert-3" :"Veuillez patienter pendant le téléchargement du document." ,
+ "enter-pdf-password" :"Entrez le mot de passe PDF" ,
+ "correct-password" :"Veuillez fournir un mot de passe correct",
+ "decrypting-pdf" :"Décryptage du pdf, veuillez patienter...",
+ "invalid-otp" :"OTP invalide",
+ "user-not-found" :"Utilisateur non trouvé!",
+ "enter-otp-alert" :"Veuillez saisir OTP !",
+ "get-verification-code" :"Obtenir le code de vérification",
+ "get-verification-code-2" :"Vous recevrez un code de vérification par e-mail",
+ "enter-verification-code" :"Entrez le code de vérification",
+ "provide-your-details" :"Fournissez vos coordonnées",
+ "provide-email" :"Veuillez fournir un e-mail.",
+ "additional-info" :"Information additionnelle",
+ "signature-saved-alert" :"Signature enregistrée avec succÚs.",
+ "fill-field":"Veuillez remplir ce champ",
+ "error-template":"Erreur : modĂšle introuvable ! ",
+ "invalid-document" :"Erreur : document invalide !",
+ "document-not-found" :"Document introuvable !",
+ "document-signed-alert-1" :"Vous avez signé le document avec succÚs. Vous pouvez télécharger ou imprimer une copie du document partiellement signé. Une copie du document signé numériquement sera envoyée au propriétaire par e-mail une fois qu'il sera signé par tous les signataires.",
+ "encrypted-pdf-not-support" :"Les fichiers PDF actuellement cryptés ne sont pas pris en charge. ",
+ "document-signed-alert-4" :"Toutes nos fĂ©licitations! đ Ce document a Ă©tĂ© signĂ© avec succĂšs par tous les participants !",
+ "document-signed-alert-5" :"Ce document a été signé par tous les signataires.",
+ "document-signed-alert-6" :"Ce document a été refusé par un ou plusieurs destinataire(s).",
+ "document-signed-alert-7" : "Ce document n'est plus disponible.",
+ "document-signed-alert-8":"Le document a déjà été envoyé pour signature.",
+ "yet-to-sign" :"Reste Ă signer",
+ "validation-alert-1" :"L'entrée ne répond pas aux critÚres définis par l'expression réguliÚre.",
+ "account-already-exists" :"Le compte existe déjà !",
+ "choose-password" :"Choisissez un mot de passe",
+ "enter-password" :"Entrer le mot de passe",
+ "sure" :"bien sûr",
+ "subscribed-alert":"Vous ĂȘtes dĂ©jĂ abonnĂ© au forfait !",
+ "monthly" :"Mensuel",
+ "yearly-upto" :"Annuel (jusqu'à 66 % de réduction)",
+ "billed-yearly" :"Facturé annuellement",
+ "billed-monthly" :"Facturé mensuellement",
+ "plansubscription-1" :"HĂ©bergez-le vous-mĂȘme gratuitement",
+ "visit-github" :"Visitez Github",
+ "user-already-exist-name" :"Un utilisateur existe déjà avec ce nom d'utilisateur !",
+ "do-not-access-contact-admin" :"Vous n'y avez pas accĂšs, veuillez contacter l'administrateur.",
+ "filed-required-correctly" :"Veuillez remplir correctement les informations requises.",
+ "admin-created" :"Administrateur créé",
+ "invalid-masterkey":"Clé principale invalide",
+ "opensign-Setup" :"Configuration d'Opensign",
+ "master-key" :"La clef maitresse",
+ "profile-update-alert" :"Mise à jour du profil réussie.",
+ "date":"Date",
+ "tour-mssg":{
+ "home-layout-1":"Vous vous ĂȘtes connectĂ© avec succĂšs ! Jetons un coup d'oeil.",
+ "home-layout-2": "Pour télécharger des documents à auto-signature ou pour demander la signature d'autres personnes, sélectionnez simplement les boutons correspondants.",
+ "home-layout-3": "Vous ĂȘtes prĂȘt Ă commencer Ă utiliser OpenSign ! Si vous avez besoin d'aide, n'hĂ©sitez pas Ă nous contacter.",
+ "generate-token": "Mettez à niveau maintenant pour générer un jeton API",
+ "opensign-drive-1": "Cliquez sur les liens du fil d'Ariane pour naviguer facilement dans la hiérarchie des dossiers et afficher les documents dans chaque dossier.",
+ "opensign-drive-2": "Cliquez sur le bouton Ajouter pour créer un nouveau dossier ou document.",
+ "opensign-drive-3": "Triez vos documents par date ou par nom Ă l'aide de ce menu.",
+ "opensign-drive-4": "Cliquez sur ce menu pour afficher les documents sous forme de liste.",
+ "opensign-drive-5": "La liste des documents s'affiche selon l'option de tri sélectionnée. Les icÎnes à cÎté de chaque document indiquent son état actuel.",
+ "opensign-drive-6": "Faites un clic droit sur un document pour voir les options telles que Télécharger, Renommer, Déplacer et Supprimer. Cliquez sur le document pour l'ouvrir.",
+ "opensign-drive-7": "Faites un clic droit sur n'importe quel dossier pour voir les options. Choisissez 'Renommer' pour changer le nom du dossier ou cliquez sur le dossier pour naviguer dans son contenu.",
+ "pdf-request-file-1":"Liste des signataires qui doivent encore signer le document.",
+ "pdf-request-file-2": "Cliquez sur l'un des espaces réservés apparaissant sur le document pour signer. Vous verrez alors des options pour dessiner votre signature, la saisir ou télécharger une image.",
+ "pdf-request-file-3": "Cliquez sur les boutons Précédent, Refuser ou Terminer pour parcourir votre document. Utilisez le menu points de suspension pour des options supplémentaires, notamment le bouton Télécharger.",
+ "pdf-request-file-4":"Liste des signataires ayant déjà signé le document.",
+ "pdf-request-file-5":"Vous pouvez cliquer sur 'Signer automatiquement tout' pour signer automatiquement Ă tous les emplacements que vous ĂȘtes censĂ© signer. Assurez-vous de lire correctement le document avant de cliquer sur ce bouton.",
+ "placeholder-sign-1": "SĂ©lectionnez un destinataire dans cette liste pour ajouter un espace rĂ©servĂ© Ă l'endroit oĂč il est censĂ© signer. L'espace rĂ©servĂ© apparaĂźtra de la mĂȘme couleur que le nom du destinataire une fois que vous le dĂ©poserez sur le document.",
+ "placeholder-sign-2":"Cliquer sur le bouton 'Ajouter des destinataires' vous permettra d'ajouter plus de signataires.",
+ "placeholder-sign-3":"Faites glisser ou cliquez sur un champ pour l'ajouter au document.",
+ "placeholder-sign-4":"La zone de contenu PDF affiche déjà les espaces réservés existants du modÚle. Pour votre commodité, ces espaces réservés correspondront à la couleur du nom du destinataire, ce qui les rendra facilement identifiables.",
+ "placeholder-sign-5":"Cliquer sur 'Envoyer' enregistrera le document. Ă l'Ă©tape suivante, vous pourrez personnaliser les e-mails Ă envoyer aux destinataires ou copier les liens de signature et les partager vous-mĂȘme avec les destinataires.",
+ "report-1":"Cliquez sur le bouton 'Ajouter' pour crĂ©er un nouveau modĂšle. Les modĂšles sont des documents rĂ©utilisables conçus pour gĂ©nĂ©rer rapidement de nouveaux documents avec la mĂȘme structure et diffĂ©rents signataires. Par exemple, un modĂšle RH pour l'intĂ©gration peut avoir des rĂŽles prĂ©dĂ©finis tels que 'Responsable RH' et ' Nouvel employĂ©'. Chaque fois que vous utilisez le modĂšle, vous pouvez attribuer le rĂŽle 'Nouvel employĂ©' Ă diffĂ©rents membres du personnel entrants, tandis que le rĂŽle 'Responsable RH' reste constant, facilitant ainsi un processus d'intĂ©gration fluide pour chaque recrue",
+ "signyour-self-1": "Sélectionnez et faites glisser vos widgets préférés sur le PDF pour personnaliser votre document avant de le signer. Choisissez les endroits parfaits pour chaque modification afin d'adapter le document à vos besoins.",
+ "signyour-self-2":"Faites glisser et dĂ©poser n'importe oĂč dans cette zone. Vous pourrez la redimensionner et la dĂ©placer plus tard.",
+ "template-placeholder-1":"Cliquer sur le bouton 'Ajouter un rÎle' vous permettra d'ajouter différents rÎles de signataire. Vous pourrez attacher des utilisateurs à chaque rÎle dans les étapes suivantes.",
+ "template-placeholder-2": "Une fois les rĂŽles ajoutĂ©s, sĂ©lectionnez un rĂŽle dans la liste pour ajouter un espace rĂ©servĂ© Ă l'endroit oĂč il est censĂ© signer. L'espace rĂ©servĂ© apparaĂźtra dans la mĂȘme couleur que le nom du rĂŽle une fois que vous l'aurez dĂ©posĂ© sur le document.",
+ "template-placeholder-3":"Faites glisser ou cliquez sur un champ pour l'ajouter au document.",
+ "template-placeholder-4":"Faites glisser l'espace rĂ©servĂ© pour un rĂŽle n'importe oĂč sur le document. N'oubliez pas qu'il apparaĂźtra dans la mĂȘme couleur que le nom du destinataire pour une rĂ©fĂ©rence facile.",
+ "template-placeholder-5":"Cliquer sur 'Suivant' stockera le modÚle actuel. AprÚs l'enregistrement, vous serez invité à créer un nouveau document à partir de ce modÚle si vous le souhaitez.",
+ "webhook-1":"Mettez à niveau maintenant pour définir le webhook"
+
+
+ }
+
+
+
diff --git a/apps/OpenSign/src/components/AddUser.js b/apps/OpenSign/src/components/AddUser.js
index 68ff280cf..b8b2bcdee 100644
--- a/apps/OpenSign/src/components/AddUser.js
+++ b/apps/OpenSign/src/components/AddUser.js
@@ -70,7 +70,7 @@ const AddUser = (props) => {
setIsLoader(true);
const res = await checkUserExist();
if (res) {
- props.setIsAlert({ type: "danger", msg: "User already exist." });
+ props.setIsAlert({ type: "danger", msg: t("user-already-exist") });
setIsLoader(false);
setTimeout(() => {
props.setIsAlert({ type: "success", msg: "" });
@@ -217,7 +217,10 @@ const AddUser = (props) => {
} catch (err) {
console.log("err", err);
setIsLoader(false);
- props.setIsAlert({ type: "danger", msg: "something went wrong." });
+ props.setIsAlert({
+ type: "danger",
+ msg: t("something-went-wrong-mssg")
+ });
} finally {
setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1500);
}
@@ -243,7 +246,7 @@ const AddUser = (props) => {
const copytoclipboard = (text) => {
copytoData(text);
- props.setIsAlert({ type: "success", msg: "Copied" });
+ props.setIsAlert({ type: "success", msg: t("copied") });
setTimeout(() => props.setIsAlert({ type: "success", msg: "" }), 1500); // Reset copied state after 1.5 seconds
};
return (
diff --git a/apps/OpenSign/src/components/LoginFacebook.js b/apps/OpenSign/src/components/LoginFacebook.js
index 7b3e2aa92..edfe43dc7 100644
--- a/apps/OpenSign/src/components/LoginFacebook.js
+++ b/apps/OpenSign/src/components/LoginFacebook.js
@@ -1,6 +1,7 @@
import React, { useState } from "react";
import Parse from "parse";
import Loader from "../primitives/Loader";
+import { useTranslation } from "react-i18next";
// import FacebookLogin from "react-facebook-login";
const LoginFacebook = ({
@@ -9,6 +10,7 @@ const LoginFacebook = ({
thirdpartyLoader,
setThirdpartyLoader
}) => {
+ const { t } = useTranslation();
const [isModal, setIsModal] = useState(false);
const [userDetails, setUserDetails] = useState({
Phone: "",
@@ -106,10 +108,10 @@ const LoginFacebook = ({
alert(userSignUp.message);
}
} else {
- alert("Internal server error !");
+ alert(t("server-error"));
}
} else {
- alert("Please fill required details!");
+ alert(t("fill-required-details!"));
}
};
return (
@@ -136,7 +138,7 @@ const LoginFacebook = ({
-
Sign up form
+
{t("sign-up-form")}
@@ -145,7 +147,8 @@ const LoginFacebook = ({
diff --git a/apps/OpenSign/src/pages/PdfRequestFiles.js b/apps/OpenSign/src/pages/PdfRequestFiles.js
index 314e33b9f..b01db5498 100644
--- a/apps/OpenSign/src/pages/PdfRequestFiles.js
+++ b/apps/OpenSign/src/pages/PdfRequestFiles.js
@@ -191,7 +191,7 @@ function PdfRequestFiles(props) {
const currentUser = JSON.parse(localuser);
await handleSendOTP(currentUser?.email);
setOtpLoader(false);
- alert("OTP sent on you email");
+ alert(t("otp-sent-alert"));
};
//`handleVerifyEmail` function is used to verify email with otp
const handleVerifyEmail = async (e) => {
@@ -318,12 +318,12 @@ function PdfRequestFiles(props) {
(documentData.result && documentData.result.error)
) {
console.log("err in get template details ");
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
setIsLoading({
isLoad: false
});
} else {
- setHandleError("No Data Found!");
+ setHandleError(t("no-data"));
setIsLoading({
isLoad: false
});
@@ -331,9 +331,9 @@ function PdfRequestFiles(props) {
} catch (err) {
console.log("err in get template details ", err);
if (err?.response?.data?.code === 101) {
- setHandleError("Error: Template not found!");
+ setHandleError(t("error-template"));
} else {
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
}
}
};
@@ -408,8 +408,7 @@ function PdfRequestFiles(props) {
}, 5000);
setIsCompleted({
isModal: true,
- message:
- "You have successfully signed the document. You can download or print a copy of the partially signed document. A copy of the digitally signed document will be sent to the owner over email once it is signed by all signers."
+ message: t("document-signed-alert-1")
});
} else {
if (currUserId) {
@@ -561,7 +560,7 @@ function PdfRequestFiles(props) {
const currentUserEmail = currentUser.email;
const res = await contractUsers(currentUserEmail);
if (res === "Error: Something went wrong!") {
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
} else if (res[0] && res?.length) {
setContractName("_Users");
currUserId = res[0].objectId;
@@ -577,7 +576,7 @@ function PdfRequestFiles(props) {
} else if (res?.length === 0) {
const res = await contactBook(currUserId);
if (res === "Error: Something went wrong!") {
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
} else if (res[0] && res.length) {
setContractName("_Contactbook");
const objectId = res[0].objectId;
@@ -591,7 +590,7 @@ function PdfRequestFiles(props) {
setRequestSignTour(checkTourRequest[0]?.requestSign || false);
}
} else if (res.length === 0) {
- setHandleError("Error: User does not exist!");
+ setHandleError(t("user-not-exist"));
}
}
}
@@ -600,13 +599,13 @@ function PdfRequestFiles(props) {
documentData === "Error: Something went wrong!" ||
(documentData.result && documentData.result.error)
) {
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
setIsLoading({
isLoad: false
});
console.log("err in getDocument cloud function ");
} else {
- setHandleError("No Data Found!");
+ setHandleError(t("no-data"));
setIsUiLoading({
isLoad: false
});
@@ -642,7 +641,7 @@ function PdfRequestFiles(props) {
})
.catch((err) => {
console.log("Err in contracts_Signature class", err);
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
setIsLoading({
isLoad: false
});
@@ -832,7 +831,7 @@ function PdfRequestFiles(props) {
//convert document url in array buffer format to use embed widgets in pdf using pdf-lib
const arrayBuffer = await convertPdfArrayBuffer(url);
if (arrayBuffer === "Error") {
- setHandleError("Error: invalid document!");
+ setHandleError(t("invalid-document"));
} else {
pdfArrBuffer = arrayBuffer;
}
@@ -840,9 +839,9 @@ function PdfRequestFiles(props) {
documentData === "Error: Something went wrong!" ||
(documentData.result && documentData.result.error)
) {
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
} else {
- setHandleError("Document not Found!");
+ setHandleError(t("document-not-found"));
}
// Load a PDFDocument from the existing PDF bytes
@@ -875,7 +874,7 @@ function PdfRequestFiles(props) {
const res = await contractUsers(currentUserEmail);
let activeMailAdapter = "";
if (res === "Error: Something went wrong!") {
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
setIsLoading({
isLoad: false
});
@@ -1040,13 +1039,13 @@ function PdfRequestFiles(props) {
} else {
setIsAlert({
isShow: true,
- alertMessage: "something went wrong"
+ alertMessage: t("something-went-wrong-mssg")
});
}
} catch (err) {
setIsAlert({
isShow: true,
- alertMessage: "something went wrong"
+ alertMessage: t("something-went-wrong-mssg")
});
}
} catch (err) {
@@ -1054,7 +1053,7 @@ function PdfRequestFiles(props) {
if (err && err.message.includes("is encrypted.")) {
setIsAlert({
isShow: true,
- alertMessage: `Currently encrypted pdf files are not supported.`
+ alertMessage: t("encrypted-pdf-not-support")
});
} else {
console.log("err in request signing", err);
@@ -1069,7 +1068,7 @@ function PdfRequestFiles(props) {
} else {
setIsAlert({
isShow: true,
- alertMessage: "something went wrong"
+ alertMessage: t("something-went-wrong-mssg")
});
}
} catch (err) {
@@ -1077,7 +1076,7 @@ function PdfRequestFiles(props) {
setIsUiLoading(false);
setIsAlert({
isShow: true,
- alertMessage: "something went wrong, please try again later."
+ alertMessage: t("something-went-wrong-mssg")
});
}
} else {
@@ -1093,7 +1092,7 @@ function PdfRequestFiles(props) {
}
} catch (e) {
console.log("error in save user's emailVerified in user class");
- setHandleError("Error: Something went wrong!");
+ setHandleError(t("something-went-wrong-mssg"));
}
}
}
@@ -1381,7 +1380,7 @@ function PdfRequestFiles(props) {
selector: '[data-tut="reactourFirst"]',
content: () => (
),
@@ -1392,7 +1391,7 @@ function PdfRequestFiles(props) {
selector: '[data-tut="pdfArea"]',
content: () => (
),
@@ -1403,7 +1402,7 @@ function PdfRequestFiles(props) {
selector: '[data-tut="reactourFifth"]',
content: () => (
),
@@ -1415,7 +1414,7 @@ function PdfRequestFiles(props) {
selector: '[data-tut="reactourSecond"]',
content: () => (
),
@@ -1433,7 +1432,7 @@ function PdfRequestFiles(props) {
selector: '[data-tut="reactourThird"]',
content: () => (
),
@@ -1493,7 +1492,7 @@ function PdfRequestFiles(props) {
await SendOtp();
} else {
console.log("error in public-sign to create user details");
- alert("something went wrong");
+ alert(t("something-went-wrong-mssg"));
}
} catch (e) {
console.log("e", e);
@@ -1526,7 +1525,7 @@ function PdfRequestFiles(props) {
}
} catch (error) {
console.log("error in verify otp in public-sign", error);
- alert("something went wrong!");
+ alert(t("something-went-wrong-mssg"));
}
};
@@ -1552,10 +1551,10 @@ function PdfRequestFiles(props) {
};
let user = await axios.post(url, body, { headers: headers });
if (user.data.result === "Invalid Otp") {
- alert("Invalid Otp");
+ alert(t("invalid-otp"));
setLoading(false);
} else if (user.data.result === "user not found!") {
- alert("User not found!");
+ alert(t("user-not-found"));
setLoading(false);
} else {
let _user = user.data.result;
@@ -1590,7 +1589,7 @@ function PdfRequestFiles(props) {
console.log("err ", error);
}
} else {
- alert("Please Enter OTP!");
+ alert(t("enter-otp-alert"));
}
};
const handleCloseOtp = () => {
@@ -1863,7 +1862,7 @@ function PdfRequestFiles(props) {
setDefaultSignAlert({ isShow: false, alertMessage: "" })
}
@@ -1878,7 +1877,7 @@ function PdfRequestFiles(props) {
type="button"
className="op-btn op-btn-primary"
>
- Yes
+ {t("yes")}
@@ -1890,7 +1889,7 @@ function PdfRequestFiles(props) {
type="button"
className="op-btn op-btn-secondary"
>
- Close
+ {t("close")}
>
) : (
@@ -1901,7 +1900,7 @@ function PdfRequestFiles(props) {
type="button"
className="op-btn op-btn-primary"
>
- Ok
+ {t("ok")}
)}
@@ -1933,7 +1932,7 @@ function PdfRequestFiles(props) {
{/* this modal is used show this document is already sign */}
{
setIsCompleted((prev) => ({ ...prev, isModal: false }));
}}
@@ -1947,10 +1946,7 @@ function PdfRequestFiles(props) {
{isCompleted?.message}
) : (
-
- Congratulations! đ This document has been
- successfully signed by all participants!
-
+ {t("document-signed-alert-4")}
)}
{!isCompleted?.message && (
@@ -1966,7 +1962,9 @@ function PdfRequestFiles(props) {
className="fa-light fa-print"
aria-hidden="true"
>
- Print
+
+ {t("print")}
+
- Certificate
+ {t("certificate")}
- Download
+
+ {t("download")}
+
)}
@@ -2016,18 +2016,14 @@ function PdfRequestFiles(props) {
isOpen={isDownloading === "certificate"}
title={
isDownloading === "certificate"
- ? "Generating certificate"
- : "PDF Download"
+ ? t("generating-certificate")
+ : t("pdf-download")
}
handleClose={() => setIsDownloading("")}
>
{isDownloading === "certificate"}{" "}
-
- Your completion certificate is being generated. Please
- wait momentarily. If the download doesn't start
- shortly, click the button again.
-
+
{t("generate-certificate-alert")}
{/* this component is used for signature pad modal */}
@@ -2133,7 +2129,7 @@ function PdfRequestFiles(props) {
data-tut="reactourSecond"
className="mx-2 pr-2 pt-2 pb-1 text-[15px] text-base-content font-semibold border-b-[1px] border-base-300"
>
- Signed by
+ {t("signed-by")}
{signedSigners.map((obj, ind) => {
@@ -2158,7 +2154,7 @@ function PdfRequestFiles(props) {
data-tut="reactourFirst"
className="mx-2 pr-2 pt-2 pb-1 text-[15px] text-base-content font-semibold border-b-[1px] border-base-300"
>
- Yet to sign
+ {t("yet-to-sign")}
{unsignedSigners.map((obj, ind) => {
@@ -2193,23 +2189,20 @@ function PdfRequestFiles(props) {
)}
{
setValidateAlert(false);
}}
>
-
- The input does not meet the criteria set by the regular
- expression.
-
+
{t("validation-alert-1")}
setValidateAlert(false)}
type="button"
className="op-btn op-btn-ghost"
>
- Close
+ {t("close")}
diff --git a/apps/OpenSign/src/pages/Pgsignup.js b/apps/OpenSign/src/pages/Pgsignup.js
index 7e5c97637..95474b18f 100644
--- a/apps/OpenSign/src/pages/Pgsignup.js
+++ b/apps/OpenSign/src/pages/Pgsignup.js
@@ -8,8 +8,10 @@ import { appInfo } from "../constant/appinfo";
import { showTenant } from "../redux/reducers/ShowTenant";
import { fetchAppInfo } from "../redux/reducers/infoReducer";
import Loader from "../primitives/Loader";
+import { useTranslation } from "react-i18next";
const PgSignUp = () => {
+ const { t } = useTranslation();
const navigate = useNavigate();
const location = useLocation();
const dispatch = useDispatch();
@@ -168,11 +170,11 @@ const PgSignUp = () => {
} catch (error) {
console.log("err ", error);
if (error.message === "Account already exists for this username.") {
- alert("Account already exists!");
+ alert(t("account-already-exists"));
navigate("/", { replace: true });
} else {
setIsLoader(false);
- alert("Something went wrong, please try again later!");
+ alert(t("something-went-wrong-mssg"));
}
}
};
@@ -262,7 +264,7 @@ const PgSignUp = () => {
localStorage.setItem("defaultmenuid", menu.menuId);
localStorage.setItem("pageType", menu.pageType);
setIsLoader(false);
- alert("Registered user successfully");
+ alert(t("registered-user-successfully"));
const redirectUrl =
location?.state?.from || `/${menu.pageType}/${menu.pageId}`;
// Redirect to the appropriate URL after successful login
@@ -294,15 +296,15 @@ const PgSignUp = () => {
>
)}
@@ -369,7 +368,7 @@ const PgSignUp = () => {
type="submit"
className="op-btn op-btn-primary w-full mt-[8px]"
>
- Submit
+ {t("submit")}
diff --git a/apps/OpenSign/src/pages/PlaceHolderSign.js b/apps/OpenSign/src/pages/PlaceHolderSign.js
index a7a352a3e..e2c186950 100644
--- a/apps/OpenSign/src/pages/PlaceHolderSign.js
+++ b/apps/OpenSign/src/pages/PlaceHolderSign.js
@@ -192,7 +192,7 @@ function PlaceHolderSign() {
try {
const tenantDetails = await getTenantDetails(user?.objectId);
if (tenantDetails && tenantDetails === "user does not exist!") {
- alert("User does not exist");
+ alert(t("user-not-exist"));
} else if (tenantDetails) {
const defaultRequestBody = `Hi {{receiver_name}},
We hope this email finds you well. {{sender_name}} has requested you to review and sign {{document_title}}.
Your signature is crucial to proceed with the next steps as it signifies your agreement and authorization.
{{signing_url}}
If you have any questions or need further clarification regarding the document or the signing process, please contact the sender.
Thanks
Team OpenSignâą
`;
if (tenantDetails?.RequestBody) {
@@ -215,10 +215,10 @@ function PlaceHolderSign() {
}
}
} catch (e) {
- alert("User does not exist");
+ alert(t("user-not-exist"));
}
} else {
- alert("User does not exist");
+ alert(t("user-not-exist"));
}
};
@@ -297,32 +297,29 @@ function PlaceHolderSign() {
// If document is completed
setIsAlreadyPlace({
status: true,
- message: "This document has been signed by all Signers."
+ message: t("document-signed-alert-5")
});
} else if (declined) {
// If document has been declined
setIsAlreadyPlace({
status: true,
- message:
- "This document has been declined by one or more recipient(s)."
+ message: t("document-signed-alert-6")
});
} else if (currDate > expireUpdateDate) {
// If document has expired
setIsAlreadyPlace({
status: true,
- message: "This Document is no longer available."
+ message: t("document-signed-alert-7")
});
} else {
// If document is dispatched for signing
setIsAlreadyPlace({
status: true,
- message: "The document has already been dispatched for signing."
+ message: t("document-signed-alert-8")
});
}
}
-
setPdfDetails(documentData);
-
if (documentData[0].Signers && documentData[0].Signers.length > 0) {
const currEmail = documentData[0].ExtUserPtr.Email;
setCurrentId(currEmail);
@@ -914,20 +911,18 @@ function PlaceHolderSign() {
}
if (!signatureExist) {
isSignatureExist = false;
- const alert = {
- mssg: "sure",
+ setIsSendAlert({
+ mssg: t("sure"),
alert: true
- };
- setIsSendAlert(alert);
+ });
}
}
if (getPrefill && isLabel) {
- const alert = {
+ setIsSendAlert({
mssg: textWidget,
alert: true
- };
- setIsSendAlert(alert);
+ });
} else if (isSignatureExist) {
if (filterPrefill.length === signersdata.length) {
const IsSignerNotExist = filterPrefill?.filter((x) => !x.signerObjId);
@@ -940,11 +935,10 @@ function PlaceHolderSign() {
saveDocumentDetails();
}
} else {
- const alert = {
- mssg: "sure",
+ setIsSendAlert({
+ mssg: t("sure"),
alert: true
- };
- setIsSendAlert(alert);
+ });
}
}
};
@@ -1028,11 +1022,11 @@ function PlaceHolderSign() {
})
.catch((err) => {
console.log("axois err ", err);
- alert("something went wrong");
+ alert(t("something-went-wrong-mssg"));
});
} catch (e) {
console.log("error", e);
- alert("something went wrong");
+ alert(t("something-went-wrong-mssg"));
}
};
@@ -1266,7 +1260,7 @@ function PlaceHolderSign() {
selector: '[data-tut="recipientArea"]',
content: () => (
),
@@ -1277,7 +1271,7 @@ function PlaceHolderSign() {
selector: '[data-tut="addRecipient"]',
content: () => (
),
@@ -1288,7 +1282,7 @@ function PlaceHolderSign() {
selector: '[data-tut="addWidgets"]',
content: () => (
),
@@ -1299,7 +1293,7 @@ function PlaceHolderSign() {
selector: '[data-tut="pdfArea"]',
content: () => (
),
@@ -1311,7 +1305,7 @@ function PlaceHolderSign() {
selector: '[data-tut="headerArea"]',
content: () => (
),
diff --git a/apps/OpenSign/src/pages/PlanSubscriptions.js b/apps/OpenSign/src/pages/PlanSubscriptions.js
index eaaeaa08e..1987048f4 100644
--- a/apps/OpenSign/src/pages/PlanSubscriptions.js
+++ b/apps/OpenSign/src/pages/PlanSubscriptions.js
@@ -6,6 +6,7 @@ import Title from "../components/Title";
import Parse from "parse";
import { openInNewTab } from "../constant/Utils";
import Loader from "../primitives/Loader";
+import { useTranslation } from "react-i18next";
const listItemStyle = {
paddingLeft: "20px", // Add padding to create space for the image
backgroundImage: `url(${checkmark})`, // Set your image as the list style image
@@ -15,6 +16,7 @@ const listItemStyle = {
};
const PlanSubscriptions = () => {
+ const { t } = useTranslation();
const navigate = useNavigate();
const [yearlyVisible, setYearlyVisible] = useState(true);
const [isLoader, setIsLoader] = useState(true);
@@ -76,7 +78,7 @@ const PlanSubscriptions = () => {
const res = await Parse.Cloud.run("freesubscription", params);
if (res.status === "success" && res.result === "already subscribed!") {
setIsLoader(false);
- alert("You have already subscribed to plan!");
+ alert(t("subscribed-alert"));
} else if (res.status === "success") {
setIsLoader(false);
navigate("/");
@@ -87,7 +89,7 @@ const PlanSubscriptions = () => {
} catch (err) {
setIsLoader(false);
console.log("err in free subscribe", err.message);
- alert("Somenthing went wrong, please try again later!");
+ alert(t("something-went-wrong-mssg"));
}
}
};
@@ -111,14 +113,14 @@ const PlanSubscriptions = () => {
role="tab"
className={`${!yearlyVisible ? "op-tab-active" : ""} op-tab`}
>
- Monthly
+ {t("monthly")}
setYearlyVisible(true)}
role="tab"
className={`${yearlyVisible ? "op-tab-active" : ""} op-tab`}
>
- Yearly (upto 66% off)
+ {t("yearly-upto")}
@@ -170,7 +172,9 @@ const PlanSubscriptions = () => {
)}
- {yearlyVisible ? "Billed Yearly" : "Billed Monthly"}
+ {yearlyVisible
+ ? t("billed-yearly")
+ : t("billed-monthly")}
{
- Host it yourself for free
+ {t("plansubscription-1")}
{
openInNewTab("https://github.com/OpenSignLabs/OpenSign")
}
>
- Visit Github
+ {t("visit-github")}
diff --git a/apps/OpenSign/src/pages/Report.js b/apps/OpenSign/src/pages/Report.js
index 7afba1711..c6a8451d0 100644
--- a/apps/OpenSign/src/pages/Report.js
+++ b/apps/OpenSign/src/pages/Report.js
@@ -8,8 +8,10 @@ import Title from "../components/Title";
import PageNotFound from "./PageNotFound";
import TourContentWithBtn from "../primitives/TourContentWithBtn";
import Loader from "../primitives/Loader";
+import { useTranslation } from "react-i18next";
const Report = () => {
+ const { t } = useTranslation();
const { id } = useParams();
const [List, setList] = useState([]);
const [isLoader, setIsLoader] = useState(true);
@@ -83,9 +85,7 @@ const Report = () => {
selector: "[data-tut=reactourFirst]",
content: () => (
),
diff --git a/apps/OpenSign/src/pages/SSOVerify.js b/apps/OpenSign/src/pages/SSOVerify.js
index b2ab6701d..469164fef 100644
--- a/apps/OpenSign/src/pages/SSOVerify.js
+++ b/apps/OpenSign/src/pages/SSOVerify.js
@@ -8,8 +8,10 @@ import { useDispatch } from "react-redux";
import { showTenant } from "../redux/reducers/ShowTenant";
import ModalUi from "../primitives/ModalUi";
import Loader from "../primitives/Loader";
+import { useTranslation } from "react-i18next";
const SSOVerify = () => {
+ const { t } = useTranslation();
const location = useLocation();
const navigate = useNavigate();
const dispatch = useDispatch();
@@ -120,16 +122,16 @@ const SSOVerify = () => {
} catch (err) {
console.log("error in usersignup", err);
localStorage.removeItem("accesstoken");
- alert("Something went wrong.");
+ alert(t("something-went-wrong-mssg"));
setIsLoader(false);
}
} else {
localStorage.removeItem("accesstoken");
- alert("Internal server error.");
+ alert(t("server-error"));
setIsLoader(false);
}
} else {
- alert("Please fill required details correctly.");
+ alert(t("filed-required-correctly"));
setIsLoader(false);
}
};
@@ -207,19 +209,15 @@ const SSOVerify = () => {
}
}
} else {
- alert(
- "Error: You don't have access, please contact the admin."
- );
- setMessage(
- "Error: You don't have access, please contact the admin."
- );
+ alert(t("do-not-access-contact-admin"));
+ setMessage(t("do-not-access-contact-admin"));
}
}
})
.catch((error) => {
console.error("Err in fetch extuser", error);
- alert("user not exist.");
- setMessage("Error: User not exist.");
+ alert(t("user-not-exist"));
+ setMessage(t("user-not-exist"));
});
} catch (err) {
console.log("err in getuserdetails", err);
@@ -265,7 +263,7 @@ const SSOVerify = () => {
>
- Phone *
+ {t("phone")} *
{
- Company *
+ {t("company")} *
{
- Job Title
+ {t("job-title")}
*
{
- Login
+ {t("login")}
- Cancel
+ {t("cancel")}
diff --git a/apps/OpenSign/src/pages/Signup.js b/apps/OpenSign/src/pages/Signup.js
index 0b0a97fc2..303485c72 100644
--- a/apps/OpenSign/src/pages/Signup.js
+++ b/apps/OpenSign/src/pages/Signup.js
@@ -71,7 +71,7 @@ const Signup = () => {
}
} catch (err) {
console.log("err in free subscribe", err.message);
- alert("Somenthing went wrong, please try again later!");
+ alert(t("something-went-wrong-mssg"));
}
};
const handleSubmit = (event) => {
@@ -138,7 +138,7 @@ const Signup = () => {
const res = await Parse.Cloud.run("getUserDetails", params);
// console.log("Res ", res);
if (res) {
- alert("User already exists with this username!");
+ alert(t("user-already-exist-name"));
setState({ loading: false });
} else {
// console.log("state.email ", email);
@@ -146,9 +146,7 @@ const Signup = () => {
await Parse.User.requestPasswordReset(email).then(
async function (res1) {
if (res1.data === undefined) {
- alert(
- "Verification mail has been sent to your E-mail!"
- );
+ alert(t("verification-code-sent"));
}
}
);
@@ -235,14 +233,14 @@ const Signup = () => {
navigate(`/subscription`, { replace: true });
}
} else {
- alert("Registered user successfully");
+ alert(t("registered-user-successfully"));
navigate(`/${menu.pageType}/${menu.pageId}`);
}
} else {
setState({
loading: false,
alertType: "danger",
- alertMsg: "Role not found."
+ alertMsg: t("role-not-found")
});
setTimeout(() => {
setState({ loading: false, alertMsg: "" });
@@ -252,7 +250,7 @@ const Signup = () => {
setState({
loading: false,
alertType: "danger",
- alertMsg: "You don't have access, please contact the admin."
+ alertMsg: t("do-not-access-contact-admin")
});
setTimeout(() => {
setState({ loading: false, alertMsg: "" });
@@ -265,7 +263,7 @@ const Signup = () => {
setState({
loading: false,
alertType: "danger",
- alertMsg: "You don't have access, please contact the admin."
+ alertMsg: t("do-not-access-contact-admin")
});
setTimeout(() => {
setState({ loading: false, alertMsg: "" });
diff --git a/apps/OpenSign/src/pages/SignyourselfPdf.js b/apps/OpenSign/src/pages/SignyourselfPdf.js
index c58708e85..e923f46bc 100644
--- a/apps/OpenSign/src/pages/SignyourselfPdf.js
+++ b/apps/OpenSign/src/pages/SignyourselfPdf.js
@@ -997,7 +997,7 @@ function SignYourSelf() {
selector: '[data-tut="addWidgets"]',
content: () => (
),
@@ -1008,7 +1008,7 @@ function SignYourSelf() {
selector: '[data-tut="reactourSecond"]',
content: () => (
),
diff --git a/apps/OpenSign/src/pages/TemplatePlaceholder.js b/apps/OpenSign/src/pages/TemplatePlaceholder.js
index 85500123e..44972863d 100644
--- a/apps/OpenSign/src/pages/TemplatePlaceholder.js
+++ b/apps/OpenSign/src/pages/TemplatePlaceholder.js
@@ -778,7 +778,7 @@ const TemplatePlaceholder = () => {
setIsLoading(loadObj);
} catch (e) {
setIsLoading(false);
- alert("Something went wrong, please try again later.");
+ alert(t("something-went-wrong-mssg"));
console.log("error", e);
}
} else {
@@ -796,7 +796,7 @@ const TemplatePlaceholder = () => {
selector: '[data-tut="reactourAddbtn"]',
content: () => (
),
@@ -808,7 +808,7 @@ const TemplatePlaceholder = () => {
selector: '[data-tut="reactourFirst"]',
content: () => (
),
@@ -820,7 +820,7 @@ const TemplatePlaceholder = () => {
selector: '[data-tut="addWidgets"]',
content: () => (
),
@@ -831,7 +831,7 @@ const TemplatePlaceholder = () => {
selector: '[data-tut="reactourThird"]',
content: () => (
),
@@ -842,7 +842,7 @@ const TemplatePlaceholder = () => {
selector: '[data-tut="headerArea"]',
content: () => (
),
diff --git a/apps/OpenSign/src/pages/UpdateExistUserAdmin.js b/apps/OpenSign/src/pages/UpdateExistUserAdmin.js
index bd4338878..e71dcb530 100644
--- a/apps/OpenSign/src/pages/UpdateExistUserAdmin.js
+++ b/apps/OpenSign/src/pages/UpdateExistUserAdmin.js
@@ -4,8 +4,9 @@ import Parse from "parse";
import { NavLink, useNavigate } from "react-router-dom";
import Alert from "../primitives/Alert";
import Title from "../components/Title";
-
+import { useTranslation } from "react-i18next";
const UpdateExistUserAdmin = () => {
+ const { t } = useTranslation();
const navigate = useNavigate();
const [formdata, setFormdata] = useState({ email: "", masterkey: "" });
const [loader, setLoader] = useState(true);
@@ -41,19 +42,19 @@ const UpdateExistUserAdmin = () => {
);
// console.log("updateUserAsAdmin ", updateUserAsAdmin);
if (updateUserAsAdmin === "admin_created") {
- setIsAlert({ type: "success", msg: "Admin created" });
+ setIsAlert({ type: "success", msg: t("admin-created") });
navigate("/");
}
} catch (err) {
console.log("err in updateuserasadmin", err.code);
if (err.code === 404) {
- setIsAlert((prev) => ({ ...prev, msg: "Invalid masterkey" }));
+ setIsAlert((prev) => ({ ...prev, msg: t("invalid-masterkey") }));
} else if (err.code === 101) {
- setIsAlert((prev) => ({ ...prev, msg: "User not found" }));
+ setIsAlert((prev) => ({ ...prev, msg: t("user-not-found") }));
} else if (err.code === 137) {
- setIsAlert((prev) => ({ ...prev, msg: "Admin already exist" }));
+ setIsAlert((prev) => ({ ...prev, msg: t("admin-already-exist") }));
} else {
- setErrMsg("Something went wrong.");
+ setErrMsg(t("something-went-wrong-mssg"));
}
} finally {
setIsSubmitLoading(false);
@@ -64,7 +65,7 @@ const UpdateExistUserAdmin = () => {
};
return (
-
+
{isAlert.msg && (
{isAlert.msg}
@@ -90,7 +91,7 @@ const UpdateExistUserAdmin = () => {
)}
- Opensign Setup
+ {t("opensign-Setup")}
{
rel="noopener noreferrer"
className="text-center text-sm mt-1 text-[blue] cursor-pointer"
>
- Join our discord server
+ {t("join-discord")}
{
- Email *
+ {t("email")}{" "}
+ *
{
/>
- Master key{" "}
+ {t("master-key")}{" "}
*
{
className="op-btn op-btn-primary w-full"
disabled={loader}
>
- {loader ? "Loading..." : "Next"}
+ {loader ? t("loading") : t("next")}
diff --git a/apps/OpenSign/src/pages/UserProfile.js b/apps/OpenSign/src/pages/UserProfile.js
index 8accaa439..4e69dbb56 100644
--- a/apps/OpenSign/src/pages/UserProfile.js
+++ b/apps/OpenSign/src/pages/UserProfile.js
@@ -94,7 +94,7 @@ function UserProfile() {
setIsLoader(false);
}
} catch (e) {
- alert("something went wrong!");
+ alert(t("something-went-wrong-mssg"));
}
}
};
@@ -148,14 +148,14 @@ function UserProfile() {
Name: res.name,
Phone: res?.phone || ""
});
- alert("Profile updated successfully.");
+ alert(t("profile-update-alert"));
setEditMode(false);
setIsLoader(false);
//navigate("/dashboard/35KBoSgoAK");
}
},
(error) => {
- alert("Something went wrong.");
+ alert(t("something-went-wrong-mssg"));
console.error("Error while updating tour", error);
setIsLoader(false);
}
@@ -290,7 +290,7 @@ function UserProfile() {
setOtpLoader(true);
await handleSendOTP();
setOtpLoader(false);
- alert("OTP sent on you email");
+ alert(t("otp-sent-alert"));
};
//function to handle onchange username and restrict 6-characters username for free users
const handleOnchangeUserName = (e) => {
diff --git a/apps/OpenSign/src/pages/Webhook.js b/apps/OpenSign/src/pages/Webhook.js
index b9dc45c3f..a9bff7f54 100644
--- a/apps/OpenSign/src/pages/Webhook.js
+++ b/apps/OpenSign/src/pages/Webhook.js
@@ -11,12 +11,7 @@ import Loader from "../primitives/Loader";
import SubscribeCard from "../primitives/SubscribeCard";
import Tour from "reactour";
import { useTranslation } from "react-i18next";
-const tourSteps = [
- {
- selector: '[data-tut="webhooksubscribe"]',
- content: "Upgrade now to set webhook"
- }
-];
+
function Webhook() {
const { t } = useTranslation();
const [parseBaseUrl] = useState(localStorage.getItem("baseUrl"));
@@ -32,7 +27,12 @@ function Webhook() {
fetchWebhook();
// eslint-disable-next-line
}, []);
-
+ const tourSteps = [
+ {
+ selector: '[data-tut="webhooksubscribe"]',
+ content: t("tour-mssg.webhook-1")
+ }
+ ];
const fetchWebhook = async () => {
const email = Parse.User.current().getEmail();
if (isEnableSubscription) {