mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-17 23:45:59 +00:00
feat: basic translations to ui
This commit is contained in:
@@ -115,7 +115,6 @@
|
|||||||
<div></div>
|
<div></div>
|
||||||
<div></div>
|
<div></div>
|
||||||
</div>
|
</div>
|
||||||
<div>Loading DbGate App</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
import SettingsListener from './utility/SettingsListener.svelte';
|
import SettingsListener from './utility/SettingsListener.svelte';
|
||||||
import { handleAuthOnStartup } from './clientAuth';
|
import { handleAuthOnStartup } from './clientAuth';
|
||||||
import { initializeAppUpdates } from './utility/appUpdate';
|
import { initializeAppUpdates } from './utility/appUpdate';
|
||||||
|
import { _t } from './translations';
|
||||||
|
|
||||||
export let isAdminPage = false;
|
export let isAdminPage = false;
|
||||||
|
|
||||||
@@ -95,10 +96,13 @@
|
|||||||
{:else}
|
{:else}
|
||||||
<AppStartInfo
|
<AppStartInfo
|
||||||
message={$loadingPluginStore.loadingPackageName
|
message={$loadingPluginStore.loadingPackageName
|
||||||
? `Loading plugin ${$loadingPluginStore.loadingPackageName} ...`
|
? _t('app.loading_plugin', {
|
||||||
: 'Preparing plugins ...'}
|
defaultMessage: `Loading plugin {plugin} ...`,
|
||||||
|
values: { plugin: $loadingPluginStore.loadingPackageName },
|
||||||
|
})
|
||||||
|
: _t('app.preparing_pluguns', { defaultMessage: 'Preparing plugins ...' })}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
{:else}
|
{:else}
|
||||||
<AppStartInfo message="Starting DbGate" />
|
<AppStartInfo message={_t('app.starting', { defaultMessage: 'Starting DbGate' })} />
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -137,6 +137,7 @@
|
|||||||
import hasPermission from '../utility/hasPermission';
|
import hasPermission from '../utility/hasPermission';
|
||||||
import { switchCurrentDatabase } from '../utility/common';
|
import { switchCurrentDatabase } from '../utility/common';
|
||||||
import { getConnectionClickActionSetting } from '../settings/settingsTools';
|
import { getConnectionClickActionSetting } from '../settings/settingsTools';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let data;
|
export let data;
|
||||||
export let passProps;
|
export let passProps;
|
||||||
@@ -324,7 +325,7 @@
|
|||||||
hasPermission(`dbops/query`) && { onClick: handleNewQuery, text: 'New Query (server)', isNewQuery: true },
|
hasPermission(`dbops/query`) && { onClick: handleNewQuery, text: 'New Query (server)', isNewQuery: true },
|
||||||
$openedConnections.includes(data._id) &&
|
$openedConnections.includes(data._id) &&
|
||||||
data.status && {
|
data.status && {
|
||||||
text: 'Refresh',
|
text: _t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||||
onClick: handleRefresh,
|
onClick: handleRefresh,
|
||||||
},
|
},
|
||||||
hasPermission(`dbops/createdb`) &&
|
hasPermission(`dbops/createdb`) &&
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.refresh',
|
id: 'dataGrid.refresh',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Refresh',
|
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||||
keyText: 'F5 | CtrlOrCommand+R',
|
keyText: 'F5 | CtrlOrCommand+R',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.revertRowChanges',
|
id: 'dataGrid.revertRowChanges',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Revert row changes',
|
name: _t('command.data_grid.revert_row_changes', { defaultMessage: 'Revert row changes' }),
|
||||||
keyText: 'CtrlOrCommand+U',
|
keyText: 'CtrlOrCommand+U',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
||||||
onClick: () => getCurrentDataGrid().revertRowChanges(),
|
onClick: () => getCurrentDataGrid().revertRowChanges(),
|
||||||
@@ -37,8 +37,8 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.revertAllChanges',
|
id: 'dataGrid.revertAllChanges',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Revert all changes',
|
name: _t('command.data_grid.revert_all_changes.name', { defaultMessage: 'Revert all changes' }),
|
||||||
toolbarName: 'Revert all',
|
toolbarName: _t('command.data_grid.revert_all_changes.toolbar_name', { defaultMessage: 'Revert all' }),
|
||||||
icon: 'icon undo',
|
icon: 'icon undo',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
||||||
onClick: () => getCurrentDataGrid().revertAllChanges(),
|
onClick: () => getCurrentDataGrid().revertAllChanges(),
|
||||||
@@ -47,8 +47,8 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.deleteSelectedRows',
|
id: 'dataGrid.deleteSelectedRows',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Delete selected rows',
|
name: _t('command.datagrid.delete_selected_rows.name', { defaultMessage: 'Delete selected rows' }),
|
||||||
toolbarName: 'Delete row(s)',
|
toolbarName: _t('command.datagrid.delete_selected_rows.toolbar_name', { defaultMessage: 'Delete row(s)' }),
|
||||||
keyText: isMac() ? 'Command+Backspace' : 'CtrlOrCommand+Delete',
|
keyText: isMac() ? 'Command+Backspace' : 'CtrlOrCommand+Delete',
|
||||||
icon: 'icon minus',
|
icon: 'icon minus',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||||
@@ -58,8 +58,8 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.insertNewRow',
|
id: 'dataGrid.insertNewRow',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Insert new row',
|
name: _t('command.datagrid.insert_new_row.name', { defaultMessage: 'Insert new row' }),
|
||||||
toolbarName: 'New row',
|
toolbarName: _t('command.datagrid.insert_new_row.toolbar_name', { defaultMessage: 'New row' }),
|
||||||
icon: 'icon add',
|
icon: 'icon add',
|
||||||
keyText: isMac() ? 'Command+I' : 'Insert',
|
keyText: isMac() ? 'Command+I' : 'Insert',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||||
@@ -69,8 +69,8 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.addNewColumn',
|
id: 'dataGrid.addNewColumn',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Add new column',
|
name: _t('command.datagrid.add_new_column.name', { defaultMessage: 'Add new column' }),
|
||||||
toolbarName: 'New column',
|
toolbarName: _t('command.datagrid.add_new_column.toolbar_name', { defaultMessage: 'New column' }),
|
||||||
icon: 'icon add-column',
|
icon: 'icon add-column',
|
||||||
testEnabled: () => getCurrentDataGrid()?.addNewColumnEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.addNewColumnEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().addNewColumn(),
|
onClick: () => getCurrentDataGrid().addNewColumn(),
|
||||||
@@ -79,8 +79,8 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.cloneRows',
|
id: 'dataGrid.cloneRows',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Clone rows',
|
name: _t('command.datagrid.clone_rows.name', { defaultMessage: 'Clone rows' }),
|
||||||
toolbarName: 'Clone row(s)',
|
toolbarName: _t('command.datagrid.clone_rows.toolbar_name', { defaultMessage: 'Clone row(s)' }),
|
||||||
keyText: 'CtrlOrCommand+Shift+C',
|
keyText: 'CtrlOrCommand+Shift+C',
|
||||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||||
onClick: () => getCurrentDataGrid().cloneRows(),
|
onClick: () => getCurrentDataGrid().cloneRows(),
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.setNull',
|
id: 'dataGrid.setNull',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Set NULL',
|
name: _t('command.datagrid.set_null.name', { defaultMessage: 'Set NULL' }),
|
||||||
keyText: 'CtrlOrCommand+0',
|
keyText: 'CtrlOrCommand+0',
|
||||||
testEnabled: () =>
|
testEnabled: () =>
|
||||||
getCurrentDataGrid()?.getGrider()?.editable && !getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
getCurrentDataGrid()?.getGrider()?.editable && !getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
||||||
@@ -99,7 +99,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.removeField',
|
id: 'dataGrid.removeField',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Remove field',
|
name: _t('command.datagrid.remove_field.name', { defaultMessage: 'Remove field' }),
|
||||||
keyText: 'CtrlOrCommand+0',
|
keyText: 'CtrlOrCommand+0',
|
||||||
testEnabled: () =>
|
testEnabled: () =>
|
||||||
getCurrentDataGrid()?.getGrider()?.editable && getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
getCurrentDataGrid()?.getGrider()?.editable && getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
||||||
@@ -109,7 +109,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.undo',
|
id: 'dataGrid.undo',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Undo',
|
name: _t('command.datagrid.undo.name', { defaultMessage: 'Undo' }),
|
||||||
group: 'undo',
|
group: 'undo',
|
||||||
icon: 'icon undo',
|
icon: 'icon undo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.redo',
|
id: 'dataGrid.redo',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Redo',
|
name: _t('command.datagrid.redo.name', { defaultMessage: 'Redo' }),
|
||||||
group: 'redo',
|
group: 'redo',
|
||||||
icon: 'icon redo',
|
icon: 'icon redo',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
@@ -133,7 +133,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.reconnect',
|
id: 'dataGrid.reconnect',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Reconnect',
|
name: _t('command.datagrid.reconnect.name', { defaultMessage: 'Reconnect' }),
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().reconnect(),
|
onClick: () => getCurrentDataGrid().reconnect(),
|
||||||
});
|
});
|
||||||
@@ -141,7 +141,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.copyToClipboard',
|
id: 'dataGrid.copyToClipboard',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Copy to clipboard',
|
name: _t('command.datagrid.copy_to_clipboard.name', { defaultMessage: 'Copy to clipboard' }),
|
||||||
keyText: 'CtrlOrCommand+C',
|
keyText: 'CtrlOrCommand+C',
|
||||||
disableHandleKeyText: 'CtrlOrCommand+C',
|
disableHandleKeyText: 'CtrlOrCommand+C',
|
||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
id: 'dataGrid.editJsonDocument',
|
id: 'dataGrid.editJsonDocument',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
keyText: 'CtrlOrCommand+J',
|
keyText: 'CtrlOrCommand+J',
|
||||||
name: 'Edit row as JSON document',
|
name: _t('command.datagrid.edit_json_document.name', { defaultMessage: 'Edit row as JSON document' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.editJsonEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.editJsonEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().editJsonDocument(),
|
onClick: () => getCurrentDataGrid().editJsonDocument(),
|
||||||
});
|
});
|
||||||
@@ -160,15 +160,15 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openSelectionInMap',
|
id: 'dataGrid.openSelectionInMap',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Open selection in map',
|
name: _t('command.datagrid.open_selection_in_map.name', { defaultMessage: 'Open selection in map' }),
|
||||||
testEnabled: () => getCurrentDataGrid() != null, // ?.openSelectionInMapEnabled(),
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().openSelectionInMap(),
|
onClick: () => getCurrentDataGrid().openSelectionInMap(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.viewJsonDocument',
|
id: 'dataGrid.viewJsonDocument',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'View row as JSON document',
|
name: _t('command.datagrid.view_json_document.name', { defaultMessage: 'View row as JSON document' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.viewJsonDocumentEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.viewJsonDocumentEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().viewJsonDocument(),
|
onClick: () => getCurrentDataGrid().viewJsonDocument(),
|
||||||
});
|
});
|
||||||
@@ -176,7 +176,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.viewJsonValue',
|
id: 'dataGrid.viewJsonValue',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'View cell as JSON document',
|
name: _t('command.datagrid.view_json_value.name', { defaultMessage: 'View cell as JSON document' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.viewJsonValueEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.viewJsonValueEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().viewJsonValue(),
|
onClick: () => getCurrentDataGrid().viewJsonValue(),
|
||||||
});
|
});
|
||||||
@@ -184,7 +184,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openJsonArrayInSheet',
|
id: 'dataGrid.openJsonArrayInSheet',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Open array as table',
|
name: _t('command.datagrid.open_json_array_in_sheet.name', { defaultMessage: 'Open array as table' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.openJsonArrayInSheetEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.openJsonArrayInSheetEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().openJsonArrayInSheet(),
|
onClick: () => getCurrentDataGrid().openJsonArrayInSheet(),
|
||||||
});
|
});
|
||||||
@@ -192,7 +192,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.saveCellToFile',
|
id: 'dataGrid.saveCellToFile',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Save cell to file',
|
name: _t('command.datagrid.save_cell_to_file.name', { defaultMessage: 'Save cell to file' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.saveCellToFileEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.saveCellToFileEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().saveCellToFile(),
|
onClick: () => getCurrentDataGrid().saveCellToFile(),
|
||||||
});
|
});
|
||||||
@@ -200,7 +200,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.loadCellFromFile',
|
id: 'dataGrid.loadCellFromFile',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
name: 'Load cell from file',
|
name: _t('command.datagrid.load_cell_from_file.name', { defaultMessage: 'Load cell from file' }),
|
||||||
testEnabled: () => getCurrentDataGrid()?.loadCellFromFileEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.loadCellFromFileEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().loadCellFromFile(),
|
onClick: () => getCurrentDataGrid().loadCellFromFile(),
|
||||||
});
|
});
|
||||||
@@ -212,7 +212,8 @@
|
|||||||
// testEnabled: () => getCurrentDataGrid()?.copyJsonEnabled(),
|
// testEnabled: () => getCurrentDataGrid()?.copyJsonEnabled(),
|
||||||
// onClick: () => getCurrentDataGrid().copyJsonDocument(),
|
// onClick: () => getCurrentDataGrid().copyJsonDocument(),
|
||||||
// });
|
// });
|
||||||
|
//
|
||||||
|
//
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.filterSelected',
|
id: 'dataGrid.filterSelected',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -221,7 +222,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.getDisplay().filterable,
|
testEnabled: () => getCurrentDataGrid()?.getDisplay().filterable,
|
||||||
onClick: () => getCurrentDataGrid().filterSelectedValue(),
|
onClick: () => getCurrentDataGrid().filterSelectedValue(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.findColumn',
|
id: 'dataGrid.findColumn',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -230,7 +230,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
getSubCommands: () => getCurrentDataGrid().buildFindMenu(),
|
getSubCommands: () => getCurrentDataGrid().buildFindMenu(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.hideColumn',
|
id: 'dataGrid.hideColumn',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -239,7 +238,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.canShowLeftPanel(),
|
testEnabled: () => getCurrentDataGrid()?.canShowLeftPanel(),
|
||||||
onClick: () => getCurrentDataGrid().hideColumn(),
|
onClick: () => getCurrentDataGrid().hideColumn(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.clearFilter',
|
id: 'dataGrid.clearFilter',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -248,7 +246,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.clearFilterEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.clearFilterEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().clearFilter(),
|
onClick: () => getCurrentDataGrid().clearFilter(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.generateSqlFromData',
|
id: 'dataGrid.generateSqlFromData',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -257,7 +254,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.generateSqlFromDataEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.generateSqlFromDataEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().generateSqlFromData(),
|
onClick: () => getCurrentDataGrid().generateSqlFromData(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openFreeTable',
|
id: 'dataGrid.openFreeTable',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -265,7 +261,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().openFreeTable(),
|
onClick: () => getCurrentDataGrid().openFreeTable(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.openChartFromSelection',
|
id: 'dataGrid.openChartFromSelection',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -273,7 +268,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid() != null,
|
testEnabled: () => getCurrentDataGrid() != null,
|
||||||
onClick: () => getCurrentDataGrid().openChartFromSelection(),
|
onClick: () => getCurrentDataGrid().openChartFromSelection(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.newJson',
|
id: 'dataGrid.newJson',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -281,7 +275,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.addJsonDocumentEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.addJsonDocumentEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().addJsonDocument(),
|
onClick: () => getCurrentDataGrid().addJsonDocument(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.editCellValue',
|
id: 'dataGrid.editCellValue',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -289,7 +282,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.editCellValueEnabled(),
|
testEnabled: () => getCurrentDataGrid()?.editCellValueEnabled(),
|
||||||
onClick: () => getCurrentDataGrid().editCellValue(),
|
onClick: () => getCurrentDataGrid().editCellValue(),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.mergeSelectedCellsIntoMirror',
|
id: 'dataGrid.mergeSelectedCellsIntoMirror',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -297,7 +289,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
||||||
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'merge', fullRows: false }),
|
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'merge', fullRows: false }),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.mergeSelectedRowsIntoMirror',
|
id: 'dataGrid.mergeSelectedRowsIntoMirror',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -305,7 +296,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
||||||
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'merge', fullRows: true }),
|
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'merge', fullRows: true }),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.appendSelectedCellsIntoMirror',
|
id: 'dataGrid.appendSelectedCellsIntoMirror',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -313,7 +303,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
||||||
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'append', fullRows: false }),
|
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'append', fullRows: false }),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.appendSelectedRowsIntoMirror',
|
id: 'dataGrid.appendSelectedRowsIntoMirror',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -321,7 +310,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
||||||
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'append', fullRows: true }),
|
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'append', fullRows: true }),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.replaceSelectedCellsIntoMirror',
|
id: 'dataGrid.replaceSelectedCellsIntoMirror',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -329,7 +317,6 @@
|
|||||||
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
testEnabled: () => getCurrentDataGrid()?.mirrorWriteEnabled(true),
|
||||||
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'replace', fullRows: false }),
|
onClick: () => getCurrentDataGrid().mergeSelectionIntoMirror({ mergeMode: 'replace', fullRows: false }),
|
||||||
});
|
});
|
||||||
|
|
||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataGrid.replaceSelectedRowsIntoMirror',
|
id: 'dataGrid.replaceSelectedRowsIntoMirror',
|
||||||
category: 'Data grid',
|
category: 'Data grid',
|
||||||
@@ -430,6 +417,7 @@
|
|||||||
import { openJsonLinesData } from '../utility/openJsonLinesData';
|
import { openJsonLinesData } from '../utility/openJsonLinesData';
|
||||||
import contextMenuActivator from '../utility/contextMenuActivator';
|
import contextMenuActivator from '../utility/contextMenuActivator';
|
||||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let onLoadNextData = undefined;
|
export let onLoadNextData = undefined;
|
||||||
export let grider = undefined;
|
export let grider = undefined;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
import FormTextField from '../forms/FormTextField.svelte';
|
import FormTextField from '../forms/FormTextField.svelte';
|
||||||
import FormSelectField from '../forms/FormSelectField.svelte';
|
import FormSelectField from '../forms/FormSelectField.svelte';
|
||||||
import stableStringify from 'json-stable-stringify';
|
import stableStringify from 'json-stable-stringify';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let title;
|
export let title;
|
||||||
export let fieldDefinitions;
|
export let fieldDefinitions;
|
||||||
@@ -42,7 +43,7 @@
|
|||||||
<FormSelectField
|
<FormSelectField
|
||||||
isNative
|
isNative
|
||||||
name="schemaName"
|
name="schemaName"
|
||||||
label="Schema"
|
label={_t('common.schema', { defaultMessage: 'Schema' })}
|
||||||
options={schemaList.map(x => ({ label: x.schemaName, value: x.schemaName }))}
|
options={schemaList.map(x => ({ label: x.schemaName, value: x.schemaName }))}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'dataForm.refresh',
|
id: 'dataForm.refresh',
|
||||||
category: 'Data form',
|
category: 'Data form',
|
||||||
name: 'Refresh',
|
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||||
keyText: 'F5 | CtrlOrCommand+R',
|
keyText: 'F5 | CtrlOrCommand+R',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -197,6 +197,7 @@
|
|||||||
import resizeObserver from '../utility/resizeObserver';
|
import resizeObserver from '../utility/resizeObserver';
|
||||||
import openReferenceForm from './openReferenceForm';
|
import openReferenceForm from './openReferenceForm';
|
||||||
import { useSettings } from '../utility/metadataLoaders';
|
import { useSettings } from '../utility/metadataLoaders';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let conid;
|
export let conid;
|
||||||
export let database;
|
export let database;
|
||||||
|
|||||||
@@ -22,6 +22,7 @@
|
|||||||
import FormTablesSelect from './FormTablesSelect.svelte';
|
import FormTablesSelect from './FormTablesSelect.svelte';
|
||||||
import { findEngineDriver } from 'dbgate-tools';
|
import { findEngineDriver } from 'dbgate-tools';
|
||||||
import AceEditor from '../query/AceEditor.svelte';
|
import AceEditor from '../query/AceEditor.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let direction;
|
export let direction;
|
||||||
export let storageTypeField;
|
export let storageTypeField;
|
||||||
@@ -40,14 +41,22 @@
|
|||||||
$values[storageTypeField] == 'jsldata'
|
$values[storageTypeField] == 'jsldata'
|
||||||
? [{ value: 'jsldata', label: 'Query result data', directions: ['source'] }]
|
? [{ value: 'jsldata', label: 'Query result data', directions: ['source'] }]
|
||||||
: [
|
: [
|
||||||
{ value: 'database', label: 'Database', directions: ['source', 'target'] },
|
{
|
||||||
|
value: 'database',
|
||||||
|
label: _t('common.database', { defaultMessage: 'Database' }),
|
||||||
|
directions: ['source', 'target'],
|
||||||
|
},
|
||||||
...$extensions.fileFormats.map(format => ({
|
...$extensions.fileFormats.map(format => ({
|
||||||
value: format.storageType,
|
value: format.storageType,
|
||||||
label: `${format.name} files(s)`,
|
label: `${format.name} files(s)`,
|
||||||
directions: getFileFormatDirections(format),
|
directions: getFileFormatDirections(format),
|
||||||
})),
|
})),
|
||||||
{ value: 'query', label: 'Query', directions: ['source'] },
|
{ value: 'query', label: _t('common.query', { defaultMessage: 'Query' }), directions: ['source'] },
|
||||||
{ value: 'archive', label: 'Archive', directions: ['source', 'target'] },
|
{
|
||||||
|
value: 'archive',
|
||||||
|
label: _t('common.archive', { defaultMessage: 'Archive' }),
|
||||||
|
directions: ['source', 'target'],
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
$: storageType = $values[storageTypeField];
|
$: storageType = $values[storageTypeField];
|
||||||
@@ -124,7 +133,7 @@
|
|||||||
conidName={connectionIdField}
|
conidName={connectionIdField}
|
||||||
databaseName={databaseNameField}
|
databaseName={databaseNameField}
|
||||||
name={schemaNameField}
|
name={schemaNameField}
|
||||||
label="Schema"
|
label={_t('common.schema', { defaultMessage: 'Schema' })}
|
||||||
/>
|
/>
|
||||||
{#if tablesField}
|
{#if tablesField}
|
||||||
<FormTablesSelect
|
<FormTablesSelect
|
||||||
@@ -132,12 +141,12 @@
|
|||||||
schemaName={schemaNameField}
|
schemaName={schemaNameField}
|
||||||
databaseName={databaseNameField}
|
databaseName={databaseNameField}
|
||||||
name={tablesField}
|
name={tablesField}
|
||||||
label="Tables / views / collections"
|
label={_t('source.tables_views_collections', { defaultMessage: 'Tables / views / collections' })}
|
||||||
/>
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
{/if}
|
{/if}
|
||||||
{#if storageType == 'query'}
|
{#if storageType == 'query'}
|
||||||
<div class="label">Query</div>
|
<div class="label">{_t('common.query', { defaultMessage: 'Query' })}</div>
|
||||||
<div class="sqlwrap">
|
<div class="sqlwrap">
|
||||||
{#if $values.sourceQueryType == 'json'}
|
{#if $values.sourceQueryType == 'json'}
|
||||||
<AceEditor value={$values.sourceQuery} on:input={e => setFieldValue('sourceQuery', e.detail)} mode="json" />
|
<AceEditor value={$values.sourceQuery} on:input={e => setFieldValue('sourceQuery', e.detail)} mode="json" />
|
||||||
@@ -156,7 +165,11 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if storageType == 'archive' && direction == 'source'}
|
{#if storageType == 'archive' && direction == 'source'}
|
||||||
<FormArchiveFilesSelect label="Source files" folderName={$values[archiveFolderField]} name={tablesField} />
|
<FormArchiveFilesSelect
|
||||||
|
label={_t('source.source_files', { defaultMessage: 'Source files' })}
|
||||||
|
folderName={$values[archiveFolderField]}
|
||||||
|
name={tablesField}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
{#if format && direction == 'source'}
|
{#if format && direction == 'source'}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@
|
|||||||
|
|
||||||
import ModalBase from './ModalBase.svelte';
|
import ModalBase from './ModalBase.svelte';
|
||||||
import { closeCurrentModal, showModal } from './modalTools';
|
import { closeCurrentModal, showModal } from './modalTools';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let onSave;
|
export let onSave;
|
||||||
export let json;
|
export let json;
|
||||||
@@ -43,7 +44,7 @@
|
|||||||
|
|
||||||
<div slot="footer">
|
<div slot="footer">
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
value="Save"
|
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||||
data-testid="EditJsonModal_saveButton"
|
data-testid="EditJsonModal_saveButton"
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
import FormSubmit from '../forms/FormSubmit.svelte';
|
import FormSubmit from '../forms/FormSubmit.svelte';
|
||||||
import FormTextField from '../forms/FormTextField.svelte';
|
import FormTextField from '../forms/FormTextField.svelte';
|
||||||
import { currentArchive } from '../stores';
|
import { currentArchive } from '../stores';
|
||||||
|
import { _t } from '../translations';
|
||||||
import ModalBase from './ModalBase.svelte';
|
import ModalBase from './ModalBase.svelte';
|
||||||
import { closeCurrentModal } from './modalTools';
|
import { closeCurrentModal } from './modalTools';
|
||||||
|
|
||||||
@@ -28,7 +29,7 @@
|
|||||||
<FormTextField label="File name" name="file" />
|
<FormTextField label="File name" name="file" />
|
||||||
|
|
||||||
<svelte:fragment slot="footer">
|
<svelte:fragment slot="footer">
|
||||||
<FormSubmit value="Save" on:click={handleSubmit} />
|
<FormSubmit value={_t('common.save', { defaultMessage: 'Save' })} on:click={handleSubmit} />
|
||||||
</svelte:fragment>
|
</svelte:fragment>
|
||||||
</ModalBase>
|
</ModalBase>
|
||||||
</FormProvider>
|
</FormProvider>
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
import FormProvider from '../forms/FormProvider.svelte';
|
import FormProvider from '../forms/FormProvider.svelte';
|
||||||
import FormSubmit from '../forms/FormSubmit.svelte';
|
import FormSubmit from '../forms/FormSubmit.svelte';
|
||||||
import FormTextField from '../forms/FormTextField.svelte';
|
import FormTextField from '../forms/FormTextField.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
import { apiCall } from '../utility/api';
|
import { apiCall } from '../utility/api';
|
||||||
|
|
||||||
import getElectron from '../utility/getElectron';
|
import getElectron from '../utility/getElectron';
|
||||||
@@ -56,7 +57,7 @@
|
|||||||
<svelte:fragment slot="header">Save file</svelte:fragment>
|
<svelte:fragment slot="header">Save file</svelte:fragment>
|
||||||
<FormTextField label="File name" name="name" focused />
|
<FormTextField label="File name" name="name" focused />
|
||||||
<svelte:fragment slot="footer">
|
<svelte:fragment slot="footer">
|
||||||
<FormSubmit value="Save" on:click={handleSubmit} />
|
<FormSubmit value={_t('common.save', { defaultMessage: 'Save' })} on:click={handleSubmit} />
|
||||||
{#if electron}
|
{#if electron}
|
||||||
<FormStyledButton
|
<FormStyledButton
|
||||||
type="button"
|
type="button"
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
import { closeCurrentModal } from '../modals/modalTools';
|
import { closeCurrentModal } from '../modals/modalTools';
|
||||||
import DataTypeEditor from './DataTypeEditor.svelte';
|
import DataTypeEditor from './DataTypeEditor.svelte';
|
||||||
import { editorAddColumn, editorDeleteColumn, editorModifyColumn, fillEditorColumnInfo } from 'dbgate-tools';
|
import { editorAddColumn, editorDeleteColumn, editorModifyColumn, fillEditorColumnInfo } from 'dbgate-tools';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let columnInfo;
|
export let columnInfo;
|
||||||
export let setTableInfo = null;
|
export let setTableInfo = null;
|
||||||
@@ -75,7 +76,7 @@
|
|||||||
{#if !columnInfo}
|
{#if !columnInfo}
|
||||||
<FormButton
|
<FormButton
|
||||||
type="button"
|
type="button"
|
||||||
value="Save"
|
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={e => {
|
on:click={e => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
|
|||||||
@@ -17,6 +17,7 @@
|
|||||||
import TextField from '../forms/TextField.svelte';
|
import TextField from '../forms/TextField.svelte';
|
||||||
import SelectField from '../forms/SelectField.svelte';
|
import SelectField from '../forms/SelectField.svelte';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let constraintInfo;
|
export let constraintInfo;
|
||||||
export let setTableInfo;
|
export let setTableInfo;
|
||||||
@@ -204,7 +205,7 @@
|
|||||||
|
|
||||||
<svelte:fragment slot="footer">
|
<svelte:fragment slot="footer">
|
||||||
<FormSubmit
|
<FormSubmit
|
||||||
value="Save"
|
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||||
disabled={isReadOnly}
|
disabled={isReadOnly}
|
||||||
on:click={() => {
|
on:click={() => {
|
||||||
closeCurrentModal();
|
closeCurrentModal();
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
<script lang="ts" context="module">
|
<script lang="ts" context="module">
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
const getCurrentValueMarker: any = {};
|
const getCurrentValueMarker: any = {};
|
||||||
|
|
||||||
export function shouldShowTab(tab, lockedDbModeArg = getCurrentValueMarker, currentDbArg = getCurrentValueMarker) {
|
export function shouldShowTab(tab, lockedDbModeArg = getCurrentValueMarker, currentDbArg = getCurrentValueMarker) {
|
||||||
@@ -184,8 +186,8 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
function getTabDbName(tab, connectionList) {
|
function getTabDbName(tab, connectionList) {
|
||||||
if (tab.tabComponent == 'ConnectionTab') return 'Connections';
|
if (tab.tabComponent == 'ConnectionTab') return _t('common.connections', { defaultMessage: 'Connections' });
|
||||||
if (tab.tabComponent?.startsWith('Admin')) return 'Administration';
|
if (tab.tabComponent?.startsWith('Admin')) return _t('tab.administration', { defaultMessage: 'Administration' });
|
||||||
if (tab.props && tab.props.conid && tab.props.database) return tab.props.database;
|
if (tab.props && tab.props.conid && tab.props.database) return tab.props.database;
|
||||||
if (tab.props && tab.props.conid) {
|
if (tab.props && tab.props.conid) {
|
||||||
const connection = connectionList?.find(x => x._id == tab.props.conid);
|
const connection = connectionList?.find(x => x._id == tab.props.conid);
|
||||||
@@ -232,7 +234,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.nextTab',
|
id: 'tabs.nextTab',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Next tab',
|
name: _t('command.tabs.nextTab', { defaultMessage: 'Next tab' }),
|
||||||
keyText: 'Ctrl+Tab',
|
keyText: 'Ctrl+Tab',
|
||||||
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 2,
|
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 2,
|
||||||
onClick: () => switchTabByOrder(false),
|
onClick: () => switchTabByOrder(false),
|
||||||
@@ -241,7 +243,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.previousTab',
|
id: 'tabs.previousTab',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Previous tab',
|
name: _t('command.tabs.previousTab', { defaultMessage: 'Previous tab' }),
|
||||||
keyText: 'Ctrl+Shift+Tab',
|
keyText: 'Ctrl+Shift+Tab',
|
||||||
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 2,
|
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 2,
|
||||||
onClick: () => switchTabByOrder(true),
|
onClick: () => switchTabByOrder(true),
|
||||||
@@ -250,7 +252,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.closeAll',
|
id: 'tabs.closeAll',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Close all tabs',
|
name: _t('command.tabs.closeAll', { defaultMessage: 'Close all tabs' }),
|
||||||
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1,
|
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1,
|
||||||
onClick: closeAll,
|
onClick: closeAll,
|
||||||
});
|
});
|
||||||
@@ -258,7 +260,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.closeTab',
|
id: 'tabs.closeTab',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Close tab',
|
name: _t('command.tabs.closeTab', { defaultMessage: 'Close tab' }),
|
||||||
keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : 'CtrlOrCommand+Shift+W',
|
keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : 'CtrlOrCommand+Shift+W',
|
||||||
testEnabled: () => {
|
testEnabled: () => {
|
||||||
const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1;
|
const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1;
|
||||||
@@ -272,7 +274,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.closeTabsWithCurrentDb',
|
id: 'tabs.closeTabsWithCurrentDb',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Close tabs with current DB',
|
name: _t('command.tabs.closeTabsWithCurrentDb', { defaultMessage: 'Close tabs with current DB' }),
|
||||||
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(),
|
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(),
|
||||||
onClick: closeTabsWithCurrentDb,
|
onClick: closeTabsWithCurrentDb,
|
||||||
});
|
});
|
||||||
@@ -280,7 +282,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.closeTabsButCurrentDb',
|
id: 'tabs.closeTabsButCurrentDb',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Close tabs but current DB',
|
name: _t('command.tabs.closeTabsButCurrentDb', { defaultMessage: 'Close tabs but current DB' }),
|
||||||
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(),
|
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(),
|
||||||
onClick: closeTabsButCurrentDb,
|
onClick: closeTabsButCurrentDb,
|
||||||
});
|
});
|
||||||
@@ -288,7 +290,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.reopenClosedTab',
|
id: 'tabs.reopenClosedTab',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Reopen closed tab',
|
name: _t('command.tabs.reopenClosedTab', { defaultMessage: 'Reopen closed tab' }),
|
||||||
keyText: 'CtrlOrCommand+Shift+T',
|
keyText: 'CtrlOrCommand+Shift+T',
|
||||||
testEnabled: () => getOpenedTabs().filter(x => x.closedTime).length >= 1,
|
testEnabled: () => getOpenedTabs().filter(x => x.closedTime).length >= 1,
|
||||||
onClick: reopenClosedTab,
|
onClick: reopenClosedTab,
|
||||||
@@ -297,7 +299,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'tabs.addToFavorites',
|
id: 'tabs.addToFavorites',
|
||||||
category: 'Tabs',
|
category: 'Tabs',
|
||||||
name: 'Add current tab to favorites',
|
name: _t('command.tabs.addToFavorites', { defaultMessage: 'Add current tab to favorites' }),
|
||||||
// icon: 'icon favorite',
|
// icon: 'icon favorite',
|
||||||
// toolbar: true,
|
// toolbar: true,
|
||||||
testEnabled: () =>
|
testEnabled: () =>
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
import { useConfig } from '../utility/metadataLoaders';
|
import { useConfig } from '../utility/metadataLoaders';
|
||||||
import ConnectionAdvancedDriverFields from '../settings/ConnectionAdvancedDriverFields.svelte';
|
import ConnectionAdvancedDriverFields from '../settings/ConnectionAdvancedDriverFields.svelte';
|
||||||
import DatabaseLoginModal from '../modals/DatabaseLoginModal.svelte';
|
import DatabaseLoginModal from '../modals/DatabaseLoginModal.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let connection;
|
export let connection;
|
||||||
export let tabid;
|
export let tabid;
|
||||||
@@ -289,7 +290,11 @@
|
|||||||
{:else}
|
{:else}
|
||||||
<FormButton value="Test" on:click={() => handleTest(false)} data-testid="ConnectionTab_buttonTest" />
|
<FormButton value="Test" on:click={() => handleTest(false)} data-testid="ConnectionTab_buttonTest" />
|
||||||
{/if}
|
{/if}
|
||||||
<FormButton value="Save" on:click={handleSave} data-testid="ConnectionTab_buttonSave" />
|
<FormButton
|
||||||
|
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||||
|
on:click={handleSave}
|
||||||
|
data-testid="ConnectionTab_buttonSave"
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
<div class="test-result">
|
<div class="test-result">
|
||||||
|
|||||||
@@ -35,6 +35,7 @@
|
|||||||
import { changeTab } from '../utility/common';
|
import { changeTab } from '../utility/common';
|
||||||
import SelectField from '../forms/SelectField.svelte';
|
import SelectField from '../forms/SelectField.svelte';
|
||||||
import DbKeyValueDetail from '../dbkeyvalue/DbKeyValueDetail.svelte';
|
import DbKeyValueDetail from '../dbkeyvalue/DbKeyValueDetail.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let tabid;
|
export let tabid;
|
||||||
export let conid;
|
export let conid;
|
||||||
@@ -134,12 +135,16 @@
|
|||||||
</div>
|
</div>
|
||||||
<FormStyledButton value={`TTL:${keyInfo.ttl}`} on:click={() => handleChangeTtl(keyInfo)} />
|
<FormStyledButton value={`TTL:${keyInfo.ttl}`} on:click={() => handleChangeTtl(keyInfo)} />
|
||||||
{#if keyInfo.type == 'string'}
|
{#if keyInfo.type == 'string'}
|
||||||
<FormStyledButton value="Save" on:click={saveString} disabled={!editedValue} />
|
<FormStyledButton
|
||||||
|
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||||
|
on:click={saveString}
|
||||||
|
disabled={!editedValue}
|
||||||
|
/>
|
||||||
{/if}
|
{/if}
|
||||||
{#if keyInfo.keyType?.addMethod && keyInfo.keyType?.showItemList}
|
{#if keyInfo.keyType?.addMethod && keyInfo.keyType?.showItemList}
|
||||||
<FormStyledButton value="Add item" on:click={() => addItem(keyInfo)} />
|
<FormStyledButton value="Add item" on:click={() => addItem(keyInfo)} />
|
||||||
{/if}
|
{/if}
|
||||||
<FormStyledButton value="Refresh" on:click={refresh} />
|
<FormStyledButton value={_t('common.refresh', { defaultMessage: 'Refresh' })} on:click={refresh} />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
registerCommand({
|
registerCommand({
|
||||||
id: 'serverSummary.refresh',
|
id: 'serverSummary.refresh',
|
||||||
category: 'Server sumnmary',
|
category: 'Server sumnmary',
|
||||||
name: 'Refresh',
|
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||||
keyText: 'F5 | CtrlOrCommand+R',
|
keyText: 'F5 | CtrlOrCommand+R',
|
||||||
toolbar: true,
|
toolbar: true,
|
||||||
isRelatedToTab: true,
|
isRelatedToTab: true,
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
import LoadingInfo from '../elements/LoadingInfo.svelte';
|
import LoadingInfo from '../elements/LoadingInfo.svelte';
|
||||||
|
|
||||||
import ObjectListControl from '../elements/ObjectListControl.svelte';
|
import ObjectListControl from '../elements/ObjectListControl.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
import { apiCall } from '../utility/api';
|
import { apiCall } from '../utility/api';
|
||||||
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
import createActivator, { getActiveComponent } from '../utility/createActivator';
|
||||||
import formatFileSize from '../utility/formatFileSize';
|
import formatFileSize from '../utility/formatFileSize';
|
||||||
|
|||||||
@@ -15,6 +15,7 @@
|
|||||||
import SingleConnectionDatabaseList from './SingleConnectionDatabaseList.svelte';
|
import SingleConnectionDatabaseList from './SingleConnectionDatabaseList.svelte';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import FocusedConnectionInfoWidget from './FocusedConnectionInfoWidget.svelte';
|
import FocusedConnectionInfoWidget from './FocusedConnectionInfoWidget.svelte';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let hidden = false;
|
export let hidden = false;
|
||||||
let domSqlObjectList = null;
|
let domSqlObjectList = null;
|
||||||
@@ -29,16 +30,26 @@
|
|||||||
|
|
||||||
<WidgetColumnBar {hidden}>
|
<WidgetColumnBar {hidden}>
|
||||||
{#if $config?.singleConnection}
|
{#if $config?.singleConnection}
|
||||||
<WidgetColumnBarItem title="Databases" name="databases" height="35%" storageName="databasesWidget">
|
<WidgetColumnBarItem
|
||||||
|
title={_t('widget.databases', { defaultMessage: 'Databases' })}
|
||||||
|
name="databases"
|
||||||
|
height="35%"
|
||||||
|
storageName="databasesWidget"
|
||||||
|
>
|
||||||
<SingleConnectionDatabaseList connection={$config?.singleConnection} />
|
<SingleConnectionDatabaseList connection={$config?.singleConnection} />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
{:else if !$config?.singleDbConnection}
|
{:else if !$config?.singleDbConnection}
|
||||||
<WidgetColumnBarItem title="Connections" name="connections" height="35%" storageName="connectionsWidget">
|
<WidgetColumnBarItem
|
||||||
|
title={_t('common.connections', { defaultMessage: 'Connections' })}
|
||||||
|
name="connections"
|
||||||
|
height="35%"
|
||||||
|
storageName="connectionsWidget"
|
||||||
|
>
|
||||||
<ConnectionList passProps={{ onFocusSqlObjectList: () => domSqlObjectList.focus() }} />
|
<ConnectionList passProps={{ onFocusSqlObjectList: () => domSqlObjectList.focus() }} />
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
{/if}
|
{/if}
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="Pinned"
|
title={_t('widget.pinned', { defaultMessage: 'Pinned' })}
|
||||||
name="pinned"
|
name="pinned"
|
||||||
height="15%"
|
height="15%"
|
||||||
storageName="pinnedItemsWidget"
|
storageName="pinnedItemsWidget"
|
||||||
@@ -51,7 +62,7 @@
|
|||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title={driver?.databaseEngineTypes?.includes('document')
|
title={driver?.databaseEngineTypes?.includes('document')
|
||||||
? (driver?.collectionPluralLabel ?? 'Collections/containers')
|
? (driver?.collectionPluralLabel ?? 'Collections/containers')
|
||||||
: 'Tables, views, functions'}
|
: _t('widget.tables_views_functions', { defaultMessage: 'Tables, views, functions' })}
|
||||||
name="dbObjects"
|
name="dbObjects"
|
||||||
storageName="dbObjectsWidget"
|
storageName="dbObjectsWidget"
|
||||||
skip={!(
|
skip={!(
|
||||||
@@ -64,7 +75,7 @@
|
|||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title={'Keys'}
|
title={_t('widget.keys', { defaultMessage: 'Keys' })}
|
||||||
name="dbObjects"
|
name="dbObjects"
|
||||||
storageName="dbObjectsWidget"
|
storageName="dbObjectsWidget"
|
||||||
skip={!(conid && (database || singleDatabase) && driver?.databaseEngineTypes?.includes('keyvalue'))}
|
skip={!(conid && (database || singleDatabase) && driver?.databaseEngineTypes?.includes('keyvalue'))}
|
||||||
@@ -73,7 +84,7 @@
|
|||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="Database content"
|
title={_t('widget.database_content', { defaultMessage: 'Database content' })}
|
||||||
name="dbObjects"
|
name="dbObjects"
|
||||||
storageName="dbObjectsWidget"
|
storageName="dbObjectsWidget"
|
||||||
skip={conid && (database || singleDatabase)}
|
skip={conid && (database || singleDatabase)}
|
||||||
@@ -86,7 +97,7 @@
|
|||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
|
|
||||||
<WidgetColumnBarItem
|
<WidgetColumnBarItem
|
||||||
title="Database content"
|
title={_t('widget.database_content', { defaultMessage: 'Database content' })}
|
||||||
name="dbObjects"
|
name="dbObjects"
|
||||||
storageName="dbObjectsWidget"
|
storageName="dbObjectsWidget"
|
||||||
skip={!(conid && (database || singleDatabase) && !driver)}
|
skip={!(conid && (database || singleDatabase) && !driver)}
|
||||||
@@ -94,7 +105,9 @@
|
|||||||
<WidgetsInnerContainer>
|
<WidgetsInnerContainer>
|
||||||
<FocusedConnectionInfoWidget {conid} {database} connection={$connection} />
|
<FocusedConnectionInfoWidget {conid} {database} connection={$connection} />
|
||||||
|
|
||||||
<ErrorInfo message="Invalid database connection, driver not found" />
|
<ErrorInfo
|
||||||
|
message={_t('error.driver_not_found', { defaultMessage: 'Invalid database connection, driver not found' })}
|
||||||
|
/>
|
||||||
</WidgetsInnerContainer>
|
</WidgetsInnerContainer>
|
||||||
</WidgetColumnBarItem>
|
</WidgetColumnBarItem>
|
||||||
</WidgetColumnBar>
|
</WidgetColumnBar>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
|
|
||||||
import hasPermission from '../utility/hasPermission';
|
import hasPermission from '../utility/hasPermission';
|
||||||
import { useFavorites } from '../utility/metadataLoaders';
|
import { useFavorites } from '../utility/metadataLoaders';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
|
import WidgetsInnerContainer from './WidgetsInnerContainer.svelte';
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
import { appliedCurrentSchema, currentDatabase } from '../stores';
|
import { appliedCurrentSchema, currentDatabase } from '../stores';
|
||||||
import { switchCurrentDatabase } from '../utility/common';
|
import { switchCurrentDatabase } from '../utility/common';
|
||||||
import { extractDbNameFromComposite, extractSchemaNameFromComposite, findDefaultSchema } from 'dbgate-tools';
|
import { extractDbNameFromComposite, extractSchemaNameFromComposite, findDefaultSchema } from 'dbgate-tools';
|
||||||
|
import { _t } from '../translations';
|
||||||
|
|
||||||
export let schemaList;
|
export let schemaList;
|
||||||
export let objectList;
|
export let objectList;
|
||||||
@@ -58,9 +59,9 @@
|
|||||||
|
|
||||||
function handleCreateSchema() {
|
function handleCreateSchema() {
|
||||||
showModal(InputTextModal, {
|
showModal(InputTextModal, {
|
||||||
header: 'Create schema',
|
header: _t('schema.create_schema', { defaultMessage: 'Create schema' }),
|
||||||
value: 'newschema',
|
value: 'newschema',
|
||||||
label: 'Schema name',
|
label: _t('schema.schema_name', { defaultMessage: 'Schema name' }),
|
||||||
onConfirm: async name => {
|
onConfirm: async name => {
|
||||||
const dbid = { conid, database };
|
const dbid = { conid, database };
|
||||||
await runOperationOnDatabase(
|
await runOperationOnDatabase(
|
||||||
@@ -105,13 +106,19 @@
|
|||||||
|
|
||||||
{#if realSchemaList.length > 0}
|
{#if realSchemaList.length > 0}
|
||||||
<div class="wrapper" class:negativeMarginTop>
|
<div class="wrapper" class:negativeMarginTop>
|
||||||
<div class="mr-1">Schema:</div>
|
<div class="mr-1">{_t('common.schema', { defaultMessage: 'Schema' })}:</div>
|
||||||
<SelectField
|
<SelectField
|
||||||
isNative
|
isNative
|
||||||
options={connection?.useSeparateSchemas
|
options={connection?.useSeparateSchemas
|
||||||
? (schemaList?.map(x => ({ label: x.schemaName, value: x.schemaName })) ?? [])
|
? (schemaList?.map(x => ({ label: x.schemaName, value: x.schemaName })) ?? [])
|
||||||
: [
|
: [
|
||||||
{ label: `All schemas (${objectList?.length ?? 0})`, value: '' },
|
{
|
||||||
|
label: _t('schema.all_schemas', {
|
||||||
|
defaultMessage: 'All schemas ({count})',
|
||||||
|
values: { count: objectList?.length ?? 0 },
|
||||||
|
}),
|
||||||
|
value: '',
|
||||||
|
},
|
||||||
...realSchemaList.map(x => ({ label: `${x} (${countBySchema[x] ?? 0})`, value: x })),
|
...realSchemaList.map(x => ({ label: `${x} (${countBySchema[x] ?? 0})`, value: x })),
|
||||||
]}
|
]}
|
||||||
value={selectedSchema ?? $appliedCurrentSchema ?? ''}
|
value={selectedSchema ?? $appliedCurrentSchema ?? ''}
|
||||||
@@ -135,15 +142,20 @@
|
|||||||
selectedSchema = null;
|
selectedSchema = null;
|
||||||
localStorage.removeItem(valueStorageKey);
|
localStorage.removeItem(valueStorageKey);
|
||||||
}}
|
}}
|
||||||
title="Reset to default"
|
title={_t('schema.reset_to_default', { defaultMessage: 'Reset to default' })}
|
||||||
>
|
>
|
||||||
<FontIcon icon="icon close" />
|
<FontIcon icon="icon close" />
|
||||||
</InlineButton>
|
</InlineButton>
|
||||||
{/if}
|
{/if}
|
||||||
<InlineButton on:click={handleCreateSchema} title="Add new schema" square>
|
<InlineButton on:click={handleCreateSchema} title={_t('schema.add', { defaultMessage: 'Add new schema' })} square>
|
||||||
<FontIcon icon="icon plus-thick" />
|
<FontIcon icon="icon plus-thick" />
|
||||||
</InlineButton>
|
</InlineButton>
|
||||||
<InlineButton on:click={handleDropSchema} title="Delete schema" square disabled={!$appliedCurrentSchema}>
|
<InlineButton
|
||||||
|
on:click={handleDropSchema}
|
||||||
|
title={_t('schema.delete', { defaultMessage: 'Delete schema' })}
|
||||||
|
square
|
||||||
|
disabled={!$appliedCurrentSchema}
|
||||||
|
>
|
||||||
<FontIcon icon="icon minus-thick" />
|
<FontIcon icon="icon minus-thick" />
|
||||||
</InlineButton>
|
</InlineButton>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,4 +1,58 @@
|
|||||||
{
|
{
|
||||||
"settings.localization": "Localizace"
|
"settings.localization": "Localizace",
|
||||||
}
|
"common.save": "*** Save",
|
||||||
|
"common.refresh": "*** Refresh",
|
||||||
|
"command.data_grid.revert_row_changes": "*** Revert row changes",
|
||||||
|
"command.data_grid.revert_all_changes.name": "*** Revert all changes",
|
||||||
|
"command.data_grid.revert_all_changes.toolbar_name": "*** Revert all",
|
||||||
|
"command.datagrid.delete_selected_rows.name": "*** Delete selected rows",
|
||||||
|
"command.datagrid.delete_selected_rows.toolbar_name": "*** Delete row(s)",
|
||||||
|
"command.datagrid.insert_new_row.name": "*** Insert new row",
|
||||||
|
"command.datagrid.insert_new_row.toolbar_name": "*** New row",
|
||||||
|
"command.datagrid.add_new_column.name": "*** Add new column",
|
||||||
|
"command.datagrid.add_new_column.toolbar_name": "*** New column",
|
||||||
|
"command.datagrid.clone_rows.name": "*** Clone rows",
|
||||||
|
"command.datagrid.clone_rows.toolbar_name": "*** Clone row(s)",
|
||||||
|
"command.datagrid.set_null.name": "*** Set NULL",
|
||||||
|
"command.datagrid.remove_field.name": "*** Remove field",
|
||||||
|
"command.datagrid.undo.name": "*** Undo",
|
||||||
|
"command.datagrid.redo.name": "*** Redo",
|
||||||
|
"command.datagrid.reconnect.name": "*** Reconnect",
|
||||||
|
"command.datagrid.copy_to_clipboard.name": "*** Copy to clipboard",
|
||||||
|
"command.datagrid.edit_json_document.name": "*** Edit row as JSON document",
|
||||||
|
"command.datagrid.open_selection_in_map.name": "*** Open selection in map",
|
||||||
|
"command.datagrid.view_json_document.name": "*** View row as JSON document",
|
||||||
|
"command.datagrid.view_json_value.name": "*** View cell as JSON document",
|
||||||
|
"command.datagrid.open_json_array_in_sheet.name": "*** Open array as table",
|
||||||
|
"command.datagrid.save_cell_to_file.name": "*** Save cell to file",
|
||||||
|
"command.datagrid.load_cell_from_file.name": "*** Load cell from file",
|
||||||
|
"common.connections": "*** Connections",
|
||||||
|
"tab.administration": "*** Administration",
|
||||||
|
"command.tabs.nextTab": "*** Next tab",
|
||||||
|
"command.tabs.previousTab": "*** Previous tab",
|
||||||
|
"command.tabs.closeAll": "*** Close all tabs",
|
||||||
|
"command.tabs.closeTab": "*** Close tab",
|
||||||
|
"command.tabs.closeTabsWithCurrentDb": "*** Close tabs with current DB",
|
||||||
|
"command.tabs.closeTabsButCurrentDb": "*** Close tabs but current DB",
|
||||||
|
"command.tabs.reopenClosedTab": "*** Reopen closed tab",
|
||||||
|
"command.tabs.addToFavorites": "*** Add current tab to favorites",
|
||||||
|
"widget.tables_views_functions": "*** Tables, views, functions",
|
||||||
|
"app.starting": "*** Starting DbGate",
|
||||||
|
"app.preparing_pluguns": "*** Preparing plugins ...",
|
||||||
|
"widget.databases": "*** Databases",
|
||||||
|
"common.schema": "*** Schema",
|
||||||
|
"source.tables_views_collections": "*** Tables / views / collections",
|
||||||
|
"common.query": "*** Query",
|
||||||
|
"source.source_files": "*** Source files",
|
||||||
|
"common.database": "*** Database",
|
||||||
|
"common.archive": "*** Archive",
|
||||||
|
"schema.add": "*** Add new schema",
|
||||||
|
"schema.delete": "*** Delete schema",
|
||||||
|
"schema.reset_to_default": "*** Reset to default",
|
||||||
|
"schema.create_schema": "*** Create schema",
|
||||||
|
"schema.schema_name": "*** Schema name",
|
||||||
|
"widget.pinned": "*** Pinned",
|
||||||
|
"widget.keys": "*** Keys",
|
||||||
|
"widget.database_content": "*** Database content",
|
||||||
|
"error.driver_not_found": "*** Invalid database connection, driver not found"
|
||||||
|
}
|
||||||
@@ -1,3 +1,58 @@
|
|||||||
{
|
{
|
||||||
"settings.localization": "Localization"
|
"settings.localization": "Localization",
|
||||||
|
"common.save": "Save",
|
||||||
|
"common.refresh": "Refresh",
|
||||||
|
"command.data_grid.revert_row_changes": "Revert row changes",
|
||||||
|
"command.data_grid.revert_all_changes.name": "Revert all changes",
|
||||||
|
"command.data_grid.revert_all_changes.toolbar_name": "Revert all",
|
||||||
|
"command.datagrid.delete_selected_rows.name": "Delete selected rows",
|
||||||
|
"command.datagrid.delete_selected_rows.toolbar_name": "Delete row(s)",
|
||||||
|
"command.datagrid.insert_new_row.name": "Insert new row",
|
||||||
|
"command.datagrid.insert_new_row.toolbar_name": "New row",
|
||||||
|
"command.datagrid.add_new_column.name": "Add new column",
|
||||||
|
"command.datagrid.add_new_column.toolbar_name": "New column",
|
||||||
|
"command.datagrid.clone_rows.name": "Clone rows",
|
||||||
|
"command.datagrid.clone_rows.toolbar_name": "Clone row(s)",
|
||||||
|
"command.datagrid.set_null.name": "Set NULL",
|
||||||
|
"command.datagrid.remove_field.name": "Remove field",
|
||||||
|
"command.datagrid.undo.name": "Undo",
|
||||||
|
"command.datagrid.redo.name": "Redo",
|
||||||
|
"command.datagrid.reconnect.name": "Reconnect",
|
||||||
|
"command.datagrid.copy_to_clipboard.name": "Copy to clipboard",
|
||||||
|
"command.datagrid.edit_json_document.name": "Edit row as JSON document",
|
||||||
|
"command.datagrid.open_selection_in_map.name": "Open selection in map",
|
||||||
|
"command.datagrid.view_json_document.name": "View row as JSON document",
|
||||||
|
"command.datagrid.view_json_value.name": "View cell as JSON document",
|
||||||
|
"command.datagrid.open_json_array_in_sheet.name": "Open array as table",
|
||||||
|
"command.datagrid.save_cell_to_file.name": "Save cell to file",
|
||||||
|
"command.datagrid.load_cell_from_file.name": "Load cell from file",
|
||||||
|
"common.connections": "Connections",
|
||||||
|
"tab.administration": "Administration",
|
||||||
|
"command.tabs.nextTab": "Next tab",
|
||||||
|
"command.tabs.previousTab": "Previous tab",
|
||||||
|
"command.tabs.closeAll": "Close all tabs",
|
||||||
|
"command.tabs.closeTab": "Close tab",
|
||||||
|
"command.tabs.closeTabsWithCurrentDb": "Close tabs with current DB",
|
||||||
|
"command.tabs.closeTabsButCurrentDb": "Close tabs but current DB",
|
||||||
|
"command.tabs.reopenClosedTab": "Reopen closed tab",
|
||||||
|
"command.tabs.addToFavorites": "Add current tab to favorites",
|
||||||
|
"widget.tables_views_functions": "Tables, views, functions",
|
||||||
|
"widget.databases": "Databases",
|
||||||
|
"app.starting": "Starting DbGate",
|
||||||
|
"app.preparing_pluguns": "Preparing plugins ...",
|
||||||
|
"common.schema": "Schema",
|
||||||
|
"source.tables_views_collections": "Tables / views / collections",
|
||||||
|
"common.query": "Query",
|
||||||
|
"source.source_files": "Source files",
|
||||||
|
"common.database": "Database",
|
||||||
|
"common.archive": "Archive",
|
||||||
|
"schema.add": "Add new schema",
|
||||||
|
"schema.delete": "Delete schema",
|
||||||
|
"schema.reset_to_default": "Reset to default",
|
||||||
|
"schema.create_schema": "Create schema",
|
||||||
|
"schema.schema_name": "Schema name",
|
||||||
|
"widget.pinned": "Pinned",
|
||||||
|
"widget.keys": "Keys",
|
||||||
|
"widget.database_content": "Database content",
|
||||||
|
"error.driver_not_found": "Invalid database connection, driver not found"
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user