From 77cd52ca04cadddee6ee6dac98194172ea4e020e Mon Sep 17 00:00:00 2001 From: RaktimaNXG Date: Tue, 30 Jul 2024 14:09:10 +0530 Subject: [PATCH] feat: appply multi-support language functionality on login,signup-page,sidebar menu --- .../public/locales/en/translation.json | 116 +++++++++++++++++- .../public/locales/fr/translation.json | 111 ++++++++++++++++- .../components/dashboard/DashboardButton.js | 6 +- .../src/components/dashboard/DashboardCard.js | 7 +- .../src/components/dashboard/GetDashboard.js | 2 +- apps/OpenSign/src/components/sidebar/Menu.js | 4 +- .../src/components/sidebar/SubMenu.js | 8 +- apps/OpenSign/src/pages/Form.js | 67 ++++------ apps/OpenSign/src/pages/Login.js | 31 ++--- apps/OpenSign/src/pages/Signup.js | 41 ++++--- apps/OpenSign/src/pages/UserProfile.js | 14 +-- .../src/primitives/GetReportDisplay.js | 6 +- apps/OpenSign/src/primitives/Upgrade.js | 4 +- 13 files changed, 322 insertions(+), 95 deletions(-) diff --git a/apps/OpenSign/public/locales/en/translation.json b/apps/OpenSign/public/locales/en/translation.json index 61b9382ac..0ec717b36 100644 --- a/apps/OpenSign/public/locales/en/translation.json +++ b/apps/OpenSign/public/locales/en/translation.json @@ -1,5 +1,5 @@ { - "create-account": "Create account", + "create-account": "Create Account", "login": "Login", "language":"Language", "name":"Name", @@ -15,6 +15,118 @@ "ascending":"Ascending", "Action":"Action", "add":"add", - "add-new-folder":"ajouter un nouveau dossier" + "add-new-folder":"ajouter un nouveau dossier", + "disable-documentId":"Disable DocumentId", + "edit":"Edit", + "change-password":"Change Password", + "save":"Save", + "cancel":"Cancel", + "upgrade-now":"Upgrade now", + "user":"User", + "public-profile-help": "This is your public URL. Copy or share it with the signer, and you will be able to see all your publicly set templates.", + "tagline-help":"This Tagline will appear on your OpenSign public profile for ex. https://opensign.me/alex", + "welcome":"Welcome Back!", + "Login-to-your-account":"Login to your account", + "password":"Password", + "forgot-password":"Forgot Password?", + "loading":"Loading...", + "sign-SSO":"Sign in with SSO", + "login-page":"Login Page", + "or":"OR", + "signup-page":"Signup page", + "password-length":"Password should be 8 characters long", + "password-case":"Password should contain uppercase letter, lowercase letter, digit", + "password-special-char":" Password should contain special character", + "agreee":"I agree to the", + "term":"Terms of Service", + "register":"Register", + "sidebar": { + "Dashboard": "Dashboard", + "Sign yourself": "Sign yourself", + "Request signatures":"Request signatures", + "Templates":"Templates", + "Templates-Children":{ + "Create template":"Create template", + "Manage templates": "Manage templates" + }, + "OpenSign™ Drive":"OpenSign™ Drive", + "Reports":"Reports", + "Reports-Children" :{ + "Need your sign": "Need your sign", + "In Progress": "In Progress", + "Completed":"Completed", + "Drafts": "Drafts", + "Declined": "Declined", + "Expired":"Expired", + "Contactbook":"Contactbook" + }, + "Settings": "Settings", + "Settings-Children":{ + "My Signature": "My Signature", + "API Token":"API Token", + "Webhook":"Webhook" + } + }, + "dashboard-card":{ + "Need your Signature":"Need your Signature", + "Out for signatures":"Out for Signatures" + }, + "report-name":{ + "Draft Documents":"Draft Documents", + "Need your sign":"Need your sign", + "In-progress documents":"In-progress documents", + "Completed Documents":"Completed Documents", + "Declined Documents":"Declined Documents", + "Expired Documents":"Expired Documents", + "Recently sent for signatures":"Recently sent for signatures", + "Recent signature requests":"Recent signature requests", + "Drafts":"Drafts", + "Contactbook":"Contactbook", + "Templates":"Templates" + }, + "report-heading":{ + "Sr.No":"Sr.No", + "Title":"Title", + "Email":"Email", + "Phone":"Phone", + "File":"File", + "Owner": "Owner", + "Signers":"Signers", + "Note": "Note", + "Folder": "Folder", + "Reason": "Reason" + + }, + "form-name":{ + "Sign Yourself":"Sign Yourself", + "Request Signatures":"Request Signatures", + "New Template":"New Template" + }, + "file-type":"pdf, png, jpg, jpeg", + "docx":"docx", + "file-selected":"file selected", + "template-title":"Template Title", + "document-title":"Document Title", + "description":"Description", + "time-to-complete":"Time To Complete (Days)", + "send-in-order":"Send In Order", + "send-in-order-help":{ + "p1":"Choose how you want the signing requests to be sent to the document signers:", + "p2":" Selecting this option will send the signing request to the first signer initially. Once the first signer completes their part, the next signer in the sequence will receive the request. This process continues until all signers have signed the document. This method ensures that the document is signed in a specific order.", + "p3":" Selecting this option will send the signing links to all signers simultaneously. Every signer can sign the document at their convenience, regardless of whether other signers have completed their signatures. This method is faster but does not enforce any signing order among the participants.", + "p4":" Select the option that best suits the needs of your document processing." + }, + "no":"No", + "auto-reminder":"Auto reminder", + "remind-once":" Remind once in every (Days)", + "next":"Next" + + + + + + + + } \ 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 7b0894916..c97910054 100644 --- a/apps/OpenSign/public/locales/fr/translation.json +++ b/apps/OpenSign/public/locales/fr/translation.json @@ -1,5 +1,5 @@ { - "create account": "Créer un compte", + "create-account": "Créer un compte", "login": "se connecter", "language":"Langue", "name":"Nom", @@ -15,6 +15,111 @@ "Ascending":"Ascendant", "Action":"Action", "add":"ajouter", - "add-new-folder":"add new folder" - } + "add-new-folder":"add new folder", + "disable-documentId":"Désactiver l'ID de document", + "edit":"Modifier", + "change-password":"Changer le mot de passe", + "save":"Sauvegarder", + "cancel":"Annuler", + "upgrade-now":"Mettre à jour maintenant", + "user":"Utilisateur", + "public-profile-help":"Il s'agit de votre URL publique. Copiez-le ou partagez-le avec le signataire et vous pourrez voir tous vos modèles définis publiquement.", + "tagline-help":"Ce slogan apparaîtra sur votre profil public OpenSign par exemple. https://opensign.me/alex", + "welcome":"Content de te revoir!", + "Login-to-your-account" :"Connectez-vous à votre compte", + "password" :"Mot de passe", + "forgot-password":"Mot de passe oublié?", + "loading":"Chargement...", + "sign-SSO":"Connectez-vous avec SSO", + "login-page":"Page de connexion", + "or":"OU", + "signup-page":"Page d'inscription", + "password-length":"Le mot de passe doit être 8 Longs caractères", + "password-case":"Le mot de passe doit contenir lettre majuscule, lettre minuscule, chiffre", + "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", + "register" :"Registre", + "sidebar": { + "Dashboard": "Tableau de bord", + "Sign yourself": "Signez-vous", + "Request signatures":"Demander des signatures", + "Templates":"Modèles", + "Templates-Children":{ + "Create template":"Créer un modèle", + "Manage templates": "Gérer les modèles" + }, + "OpenSign™ Drive":"Lecteur OpenSign™", + "Reports":"Rapports", + "Reports-Children" :{ + "Need your sign": "Besoin de votre signe", + "In Progress": "En cours", + "Completed":"Complété", + "Drafts": "Brouillons", + "Declined": "Diminué", + "Expired":"Expiré", + "Contactbook":"Carnet de contacts" + }, + "Settings": "Paramètres", + "Settings-Children":{ + "My Signature": "Ma signature", + "API Token":"Jeton API", + "Webhook":"Webhook" + } + }, + "dashboard-card":{ + "Need your Signature":"Besoin de votre signature", + "Out for signatures":"En quête de signatures" + }, + "report-name":{ + "Draft Documents":"Projets de documents", + "Need your sign":"Besoin de votre signe", + "In-progress documents":"Documents en cours", + "Completed Documents":"Documents complétés", + "Declined Documents":"Documents refusés", + "Expired Documents":"Documents expirés", + "Recently sent for signatures":"Récemment envoyé pour signature", + "Recent signature requests":"Demandes de signature récentes", + "Drafts":"Brouillons", + "Contactbook":"Carnet de contacts", + "Templates":"Modèles" + }, + "report-heading":{ + "Sr.No":"Sr. Non", + "Title":"Titre", + "Email":"E-mail", + "Phone":"Téléphone", + "File":"Déposer", + "Owner":"Propriétaire", + "Signers":"Signataires", + "Note": "Note", + "Folder":"Dossier", + "Reason": "Raison" + }, + "form-name":{ + "Sign Yourself":"Signez-vous", + "Request Signatures":"Demander des signatures", + "New Template":"Nouveau modèle" + }, + "file-type":"pdf, png, jpg, jpeg", + "docx":"docx", + "file-selected":"fichier sélectionné", + "template-title":"Titre du modèle", + "document-title":"Titre du document", + "description":"Description", + "time-to-complete":"Temps de réalisation (jours)", + "send-in-order":"Envoyer dans la commande", + "send-in-order-help":{ + "p1":"Choisissez la manière dont vous souhaitez que les demandes de signature soient envoyées aux signataires du document :", + "p2":"La sélection de cette option enverra initialement la demande de signature au premier signataire. Une fois que le premier signataire a terminé sa partie, le prochain signataire de la séquence recevra la demande. Ce processus se poursuit jusqu'à ce que tous les signataires aient signé le document. Cette méthode garantit que le document est signé dans un ordre spécifique.", + "p3":"La sélection de cette option enverra les liens de signature à tous les signataires simultanément. Chaque signataire peut signer le document à sa convenance, que d'autres signataires aient ou non complété leur signature. Cette méthode est plus rapide mais n’impose aucun ordre de signature entre les participants.", + "p4":"Sélectionnez l'option qui correspond le mieux aux besoins de votre traitement de documents." + }, + "no":"Non", + "auto-reminder":"Rappel automatique", + "remind-once":"Rappeler une fois tous les (jours)", + "next":"suivant" + + +} \ No newline at end of file diff --git a/apps/OpenSign/src/components/dashboard/DashboardButton.js b/apps/OpenSign/src/components/dashboard/DashboardButton.js index 1d78fac0e..078475525 100644 --- a/apps/OpenSign/src/components/dashboard/DashboardButton.js +++ b/apps/OpenSign/src/components/dashboard/DashboardButton.js @@ -1,9 +1,11 @@ import React from "react"; import { useNavigate } from "react-router-dom"; import { openInNewTab } from "../../constant/Utils"; +import { useTranslation } from "react-i18next"; const DashboardButton = (props) => { const navigate = useNavigate(); + const { t } = useTranslation(); function openReport() { if (props.Data && props.Data.Redirect_type) { @@ -35,7 +37,9 @@ const DashboardButton = (props) => { } text-[25px] lg:text-[30px]`} > -
{props.Label}
+
+ {t(`sidebar.${props.Label}`)} +
); diff --git a/apps/OpenSign/src/components/dashboard/DashboardCard.js b/apps/OpenSign/src/components/dashboard/DashboardCard.js index f8017ac91..2cbe187b1 100644 --- a/apps/OpenSign/src/components/dashboard/DashboardCard.js +++ b/apps/OpenSign/src/components/dashboard/DashboardCard.js @@ -4,9 +4,11 @@ import Parse from "parse"; import getReplacedHashQuery from "../../constant/getReplacedHashQuery"; import { useNavigate } from "react-router-dom"; import Tooltip from "../../primitives/Tooltip"; +import { useTranslation } from "react-i18next"; const DashboardCard = (props) => { const navigate = useNavigate(); + const { t } = useTranslation(); const [parseBaseUrl] = useState(localStorage.getItem("baseUrl")); const [parseAppId] = useState(localStorage.getItem("parseAppId")); const [response, setresponse] = useState(""); @@ -321,6 +323,7 @@ const DashboardCard = (props) => { } } } + return (
openReport()} @@ -339,7 +342,9 @@ const DashboardCard = (props) => { >
-
{props.Label}
+
+ {t(`dashboard-card.${props.Label}`)} +
{loading ?
: setFormat(response)}
diff --git a/apps/OpenSign/src/components/dashboard/GetDashboard.js b/apps/OpenSign/src/components/dashboard/GetDashboard.js index 545b79191..ab0c3885e 100644 --- a/apps/OpenSign/src/components/dashboard/GetDashboard.js +++ b/apps/OpenSign/src/components/dashboard/GetDashboard.js @@ -10,7 +10,7 @@ const buttonList = [ icon: "fa-light fa-pen-nib" }, { - label: "Request signature", + label: "Request signatures", redirectId: "8mZzFxbG1z", redirectType: "Form", icon: "fa-light fa-paper-plane" diff --git a/apps/OpenSign/src/components/sidebar/Menu.js b/apps/OpenSign/src/components/sidebar/Menu.js index c43326da1..c8cf57e8d 100644 --- a/apps/OpenSign/src/components/sidebar/Menu.js +++ b/apps/OpenSign/src/components/sidebar/Menu.js @@ -1,7 +1,9 @@ import React from "react"; +import { useTranslation } from "react-i18next"; import { NavLink } from "react-router-dom"; const Menu = ({ item, isOpen, closeSidebar }) => { + const { t } = useTranslation(); return (
  • { role="menuitem" > - {item.title} + {t(`sidebar.${item.title}`)}
  • ); diff --git a/apps/OpenSign/src/components/sidebar/SubMenu.js b/apps/OpenSign/src/components/sidebar/SubMenu.js index 59ca38beb..2ad5e3dbe 100644 --- a/apps/OpenSign/src/components/sidebar/SubMenu.js +++ b/apps/OpenSign/src/components/sidebar/SubMenu.js @@ -1,7 +1,9 @@ import React from "react"; +import { useTranslation } from "react-i18next"; import { NavLink } from "react-router-dom"; const Submenu = ({ item, closeSidebar, toggleSubmenu, submenuOpen }) => { + const { t } = useTranslation(); const { title, icon, children } = item; return (
  • @@ -14,7 +16,7 @@ const Submenu = ({ item, closeSidebar, toggleSubmenu, submenuOpen }) => { >
    - {title} + {t(`sidebar.${item.title}`)} { className={`${childItem.icon} text-[18px]`} aria-hidden="true" > - {childItem.title} + + {t(`sidebar.${item.title}-Children.${childItem.title}`)} +
  • ))} diff --git a/apps/OpenSign/src/pages/Form.js b/apps/OpenSign/src/pages/Form.js index 7b746611e..d06ba09a6 100644 --- a/apps/OpenSign/src/pages/Form.js +++ b/apps/OpenSign/src/pages/Form.js @@ -19,6 +19,7 @@ import ModalUi from "../primitives/ModalUi"; import { Tooltip } from "react-tooltip"; import Upgrade from "../primitives/Upgrade"; import Loader from "../primitives/Loader"; +import { useTranslation } from "react-i18next"; // `Form` render all type of Form on this basis of their provided in path function Form() { @@ -37,6 +38,7 @@ function Form() { } const Forms = (props) => { + const { t } = useTranslation(); const maxFileSize = 20; const abortController = new AbortController(); const inputFileRef = useRef(null); @@ -616,7 +618,9 @@ const Forms = (props) => {
    -

    {props?.title}

    +

    + {t(`form-name.${props?.title}`)} +

    {fileload && (
    @@ -637,7 +641,7 @@ const Forms = (props) => { )}