From 65e511861aae54652e26b5f7559dc67185167319 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 10 Apr 2024 14:36:45 +0530 Subject: [PATCH 01/30] feat: setup translation --- crm/api/__init__.py | 12 ++++++++++++ frontend/src/main.js | 2 ++ frontend/src/translation.js | 35 +++++++++++++++++++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 crm/api/__init__.py create mode 100644 frontend/src/translation.js diff --git a/crm/api/__init__.py b/crm/api/__init__.py new file mode 100644 index 00000000..0039c426 --- /dev/null +++ b/crm/api/__init__.py @@ -0,0 +1,12 @@ +import frappe +from frappe.translate import get_all_translations + + +@frappe.whitelist(allow_guest=True) +def get_translations(): + if frappe.session.user != "Guest": + language = frappe.db.get_value("User", frappe.session.user, "language") + else: + language = frappe.db.get_single_value("System Settings", "language") + + return get_all_translations(language) \ No newline at end of file diff --git a/frontend/src/main.js b/frontend/src/main.js index 303b2283..414cfbcc 100644 --- a/frontend/src/main.js +++ b/frontend/src/main.js @@ -19,6 +19,7 @@ import { frappeRequest, FeatherIcon, } from 'frappe-ui' +import translationPlugin from './translation' import { createDialog } from './utils/dialogs' import socket from './socket' import { getCachedListResource } from 'frappe-ui/src/resources/listResource' @@ -45,6 +46,7 @@ setConfig('resourceFetcher', frappeRequest) app.use(FrappeUI) app.use(pinia) app.use(router) +app.use(translationPlugin) for (let key in globalComponents) { app.component(key, globalComponents[key]) } diff --git a/frontend/src/translation.js b/frontend/src/translation.js new file mode 100644 index 00000000..b413146b --- /dev/null +++ b/frontend/src/translation.js @@ -0,0 +1,35 @@ +import { createResource } from 'frappe-ui' + +export default function translationPlugin(app) { + app.config.globalProperties.__ = translate + window.__ = translate + if (!window.translatedMessages) fetchTranslations() +} + +function translate(message) { + let translatedMessages = window.translatedMessages || {} + let translatedMessage = translatedMessages[message] || message + + const hasPlaceholders = /{\d+}/.test(message) + if (!hasPlaceholders) { + return translatedMessage + } + return { + format: function (...args) { + return translatedMessage.replace(/{(\d+)}/g, function (match, number) { + return typeof args[number] != 'undefined' ? args[number] : match + }) + }, + } +} + +function fetchTranslations(lang) { + createResource({ + url: 'crm.api.get_translations', + cache: 'translations', + auto: true, + transform: (data) => { + window.translatedMessages = data + }, + }) +} From 609be4caa65923eb6f5f0298bc67c64716082f81 Mon Sep 17 00:00:00 2001 From: Shariq Ansari Date: Wed, 10 Apr 2024 14:44:51 +0530 Subject: [PATCH 02/30] fix: added translation in AppSidebar Component --- frontend/src/components/Layouts/AppSidebar.vue | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/frontend/src/components/Layouts/AppSidebar.vue b/frontend/src/components/Layouts/AppSidebar.vue index 5abe8488..a9164cc6 100644 --- a/frontend/src/components/Layouts/AppSidebar.vue +++ b/frontend/src/components/Layouts/AppSidebar.vue @@ -10,7 +10,7 @@
- {{ view.name }} + {{ __(view.name) }}
@@ -67,7 +67,7 @@
Date: Wed, 10 Apr 2024 15:50:34 +0530 Subject: [PATCH 03/30] fix: fix text size and color --- frontend/src/components/Layouts/AppSidebar.vue | 4 ++-- frontend/src/components/SidebarLink.vue | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/frontend/src/components/Layouts/AppSidebar.vue b/frontend/src/components/Layouts/AppSidebar.vue index a9164cc6..cf5a240a 100644 --- a/frontend/src/components/Layouts/AppSidebar.vue +++ b/frontend/src/components/Layouts/AppSidebar.vue @@ -45,7 +45,7 @@