From da224303fe276337601295b6445ebd5dfbcbe6e9 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 24 Nov 2025 16:29:29 +0100 Subject: [PATCH 1/4] Translation - added translation tags for widgets --- .../web/src/buttons/InlineUploadButton.svelte | 5 +++-- packages/web/src/buttons/UploadButton.svelte | 3 ++- .../web/src/designer/DesignerTable.svelte | 17 ++++++++-------- .../src/plugins/AvailablePluginsList.svelte | 3 ++- .../web/src/widgets/CellDataWidget.svelte | 11 +++++----- packages/web/src/widgets/FilesWidget.svelte | 4 ++-- packages/web/src/widgets/HistoryWidget.svelte | 5 +++-- packages/web/src/widgets/PluginsWidget.svelte | 6 ++++-- .../web/src/widgets/PublicCloudWidget.svelte | 8 ++++---- .../web/src/widgets/QueryHistoryList.svelte | 5 +++-- .../web/src/widgets/SavedFilesList.svelte | 11 +++++----- .../web/src/widgets/WidgetIconPanel.svelte | 20 +++++++++---------- 12 files changed, 54 insertions(+), 44 deletions(-) diff --git a/packages/web/src/buttons/InlineUploadButton.svelte b/packages/web/src/buttons/InlineUploadButton.svelte index 9c6d8bd92..7d1c6aa32 100644 --- a/packages/web/src/buttons/InlineUploadButton.svelte +++ b/packages/web/src/buttons/InlineUploadButton.svelte @@ -5,6 +5,7 @@ import getElectron from '../utility/getElectron'; import InlineButtonLabel from '../buttons/InlineButtonLabel.svelte'; import resolveApi, { resolveApiHeaders } from '../utility/resolveApi'; + import { _t } from '../translations'; import uuidv1 from 'uuid/v1'; @@ -49,11 +50,11 @@ {#if electron} - + {:else} - {}} title="Upload file" data-testid={$$props['data-testid']} htmlFor={inputId}> + {}} title={_t('files.uploadFile', { defaultMessage: "Upload file" })} data-testid={$$props['data-testid']} htmlFor={inputId}> {/if} diff --git a/packages/web/src/buttons/UploadButton.svelte b/packages/web/src/buttons/UploadButton.svelte index 0d9a18a22..33b9f6484 100644 --- a/packages/web/src/buttons/UploadButton.svelte +++ b/packages/web/src/buttons/UploadButton.svelte @@ -1,6 +1,7 @@
- Upload file + {_t('files.uploadFile', { defaultMessage: "Upload file" })}
diff --git a/packages/web/src/designer/DesignerTable.svelte b/packages/web/src/designer/DesignerTable.svelte index c94f12d51..c13099d48 100644 --- a/packages/web/src/designer/DesignerTable.svelte +++ b/packages/web/src/designer/DesignerTable.svelte @@ -17,6 +17,7 @@ import moveDrag from '../utility/moveDrag'; import ColumnLine from './ColumnLine.svelte'; import DomTableRef from './DomTableRef'; + import { _t } from '../translations'; export let conid; export let database; @@ -185,8 +186,8 @@ const handleSetTableAlias = () => { showModal(InputTextModal, { value: alias || '', - label: 'New alias', - header: 'Set table alias', + label: _t('designerTable.newAlias', { defaultMessage: 'New alias' }), + header: _t('designerTable.setTableAlias', { defaultMessage: 'Set table alias' }), onConfirm: newAlias => { onChangeTable({ ...table, @@ -210,13 +211,13 @@ return settings?.tableMenu({ designer, designerId, onRemoveTable }); } return [ - { text: 'Remove', onClick: () => onRemoveTable({ designerId }) }, + { text: _t('common.remove', { defaultMessage: 'Remove' }), onClick: () => onRemoveTable({ designerId }) }, { divider: true }, settings?.allowTableAlias && !isMultipleTableSelection && [ - { text: 'Set table alias', onClick: handleSetTableAlias }, + { text: _t('designerTable.setTableAlias', { defaultMessage: 'Set table alias' }), onClick: handleSetTableAlias }, alias && { - text: 'Remove table alias', + text: _t('designerTable.removeTableAlias', { defaultMessage: 'Remove table alias' }), onClick: () => onChangeTable({ ...table, @@ -225,11 +226,11 @@ }, ], settings?.allowAddAllReferences && - !isMultipleTableSelection && { text: 'Add references', onClick: () => onAddAllReferences(table) }, - settings?.allowChangeColor && { text: 'Change color', onClick: () => onChangeTableColor(table) }, + !isMultipleTableSelection && { text: _t('designerTable.addReferences', { defaultMessage: 'Add references' }), onClick: () => onAddAllReferences(table) }, + settings?.allowChangeColor && { text: _t('designerTable.changeColor', { defaultMessage: 'Change color' }), onClick: () => onChangeTableColor(table) }, settings?.allowDefineVirtualReferences && !isMultipleTableSelection && { - text: 'Define virtual foreign key', + text: _t('designerTable.defineVirtualForeignKey', { defaultMessage: 'Define virtual foreign key' }), onClick: () => handleDefineVirtualForeignKey(table), }, settings?.appendTableSystemMenu && diff --git a/packages/web/src/plugins/AvailablePluginsList.svelte b/packages/web/src/plugins/AvailablePluginsList.svelte index 650e536ba..0036c3e33 100644 --- a/packages/web/src/plugins/AvailablePluginsList.svelte +++ b/packages/web/src/plugins/AvailablePluginsList.svelte @@ -8,6 +8,7 @@ import WidgetsInnerContainer from '../widgets/WidgetsInnerContainer.svelte'; import PluginsList from './PluginsList.svelte'; import { filterName } from 'dbgate-tools'; + import { _t } from '../translations'; let filter = ''; // let search = ''; @@ -20,7 +21,7 @@ - + {#if $plugins?.errorMessage} diff --git a/packages/web/src/widgets/CellDataWidget.svelte b/packages/web/src/widgets/CellDataWidget.svelte index 783b8084c..8175b86e8 100644 --- a/packages/web/src/widgets/CellDataWidget.svelte +++ b/packages/web/src/widgets/CellDataWidget.svelte @@ -101,6 +101,7 @@ import WidgetTitle from './WidgetTitle.svelte'; import JsonExpandedCellView from '../celldata/JsonExpandedCellView.svelte'; import XmlCellView from '../celldata/XmlCellView.svelte'; + import { _t } from '../translations'; let selectedFormatType = 'autodetect'; @@ -116,7 +117,7 @@
- Cell data view + {_t('cellDataWidget.title', { defaultMessage: "Cell data view" })}
Format:  @@ -126,18 +127,18 @@ on:change={e => (selectedFormatType = e.detail)} data-testid="CellDataWidget_selectFormat" options={[ - { value: 'autodetect', label: `Autodetect - ${autodetectFormat.title}` }, + { value: 'autodetect', label: _t('cellDataWidget.autodetect', { defaultMessage: "Autodetect - {autoDetectTitle}", values : { autoDetectTitle: autodetectFormat.title } }) }, ...formats.map(fmt => ({ label: fmt.title, value: fmt.type })), ]} />
{#if usedFormat.single && selection?.length != 1} - + {:else if usedFormat == null} - + {:else if !selection || selection.length == 0} - + {:else} {/if} diff --git a/packages/web/src/widgets/FilesWidget.svelte b/packages/web/src/widgets/FilesWidget.svelte index 657b793e8..51a0ea96d 100644 --- a/packages/web/src/widgets/FilesWidget.svelte +++ b/packages/web/src/widgets/FilesWidget.svelte @@ -19,12 +19,12 @@ - + {#if hasPermission('files/favorites/read')} - + diff --git a/packages/web/src/widgets/HistoryWidget.svelte b/packages/web/src/widgets/HistoryWidget.svelte index a5210f26f..a9988f2de 100644 --- a/packages/web/src/widgets/HistoryWidget.svelte +++ b/packages/web/src/widgets/HistoryWidget.svelte @@ -13,13 +13,14 @@ import WidgetColumnBar from './WidgetColumnBar.svelte'; import WidgetColumnBarItem from './WidgetColumnBarItem.svelte'; import WidgetsInnerContainer from './WidgetsInnerContainer.svelte'; + import { _t } from '../translations'; $: favorites = useFavorites(); - + - + diff --git a/packages/web/src/widgets/PluginsWidget.svelte b/packages/web/src/widgets/PluginsWidget.svelte index a44880f1f..8502e0eea 100644 --- a/packages/web/src/widgets/PluginsWidget.svelte +++ b/packages/web/src/widgets/PluginsWidget.svelte @@ -4,13 +4,15 @@ import WidgetColumnBar from './WidgetColumnBar.svelte'; import WidgetColumnBarItem from './WidgetColumnBarItem.svelte'; + + import { _t } from '../translations'; - + - + diff --git a/packages/web/src/widgets/PublicCloudWidget.svelte b/packages/web/src/widgets/PublicCloudWidget.svelte index a14c49d9f..cb6b39270 100644 --- a/packages/web/src/widgets/PublicCloudWidget.svelte +++ b/packages/web/src/widgets/PublicCloudWidget.svelte @@ -30,11 +30,11 @@ - + @@ -52,9 +52,9 @@
- Only files relevant for your connections, platform and DbGate edition are listed. Please define connections at first. + {_t('publicCloudWidget.onlyRelevantFilesListed', { defaultMessage: "Only files relevant for your connections, platform and DbGate edition are listed. Please define connections at first." })}
- +
{/if}
diff --git a/packages/web/src/widgets/QueryHistoryList.svelte b/packages/web/src/widgets/QueryHistoryList.svelte index f6436df20..77767abd5 100644 --- a/packages/web/src/widgets/QueryHistoryList.svelte +++ b/packages/web/src/widgets/QueryHistoryList.svelte @@ -9,6 +9,7 @@ import openNewTab from '../utility/openNewTab'; import CloseSearchButton from '../buttons/CloseSearchButton.svelte'; import { apiCall, apiOff, apiOn } from '../utility/api'; + import { _t } from '../translations'; let filter = ''; let search = ''; @@ -38,7 +39,7 @@ - + { @@ -54,7 +55,7 @@ on:click={() => { openNewTab( { - title: 'Query #', + title: _t('database.queryDesigner', { defaultMessage: "Query #" }), icon: 'icon sql-file', tabComponent: 'QueryTab', focused: true, diff --git a/packages/web/src/widgets/SavedFilesList.svelte b/packages/web/src/widgets/SavedFilesList.svelte index 095794588..ea24ceeb0 100644 --- a/packages/web/src/widgets/SavedFilesList.svelte +++ b/packages/web/src/widgets/SavedFilesList.svelte @@ -13,6 +13,7 @@ import { isProApp } from '../utility/proTools'; import InlineUploadButton from '../buttons/InlineUploadButton.svelte'; import { DATA_FOLDER_NAMES } from 'dbgate-tools'; + import { _t } from '../translations'; let filter = ''; @@ -65,19 +66,19 @@ - + - + @@ -86,7 +87,7 @@ (data.teamFileId ? 'Team files' : dataFolderTitle(data.folder))} + groupFunc={data => (data.teamFileId ? _t('files.teamFiles', { defaultMessage: "Team files" }) : dataFolderTitle(data.folder))} {filter} /> diff --git a/packages/web/src/widgets/WidgetIconPanel.svelte b/packages/web/src/widgets/WidgetIconPanel.svelte index 4dfef5ab5..fa812c188 100644 --- a/packages/web/src/widgets/WidgetIconPanel.svelte +++ b/packages/web/src/widgets/WidgetIconPanel.svelte @@ -35,16 +35,16 @@ getCurrentConfig().storageDatabase && { icon: 'icon admin', name: 'admin', - title: 'Administration', + title: _t('widgets.administration', { defaultMessage: 'Administration' }), }, { icon: 'icon database', name: 'database', - title: 'Database connections', + title: _t('widgets.databaseConnections', { defaultMessage: 'Database connections' }), }, getCurrentConfig().allowPrivateCloud && { name: 'cloud-private', - title: 'DbGate Cloud', + title: _t('widgets.dbgateCloud', { defaultMessage: 'DbGate Cloud' }), icon: 'icon cloud-private', }, @@ -55,17 +55,17 @@ { icon: 'icon file', name: 'file', - title: 'Favorites & Saved files', + title: _t('widgets.favoritesAndSavedFiles', { defaultMessage: 'Favorites & Saved files' }), }, { icon: 'icon history', name: 'history', - title: 'Query history & Closed tabs', + title: _t('widgets.queryHistoryAndClosedTabs', { defaultMessage: 'Query history & Closed tabs' }), }, isProApp() && { icon: 'icon archive', name: 'archive', - title: 'Archive (saved tabular data)', + title: _t('widgets.archive', { defaultMessage: 'Archive (saved tabular data)' }), }, // { // icon: 'icon plugin', @@ -75,17 +75,17 @@ { icon: 'icon cell-data', name: 'cell-data', - title: 'Selected cell data detail view', + title: _t('widgets.selectedCellDataDetailView', { defaultMessage: 'Selected cell data detail view' }), }, { name: 'cloud-public', - title: 'DbGate Cloud', + title: _t('widgets.dbgateCloud', { defaultMessage: 'DbGate Cloud' }), icon: 'icon cloud-public', }, { icon: 'icon premium', name: 'premium', - title: 'Premium promo', + title: _t('widgets.premiumPromo', { defaultMessage: 'Premium promo' }), isPremiumPromo: true, }, // { @@ -213,7 +213,7 @@ class="wrapper" on:click={() => showModal(NewObjectModal)} data-testid="WidgetIconPanel_addButton" - title="Add New" + title={_t('widgets.addNew', { defaultMessage: 'Add New' })} >
From b6f0e15951c9aae9ee1b9dde6e15ad312a108518 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 24 Nov 2025 16:48:29 +0100 Subject: [PATCH 2/4] Translation - add translation tags for logs --- packages/web/src/tabs/AppLogTab.svelte | 63 +++++++++++++------------- 1 file changed, 32 insertions(+), 31 deletions(-) diff --git a/packages/web/src/tabs/AppLogTab.svelte b/packages/web/src/tabs/AppLogTab.svelte index 5635dc50d..90b92585d 100644 --- a/packages/web/src/tabs/AppLogTab.svelte +++ b/packages/web/src/tabs/AppLogTab.svelte @@ -24,6 +24,7 @@ createQuickExportHandlerRef, registerQuickExportHandler, } from '../buttons/ToolStripExportButton.svelte'; + import { _t } from '../translations'; let loadedRows = []; let loadedAll = false; @@ -191,8 +192,8 @@ { @@ -202,7 +203,7 @@ /> {#if mode === 'recent'} -
Auto-scroll
+
{_t('logs.autoScroll', { defaultMessage: 'Auto-scroll' })}
Date:
+
{_t('logs.date', { defaultMessage: 'Date:' })}
{ dateFilter = value; @@ -225,12 +226,12 @@ data-testid="AdminAuditLogTab_addFilter" icon="icon filter" menu={[ - { text: 'Connection ID', onClick: () => filterBy('conid') }, - { text: 'Database', onClick: () => filterBy('database') }, - { text: 'Engine', onClick: () => filterBy('engine') }, - { text: 'Message code', onClick: () => filterBy('msgcode') }, - { text: 'Caller', onClick: () => filterBy('caller') }, - { text: 'Name', onClick: () => filterBy('name') }, + { text: _t('logs.connectionId', { defaultMessage: 'Connection ID' }), onClick: () => filterBy('conid') }, + { text: _t('logs.database', { defaultMessage: 'Database' }), onClick: () => filterBy('database') }, + { text: _t('logs.engine', { defaultMessage: 'Engine' }), onClick: () => filterBy('engine') }, + { text: _t('logs.messageCode', { defaultMessage: 'Message code' }), onClick: () => filterBy('msgcode') }, + { text: _t('logs.caller', { defaultMessage: 'Caller' }), onClick: () => filterBy('caller') }, + { text: _t('logs.name', { defaultMessage: 'Name' }), onClick: () => filterBy('name') }, ]} />
@@ -259,15 +260,15 @@ - - - - - - - - - + + + + + + + + + @@ -299,14 +300,14 @@
-
Message code:
+
{_t('logs.messageCode', { defaultMessage: 'Message code:' })}
{#if mode == 'date'} doSetFilter('msgcode', [row.msgcode])}>{row.msgcode || 'N/A'} {:else} @@ -314,15 +315,15 @@ {/if}
-
Message:
+
{_t('logs.message', { defaultMessage: 'Message:' })}
{row.msg}
-
Time:
+
{_t('logs.time', { defaultMessage: 'Time:' })}
{row.time ? format(new Date(parseInt(row.time)), 'yyyy-MM-dd HH:mm:ss') : ''}
-
Caller:
+
{_t('logs.caller', { defaultMessage: 'Caller:' })}
{#if mode == 'date'} doSetFilter('caller', [row.caller])}>{row.caller || 'N/A'} {:else} @@ -330,7 +331,7 @@ {/if}
-
Name:
+
{_t('logs.name', { defaultMessage: 'Name:' })}
{#if mode == 'date'} doSetFilter('name', [row.name])}>{row.name || 'N/A'} {:else} @@ -339,7 +340,7 @@
{#if row.conid}
-
Connection ID:
+
{_t('logs.connectionId', { defaultMessage: 'Connection ID:' })}
{#if mode == 'date'} doSetFilter('conid', [row.conid])} >{formatPossibleUuid(row.conid)} -
Database:
+
{_t('logs.database', { defaultMessage: 'Database:' })}
{#if mode == 'date'} doSetFilter('database', [row.database])}>{row.database} {:else} @@ -361,7 +362,7 @@ {/if} {#if row.engine}
-
Engine:
+
{_t('logs.engine', { defaultMessage: 'Engine:' })}
{#if mode == 'date'} doSetFilter('engine', [row.engine])}>{row.engine} {:else} @@ -381,13 +382,13 @@ {/each} {#if !loadedRows?.length && mode === 'date'}
- + {/if} {#if !loadedAll && mode === 'date'} {#key loadedRows} - + {/key} {/if} @@ -402,7 +403,7 @@ data-testid="AdminAuditLogTab_refreshButton" on:click={() => { reloadData(); - }}>Refresh{_t('logs.refresh', { defaultMessage: 'Refresh' })} From 1e195e07e0d89b8dfd736b57ebd535328e41d961 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Mon, 24 Nov 2025 17:02:34 +0100 Subject: [PATCH 3/4] Translation - added translation tags for import/export --- packages/web/src/impexp/SourceTargetConfig.svelte | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/web/src/impexp/SourceTargetConfig.svelte b/packages/web/src/impexp/SourceTargetConfig.svelte index 38a8a19cd..2c07987c0 100644 --- a/packages/web/src/impexp/SourceTargetConfig.svelte +++ b/packages/web/src/impexp/SourceTargetConfig.svelte @@ -73,19 +73,19 @@
{#if direction == 'source'}
- Source configuration + {_t('importExport.sourceConfiguration', { defaultMessage: 'Source configuration' })}
{/if} {#if direction == 'target'}
- Target configuration + {_t('importExport.targetConfiguration', { defaultMessage: 'Target configuration' })}
{/if}
{#if $currentDatabase} { values.update(x => ({ ...x, @@ -97,7 +97,7 @@ /> {/if} {#if direction == 'target'} { showModal(InputTextModal, { header: 'Archive', @@ -172,9 +172,9 @@ {/if} {#if storageType == 'database' || storageType == 'query'} - + {#if !$connectionInfo?.singleDatabase} - + {/if} {/if} {#if storageType == 'database'} From b784e342c96f5f433979e4287d98b7ae84b46280 Mon Sep 17 00:00:00 2001 From: Stela Augustinova Date: Tue, 25 Nov 2025 10:07:41 +0100 Subject: [PATCH 4/4] Translation - added translation tags for import/export, connection tab --- packages/web/src/commands/stdCommands.ts | 4 ++-- .../src/forms/FormArchiveFilesSelect.svelte | 5 +++-- packages/web/src/impexp/FilesInput.svelte | 5 +++-- .../web/src/impexp/FormTablesSelect.svelte | 5 +++-- .../impexp/ImportExportConfigurator.svelte | 15 ++++++------- .../web/src/impexp/SourceTargetConfig.svelte | 4 ++-- packages/web/src/tabs/ImportExportTab.svelte | 21 ++++++++++--------- 7 files changed, 32 insertions(+), 27 deletions(-) diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts index 073fa7683..4b488cd33 100644 --- a/packages/web/src/commands/stdCommands.ts +++ b/packages/web/src/commands/stdCommands.ts @@ -121,7 +121,7 @@ registerCommand({ testEnabled: () => !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase, onClick: () => { openNewTab({ - title: 'New Connection', + title: _t('common.newConnection', { defaultMessage: 'New Connection' }), icon: 'img connection', tabComponent: 'ConnectionTab', }); @@ -140,7 +140,7 @@ registerCommand({ !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase && !!getCloudSigninTokenHolder(), onClick: () => { openNewTab({ - title: 'New Connection on Cloud', + title: _t('common.newConnectionCloud', { defaultMessage: 'New Connection on Cloud' }), icon: 'img cloud-connection', tabComponent: 'ConnectionTab', props: { diff --git a/packages/web/src/forms/FormArchiveFilesSelect.svelte b/packages/web/src/forms/FormArchiveFilesSelect.svelte index c2dee45bd..53c6ee70c 100644 --- a/packages/web/src/forms/FormArchiveFilesSelect.svelte +++ b/packages/web/src/forms/FormArchiveFilesSelect.svelte @@ -7,6 +7,7 @@ import { getFormContext } from './FormProviderCore.svelte'; import FormSelectField from './FormSelectField.svelte'; + import { _t } from '../translations'; export let folderName; export let name; @@ -28,10 +29,10 @@
setFieldValue(name, _.uniq([...($values[name] || []), ...($files && $files.map(x => x.name))]))} /> - setFieldValue(name, [])} /> + setFieldValue(name, [])} />
diff --git a/packages/web/src/impexp/FilesInput.svelte b/packages/web/src/impexp/FilesInput.svelte index 37e4d719b..3afdd30e4 100644 --- a/packages/web/src/impexp/FilesInput.svelte +++ b/packages/web/src/impexp/FilesInput.svelte @@ -23,6 +23,7 @@ import ElectronFilesInput from './ElectronFilesInput.svelte'; import { addFilesToSourceList } from './ImportExportConfigurator.svelte'; import UploadButton from '../buttons/UploadButton.svelte'; + import { _t } from '../translations'; export let setPreviewSource = undefined; @@ -55,10 +56,10 @@ {:else} {/if} - +
-
Drag & drop imported files here
+
{_t('importExport.dragDropImportedFilesHere', { defaultMessage: "Drag & drop imported files here" })}
DateTimeCodeMessageConnectionDatabaseEngineCallerName{_t('logs.dateTab', { defaultMessage: 'Date' })}{_t('logs.timeTab', { defaultMessage: 'Time' })}{_t('logs.codeTab', { defaultMessage: 'Code' })}{_t('logs.messageTab', { defaultMessage: 'Message' })}{_t('logs.connectionTab', { defaultMessage: 'Connection' })}{_t('logs.databaseTab', { defaultMessage: 'Database' })}{_t('logs.engineTab', { defaultMessage: 'Engine' })}{_t('logs.callerTab', { defaultMessage: 'Caller' })}{_t('logs.nameTab', { defaultMessage: 'Name' })}
No data for selected date{_t('logs.noDataForSelectedDate', { defaultMessage: "No data for selected date" })}
Loading next rows... {_t('logs.loadingNextRows', { defaultMessage: "Loading next rows..." })}