From dbc50768ea3f2a4a1194bc60c8b81132506b2d33 Mon Sep 17 00:00:00 2001 From: Colin Dawson Date: Tue, 3 Feb 2026 16:33:19 +0000 Subject: [PATCH] Added more languages, and also added more things that are translated. --- public/locales/en/common.json | 34 +-- public/locales/fr/common.json | 50 ++--- public/locales/hi-IN/common.json | 199 ++++++++++++++++++ public/locales/hi-IN/htmlIsland.json | 8 + public/locales/hi-IN/mailTypes.json | 6 + public/locales/ur-IN/common.json | 7 + public/locales/ur-PK/common.json | 7 + public/locales/ur/common.json | 199 ++++++++++++++++++ public/locales/ur/htmlIsland.json | 8 + public/locales/ur/mailTypes.json | 6 + public/static.json | 5 + src/i18n/generatedLocales.ts | 89 +++++++- .../frame/components/LanguageSelector.tsx | 4 +- src/modules/frame/components/TopMenu.tsx | 7 +- 14 files changed, 583 insertions(+), 46 deletions(-) create mode 100644 public/locales/hi-IN/common.json create mode 100644 public/locales/hi-IN/htmlIsland.json create mode 100644 public/locales/hi-IN/mailTypes.json create mode 100644 public/locales/ur-IN/common.json create mode 100644 public/locales/ur-PK/common.json create mode 100644 public/locales/ur/common.json create mode 100644 public/locales/ur/htmlIsland.json create mode 100644 public/locales/ur/mailTypes.json create mode 100644 public/static.json diff --git a/public/locales/en/common.json b/public/locales/en/common.json index 91806ff..515798b 100644 --- a/public/locales/en/common.json +++ b/public/locales/en/common.json @@ -1,8 +1,8 @@ { + "Account": "Account", "Activate": "Activate", "Active": "Active", "Add": "Add", - "AreYouSure": "Are you sure?", "AddDomain": "Add Domain", "Address": "Address", "AddUser": "Add User", @@ -12,21 +12,22 @@ "AnErrorOccurred": "An error occurred", "Application": "Application", "Applications": "Applications", - "AuthorizationEndpoint": "Authorisation Endpoint", + "AreYouSure": "Are you sure?", "AuditLog": "Audit Logs", "AuditLogs": "Audit Logs", "Authenticate": "Authenticate", "AuthenticationCode": "Authentication code", + "AuthorizationEndpoint": "Authorisation Endpoint", + "Blocked": "Blocked", "BlockedIPAddresses": "Blocked IP addresses", "BlockedIPs": "Blocked IPs", - "Blocked": "Blocked", "Cancel": "Cancel", "Changes": "Changes", "ClientDomainManager": "Client Domain Manager", "ClientDomains": "Client Domains", - "Close": "Close", "ClientId": "Client Id", "ClientSecret": "Client Secret", + "Close": "Close", "Comment": "Comment", "Confirm": "Confirm", "ConfirmEmailResent": "Confirm e-mail resent", @@ -39,16 +40,15 @@ "CustomFieldManager": "Custom Field Manager", "CustomFields": "Custom Fields", "Day": "Day", - "DefaultValue": "Default Value", "DefaultMustBeGreaterThanOrEqualToMinimumValue": "\"Default Value\" must be greater than or equal to \"Minimum Value\"", "DefaultMustBeLessThanOrEqualToMaximumValue": "\"Default Value\" must be less than or equal to \"Maximum Value\"", + "DefaultValue": "Default Value", "Definition": "Definition", "DisableAuthenticator": "Disable Authenticator", + "Disabled": "Disabled", "DisplayName": "Display Name", "Domain": "Domain", "DomainEdited": "Domain edited", - "Disabled": "Disabled", - "Enabled": "Enabled", "e-print": "e-print", "e-suite": "e-suite", "e-suiteLogo": "e-suite logo", @@ -60,16 +60,17 @@ "EFlowHostname": "e-flow hostname", "Email": "Email", "EmailTemplateSaved": "Email Template saved", + "Enabled": "Enabled", "EntityDisplayName": "Entity Display Name", "ErrorLogs": "Error Logs", "ExceptionJson": "Exception JSON", "ExceptionLogs": "Exception Logs", "FailedToDisableAuthenticator": "Failed to disable authenticator:", - "Field": "Field", "FailedToSaveFormInstance": "Failed to save form instance", + "Field": "Field", "FieldType": "Field Type", - "ForgottenPassword": "Forgotten Password", "FirstName": "First name", + "ForgottenPassword": "Forgotten Password", "Form": "Form", "Forms": "Forms", "FormTemplate": "Form Template", @@ -85,22 +86,23 @@ "Home": "Home", "Id": "Id", "Increment": "Increment", - "IsPublic": "Is Public", "IPAddress": "IP Address", "IPAddressUnblocked": "IP Address '{{ip}}' unblocked.", + "IsPublic": "Is Public", "Items": "Items", + "LastName": "Last name", "LastUpdated": "Last Updated", "Loading": "Loading", "LoggingOut": "Logging out", - "LastName": "Last name", + "Logout": "Logout", "Mail": "Mail", "MailTemplates": "Mail Templates", "MaxEntriesEmptyUnlimited": "Max Entries (empty=unlimited)", "MaximumValue": "Maximum Value", "Message": "Message", + "MiddleNames": "Middle names", "MinEntries": "Min Entries", "MinimumValue": "Minimum Value", - "MiddleNames": "Middle names", "Month": "Month", "MultiLine": "Multi-line", "Name": "Name", @@ -112,8 +114,8 @@ "NewPassword": "New Password", "NewRoleAdded": "New Role added", "NewSequenceAdded": "New sequence added", - "NewSpecificationsAdded": "New Specifications added", "NewSiteAdded": "New site added", + "NewSpecificationsAdded": "New Specifications added", "NewSsoProviderAdded": "New Sso Provider added", "NewUserAdded": "New User added", "NewValue": "New Value", @@ -135,14 +137,14 @@ "PrintSpecification": "Print Specification", "Profile": "Profile", "ProfileSaved": "Profile updated.", - "ResendConfirm": "Resend Confirm", "Required": "Required", + "ResendConfirm": "Resend Confirm", "ResetPassword": "Reset Password", - "RolloverType": "Rollover Type", "Role": "Role", "RoleAccess": "Role Access", "RoleAccessUpdated": "Role access updated successfully.", "RoleEdited": "Role edited", + "RolloverType": "Rollover Type", "Save": "Save", "SaveAndClose": "Save and close", "SecurityRoles": "Security Roles", @@ -183,12 +185,12 @@ "Up": "Up", "User": "User", "UserAddedToRole": "User added to role", + "UserEdited": "User edited", "UserManager": "User Manager", "UserName": "User Name", "UsernameIsRequired": "Username is required", "UsernameMustBeValidEmail": "Username must be a valid email", "Users": "Users", - "UserEdited": "User edited", "ValidIssuer": "Valid Issuer", "Version": "Version", "VersionCannotBeNull": "Version cannot be null", diff --git a/public/locales/fr/common.json b/public/locales/fr/common.json index 92ef76b..a7852a0 100644 --- a/public/locales/fr/common.json +++ b/public/locales/fr/common.json @@ -1,4 +1,5 @@ { + "Account": "Compte", "Activate": "Activer", "Active": "Actif", "Add": "Ajouter", @@ -11,22 +12,22 @@ "AnErrorOccurred": "Une erreur s'est produite", "Application": "Application", "Applications": "Applications", - "AreYouSure": "Êtes‑vous sûr?", - "AuthorizationEndpoint": "Point de terminaison d’autorisation", - "AuditLog": "Journaux d’audit", + "AreYouSure": "Êtes-vous sûr", + "AuditLog": "Journal d’audit", "AuditLogs": "Journaux d’audit", "Authenticate": "Authentifier", "AuthenticationCode": "Code d’authentification", + "AuthorizationEndpoint": "Point de terminaison d’autorisation", + "Blocked": "Bloqué", "BlockedIPAddresses": "Adresses IP bloquées", "BlockedIPs": "IPs bloquées", - "Blocked": "Bloqué", "Cancel": "Annuler", "Changes": "Modifications", - "ClientDomainManager": "Gestionnaire de domaines clients", - "ClientDomains": "Domaines clients", - "Close": "Fermer", + "ClientDomainManager": "Gestionnaire de domaines client", + "ClientDomains": "Domaines client", "ClientId": "Identifiant client", "ClientSecret": "Secret client", + "Close": "Fermer", "Comment": "Commentaire", "Confirm": "Confirmer", "ConfirmEmailResent": "E-mail de confirmation renvoyé", @@ -39,68 +40,69 @@ "CustomFieldManager": "Gestionnaire de champs personnalisés", "CustomFields": "Champs personnalisés", "Day": "Jour", + "DefaultMustBeGreaterThanOrEqualToMinimumValue": "\"Valeur par défaut\" doit être supérieure ou égale à la \"Valeur minimale\"", + "DefaultMustBeLessThanOrEqualToMaximumValue": "\"Valeur par défaut\" doit être inférieure ou égale à la \"Valeur maximale\"", "DefaultValue": "Valeur par défaut", - "DefaultMustBeGreaterThanOrEqualToMinimumValue": "\"Valeur par défaut\" doit être supérieure ou égale à \"Valeur minimale\"", - "DefaultMustBeLessThanOrEqualToMaximumValue": "\"Valeur par défaut\" doit être inférieure ou égale à \"Valeur maximale\"", "Definition": "Définition", "DisableAuthenticator": "Désactiver l’authentificateur", + "Disabled": "Désactivé", "DisplayName": "Nom d’affichage", "Domain": "Domaine", "DomainEdited": "Domaine modifié", - "Disabled": "Désactivé", - "Enabled": "Activé", "e-print": "e-print", "e-suite": "e-suite", "e-suiteLogo": "Logo e-suite", "Edit": "Modifier", "EditDomain": "Modifier le domaine", "EditUser": "Modifier l’utilisateur", - "EFlowAppId": "ID d’application e-flow", - "EFlowCategoryId": "ID de catégorie e-flow", + "EFlowAppId": "e-flow AppId", + "EFlowCategoryId": "e-flow CategoryId", "EFlowHostname": "Nom d’hôte e-flow", "Email": "E-mail", "EmailTemplateSaved": "Modèle d’e-mail enregistré", + "Enabled": "Activé", "EntityDisplayName": "Nom d’affichage de l’entité", "ErrorLogs": "Journaux d’erreurs", "ExceptionJson": "Exception JSON", - "ExceptionLogs": "Journaux d’exceptions", - "FailedToDisableAuthenticator": "Échec de la désactivation de l’authentificateur :", - "Field": "Champ", + "ExceptionLogs": "Journaux d’exception", + "FailedToDisableAuthenticator": "Échec de la désactivation de l’authentificateur", "FailedToSaveFormInstance": "Échec de l’enregistrement de l’instance du formulaire", + "Field": "Champ", "FieldType": "Type de champ", - "ForgottenPassword": "Mot de passe oublié", "FirstName": "Prénom", + "ForgottenPassword": "Mot de passe oublié", "Form": "Formulaire", "Forms": "Formulaires", "FormTemplate": "Modèle de formulaire", "FormTemplateEdited": "Modèle de formulaire modifié", - "FormTemplateManager": "Gestionnaire de modèles de formulaires", + "FormTemplateManager": "Gestionnaire de modèles de formulaire", "General": "Général", "Glossaries": "Glossaires", "Glossary": "Glossaire", "GlossaryItem": "Élément de glossaire", "GlossaryItemEdited": "Élément de glossaire modifié", - "GlossaryManager": "Gestionnaire de glossaires", + "GlossaryManager": "Gestionnaire de glossaire", "Group": "Groupe", "Home": "Accueil", "Id": "Id", "Increment": "Incrément", - "IsPublic": "Public", "IPAddress": "Adresse IP", "IPAddressUnblocked": "Adresse IP '{{ip}}' débloquée.", + "IsPublic": "Public", "Items": "Éléments", + "LastName": "Nom de famille", "LastUpdated": "Dernière mise à jour", "Loading": "Chargement", "LoggingOut": "Déconnexion", - "LastName": "Nom de famille", + "Logout": "Se déconnecter", "Mail": "Courrier", - "MailTemplates": "Modèles d’e-mails", + "MailTemplates": "Modèles d’e-mail", "MaxEntriesEmptyUnlimited": "Entrées max (vide = illimité)", "MaximumValue": "Valeur maximale", "Message": "Message", + "MiddleNames": "Deuxième prénom", "MinEntries": "Entrées min", "MinimumValue": "Valeur minimale", - "MiddleNames": "Deuxième prénom", "Month": "Mois", "MultiLine": "Multiligne", "Name": "Nom", @@ -112,8 +114,8 @@ "NewPassword": "Nouveau mot de passe", "NewRoleAdded": "Nouveau rôle ajouté", "NewSequenceAdded": "Nouvelle séquence ajoutée", - "NewSpecificationsAdded": "Nouvelles spécifications ajoutées", "NewSiteAdded": "Nouveau site ajouté", + "NewSpecificationsAdded": "Nouvelles spécifications ajoutées", "NewSsoProviderAdded": "Nouveau fournisseur SSO ajouté", "NewUserAdded": "Nouvel utilisateur ajouté", "NewValue": "Nouvelle valeur", diff --git a/public/locales/hi-IN/common.json b/public/locales/hi-IN/common.json new file mode 100644 index 0000000..91ae7be --- /dev/null +++ b/public/locales/hi-IN/common.json @@ -0,0 +1,199 @@ +{ + "Account": "खाता", + "Activate": "सक्रिय करें", + "Active": "सक्रिय", + "Add": "जोड़ें", + "AddDomain": "डोमेन जोड़ें", + "Address": "पता", + "AddUser": "उपयोगकर्ता जोड़ें", + "Admin": "प्रशासक", + "Allowed": "अनुमत", + "AnEmailWithPasswordResetLinkHasBeenSent": "पासवर्ड रीसेट लिंक वाला ई‑मेल भेज दिया गया है।", + "AnErrorOccurred": "एक त्रुटि हुई", + "Application": "एप्लिकेशन", + "Applications": "एप्लिकेशन", + "AreYouSure": "क्या आप सुनिश्चित हैं", + "AuditLog": "ऑडिट लॉग", + "AuditLogs": "ऑडिट लॉग", + "Authenticate": "प्रमाणित करें", + "AuthenticationCode": "प्रमाणीकरण कोड", + "AuthorizationEndpoint": "अधिकृतकरण एंडपॉइंट", + "Blocked": "अवरुद्ध", + "BlockedIPAddresses": "अवरुद्ध IP पते", + "BlockedIPs": "अवरुद्ध IPs", + "Cancel": "रद्द करें", + "Changes": "परिवर्तन", + "ClientDomainManager": "क्लाइंट डोमेन प्रबंधक", + "ClientDomains": "क्लाइंट डोमेन", + "ClientId": "क्लाइंट ID", + "ClientSecret": "क्लाइंट सीक्रेट", + "Close": "बंद करें", + "Comment": "टिप्पणी", + "Confirm": "पुष्टि करें", + "ConfirmEmailResent": "पुष्टिकरण ई‑मेल पुनः भेजा गया", + "ConfirmPassword": "पासवर्ड की पुष्टि करें", + "Continuous": "निरंतर", + "Created": "बनाया गया", + "CustomField": "कस्टम फ़ील्ड", + "CustomFieldEdited": "कस्टम फ़ील्ड संपादित", + "CustomFieldForChildEntries": "चाइल्ड प्रविष्टियों के लिए कस्टम फ़ील्ड", + "CustomFieldManager": "कस्टम फ़ील्ड प्रबंधक", + "CustomFields": "कस्टम फ़ील्ड", + "Day": "दिन", + "DefaultMustBeGreaterThanOrEqualToMinimumValue": "\"डिफ़ॉल्ट मान\" \"न्यूनतम मान\" से बड़ा या बराबर होना चाहिए", + "DefaultMustBeLessThanOrEqualToMaximumValue": "\"डिफ़ॉल्ट मान\" \"अधिकतम मान\" से कम या बराबर होना चाहिए", + "DefaultValue": "डिफ़ॉल्ट मान", + "Definition": "परिभाषा", + "DisableAuthenticator": "ऑथेंटिकेटर अक्षम करें", + "Disabled": "अक्षम", + "DisplayName": "प्रदर्शित नाम", + "Domain": "डोमेन", + "DomainEdited": "डोमेन संपादित", + "e-print": "e-print", + "e-suite": "e-suite", + "e-suiteLogo": "e-suite लोगो", + "Edit": "संपादित करें", + "EditDomain": "डोमेन संपादित करें", + "EditUser": "उपयोगकर्ता संपादित करें", + "EFlowAppId": "e-flow AppId", + "EFlowCategoryId": "e-flow CategoryId", + "EFlowHostname": "e-flow होस्टनेम", + "Email": "ई‑मेल", + "EmailTemplateSaved": "ई‑मेल टेम्पलेट सहेजा गया", + "Enabled": "सक्रिय", + "EntityDisplayName": "एंटिटी डिस्प्ले नाम", + "ErrorLogs": "त्रुटि लॉग", + "ExceptionJson": "अपवाद JSON", + "ExceptionLogs": "अपवाद लॉग", + "FailedToDisableAuthenticator": "ऑथेंटिकेटर अक्षम करने में विफल", + "FailedToSaveFormInstance": "फ़ॉर्म इंस्टेंस सहेजने में विफल", + "Field": "फ़ील्ड", + "FieldType": "फ़ील्ड प्रकार", + "FirstName": "पहला नाम", + "ForgottenPassword": "भूला हुआ पासवर्ड", + "Form": "फ़ॉर्म", + "Forms": "फ़ॉर्म", + "FormTemplate": "फ़ॉर्म टेम्पलेट", + "FormTemplateEdited": "फ़ॉर्म टेम्पलेट संपादित", + "FormTemplateManager": "फ़ॉर्म टेम्पलेट प्रबंधक", + "General": "सामान्य", + "Glossaries": "शब्दावली", + "Glossary": "शब्दावली", + "GlossaryItem": "शब्दावली आइटम", + "GlossaryItemEdited": "शब्दावली आइटम संपादित", + "GlossaryManager": "शब्दावली प्रबंधक", + "Group": "समूह", + "Home": "होम", + "Id": "Id", + "Increment": "इन्क्रीमेंट", + "IPAddress": "IP पता", + "IPAddressUnblocked": "IP पता '{{ip}}' अनब्लॉक किया गया।", + "IsPublic": "सार्वजनिक", + "Items": "आइटम", + "LastName": "अंतिम नाम", + "LastUpdated": "अंतिम अपडेट", + "Loading": "लोड हो रहा है", + "LoggingOut": "लॉग आउट किया जा रहा है", + "Logout": "लॉग आउट", + "Mail": "मेल", + "MailTemplates": "मेल टेम्पलेट", + "MaxEntriesEmptyUnlimited": "अधिकतम प्रविष्टियाँ (खाली = असीमित)", + "MaximumValue": "अधिकतम मान", + "Message": "संदेश", + "MiddleNames": "मध्य नाम", + "MinEntries": "न्यूनतम प्रविष्टियाँ", + "MinimumValue": "न्यूनतम मान", + "Month": "महीना", + "MultiLine": "मल्टीलाइन", + "Name": "नाम", + "NewCustomFieldAdded": "नया कस्टम फ़ील्ड जोड़ा गया", + "NewDomainAdded": "नया डोमेन जोड़ा गया", + "NewFormTemplateAdded": "नया फ़ॉर्म टेम्पलेट जोड़ा गया", + "NewGlossaryItemAdded": "नया शब्दावली आइटम जोड़ा गया", + "NewOrganisationAdded": "नया संगठन जोड़ा गया", + "NewPassword": "नया पासवर्ड", + "NewRoleAdded": "नई भूमिका जोड़ी गई", + "NewSequenceAdded": "नई अनुक्रम जोड़ी गई", + "NewSiteAdded": "नई साइट जोड़ी गई", + "NewSpecificationsAdded": "नई विशिष्टताएँ जोड़ी गईं", + "NewSsoProviderAdded": "नया SSO प्रदाता जोड़ा गया", + "NewUserAdded": "नया उपयोगकर्ता जोड़ा गया", + "NewValue": "नया मान", + "NotFound": "नहीं मिला", + "Number": "संख्या", + "NumberOfAttempts": "प्रयासों की संख्या", + "OccuredAt": "घटित हुआ", + "OldValue": "पुराना मान", + "Organisation": "संगठन", + "OrganisationEdited": "संगठन संपादित", + "Password": "पासवर्ड", + "PasswordIsRequired": "पासवर्ड आवश्यक है", + "PasswordMinLength": "पासवर्ड कम से कम {{minPasswordLength}} अक्षरों का होना चाहिए", + "PasswordsMustMatch": "आपको पुष्टि के लिए नया पासवर्ड बिल्कुल समान दर्ज करना होगा", + "Pattern": "पैटर्न", + "Pending": "लंबित", + "PressAgainToDelete": "हटाने के लिए फिर से दबाएँ", + "PressAgainToUnblock": "अनब्लॉक करने के लिए फिर से दबाएँ", + "PrintSpecification": "प्रिंट विशिष्टता", + "Profile": "प्रोफ़ाइल", + "ProfileSaved": "प्रोफ़ाइल अपडेट की गई।", + "Required": "आवश्यक", + "ResendConfirm": "पुष्टिकरण पुनः भेजें", + "ResetPassword": "पासवर्ड रीसेट करें", + "Role": "भूमिका", + "RoleAccess": "भूमिका एक्सेस", + "RoleAccessUpdated": "भूमिका एक्सेस सफलतापूर्वक अपडेट किया गया।", + "RoleEdited": "भूमिका संपादित", + "RolloverType": "रोलओवर प्रकार", + "Save": "सहेजें", + "SaveAndClose": "सहेजें और बंद करें", + "SecurityRoles": "सुरक्षा भूमिकाएँ", + "Seed": "सीड", + "Sequence": "अनुक्रम", + "SequenceEdited": "अनुक्रम संपादित", + "SequenceFormGlossary": "अनुक्रम/फ़ॉर्म/शब्दावली", + "SequenceManager": "अनुक्रम प्रबंधक", + "ShowJSON": "JSON दिखाएँ", + "ShowStackTrace": "स्टैक ट्रेस दिखाएँ", + "SigmaId": "Sigma Id", + "Site": "साइट", + "SiteEdited": "साइट संपादित", + "SiteManager": "साइट प्रबंधक", + "SpecificationManager": "विशिष्टता प्रबंधक", + "Specifications": "विशिष्टताएँ", + "SpecificationsEdited": "विशिष्टताएँ संपादित", + "SsoManager": "SSO प्रबंधक", + "SsoProvider": "SSO प्रदाता", + "SsoProviderEdited": "SSO प्रदाता संपादित", + "StackTrace": "स्टैक ट्रेस", + "Status": "स्थिति", + "Step": "चरण", + "Subject": "विषय", + "Support": "सहायता", + "SupportingData": "सहायक डेटा", + "TemplateIdCannotBeNull": "टेम्पलेट ID रिक्त नहीं हो सकता", + "TemplateUnknown": "अज्ञात टेम्पलेट", + "Text": "पाठ", + "TheDetailsBelowAreLoadedFromMasterTemplate": "नीचे दिए गए विवरण मास्टर टेम्पलेट से लोड किए गए हैं। इस टेम्पलेट को सहेजने पर मास्टर टेम्पलेट में किए गए भविष्य के परिवर्तन यहाँ स्वचालित रूप से दिखाई नहीं देंगे।", + "ThereAreErrorsOnTheForm": "फ़ॉर्म में त्रुटियाँ हैं", + "ThisTemplateIsCustomForThisDomainOnly": "यह टेम्पलेट केवल इस डोमेन के लिए कस्टम है", + "Timing": "समय", + "TokenEndpoint": "टोकन एंडपॉइंट", + "TwoFactorAuthentication": "दो‑कारक प्रमाणीकरण", + "Type": "प्रकार", + "UnblockedInMinutes": "मिनटों में अनब्लॉक", + "Up": "ऊपर", + "User": "उपयोगकर्ता", + "UserAddedToRole": "उपयोगकर्ता को भूमिका में जोड़ा गया", + "UserEdited": "उपयोगकर्ता संपादित", + "UserManager": "उपयोगकर्ता प्रबंधक", + "UserName": "उपयोगकर्ता नाम", + "UsernameIsRequired": "उपयोगकर्ता नाम आवश्यक है", + "UsernameMustBeValidEmail": "उपयोगकर्ता नाम एक मान्य ई‑मेल होना चाहिए", + "Users": "उपयोगकर्ता", + "ValidIssuer": "वैध जारीकर्ता", + "Version": "संस्करण", + "VersionCannotBeNull": "संस्करण रिक्त नहीं हो सकता", + "Year": "वर्ष", + "YourProfileSettingsHaveBeenSaved": "आपकी प्रोफ़ाइल सेटिंग्स सहेजी गई हैं" +} diff --git a/public/locales/hi-IN/htmlIsland.json b/public/locales/hi-IN/htmlIsland.json new file mode 100644 index 0000000..6f7b4da --- /dev/null +++ b/public/locales/hi-IN/htmlIsland.json @@ -0,0 +1,8 @@ +{ + "island": { + "loadError": "इस अनुभाग को लोड करने में विफल।", + "networkError": "सहेजते समय नेटवर्क त्रुटि।", + "serverError": "सहेजते समय सर्वर त्रुटि।", + "saveSuccess": "सफलतापूर्वक सहेजा गया।" + } +} diff --git a/public/locales/hi-IN/mailTypes.json b/public/locales/hi-IN/mailTypes.json new file mode 100644 index 0000000..866b46f --- /dev/null +++ b/public/locales/hi-IN/mailTypes.json @@ -0,0 +1,6 @@ +{ + "ConfirmEmailAddress": "ई‑मेल पते की पुष्टि करें", + "DisableAuthenticator": "दो‑कारक प्रमाणीकरण अक्षम करें", + "PasswordReset": "पासवर्ड रीसेट", + "PasswordResetCompleted": "पासवर्ड रीसेट की पुष्टि" +} diff --git a/public/locales/ur-IN/common.json b/public/locales/ur-IN/common.json new file mode 100644 index 0000000..607db40 --- /dev/null +++ b/public/locales/ur-IN/common.json @@ -0,0 +1,7 @@ +{ + "Organisation": "سंगठन", + "OrganisationEdited": "سंगठन میں ترمیم کی گئی", + "NewOrganisationAdded": "نیا संगठन شامل کیا گیا", + "Support": "सहायता", + "Month": "مہینہ (ماہ)" +} diff --git a/public/locales/ur-PK/common.json b/public/locales/ur-PK/common.json new file mode 100644 index 0000000..b37e004 --- /dev/null +++ b/public/locales/ur-PK/common.json @@ -0,0 +1,7 @@ +{ + "Organisation": "تنظیم", + "OrganisationEdited": "تنظیم میں ترمیم کی گئی", + "NewOrganisationAdded": "نئی تنظیم شامل کی گئی", + "Month": "مہینہ", + "Support": "مدد" +} diff --git a/public/locales/ur/common.json b/public/locales/ur/common.json new file mode 100644 index 0000000..e361325 --- /dev/null +++ b/public/locales/ur/common.json @@ -0,0 +1,199 @@ +{ + "Account": "اکاؤنٹ", + "Activate": "فعال کریں", + "Active": "فعال", + "Add": "شامل کریں", + "AddDomain": "ڈومین شامل کریں", + "Address": "پتہ", + "AddUser": "صارف شامل کریں", + "Admin": "ایڈمن", + "Allowed": "اجازت شدہ", + "AnEmailWithPasswordResetLinkHasBeenSent": "پاس ورڈ ری سیٹ لنک کے ساتھ ایک ای میل بھیج دیا گیا ہے۔", + "AnErrorOccurred": "ایک خرابی پیش آگئی", + "Application": "ایپلیکیشن", + "Applications": "ایپلیکیشنز", + "AreYouSure": "کیا آپ یقین رکھتے ہیں", + "AuditLog": "آڈٹ لاگ", + "AuditLogs": "آڈٹ لاگز", + "Authenticate": "تصدیق کریں", + "AuthenticationCode": "تصدیقی کوڈ", + "AuthorizationEndpoint": "اتھورائزیشن اینڈ پوائنٹ", + "Blocked": "بلاک شدہ", + "BlockedIPAddresses": "بلاک شدہ IP پتے", + "BlockedIPs": "بلاک شدہ IPs", + "Cancel": "منسوخ کریں", + "Changes": "تبدیلیاں", + "ClientDomainManager": "کلائنٹ ڈومین مینیجر", + "ClientDomains": "کلائنٹ ڈومینز", + "ClientId": "کلائنٹ ID", + "ClientSecret": "کلائنٹ سیکرٹ", + "Close": "بند کریں", + "Comment": "تبصرہ", + "Confirm": "تصدیق کریں", + "ConfirmEmailResent": "تصدیقی ای میل دوبارہ بھیج دی گئی", + "ConfirmPassword": "پاس ورڈ کی تصدیق کریں", + "Continuous": "مسلسل", + "Created": "تخلیق کیا گیا", + "CustomField": "کسٹم فیلڈ", + "CustomFieldEdited": "کسٹم فیلڈ میں ترمیم کی گئی", + "CustomFieldForChildEntries": "چائلڈ اندراجات کے لیے کسٹم فیلڈ", + "CustomFieldManager": "کسٹم فیلڈ مینیجر", + "CustomFields": "کسٹم فیلڈز", + "Day": "دن", + "DefaultMustBeGreaterThanOrEqualToMinimumValue": "\"ڈیفالٹ ویلیو\" \"کم از کم ویلیو\" سے زیادہ یا برابر ہونی چاہیے", + "DefaultMustBeLessThanOrEqualToMaximumValue": "\"ڈیفالٹ ویلیو\" \"زیادہ سے زیادہ ویلیو\" سے کم یا برابر ہونی چاہیے", + "DefaultValue": "ڈیفالٹ ویلیو", + "Definition": "تعریف", + "DisableAuthenticator": "آتھنٹی کیٹر غیر فعال کریں", + "Disabled": "غیر فعال", + "DisplayName": "ڈسپلے نام", + "Domain": "ڈومین", + "DomainEdited": "ڈومین میں ترمیم کی گئی", + "e-print": "e-print", + "e-suite": "e-suite", + "e-suiteLogo": "e-suite لوگو", + "Edit": "ترمیم کریں", + "EditDomain": "ڈومین میں ترمیم کریں", + "EditUser": "صارف میں ترمیم کریں", + "EFlowAppId": "e-flow AppId", + "EFlowCategoryId": "e-flow CategoryId", + "EFlowHostname": "e-flow ہوسٹ نیم", + "Email": "ای میل", + "EmailTemplateSaved": "ای میل ٹیمپلیٹ محفوظ کر لیا گیا", + "Enabled": "فعال", + "EntityDisplayName": "اینٹٹی ڈسپلے نام", + "ErrorLogs": "ایرر لاگز", + "ExceptionJson": "ایکسپشن JSON", + "ExceptionLogs": "ایکسپشن لاگز", + "FailedToDisableAuthenticator": "آتھنٹی کیٹر غیر فعال کرنے میں ناکامی:", + "FailedToSaveFormInstance": "فارم انسٹینس محفوظ کرنے میں ناکامی", + "Field": "فیلڈ", + "FieldType": "فیلڈ کی قسم", + "FirstName": "پہلا نام", + "ForgottenPassword": "بھولا ہوا پاس ورڈ", + "Form": "فارم", + "Forms": "فارمز", + "FormTemplate": "فارم ٹیمپلیٹ", + "FormTemplateEdited": "فارم ٹیمپلیٹ میں ترمیم کی گئی", + "FormTemplateManager": "فارم ٹیمپلیٹ مینیجر", + "General": "عمومی", + "Glossaries": "گلوسریز", + "Glossary": "گلوسری", + "GlossaryItem": "گلوسری آئٹم", + "GlossaryItemEdited": "گلوسری آئٹم میں ترمیم کی گئی", + "GlossaryManager": "گلوسری مینیجر", + "Group": "گروپ", + "Home": "ہوم", + "Id": "Id", + "Increment": "انکریمنٹ", + "IPAddress": "IP پتہ", + "IPAddressUnblocked": "IP پتہ '{{ip}}' ان بلاک کر دیا گیا۔", + "IsPublic": "عوامی ہے", + "Items": "آئٹمز", + "LastName": "آخری نام", + "LastUpdated": "آخری اپ ڈیٹ", + "Loading": "لوڈ ہو رہا ہے", + "LoggingOut": "لاگ آؤٹ کیا جا رہا ہے", + "Logout": "لاگ آؤٹ", + "Mail": "میل", + "MailTemplates": "میل ٹیمپلیٹس", + "MaxEntriesEmptyUnlimited": "زیادہ سے زیادہ اندراجات (خالی = لامحدود)", + "MaximumValue": "زیادہ سے زیادہ ویلیو", + "Message": "پیغام", + "MiddleNames": "درمیانی نام", + "MinEntries": "کم از کم اندراجات", + "MinimumValue": "کم از کم ویلیو", + "Month": "مہینہ", + "MultiLine": "ملٹی لائن", + "Name": "نام", + "NewCustomFieldAdded": "نیا کسٹم فیلڈ شامل کیا گیا", + "NewDomainAdded": "نیا ڈومین شامل کیا گیا", + "NewFormTemplateAdded": "نیا فارم ٹیمپلیٹ شامل کیا گیا", + "NewGlossaryItemAdded": "نیا گلوسری آئٹم شامل کیا گیا", + "NewOrganisationAdded": "نیا ادارہ شامل کیا گیا", + "NewPassword": "نیا پاس ورڈ", + "NewRoleAdded": "نئی رول شامل کی گئی", + "NewSequenceAdded": "نیا سیکوئنس شامل کیا گیا", + "NewSiteAdded": "نئی سائٹ شامل کی گئی", + "NewSpecificationsAdded": "نئی وضاحتیں شامل کی گئیں", + "NewSsoProviderAdded": "نیا SSO فراہم کنندہ شامل کیا گیا", + "NewUserAdded": "نیا صارف شامل کیا گیا", + "NewValue": "نئی ویلیو", + "NotFound": "نہیں ملا", + "Number": "نمبر", + "NumberOfAttempts": "کوششوں کی تعداد", + "OccuredAt": "وقوع پذیر ہوا", + "OldValue": "پرانا ویلیو", + "Organisation": "ادارہ", + "OrganisationEdited": "ادارے میں ترمیم کی گئی", + "Password": "پاس ورڈ", + "PasswordIsRequired": "پاس ورڈ ضروری ہے", + "PasswordMinLength": "پاس ورڈ کم از کم {{minPasswordLength}} حروف کا ہونا چاہیے", + "PasswordsMustMatch": "آپ کو نیا پاس ورڈ بالکل وہی دوبارہ درج کر کے تصدیق کرنی ہوگی", + "Pattern": "پیٹرن", + "Pending": "زیر التواء", + "PressAgainToDelete": "حذف کرنے کے لیے دوبارہ دبائیں", + "PressAgainToUnblock": "ان بلاک کرنے کے لیے دوبارہ دبائیں", + "PrintSpecification": "پرنٹ وضاحت", + "Profile": "پروفائل", + "ProfileSaved": "پروفائل اپ ڈیٹ کر دی گئی۔", + "Required": "ضروری", + "ResendConfirm": "تصدیق دوبارہ بھیجیں", + "ResetPassword": "پاس ورڈ ری سیٹ کریں", + "Role": "رول", + "RoleAccess": "رول ایکسیس", + "RoleAccessUpdated": "رول ایکسیس کامیابی سے اپ ڈیٹ کر دی گئی۔", + "RoleEdited": "رول میں ترمیم کی گئی", + "RolloverType": "رول اوور قسم", + "Save": "محفوظ کریں", + "SaveAndClose": "محفوظ کریں اور بند کریں", + "SecurityRoles": "سیکیورٹی رولز", + "Seed": "سیڈ", + "Sequence": "سیکوئنس", + "SequenceEdited": "سیکوئنس میں ترمیم کی گئی", + "SequenceFormGlossary": "سیکوئنس/فارم/گلوسری", + "SequenceManager": "سیکوئنس مینیجر", + "ShowJSON": "JSON دکھائیں", + "ShowStackTrace": "اسٹیک ٹریس دکھائیں", + "SigmaId": "Sigma Id", + "Site": "سائٹ", + "SiteEdited": "سائٹ میں ترمیم کی گئی", + "SiteManager": "سائٹ مینیجر", + "SpecificationManager": "وضاحت مینیجر", + "Specifications": "وضاحتیں", + "SpecificationsEdited": "وضاحتوں میں ترمیم کی گئی", + "SsoManager": "SSO مینیجر", + "SsoProvider": "SSO فراہم کنندہ", + "SsoProviderEdited": "SSO فراہم کنندہ میں ترمیم کی گئی", + "StackTrace": "اسٹیک ٹریس", + "Status": "حالت", + "Step": "مرحلہ", + "Subject": "موضوع", + "Support": "سپورٹ", + "SupportingData": "سپورٹنگ ڈیٹا", + "TemplateIdCannotBeNull": "ٹیمپلیٹ ID خالی نہیں ہو سکتی", + "TemplateUnknown": "نامعلوم ٹیمپلیٹ", + "Text": "متن", + "TheDetailsBelowAreLoadedFromMasterTemplate": "ذیل کی تفصیلات ماسٹر ٹیمپلیٹ سے لوڈ کی گئی ہیں۔ اس ٹیمپلیٹ کو محفوظ کرنے کا مطلب ہے کہ ماسٹر ٹیمپلیٹ میں مستقبل کی تبدیلیاں یہاں خودکار طور پر ظاہر نہیں ہوں گی۔", + "ThereAreErrorsOnTheForm": "فارم میں غلطیاں موجود ہیں", + "ThisTemplateIsCustomForThisDomainOnly": "یہ ٹیمپلیٹ صرف اس ڈومین کے لیے کسٹم ہے", + "Timing": "ٹائمنگ", + "TokenEndpoint": "ٹوکن اینڈ پوائنٹ", + "TwoFactorAuthentication": "دو مرحلہ جاتی تصدیق", + "Type": "قسم", + "UnblockedInMinutes": "منٹوں میں ان بلاک", + "Up": "اوپر", + "User": "صارف", + "UserAddedToRole": "صارف کو رول میں شامل کیا گیا", + "UserEdited": "صارف میں ترمیم کی گئی", + "UserManager": "صارف مینیجر", + "UserName": "صارف نام", + "UsernameIsRequired": "صارف نام ضروری ہے", + "UsernameMustBeValidEmail": "صارف نام ایک درست ای میل ہونا چاہیے", + "Users": "صارفین", + "ValidIssuer": "درست جاری کنندہ", + "Version": "ورژن", + "VersionCannotBeNull": "ورژن خالی نہیں ہو سکتا", + "Year": "سال", + "YourProfileSettingsHaveBeenSaved": "آپ کی پروفائل سیٹنگز محفوظ کر دی گئی ہیں" +} diff --git a/public/locales/ur/htmlIsland.json b/public/locales/ur/htmlIsland.json new file mode 100644 index 0000000..0cb134e --- /dev/null +++ b/public/locales/ur/htmlIsland.json @@ -0,0 +1,8 @@ +{ + "island": { + "loadError": "اس حصے کو لوڈ کرنے میں ناکامی ہوئی۔", + "networkError": "محفوظ کرتے وقت نیٹ ورک کی خرابی۔", + "serverError": "محفوظ کرتے وقت سرور کی خرابی۔", + "saveSuccess": "کامیابی کے ساتھ محفوظ کر لیا گیا۔" + } +} diff --git a/public/locales/ur/mailTypes.json b/public/locales/ur/mailTypes.json new file mode 100644 index 0000000..08fe763 --- /dev/null +++ b/public/locales/ur/mailTypes.json @@ -0,0 +1,6 @@ +{ + "ConfirmEmailAddress": "ای میل پتے کی تصدیق کریں", + "DisableAuthenticator": "ٹو فیکٹر تصدیق غیر فعال کریں", + "PasswordReset": "پاس ورڈ ری سیٹ", + "PasswordResetCompleted": "پاس ورڈ ری سیٹ کی تصدیق" +} diff --git a/public/static.json b/public/static.json new file mode 100644 index 0000000..b76425d --- /dev/null +++ b/public/static.json @@ -0,0 +1,5 @@ +{ + "routes": { + "/locales/*": "/locales/" + } +} diff --git a/src/i18n/generatedLocales.ts b/src/i18n/generatedLocales.ts index 5fcd94c..6291657 100644 --- a/src/i18n/generatedLocales.ts +++ b/src/i18n/generatedLocales.ts @@ -5,12 +5,30 @@ export const availableLocales = [ "en-GB", "en-US", "fr-CA", - "fr-FR" + "fr-FR", + "hi-IN", + "ur-AE", + "ur-AF", + "ur-AU", + "ur-BH", + "ur-CA", + "ur-GB", + "ur-IN", + "ur-KW", + "ur-OM", + "ur-PK", + "ur-QA", + "ur-SA", + "ur-TJ", + "ur-US", + "ur-UZ", + "ur-ZA" ] as const; export const baseLocales = [ "en", - "fr" + "fr", + "ur" ] as const; export const fallbackLng = { @@ -27,6 +45,73 @@ export const fallbackLng = { "fr-FR": [ "fr", "en" + ], + "hi-IN": [ + "en" + ], + "ur-AE": [ + "ur", + "en" + ], + "ur-AF": [ + "ur", + "en" + ], + "ur-AU": [ + "ur", + "en" + ], + "ur-BH": [ + "ur", + "en" + ], + "ur-CA": [ + "ur", + "en" + ], + "ur-GB": [ + "ur", + "en" + ], + "ur-IN": [ + "ur", + "en" + ], + "ur-KW": [ + "ur", + "en" + ], + "ur-OM": [ + "ur", + "en" + ], + "ur-PK": [ + "ur", + "en" + ], + "ur-QA": [ + "ur", + "en" + ], + "ur-SA": [ + "ur", + "en" + ], + "ur-TJ": [ + "ur", + "en" + ], + "ur-US": [ + "ur", + "en" + ], + "ur-UZ": [ + "ur", + "en" + ], + "ur-ZA": [ + "ur", + "en" ] } as const; diff --git a/src/modules/frame/components/LanguageSelector.tsx b/src/modules/frame/components/LanguageSelector.tsx index a4ba2e8..7550b55 100644 --- a/src/modules/frame/components/LanguageSelector.tsx +++ b/src/modules/frame/components/LanguageSelector.tsx @@ -43,8 +43,6 @@ export function LanguageSelectorMenuItem() { const currentLabel = formatLocaleLabel(current); async function handleSelect(locale: string) { - i18n.changeLanguage(locale); - try { await profileService.patchMyProfile({ preferredLocale: locale, @@ -53,6 +51,8 @@ export function LanguageSelectorMenuItem() { console.error("Failed to update preferred locale", err); // Optional: show toast or revert language } + + i18n.changeLanguage(locale); } return ( diff --git a/src/modules/frame/components/TopMenu.tsx b/src/modules/frame/components/TopMenu.tsx index 0dfbc4c..4fe6836 100644 --- a/src/modules/frame/components/TopMenu.tsx +++ b/src/modules/frame/components/TopMenu.tsx @@ -10,6 +10,8 @@ import { faArrowRightFromBracket } from "@fortawesome/free-solid-svg-icons"; import { faUser } from "@fortawesome/free-solid-svg-icons"; import { getCurrentUser } from "../services/authenticationService"; import { LanguageSelectorMenuItem } from "./LanguageSelector"; +import { Namespaces } from "../../../i18n/i18n"; +import { useTranslation } from "react-i18next"; export interface TopMenuProps { title: string | undefined | null; @@ -17,6 +19,7 @@ export interface TopMenuProps { function TopMenu(props: TopMenuProps) { const user = getCurrentUser(); + const { t } = useTranslation(); return ( @@ -27,11 +30,11 @@ function TopMenu(props: TopMenuProps) {
- Account + {t("Account")} - Logout{" "} + {t("Logout")}{" "} {user?.name}{" "}