diff --git a/packages/web/src/appobj/AppFileAppObject.svelte b/packages/web/src/appobj/AppFileAppObject.svelte
index f3ed7e257..6cb769459 100644
--- a/packages/web/src/appobj/AppFileAppObject.svelte
+++ b/packages/web/src/appobj/AppFileAppObject.svelte
@@ -53,14 +53,15 @@
import InputTextModal from '../modals/InputTextModal.svelte';
import ConfirmModal from '../modals/ConfirmModal.svelte';
import { apiCall } from '../utility/api';
+ import { _t } from '../translations';
export let data;
const handleRename = () => {
showModal(InputTextModal, {
value: data.fileName,
- label: 'New file name',
- header: 'Rename file',
+ label: _t('appFile.newFileName', { defaultMessage: 'New file name' }),
+ header: _t('appFile.renameFile', { defaultMessage: 'Rename file' }),
onConfirm: newFile => {
apiCall('apps/rename-file', {
file: data.fileName,
@@ -74,7 +75,7 @@
const handleDelete = () => {
showModal(ConfirmModal, {
- message: `Really delete file ${data.fileName}?`,
+ message: _t('appFile.deleteFileConfirm', { defaultMessage: 'Really delete file {fileName}?', values: { fileName: data.fileName } }),
onConfirm: () => {
apiCall('apps/delete-file', {
file: data.fileName,
@@ -101,10 +102,10 @@
function createMenu() {
return [
- { text: 'Delete', onClick: handleDelete },
- { text: 'Rename', onClick: handleRename },
- data.fileType.endsWith('.sql') && { text: 'Open SQL', onClick: handleOpenSqlFile },
- data.fileType.endsWith('.json') && { text: 'Open JSON', onClick: handleOpenJsonFile },
+ { text: _t('common.delete', { defaultMessage: 'Delete' }), onClick: handleDelete },
+ { text: _t('common.rename', { defaultMessage: 'Rename' }), onClick: handleRename },
+ data.fileType.endsWith('.sql') && { text: _t('common.openSql', { defaultMessage: 'Open SQL' }), onClick: handleOpenSqlFile },
+ data.fileType.endsWith('.json') && { text: _t('common.openJson', { defaultMessage: 'Open JSON' }), onClick: handleOpenJsonFile },
// data.fileType.endsWith('.yaml') && { text: 'Open YAML', onClick: handleOpenYamlFile },
];
diff --git a/packages/web/src/appobj/AppFolderAppObject.svelte b/packages/web/src/appobj/AppFolderAppObject.svelte
index 8cbc52a8c..a20bbfd22 100644
--- a/packages/web/src/appobj/AppFolderAppObject.svelte
+++ b/packages/web/src/appobj/AppFolderAppObject.svelte
@@ -15,6 +15,7 @@
import InputTextModal from '../modals/InputTextModal.svelte';
import { apiCall } from '../utility/api';
import { useConnectionList } from '../utility/metadataLoaders';
+ import { _t } from '../translations';
export let data;
@@ -34,8 +35,8 @@
showModal(InputTextModal, {
value: name,
- label: 'New application name',
- header: 'Rename application',
+ label: _t('appFolder.newApplicationName', { defaultMessage: 'New application name' }),
+ header: _t('appFolder.renameApplication', { defaultMessage: 'Rename application' }),
onConfirm: async newFolder => {
await apiCall('apps/rename-folder', {
folder: data.name,
@@ -60,16 +61,16 @@
function createMenu() {
return [
- { text: 'Delete', onClick: handleDelete },
- { text: 'Rename', onClick: handleRename },
+ { text: _t('common.delete', { defaultMessage: 'Delete' }), onClick: handleDelete },
+ { text: _t('common.rename', { defaultMessage: 'Rename' }), onClick: handleRename },
$currentDatabase && [
!isOnCurrentDb($currentDatabase, $connections) && {
- text: 'Enable on current database',
+ text: _t('appFolder.enableOnCurrentDatabase', { defaultMessage: 'Enable on current database' }),
onClick: () => setOnCurrentDb(true),
},
isOnCurrentDb($currentDatabase, $connections) && {
- text: 'Disable on current database',
+ text: _t('appFolder.disableOnCurrentDatabase', { defaultMessage: 'Disable on current database' }),
onClick: () => setOnCurrentDb(false),
},
],
@@ -90,7 +91,7 @@
title={data.name}
icon={'img app'}
statusIcon={isOnCurrentDb($currentDatabase, $connections) ? 'icon check' : null}
- statusTitle={`Application ${data.name} is used for database ${$currentDatabase?.name}`}
+ statusTitle={_t('appFolder.applicationUsedForDatabase', { defaultMessage: 'Application {application} is used for database {database}', values: { application: data.name, database: $currentDatabase?.name } })}
isBold={data.name == $currentApplication}
on:click={() => ($currentApplication = data.name)}
menu={createMenu}
diff --git a/packages/web/src/appobj/ArchiveFileAppObject.svelte b/packages/web/src/appobj/ArchiveFileAppObject.svelte
index 62f09e66a..ecd17c565 100644
--- a/packages/web/src/appobj/ArchiveFileAppObject.svelte
+++ b/packages/web/src/appobj/ArchiveFileAppObject.svelte
@@ -82,6 +82,7 @@
import { apiCall } from '../utility/api';
import { openImportExportTab } from '../utility/importExportTools';
import { isProApp } from '../utility/proTools';
+ import { _t } from '../translations';
export let data;
$: isZipped = data.folderName?.endsWith('.zip');
@@ -89,8 +90,8 @@
const handleRename = () => {
showModal(InputTextModal, {
value: data.fileName,
- label: 'New file name',
- header: 'Rename file',
+ label: _t('archiveFile.newFileName', { defaultMessage: 'New file name' }),
+ header: _t('archiveFile.renameFile', { defaultMessage: 'Rename file' }),
onConfirm: newFile => {
apiCall('archive/rename-file', {
file: data.fileName,
@@ -104,7 +105,7 @@
const handleDelete = () => {
showModal(ConfirmModal, {
- message: `Really delete file ${data.fileName}?`,
+ message: _t('archiveFile.deleteFileConfirm', { defaultMessage: 'Really delete file {fileName}?', values: { fileName: data.fileName } }),
onConfirm: () => {
apiCall('archive/delete-file', {
file: data.fileName,
@@ -147,10 +148,10 @@
}
return [
- data.fileType == 'jsonl' && { text: 'Open', onClick: handleOpenArchive },
- data.fileType == 'jsonl' && { text: 'Open in text editor', onClick: handleOpenJsonLinesText },
- !isZipped && { text: 'Delete', onClick: handleDelete },
- !isZipped && { text: 'Rename', onClick: handleRename },
+ data.fileType == 'jsonl' && { text: _t('common.open', { defaultMessage: 'Open' }), onClick: handleOpenArchive },
+ data.fileType == 'jsonl' && { text: _t('common.openInTextEditor', { defaultMessage: 'Open in text editor' }), onClick: handleOpenJsonLinesText },
+ !isZipped && { text: _t('common.delete', { defaultMessage: 'Delete' }), onClick: handleDelete },
+ !isZipped && { text: _t('common.rename', { defaultMessage: 'Rename' }), onClick: handleRename },
data.fileType == 'jsonl' &&
createQuickExportMenu(
fmt => async () => {
@@ -185,19 +186,19 @@
},
}
),
- data.fileType.endsWith('.sql') && { text: 'Open SQL', onClick: handleOpenSqlFile },
- data.fileType.endsWith('.yaml') && { text: 'Open YAML', onClick: handleOpenYamlFile },
+ data.fileType.endsWith('.sql') && { text: _t('common.openSql', { defaultMessage: 'Open SQL' }), onClick: handleOpenSqlFile },
+ data.fileType.endsWith('.yaml') && { text: _t('common.openYaml', { defaultMessage: 'Open YAML' }), onClick: handleOpenYamlFile },
!isZipped &&
isProApp() &&
data.fileType == 'jsonl' && {
- text: 'Open in profiler',
+ text: _t('common.openInProfiler', { defaultMessage: 'Open in profiler' }),
submenu: getExtensions()
.drivers.filter(eng => eng.profilerFormatterFunction)
.map(eng => ({
text: eng.title,
onClick: () => {
openNewTab({
- title: 'Profiler',
+ title: _t('common.profiler', { defaultMessage: 'Profiler' }),
icon: 'img profiler',
tabComponent: 'ProfilerTab',
props: {
diff --git a/packages/web/src/appobj/ArchiveFolderAppObject.svelte b/packages/web/src/appobj/ArchiveFolderAppObject.svelte
index 3a4f66517..cf0c71dab 100644
--- a/packages/web/src/appobj/ArchiveFolderAppObject.svelte
+++ b/packages/web/src/appobj/ArchiveFolderAppObject.svelte
@@ -21,14 +21,15 @@
import { isProApp } from '../utility/proTools';
import { extractShellConnection } from '../impexp/createImpExpScript';
import { saveFileToDisk } from '../utility/exportFileTools';
+ import { _t } from '../translations';
export let data;
const handleDelete = () => {
showModal(ConfirmModal, {
message: data.name.endsWith('.link')
- ? `Really delete link to folder ${data.name}? Folder content remains untouched.`
- : `Really delete folder ${data.name}?`,
+ ? _t('archiveFolder.deleteLinkConfirm', { defaultMessage: 'Really delete link to folder {folderName}? Folder content remains untouched.', values: { folderName: data.name } })
+ : _t('archiveFolder.deleteFolderConfirm', { defaultMessage: 'Really delete folder {folderName}?', values: { folderName: data.name } }),
onConfirm: () => {
apiCall('archive/delete-folder', { folder: data.name });
},
@@ -42,8 +43,8 @@
showModal(InputTextModal, {
value: name,
- label: 'New folder name',
- header: 'Rename folder',
+ label: _t('archiveFolder.newFolderName', { defaultMessage: 'New folder name' }),
+ header: _t('archiveFolder.renameFolder', { defaultMessage: 'Rename folder' }),
onConfirm: async newFolder => {
await apiCall('archive/rename-folder', {
folder: data.name,
@@ -95,7 +96,7 @@ await dbgateApi.deployDb(${JSON.stringify(
const handleCompareWithCurrentDb = () => {
openNewTab(
{
- title: 'Compare',
+ title: _t('common.compare', { defaultMessage: 'Compare' }),
icon: 'img compare',
tabComponent: 'CompareModelTab',
props: {
@@ -153,7 +154,7 @@ await dbgateApi.deployDb(${JSON.stringify(
});
},
{
- formatLabel: 'ZIP files',
+ formatLabel: _t('common.zipFiles', { defaultMessage: 'ZIP files' }),
formatExtension: 'zip',
defaultFileName: data.name?.endsWith('.zip') ? data.name : data.name + '.zip',
}
@@ -162,28 +163,28 @@ await dbgateApi.deployDb(${JSON.stringify(
function createMenu() {
return [
- data.name != 'default' && { text: 'Delete', onClick: handleDelete },
- data.name != 'default' && { text: 'Rename', onClick: handleRename },
- isProApp() && { text: 'Data deployer', onClick: handleOpenDataDeployTab },
+ data.name != 'default' && { text: _t('common.delete', { defaultMessage: 'Delete' }), onClick: handleDelete },
+ data.name != 'default' && { text: _t('common.rename', { defaultMessage: 'Rename' }), onClick: handleRename },
+ isProApp() && { text: _t('common.dataDeployer', { defaultMessage: 'Data deployer' }), onClick: handleOpenDataDeployTab },
$currentDatabase && [
- { text: 'Generate deploy DB SQL', onClick: handleGenerateDeploySql },
- hasPermission(`run-shell-script`) && { text: 'Shell: Deploy DB', onClick: handleGenerateDeployScript },
+ { text: _t('archiveFolder.generateDeployDbSql', { defaultMessage: 'Generate deploy DB SQL' }), onClick: handleGenerateDeploySql },
+ hasPermission(`run-shell-script`) && { text: _t('archiveFolder.shellDeployDb', { defaultMessage: 'Shell: Deploy DB' }), onClick: handleGenerateDeployScript },
],
data.name != 'default' &&
isProApp() &&
- data.name.endsWith('.zip') && { text: 'Unpack ZIP', onClick: () => handleZipUnzip('archive/unzip') },
+ data.name.endsWith('.zip') && { text: _t('archiveFolder.unpackZip', { defaultMessage: 'Unpack ZIP' }), onClick: () => handleZipUnzip('archive/unzip') },
data.name != 'default' &&
isProApp() &&
- !data.name.endsWith('.zip') && { text: 'Pack (create ZIP)', onClick: () => handleZipUnzip('archive/zip') },
+ !data.name.endsWith('.zip') && { text: _t('archiveFolder.packZip', { defaultMessage: 'Pack (create ZIP)' }), onClick: () => handleZipUnzip('archive/zip') },
- isProApp() && { text: 'Download ZIP', onClick: handleDownloadZip },
+ isProApp() && { text: _t('archiveFolder.downloadZip', { defaultMessage: 'Download ZIP' }), onClick: handleDownloadZip },
data.name != 'default' &&
hasPermission('dbops/model/compare') &&
isProApp() &&
_.get($currentDatabase, 'connection._id') && {
onClick: handleCompareWithCurrentDb,
- text: `Compare with ${_.get($currentDatabase, 'name')}`,
+ text: _t('archiveFolder.compareWithCurrentDb', { defaultMessage: 'Compare with {name}', values: { name: _.get($currentDatabase, 'name') } }),
},
];
}
diff --git a/packages/web/src/appobj/DatabaseAppObject.svelte b/packages/web/src/appobj/DatabaseAppObject.svelte
index a7cd05176..3806272c8 100644
--- a/packages/web/src/appobj/DatabaseAppObject.svelte
+++ b/packages/web/src/appobj/DatabaseAppObject.svelte
@@ -407,8 +407,8 @@ await dbgateApi.executeQuery(${JSON.stringify(
const handleCreateNewApp = () => {
showModal(InputTextModal, {
- header: 'New application',
- label: 'Application name',
+ header: _t('database.newApplication', { defaultMessage: 'New application' }),
+ label: _t('database.applicationName', { defaultMessage: 'Application name' }),
value: _.startCase(name),
onConfirm: async appName => {
const newAppId = await apiCall('apps/create-app-from-db', {
diff --git a/packages/web/src/appobj/DatabaseObjectAppObject.svelte b/packages/web/src/appobj/DatabaseObjectAppObject.svelte
index fdf07efed..50c7763c7 100644
--- a/packages/web/src/appobj/DatabaseObjectAppObject.svelte
+++ b/packages/web/src/appobj/DatabaseObjectAppObject.svelte
@@ -199,12 +199,12 @@
divider: true,
},
hasPermission('dbops/export') && {
- label: 'Export',
+ label: _t('common.export', { defaultMessage: 'Export' }),
functionName: 'tableReader',
isExport: true,
},
hasPermission('dbops/import') && {
- label: 'Import',
+ label: _t('common.import', { defaultMessage: 'Import' }),
isImport: true,
requiresWriteAccess: true,
},
@@ -260,7 +260,7 @@
divider: true,
},
{
- label: 'Export',
+ label: _t('common.export', { defaultMessage: 'Export' }),
isExport: true,
functionName: 'tableReader',
},
@@ -310,7 +310,7 @@
divider: true,
},
{
- label: 'Export',
+ label: _t('common.export', { defaultMessage: 'Export' }),
isExport: true,
functionName: 'tableReader',
},
@@ -402,7 +402,7 @@
icon: 'img perspective',
},
hasPermission('dbops/export') && {
- label: 'Export',
+ label: _t('common.export', { defaultMessage: 'Export' }),
isExport: true,
functionName: 'tableReader',
},
diff --git a/packages/web/src/appobj/SavedFileAppObject.svelte b/packages/web/src/appobj/SavedFileAppObject.svelte
index 89776c195..ad98b1eae 100644
--- a/packages/web/src/appobj/SavedFileAppObject.svelte
+++ b/packages/web/src/appobj/SavedFileAppObject.svelte
@@ -193,6 +193,7 @@
import { saveFileToDisk } from '../utility/exportFileTools';
import { getConnectionInfo } from '../utility/metadataLoaders';
import { showSnackbarError } from '../utility/snackbar';
+ import { _t } from '../translations';
export let data;
@@ -214,27 +215,26 @@
function createMenu() {
return [
- handler?.tabComponent && { text: 'Open', onClick: openTab },
+ handler?.tabComponent && { text: _t('common.open', { defaultMessage: 'Open' }), onClick: openTab },
- !data.teamFileId && hasPermission(`files/${data.folder}/write`) && { text: 'Rename', onClick: handleRename },
- !data.teamFileId && hasPermission(`files/${data.folder}/write`) && { text: 'Create copy', onClick: handleCopy },
- !data.teamFileId && hasPermission(`files/${data.folder}/write`) && { text: 'Delete', onClick: handleDelete },
-
- data.teamFileId && data.allowWrite && { text: 'Rename', onClick: handleRename },
+ !data.teamFileId && hasPermission(`files/${data.folder}/write`) && { text: _t('common.rename', { defaultMessage: 'Rename' }), onClick: handleRename },
+ !data.teamFileId && hasPermission(`files/${data.folder}/write`) && { text: _t('common.createCopy', { defaultMessage: 'Create copy' }), onClick: handleCopy },
+ !data.teamFileId && hasPermission(`files/${data.folder}/write`) && { text: _t('common.delete', { defaultMessage: 'Delete' }), onClick: handleDelete },
+ data.teamFileId && data.allowWrite && { text: _t('common.rename', { defaultMessage: 'Rename' }), onClick: handleRename },
data.teamFileId &&
data.allowRead &&
- hasPermission('all-team-files/create') && { text: 'Create copy', onClick: handleCopy },
- data.teamFileId && data.allowWrite && { text: 'Delete', onClick: handleDelete },
+ hasPermission('all-team-files/create') && { text: _t('common.createCopy', { defaultMessage: 'Create copy' }), onClick: handleCopy },
+ data.teamFileId && data.allowWrite && { text: _t('common.delete', { defaultMessage: 'Delete' }), onClick: handleDelete },
- folder == 'markdown' && { text: 'Show page', onClick: showMarkdownPage },
- !data.teamFileId && { text: 'Download', onClick: handleDownload },
- data.teamFileId && data.allowRead && { text: 'Download', onClick: handleDownload },
+ folder == 'markdown' && { text: _t('common.showPage', { defaultMessage: 'Show page' }), onClick: showMarkdownPage },
+ !data.teamFileId && { text: _t('common.download', { defaultMessage: 'Download' }), onClick: handleDownload },
+ data.teamFileId && data.allowRead && { text: _t('common.download', { defaultMessage: 'Download' }), onClick: handleDownload },
];
}
const handleDelete = () => {
showModal(ConfirmModal, {
- message: `Really delete file ${data.file}?`,
+ message: _t('common.reallyDeleteFile', { defaultMessage: 'Really delete file {file}?', values: { file: data.file } }),
onConfirm: () => {
if (data.teamFileId) {
apiCall('team-files/delete', { teamFileId: data.teamFileId });
@@ -253,8 +253,8 @@
const handleRename = () => {
showModal(InputTextModal, {
value: data.file,
- label: 'New file name',
- header: 'Rename file',
+ label: _t('common.newFileName', { defaultMessage: 'New file name' }),
+ header: _t('common.renameFile', { defaultMessage: 'Rename file' }),
onConfirm: newFile => {
if (data.teamFileId) {
apiCall('team-files/update', { teamFileId: data.teamFileId, name: newFile });
@@ -274,8 +274,8 @@
const handleCopy = () => {
showModal(InputTextModal, {
value: data.file,
- label: 'New file name',
- header: 'Copy file',
+ label: _t('savedFile.newFileName', { defaultMessage: 'New file name' }),
+ header: _t('savedFile.copyFile', { defaultMessage: 'Copy file' }),
onConfirm: newFile => {
if (data.teamFileId) {
apiCall('team-files/copy', { teamFileId: data.teamFileId, newName: newFile });
@@ -323,12 +323,12 @@
if (data.teamFileId) {
if (data?.metadata?.autoExecute) {
if (!data.allowUse) {
- showSnackbarError('You do not have permission to use this team file');
+ showSnackbarError(_t('savedFile.noPermissionUseTeamFile', { defaultMessage: 'You do not have permission to use this team file' }));
return;
}
} else {
if (!data.allowRead) {
- showSnackbarError('You do not have permission to read this team file');
+ showSnackbarError(_t('savedFile.noPermissionReadTeamFile', { defaultMessage: 'You do not have permission to read this team file' }));
return;
}
}
diff --git a/packages/web/src/commands/CommandPalette.svelte b/packages/web/src/commands/CommandPalette.svelte
index 2983b135c..efecfcb38 100644
--- a/packages/web/src/commands/CommandPalette.svelte
+++ b/packages/web/src/commands/CommandPalette.svelte
@@ -81,7 +81,7 @@
import { getLocalStorage } from '../utility/storageCache';
import registerCommand from './registerCommand';
import { formatKeyText, switchCurrentDatabase } from '../utility/common';
- import { _tval, __t } from '../translations';
+ import { _tval, __t, _t } from '../translations';
let domInput;
let filter = '';
@@ -181,7 +181,7 @@
domInput.focus();
}}
>
- Commands
+ {_t('commandPalette.commands', { defaultMessage: 'Commands' })}
- Database
+ {_t('common.database', { defaultMessage: 'Database' })}
@@ -201,8 +201,8 @@
bind:this={domInput}
bind:value={filter}
on:keydown={handleKeyDown}
- placeholder={parentCommand?.text ||
- ($visibleCommandPalette == 'database' ? 'Search in database' : 'Search in commands')}
+ placeholder={_tval(parentCommand?.text) ||
+ ($visibleCommandPalette == 'database' ? _t('commandPalette.searchInDatabase', { defaultMessage: 'Search in database' }) : _t('commandPalette.searchInCommands', { defaultMessage: 'Search in commands' }))}
/>
diff --git a/packages/web/src/datagrid/SqlDataGridCore.svelte b/packages/web/src/datagrid/SqlDataGridCore.svelte
index 8db47f4fe..851e6f5a3 100644
--- a/packages/web/src/datagrid/SqlDataGridCore.svelte
+++ b/packages/web/src/datagrid/SqlDataGridCore.svelte
@@ -1,5 +1,5 @@
- About DbGate
+ {_t('aboutModal.aboutDbGate', { defaultMessage: 'About DbGate' })}
- Version: {version}
+ {_t('aboutModal.version', { defaultMessage: 'Version' })}: {version}
- Build date: {moment(buildTime).format('YYYY-MM-DD')}
+ {_t('aboutModal.buildDate', { defaultMessage: 'Build date' })}: {moment(buildTime).format('YYYY-MM-DD')}
- License type:
{$config?.checkedLicense && $config?.checkedLicense?.type != 'community'
? ($config?.checkedLicense?.licenseTypeObj?.name ?? 'Unknown')
: 'Community'}
{#if $config?.checkedLicense?.users}
- User count: {$config?.checkedLicense?.users}
+ {_t('aboutModal.userCount', { defaultMessage: 'User count' })}: {$config?.checkedLicense?.users}
{/if}
- Web: dbgate.io
+ {_t('aboutModal.web', { defaultMessage: 'Web' })}: dbgate.io
{#if isProApp()}
- Support: {_t('aboutModal.support', { defaultMessage: 'Support' })}: support@dbgate.io
@@ -55,10 +56,10 @@
-->
- Source codes: GitHub
+ {_t('aboutModal.sourceCodes', { defaultMessage: 'Source codes' })}: GitHub
- Docker container:
Docker Hub -->
- Produced by: Sprinx System a.s.
+ {_t('aboutModal.producedBy', { defaultMessage: 'Produced by' })}: Sprinx System a.s.
-
+
diff --git a/packages/web/src/modals/AddDbKeyModal.svelte b/packages/web/src/modals/AddDbKeyModal.svelte
index e62ae3dc8..d255130a2 100644
--- a/packages/web/src/modals/AddDbKeyModal.svelte
+++ b/packages/web/src/modals/AddDbKeyModal.svelte
@@ -8,6 +8,7 @@
import TextField from '../forms/TextField.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
+ import { _t } from '../translations';
export let conid;
export let database;
@@ -26,10 +27,10 @@
- Add key
+ {_t('addDbKeyModal.addKey', { defaultMessage: 'Add key' })}
-
+
{
@@ -41,7 +42,7 @@
-
+
({ value: t.name, label: t.label }))}
value={type}
@@ -62,8 +63,8 @@
- handleSubmit()} />
-
+ handleSubmit()} />
+
diff --git a/packages/web/src/modals/ChangeDownloadUrlModal.svelte b/packages/web/src/modals/ChangeDownloadUrlModal.svelte
index 980f0aaf1..85bedf76b 100644
--- a/packages/web/src/modals/ChangeDownloadUrlModal.svelte
+++ b/packages/web/src/modals/ChangeDownloadUrlModal.svelte
@@ -6,6 +6,7 @@
import FormTextField from '../forms/FormTextField.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
+ import { _t } from '../translations';
export let onConfirm;
export let url;
@@ -18,13 +19,13 @@
- Download imported file from web
+ {_t('changeDownloadUrlModal.header', { defaultMessage: 'Download imported file from web' })}
-
+
-
-
+
+
diff --git a/packages/web/src/modals/ChooseArchiveFolderModal.svelte b/packages/web/src/modals/ChooseArchiveFolderModal.svelte
index 2798b01fd..008624a59 100644
--- a/packages/web/src/modals/ChooseArchiveFolderModal.svelte
+++ b/packages/web/src/modals/ChooseArchiveFolderModal.svelte
@@ -6,6 +6,7 @@
import FormSubmit from '../forms/FormSubmit.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
+ import { _t } from '../translations';
export let message = '';
export let onConfirm;
@@ -13,21 +14,21 @@
- Choose archive folder
+ {_t('archiveFolderModal.chooseArchiveFolder', { defaultMessage: 'Choose archive folder' })}
{message}
-
+
{
closeCurrentModal();
onConfirm(e.detail.archiveFolder);
}}
/>
-
+
diff --git a/packages/web/src/modals/ChooseCloudFolderModal.svelte b/packages/web/src/modals/ChooseCloudFolderModal.svelte
index 955e50cd0..f7730186d 100644
--- a/packages/web/src/modals/ChooseCloudFolderModal.svelte
+++ b/packages/web/src/modals/ChooseCloudFolderModal.svelte
@@ -7,6 +7,7 @@
import { useCloudContentList } from '../utility/metadataLoaders';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
+ import { _t } from '../translations';
export let message = '';
export let onConfirm;
@@ -18,22 +19,21 @@
{#if $cloudContentList}
x.isPrivate)?.folid }}>
- Choose cloud folder
+ {_t('cloudFolderModal.chooseCloudFolder', { defaultMessage: 'Choose cloud folder' })}
{message}
-
-
+
{
closeCurrentModal();
console.log('onConfirm', e.detail);
onConfirm(e.detail.cloudFolder);
}}
/>
-
+
diff --git a/packages/web/src/modals/ColumnMapModal.svelte b/packages/web/src/modals/ColumnMapModal.svelte
index 996353322..43004b4ca 100644
--- a/packages/web/src/modals/ColumnMapModal.svelte
+++ b/packages/web/src/modals/ColumnMapModal.svelte
@@ -11,8 +11,9 @@
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
import _ from 'lodash';
+ import { _t } from '../translations';
- export let header = 'Configure columns';
+ export let header = _t('columnMapModal.configureColumns', { defaultMessage: 'Configure columns' });
export let onConfirm;
export let sourceTableInfo;
@@ -69,7 +70,7 @@
if (!value) return;
if (value.length == 0) return;
if (value.some(x => !x.src || !x.dst)) {
- validationError = 'Source and target columns must be defined';
+ validationError = _t('columnMapModal.sourceAndTargetColumnsMustBeDefined', { defaultMessage: 'Source and target columns must be defined' });
return;
}
const duplicates = _.chain(value.map(x => x.dst))
@@ -78,7 +79,7 @@
.keys()
.value();
if (duplicates.length > 0) {
- validationError = 'Target columns must be unique, duplicates found: ' + duplicates.join(', ');
+ validationError = _t('columnMapModal.targetColumnsMustBeUnique', { defaultMessage: 'Target columns must be unique, duplicates found: ' }) + duplicates.join(', ');
return;
}
}
@@ -95,19 +96,19 @@
{#if resetValue.length == 0}
- When no columns are defined in this mapping, source row is copied to target without any modifications
+ {_t('columnMapModal.noColumnsDefined', { defaultMessage: 'When no columns are defined in this mapping, source row is copied to target without any modifications' })}
{/if}
{
value = value.filter((x, i) => i != index);
- }}>Remove{_t('common.Remove', { defaultMessage: 'Remove' })}
@@ -160,14 +161,14 @@
{
value = [...(value || []), {}];
}}
/>
{
value = resetValue;
diff --git a/packages/web/src/modals/ConfirmModal.svelte b/packages/web/src/modals/ConfirmModal.svelte
index dc5046ffc..e17933a1c 100644
--- a/packages/web/src/modals/ConfirmModal.svelte
+++ b/packages/web/src/modals/ConfirmModal.svelte
@@ -5,17 +5,18 @@
import FormSubmit from '../forms/FormSubmit.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
+ import { _t } from '../translations';
export let message;
export let onConfirm;
- export let confirmLabel = 'OK';
+ export let confirmLabel = _t('common.ok', { defaultMessage: 'OK' });
export let header = null;
- {header || 'Confirm'}
+ {header || _t('common.confirm', { defaultMessage: 'Confirm' })}
{message}
@@ -31,7 +32,7 @@
/>
diff --git a/packages/web/src/modals/ConfirmNoSqlModal.svelte b/packages/web/src/modals/ConfirmNoSqlModal.svelte
index fdabe8f6a..5275eaac9 100644
--- a/packages/web/src/modals/ConfirmNoSqlModal.svelte
+++ b/packages/web/src/modals/ConfirmNoSqlModal.svelte
@@ -9,6 +9,7 @@
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
+ import { _t } from '../translations';
export let script;
export let onConfirm;
@@ -19,7 +20,7 @@
- Save changes
+ {_t('common.saveChanges', { defaultMessage: 'Save changes' })}
@@ -28,7 +29,7 @@
{#if skipConfirmSettingKey}
{
@@ -41,16 +42,16 @@
{
closeCurrentModal();
onConfirm();
}}
/>
-
+
{
newQuery({
initialData: script,
diff --git a/packages/web/src/modals/ConfirmSqlModal.svelte b/packages/web/src/modals/ConfirmSqlModal.svelte
index 3b1cff550..48479c780 100644
--- a/packages/web/src/modals/ConfirmSqlModal.svelte
+++ b/packages/web/src/modals/ConfirmSqlModal.svelte
@@ -54,6 +54,7 @@
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal, showModal } from './modalTools';
+ import { _t } from '../translations';
export let sql;
export let onConfirm;
@@ -81,7 +82,7 @@
- Save changes
+ {_t('common.saveChanges', { defaultMessage: 'Save changes' })}
@@ -91,7 +92,7 @@
@@ -101,13 +102,13 @@
{#if $values.deleteReferencesCascade}