From 5f3e3ced342945e74ba96f3f8b453e7e5dc9e64c Mon Sep 17 00:00:00 2001 From: VISHNU7KASIREDDY Date: Thu, 4 Dec 2025 19:55:52 +0530 Subject: [PATCH 1/2] Fix database selection translation issue (#799) - Add translation keys for all database names (MySQL, PostgreSQL, SQLite, MariaDB, MSSQL, Oracle SQL) - Update Workspace.jsx to use i18n translation function for database names - Ensure database names are translatable across all 48 supported languages Fixes #799 --- package-lock.json | 21 +++------------------ src/components/Workspace.jsx | 10 ++++++++-- src/i18n/locales/en.js | 6 ++++++ 3 files changed, 17 insertions(+), 20 deletions(-) diff --git a/package-lock.json b/package-lock.json index f1fe8bfc6..670e9e2ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -115,7 +115,6 @@ "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -421,7 +420,6 @@ "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", "license": "MIT", - "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -1218,7 +1216,6 @@ "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.12.6.tgz", "integrity": "sha512-rJFp7tXzawCrMWWRsjCR80dZoIkLJ/EPgPmTk3xqpc+9ntlwbkm3LUOdFmgN+pshnhiZTQBwbFqg/QbsA1Pw9g==", "license": "MIT", - "peer": true, "dependencies": { "@lexical/html": "0.12.6", "@lexical/list": "0.12.6", @@ -1419,7 +1416,6 @@ "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.12.6.tgz", "integrity": "sha512-HJBEazVwOe6duyHV6+vB/MS4kUBlCV05Cfcigdx8HlLLFQRWPqHrTpaxKz4jfb9ar0SlI2W1BUNbySAxMkC/HQ==", "license": "MIT", - "peer": true, "peerDependencies": { "lexical": "0.12.6" } @@ -1450,7 +1446,6 @@ "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.12.6.tgz", "integrity": "sha512-hK5r/TD2nH5TfWSiCxy7/lh0s11qJcI1wo++PBQOR9o937pQ+/Zr/1tMOc8MnrTpl89mtmYtPfWW3f++HH1Yog==", "license": "MIT", - "peer": true, "dependencies": { "@lexical/list": "0.12.6", "@lexical/selection": "0.12.6", @@ -2340,7 +2335,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz", "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==", "license": "MIT", - "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2439,7 +2433,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2784,7 +2777,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001735", "electron-to-chromium": "^1.5.204", @@ -3182,7 +3174,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -3322,7 +3313,6 @@ "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.7.tgz", "integrity": "sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=6.0" } @@ -3673,7 +3663,6 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4637,7 +4626,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.23.2" } @@ -5204,6 +5192,7 @@ "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "license": "MIT", + "peer": true, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -5391,14 +5380,14 @@ "version": "0.12.6", "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.12.6.tgz", "integrity": "sha512-Nlfjc+k9cIWpOMv7XufF0Mv09TAXSemNAuAqFLaOwTcN+RvhvYTDtVLSp9D9r+5I097fYs1Vf/UYwH2xEpkFfQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lib0": { "version": "0.2.114", "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz", "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==", "license": "MIT", + "peer": true, "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -7243,7 +7232,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -7432,7 +7420,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -7445,7 +7432,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -8953,7 +8939,6 @@ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", diff --git a/src/components/Workspace.jsx b/src/components/Workspace.jsx index 38f53d542..511e3c058 100644 --- a/src/components/Workspace.jsx +++ b/src/components/Workspace.jsx @@ -584,7 +584,11 @@ export default function WorkSpace() { } ${selectedDb === x.label ? "border-zinc-400" : "border-transparent"}`} >
-
{x.name}
+
+ {x.label === DB.GENERIC + ? t("generic") + : t(`db_${x.label.toLowerCase()}`)} +
{x.beta && ( Beta @@ -601,7 +605,9 @@ export default function WorkSpace() { }} /> )} -
{x.description}
+
+ {x.label === DB.GENERIC ? t("generic_description") : x.description} +
))} diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index 9d13f0a53..735a6a5da 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -231,6 +231,12 @@ const en = { generic: "Generic", generic_description: "Generic diagrams can be exported to any SQL flavor but support few data types.", + db_mysql: "MySQL", + db_postgresql: "PostgreSQL", + db_sqlite: "SQLite", + db_mariadb: "MariaDB", + db_transactsql: "MSSQL", + db_oraclesql: "Oracle SQL", enums: "Enums", add_enum: "Add enum", edit_enum: "{{extra}} Edit enum {{enumName}}", From bd68df36cf2ce54321d3b446828eff51c135e36b Mon Sep 17 00:00:00 2001 From: VISHNU7KASIREDDY Date: Thu, 4 Dec 2025 22:10:04 +0530 Subject: [PATCH 2/2] Add Bengali translations and make database descriptions translatable - Add translation keys for all database descriptions in en.js - Add Bengali translations for database names and descriptions in bn.js - Update databases.js to use i18n.t() for descriptions - Update Workspace.jsx to render translated descriptions for all databases - Revert unnecessary package-lock.json changes Fixes #799 --- package-lock.json | 21 ++++++++++++++++++--- src/components/Workspace.jsx | 4 +++- src/data/databases.js | 6 ++++++ src/i18n/locales/bn.js | 12 ++++++++++++ src/i18n/locales/en.js | 6 ++++++ 5 files changed, 45 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 670e9e2ce..f1fe8bfc6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -115,6 +115,7 @@ "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -420,6 +421,7 @@ "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", "license": "MIT", + "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -1216,6 +1218,7 @@ "resolved": "https://registry.npmjs.org/@lexical/clipboard/-/clipboard-0.12.6.tgz", "integrity": "sha512-rJFp7tXzawCrMWWRsjCR80dZoIkLJ/EPgPmTk3xqpc+9ntlwbkm3LUOdFmgN+pshnhiZTQBwbFqg/QbsA1Pw9g==", "license": "MIT", + "peer": true, "dependencies": { "@lexical/html": "0.12.6", "@lexical/list": "0.12.6", @@ -1416,6 +1419,7 @@ "resolved": "https://registry.npmjs.org/@lexical/selection/-/selection-0.12.6.tgz", "integrity": "sha512-HJBEazVwOe6duyHV6+vB/MS4kUBlCV05Cfcigdx8HlLLFQRWPqHrTpaxKz4jfb9ar0SlI2W1BUNbySAxMkC/HQ==", "license": "MIT", + "peer": true, "peerDependencies": { "lexical": "0.12.6" } @@ -1446,6 +1450,7 @@ "resolved": "https://registry.npmjs.org/@lexical/utils/-/utils-0.12.6.tgz", "integrity": "sha512-hK5r/TD2nH5TfWSiCxy7/lh0s11qJcI1wo++PBQOR9o937pQ+/Zr/1tMOc8MnrTpl89mtmYtPfWW3f++HH1Yog==", "license": "MIT", + "peer": true, "dependencies": { "@lexical/list": "0.12.6", "@lexical/selection": "0.12.6", @@ -2335,6 +2340,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.24.tgz", "integrity": "sha512-0dLEBsA1kI3OezMBF8nSsb7Nk19ZnsyE1LLhB8r27KbgU5H4pvuqZLdtE+aUkJVoXgTVuA+iLIwmZ0TuK4tx6A==", "license": "MIT", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" @@ -2433,6 +2439,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -2777,6 +2784,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001735", "electron-to-chromium": "^1.5.204", @@ -3174,6 +3182,7 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -3313,6 +3322,7 @@ "resolved": "https://registry.npmjs.org/dexie/-/dexie-3.2.7.tgz", "integrity": "sha512-2a+BXvVhY5op+smDRLxeBAivE7YcYaneXJ1la3HOkUfX9zKkE/AJ8CNgjiXbtXepFyFmJNGSbmjOwqbT749r/w==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=6.0" } @@ -3663,6 +3673,7 @@ "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -4626,6 +4637,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.23.2" } @@ -5192,7 +5204,6 @@ "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "license": "MIT", - "peer": true, "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -5380,14 +5391,14 @@ "version": "0.12.6", "resolved": "https://registry.npmjs.org/lexical/-/lexical-0.12.6.tgz", "integrity": "sha512-Nlfjc+k9cIWpOMv7XufF0Mv09TAXSemNAuAqFLaOwTcN+RvhvYTDtVLSp9D9r+5I097fYs1Vf/UYwH2xEpkFfQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lib0": { "version": "0.2.114", "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.114.tgz", "integrity": "sha512-gcxmNFzA4hv8UYi8j43uPlQ7CGcyMJ2KQb5kZASw6SnAKAf10hK12i2fjrS3Cl/ugZa5Ui6WwIu1/6MIXiHttQ==", "license": "MIT", - "peer": true, "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -7232,6 +7243,7 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -7420,6 +7432,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -7432,6 +7445,7 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", "license": "MIT", + "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.2" @@ -8939,6 +8953,7 @@ "integrity": "sha512-+Oxm7q9hDoLMyJOYfUYBuHQo+dkAloi33apOPP56pzj+vsdJDzr+j1NISE5pyaAuKL4A3UD34qd0lx5+kfKp2g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", diff --git a/src/components/Workspace.jsx b/src/components/Workspace.jsx index 511e3c058..910474b86 100644 --- a/src/components/Workspace.jsx +++ b/src/components/Workspace.jsx @@ -606,7 +606,9 @@ export default function WorkSpace() { /> )}
- {x.label === DB.GENERIC ? t("generic_description") : x.description} + {x.label === DB.GENERIC + ? t("generic_description") + : t(`db_${x.label.toLowerCase()}_description`)}
))} diff --git a/src/data/databases.js b/src/data/databases.js index 43c9b2a82..e41329a3b 100644 --- a/src/data/databases.js +++ b/src/data/databases.js @@ -13,6 +13,7 @@ export const databases = new Proxy( name: "MySQL", label: DB.MYSQL, image: mysqlImage, + description: i18n.t("db_mysql_description"), hasTypes: false, hasUnsignedTypes: true, }, @@ -20,6 +21,7 @@ export const databases = new Proxy( name: "PostgreSQL", label: DB.POSTGRES, image: postgresImage, + description: i18n.t("db_postgresql_description"), hasTypes: true, hasEnums: true, hasArrays: true, @@ -28,12 +30,14 @@ export const databases = new Proxy( name: "SQLite", label: DB.SQLITE, image: sqliteImage, + description: i18n.t("db_sqlite_description"), hasTypes: false, }, [DB.MARIADB]: { name: "MariaDB", label: DB.MARIADB, image: mariadbImage, + description: i18n.t("db_mariadb_description"), hasTypes: false, hasUnsignedTypes: true, }, @@ -41,12 +45,14 @@ export const databases = new Proxy( name: "MSSQL", label: DB.MSSQL, image: mssqlImage, + description: i18n.t("db_transactsql_description"), hasTypes: false, }, [DB.ORACLESQL]: { name: "Oracle SQL", label: DB.ORACLESQL, image: oraclesqlImage, + description: i18n.t("db_oraclesql_description"), hasTypes: false, hasEnums: false, hasArrays: false, diff --git a/src/i18n/locales/bn.js b/src/i18n/locales/bn.js index 468acb4b0..cf527d325 100644 --- a/src/i18n/locales/bn.js +++ b/src/i18n/locales/bn.js @@ -230,6 +230,18 @@ const bn = { pick_db: "একটি ডাটাবেস নির্বাচন করুন", generic: "জেনেরিক", generic_description: "জেনেরিক ডায়াগ্রামগুলি যে কোনও SQL ফ্লেভারে এক্সপোর্ট করা যেতে পারে কিন্তু এতে অল্প কিছু ডেটা টাইপেরই সাপোর্ট আছে।", + db_mysql: "MySQL", + db_postgresql: "PostgreSQL", + db_sqlite: "SQLite", + db_mariadb: "MariaDB", + db_transactsql: "MSSQL", + db_oraclesql: "Oracle SQL", + db_mysql_description: "MySQL একটি ওপেন-সোর্স রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম।", + db_postgresql_description: "PostgreSQL একটি শক্তিশালী, ওপেন-সোর্স অবজেক্ট-রিলেশনাল ডাটাবেস সিস্টেম।", + db_sqlite_description: "SQLite একটি C-ভাষার লাইব্রেরি যা একটি ছোট, দ্রুত, স্বয়ংসম্পূর্ণ SQL ডাটাবেস ইঞ্জিন প্রয়োগ করে।", + db_mariadb_description: "MariaDB হল MySQL-এর একটি কমিউনিটি-উন্নত, বাণিজ্যিকভাবে সমর্থিত ফর্ক।", + db_transactsql_description: "Microsoft SQL Server হল Microsoft দ্বারা উন্নত একটি রিলেশনাল ডাটাবেস ম্যানেজমেন্ট সিস্টেম।", + db_oraclesql_description: "Oracle Database হল Oracle Corporation দ্বারা উৎপাদিত একটি মাল্টি-মডেল ডাটাবেস ম্যানেজমেন্ট সিস্টেম।", enums: "এনামস", add_enum: "এনাম যোগ করুন", edit_enum: "{{extra}} এনাম {{enumName}} এডিট করুন", diff --git a/src/i18n/locales/en.js b/src/i18n/locales/en.js index 735a6a5da..15934a390 100644 --- a/src/i18n/locales/en.js +++ b/src/i18n/locales/en.js @@ -237,6 +237,12 @@ const en = { db_mariadb: "MariaDB", db_transactsql: "MSSQL", db_oraclesql: "Oracle SQL", + db_mysql_description: "MySQL is an open-source relational database management system.", + db_postgresql_description: "PostgreSQL is a powerful, open-source object-relational database system.", + db_sqlite_description: "SQLite is a C-language library that implements a small, fast, self-contained SQL database engine.", + db_mariadb_description: "MariaDB is a community-developed, commercially supported fork of MySQL.", + db_transactsql_description: "Microsoft SQL Server is a relational database management system developed by Microsoft.", + db_oraclesql_description: "Oracle Database is a multi-model database management system produced by Oracle Corporation.", enums: "Enums", add_enum: "Add enum", edit_enum: "{{extra}} Edit enum {{enumName}}",