mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 00:56:02 +00:00
Merge branch 'feature/translation'
This commit is contained in:
@@ -6,7 +6,7 @@ const { getFiles } = require('./helpers');
|
||||
|
||||
const readFilePromise = promisify(fs.readFile);
|
||||
|
||||
const translationRegex = /_t\(\s*['"]([^'"]+)['"]\s*,\s*\{\s*defaultMessage\s*:\s*['"]([^'"]+)['"]\s*\}/g;
|
||||
const translationRegex = /_t\(\s*['"]([^'"]+)['"]\s*,\s*\{\s*defaultMessage\s*:\s*(?:'([^'\\]*(?:\\.[^'\\]*)*)'|"([^"\\]*(?:\\.[^"\\]*)*)"|\`([^`\\]*(?:\\.[^`\\]*)*(?:\{[^}]*\}[^`\\]*(?:\\.[^`\\]*)*)*)\`)(?:\s*,\s*[^}]*)*\s*\}/g;
|
||||
|
||||
/**
|
||||
* @param {string} file
|
||||
@@ -20,7 +20,8 @@ async function extractTranslationsFromFile(file) {
|
||||
let match;
|
||||
|
||||
while ((match = translationRegex.exec(content)) !== null) {
|
||||
const [_, key, defaultText] = match;
|
||||
const [_, key, singleQuotedText, doubleQuotedText, templateLiteral] = match;
|
||||
const defaultText = singleQuotedText || doubleQuotedText || templateLiteral;
|
||||
translations[key] = defaultText;
|
||||
}
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
import SettingsListener from './utility/SettingsListener.svelte';
|
||||
import { handleAuthOnStartup } from './clientAuth';
|
||||
import { initializeAppUpdates } from './utility/appUpdate';
|
||||
import { _t } from './translations';
|
||||
import { _t, saveSelectedLanguageToCache } from './translations';
|
||||
import { installCloudListeners } from './utility/cloudListeners';
|
||||
|
||||
export let isAdminPage = false;
|
||||
@@ -61,6 +61,7 @@
|
||||
initializeAppUpdates();
|
||||
installCloudListeners();
|
||||
refreshPublicCloudFiles();
|
||||
saveSelectedLanguageToCache();
|
||||
}
|
||||
|
||||
loadedApi = loadedApiValue;
|
||||
|
||||
@@ -40,7 +40,17 @@
|
||||
|
||||
$: dataLabeled = _.compact(
|
||||
(list || []).map(data => {
|
||||
const matchResult = matcher ? matcher(data) : true;
|
||||
const dataCopy = {...data,
|
||||
group: (data?.group && _.isFunction(data.group)) ? data.group() : data.group,
|
||||
title: (data?.title && _.isFunction(data.title)) ? data.title() : data.title,
|
||||
description: (data?.description && _.isFunction(data.description)) ? data.description() : data.description,
|
||||
args: (data?.args || []).map(x => ({
|
||||
...x,
|
||||
label: (x?.label && _.isFunction(x.label)) ? x.label() : x.label,
|
||||
}))
|
||||
};
|
||||
|
||||
const matchResult = matcher ? matcher(dataCopy) : true;
|
||||
|
||||
let isMatched = true;
|
||||
let isMainMatched = true;
|
||||
@@ -62,8 +72,8 @@
|
||||
isChildMatched = !module.disableShowChildrenWithParentMatch;
|
||||
}
|
||||
|
||||
const group = groupFunc ? groupFunc(data) : undefined;
|
||||
return { group, data, isMatched, isChildMatched, isMainMatched };
|
||||
const group = groupFunc ? groupFunc(dataCopy) : undefined;
|
||||
return { group, data: dataCopy, isMatched, isChildMatched, isMainMatched };
|
||||
})
|
||||
);
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<script lang="ts">
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
import { isProApp } from '../utility/proTools';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let icon;
|
||||
export let title;
|
||||
@@ -21,7 +22,7 @@
|
||||
data-testid={$$props['data-testid']}
|
||||
title={disabled
|
||||
? isProFeature && !isProApp()
|
||||
? 'This feature is available only in DbGate Premium'
|
||||
? _t('common.featurePremium', { defaultMessage: 'This feature is available only in DbGate Premium' })
|
||||
: disabledMessage
|
||||
: undefined}
|
||||
>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<script context="module">
|
||||
function getCommandTitle(command) {
|
||||
let res = command.text;
|
||||
let res = _.isFunction(command.text) ? command.text() : command.text;
|
||||
if (command.keyText || command.keyTextFromGroup) {
|
||||
res += ` (${formatKeyText(command.keyText || command.keyTextFromGroup)})`;
|
||||
}
|
||||
@@ -12,6 +12,7 @@
|
||||
import { commandsCustomized } from '../stores';
|
||||
import { formatKeyText } from '../utility/common';
|
||||
import ToolStripButton from './ToolStripButton.svelte';
|
||||
import _ from 'lodash';
|
||||
|
||||
export let command;
|
||||
export let component = ToolStripButton;
|
||||
@@ -32,6 +33,6 @@
|
||||
{iconAfter}
|
||||
{...$$restProps}
|
||||
>
|
||||
{buttonLabel || cmd.toolbarName || cmd.name}
|
||||
{(_.isFunction(buttonLabel) ? buttonLabel() : buttonLabel) || (_.isFunction(cmd?.toolbarName) ? cmd.toolbarName() : cmd.toolbarName) || (_.isFunction(cmd?.name) ? cmd.name() : cmd.name)}
|
||||
</svelte:component>
|
||||
{/if}
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
import hasPermission from '../utility/hasPermission';
|
||||
import ToolStripCommandButton from './ToolStripCommandButton.svelte';
|
||||
import ToolStripDropDownButton from './ToolStripDropDownButton.svelte';
|
||||
|
||||
import _ from 'lodash';
|
||||
export let quickExportHandlerRef = null;
|
||||
export let command = 'sqlDataGrid.export';
|
||||
export let label = 'Export';
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
{#if hasPermission('dbops/export')}
|
||||
{#if quickExportHandlerRef}
|
||||
<ToolStripDropDownButton menu={getExportMenu} {label} icon="icon export" />
|
||||
<ToolStripDropDownButton menu={getExportMenu} label={_.isFunction(label) ? label() : label} icon="icon export" />
|
||||
{:else}
|
||||
<ToolStripCommandButton {command} />
|
||||
{/if}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { commands } from '../stores';
|
||||
import { invalidateCommandDefinitions } from './invalidateCommands';
|
||||
import _ from 'lodash';
|
||||
|
||||
export interface SubCommand {
|
||||
text: string;
|
||||
@@ -8,10 +9,10 @@ export interface SubCommand {
|
||||
|
||||
export interface GlobalCommand {
|
||||
id: string;
|
||||
category: string; // null for group commands
|
||||
category: string | (() => string); // null for group commands
|
||||
isGroupCommand?: boolean;
|
||||
name: string;
|
||||
text?: string /* category: name */;
|
||||
name: string | (() => string);
|
||||
text?: string | (() => string);
|
||||
keyText?: string;
|
||||
keyTextFromGroup?: string; // automatically filled from group
|
||||
group?: string;
|
||||
@@ -23,11 +24,11 @@ export interface GlobalCommand {
|
||||
toolbar?: boolean;
|
||||
enabled?: boolean;
|
||||
showDisabled?: boolean;
|
||||
toolbarName?: string;
|
||||
toolbarName?: string | (() => string);
|
||||
menuName?: string;
|
||||
toolbarOrder?: number;
|
||||
disableHandleKeyText?: string;
|
||||
isRelatedToTab?: boolean,
|
||||
isRelatedToTab?: boolean;
|
||||
systemCommand?: boolean;
|
||||
}
|
||||
|
||||
@@ -41,7 +42,13 @@ export default function registerCommand(command: GlobalCommand) {
|
||||
return {
|
||||
...x,
|
||||
[command.id]: {
|
||||
text: `${command.category}: ${command.name}`,
|
||||
text:
|
||||
_.isFunction(command.category) || _.isFunction(command.name)
|
||||
? () =>
|
||||
`${_.isFunction(command.category) ? command.category() : command.category}: ${
|
||||
_.isFunction(command.name) ? command.name() : command.name
|
||||
}`
|
||||
: `${command.category}: ${command.name}`,
|
||||
...command,
|
||||
enabled: !testEnabled,
|
||||
},
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.switchToForm',
|
||||
category: 'Data grid',
|
||||
name: 'Switch to form',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.switchToform', { defaultMessage: 'Switch to form' }),
|
||||
icon: 'icon form',
|
||||
keyText: 'F4',
|
||||
testEnabled: () => getCurrentEditor()?.switchViewEnabled('form'),
|
||||
@@ -13,8 +13,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.switchToJson',
|
||||
category: 'Data grid',
|
||||
name: 'Switch to JSON',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.switchToJSON', { defaultMessage: 'Switch to JSON' }),
|
||||
icon: 'icon json',
|
||||
keyText: 'F4',
|
||||
testEnabled: () => getCurrentEditor()?.switchViewEnabled('json'),
|
||||
@@ -23,8 +23,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.switchToTable',
|
||||
category: 'Data grid',
|
||||
name: 'Switch to table',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.witchToTable', { defaultMessage: 'Switch to table'}),
|
||||
icon: 'icon table',
|
||||
keyText: 'F4',
|
||||
testEnabled: () => getCurrentEditor()?.switchViewEnabled('table'),
|
||||
@@ -33,8 +33,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.toggleLeftPanel',
|
||||
category: 'Data grid',
|
||||
name: 'Toggle left panel',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.toggleLeftPanel', { defaultMessage: 'Toggle left panel' }),
|
||||
keyText: 'CtrlOrCommand+L',
|
||||
testEnabled: () => getCurrentEditor()?.canShowLeftPanel(),
|
||||
onClick: () => getCurrentEditor().toggleLeftPanel(),
|
||||
@@ -68,6 +68,7 @@
|
||||
import registerCommand from '../commands/registerCommand';
|
||||
import { registerMenu } from '../utility/contextMenu';
|
||||
import { getLocalStorage, setLocalStorage } from '../utility/storageCache';
|
||||
import { __t, _t } from '../translations';
|
||||
import { isProApp } from '../utility/proTools';
|
||||
|
||||
export let config;
|
||||
@@ -174,7 +175,7 @@
|
||||
<div class="left" slot="1">
|
||||
<WidgetColumnBar>
|
||||
<WidgetColumnBarItem
|
||||
title="Columns"
|
||||
title={_t('dataGrid.columns', { defaultMessage: 'Columns' })}
|
||||
name="columns"
|
||||
height="45%"
|
||||
skip={isFormView}
|
||||
@@ -184,7 +185,7 @@
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
title="Filters"
|
||||
title={_t('dataGrid.filters', { defaultMessage: 'Filters' })}
|
||||
name="filters"
|
||||
height={showReferences && display?.hasReferences && !isFormView ? '15%' : '30%'}
|
||||
skip={!display?.filterable}
|
||||
@@ -202,7 +203,7 @@
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
title="References"
|
||||
title={_t('dataGrid.references', { defaultMessage: 'References' })}
|
||||
name="references"
|
||||
height="30%"
|
||||
collapsed={isDetailView}
|
||||
@@ -213,7 +214,7 @@
|
||||
</WidgetColumnBarItem>
|
||||
|
||||
<WidgetColumnBarItem
|
||||
title="Macros"
|
||||
title={_t('dataGrid.macros', { defaultMessage: 'Macros' })}
|
||||
name="macros"
|
||||
skip={!(showMacros && isProApp())}
|
||||
collapsed={!expandMacros}
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.refresh',
|
||||
category: 'Data grid',
|
||||
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('common.refresh', { defaultMessage: 'Refresh' }),
|
||||
keyText: 'F5 | CtrlOrCommand+R',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -15,8 +15,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.deepRefresh',
|
||||
category: 'Data grid',
|
||||
name: 'Refresh with structure',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('common.datagrid.deepRefresh', { defaultMessage: 'Refresh with structure' }),
|
||||
keyText: 'Ctrl+F5',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -27,8 +27,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.revertRowChanges',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.revertRowChanges', { defaultMessage: 'Revert row changes' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.revertRowChanges', { defaultMessage: 'Revert row changes' }),
|
||||
keyText: 'CtrlOrCommand+U',
|
||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
||||
onClick: () => getCurrentDataGrid().revertRowChanges(),
|
||||
@@ -36,9 +36,9 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.revertAllChanges',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.revertAllChanges', { defaultMessage: 'Revert all changes' }),
|
||||
toolbarName: _t('command.datagrid.revertAllChanges.toolbar', { defaultMessage: 'Revert all' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.revertAllChanges', { defaultMessage: 'Revert all changes' }),
|
||||
toolbarName: __t('command.datagrid.revertAllChanges.toolbar', { defaultMessage: 'Revert all' }),
|
||||
icon: 'icon undo',
|
||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.containsChanges,
|
||||
onClick: () => getCurrentDataGrid().revertAllChanges(),
|
||||
@@ -46,9 +46,9 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.deleteSelectedRows',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.deleteSelectedRows', { defaultMessage: 'Delete selected rows' }),
|
||||
toolbarName: _t('command.datagrid.deleteSelectedRows.toolbar', { defaultMessage: 'Delete row(s)' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.deleteSelectedRows', { defaultMessage: 'Delete selected rows' }),
|
||||
toolbarName: __t('command.datagrid.deleteSelectedRows.toolbar', { defaultMessage: 'Delete row(s)' }),
|
||||
keyText: isMac() ? 'Command+Backspace' : 'CtrlOrCommand+Delete',
|
||||
icon: 'icon minus',
|
||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||
@@ -57,9 +57,9 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.insertNewRow',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.insertNewRow', { defaultMessage: 'Insert new row' }),
|
||||
toolbarName: _t('command.datagrid.insertNewRow.toolbar', { defaultMessage: 'New row' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.insertNewRow', { defaultMessage: 'Insert new row' }),
|
||||
toolbarName: __t('command.datagrid.insertNewRow.toolbar', { defaultMessage: 'New row' }),
|
||||
icon: 'icon add',
|
||||
keyText: isMac() ? 'Command+I' : 'Insert',
|
||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||
@@ -68,9 +68,9 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.addNewColumn',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.addNewColumn', { defaultMessage: 'Add new column' }),
|
||||
toolbarName: _t('command.datagrid.addNewColumn.toolbar', { defaultMessage: 'New column' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.addNewColumn', { defaultMessage: 'Add new column' }),
|
||||
toolbarName: __t('command.datagrid.addNewColumn.toolbar', { defaultMessage: 'New column' }),
|
||||
icon: 'icon add-column',
|
||||
testEnabled: () => getCurrentDataGrid()?.addNewColumnEnabled(),
|
||||
onClick: () => getCurrentDataGrid().addNewColumn(),
|
||||
@@ -78,9 +78,9 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.cloneRows',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.cloneRows', { defaultMessage: 'Clone rows' }),
|
||||
toolbarName: _t('command.datagrid.cloneRows.toolbar', { defaultMessage: 'Clone row(s)' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.cloneRows', { defaultMessage: 'Clone rows' }),
|
||||
toolbarName: __t('command.datagrid.cloneRows.toolbar', { defaultMessage: 'Clone row(s)' }),
|
||||
keyText: 'CtrlOrCommand+Shift+C',
|
||||
testEnabled: () => getCurrentDataGrid()?.getGrider()?.editable,
|
||||
onClick: () => getCurrentDataGrid().cloneRows(),
|
||||
@@ -88,8 +88,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.setNull',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.setNull', { defaultMessage: 'Set NULL' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.setNull', { defaultMessage: 'Set NULL' }),
|
||||
keyText: 'CtrlOrCommand+0',
|
||||
testEnabled: () =>
|
||||
getCurrentDataGrid()?.getGrider()?.editable && !getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
||||
@@ -98,8 +98,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.removeField',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.removeField', { defaultMessage: 'Remove field' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.removeField', { defaultMessage: 'Remove field' }),
|
||||
keyText: 'CtrlOrCommand+0',
|
||||
testEnabled: () =>
|
||||
getCurrentDataGrid()?.getGrider()?.editable && getCurrentDataGrid()?.getEditorTypes()?.supportFieldRemoval,
|
||||
@@ -108,8 +108,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.undo',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.undo', { defaultMessage: 'Undo' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.undo', { defaultMessage: 'Undo' }),
|
||||
group: 'undo',
|
||||
icon: 'icon undo',
|
||||
toolbar: true,
|
||||
@@ -120,8 +120,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.redo',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.redo', { defaultMessage: 'Redo' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.redo', { defaultMessage: 'Redo' }),
|
||||
group: 'redo',
|
||||
icon: 'icon redo',
|
||||
toolbar: true,
|
||||
@@ -132,16 +132,16 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.reconnect',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.reconnect', { defaultMessage: 'Reconnect' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.reconnect', { defaultMessage: 'Reconnect' }),
|
||||
testEnabled: () => getCurrentDataGrid() != null,
|
||||
onClick: () => getCurrentDataGrid().reconnect(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.copyToClipboard',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.copyToClipboard', { defaultMessage: 'Copy to clipboard' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.copyToClipboard', { defaultMessage: 'Copy to clipboard' }),
|
||||
keyText: 'CtrlOrCommand+C',
|
||||
disableHandleKeyText: 'CtrlOrCommand+C',
|
||||
testEnabled: () => getCurrentDataGrid() != null,
|
||||
@@ -150,57 +150,57 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.editJsonDocument',
|
||||
category: 'Data grid',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
keyText: 'CtrlOrCommand+J',
|
||||
name: _t('command.datagrid.editJsonDocument', { defaultMessage: 'Edit row as JSON document' }),
|
||||
name: __t('command.datagrid.editJsonDocument', { defaultMessage: 'Edit row as JSON document' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.editJsonEnabled(),
|
||||
onClick: () => getCurrentDataGrid().editJsonDocument(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.openSelectionInMap',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.openSelectionInMap', { defaultMessage: 'Open selection in map' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.openSelectionInMap', { defaultMessage: 'Open selection in map' }),
|
||||
testEnabled: () => getCurrentDataGrid() != null,
|
||||
onClick: () => getCurrentDataGrid().openSelectionInMap(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.viewJsonDocument',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.viewJsonDocument', { defaultMessage: 'View row as JSON document' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.viewJsonDocument', { defaultMessage: 'View row as JSON document' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.viewJsonDocumentEnabled(),
|
||||
onClick: () => getCurrentDataGrid().viewJsonDocument(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.viewJsonValue',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.viewJsonValue', { defaultMessage: 'View cell as JSON document' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.viewJsonValue', { defaultMessage: 'View cell as JSON document' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.viewJsonValueEnabled(),
|
||||
onClick: () => getCurrentDataGrid().viewJsonValue(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.openJsonArrayInSheet',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.openJsonArrayInSheet', { defaultMessage: 'Open array as table' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.openJsonArrayInSheet', { defaultMessage: 'Open array as table' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.openJsonArrayInSheetEnabled(),
|
||||
onClick: () => getCurrentDataGrid().openJsonArrayInSheet(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.saveCellToFile',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.saveCellToFile', { defaultMessage: 'Save cell to file' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.saveCellToFile', { defaultMessage: 'Save cell to file' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.saveCellToFileEnabled(),
|
||||
onClick: () => getCurrentDataGrid().saveCellToFile(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'dataGrid.loadCellFromFile',
|
||||
category: 'Data grid',
|
||||
name: _t('command.datagrid.loadCellFromFile', { defaultMessage: 'Load cell from file' }),
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.loadCellFromFile', { defaultMessage: 'Load cell from file' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.loadCellFromFileEnabled(),
|
||||
onClick: () => getCurrentDataGrid().loadCellFromFile(),
|
||||
});
|
||||
@@ -216,62 +216,62 @@
|
||||
//
|
||||
registerCommand({
|
||||
id: 'dataGrid.filterSelected',
|
||||
category: 'Data grid',
|
||||
name: 'Filter selected value',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.filterSelected', { defaultMessage : 'Filter selected value'}),
|
||||
keyText: 'CtrlOrCommand+Shift+F',
|
||||
testEnabled: () => getCurrentDataGrid()?.getDisplay().filterable,
|
||||
onClick: () => getCurrentDataGrid().filterSelectedValue(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.findColumn',
|
||||
category: 'Data grid',
|
||||
name: 'Find column',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.findColumn', { defaultMessage: 'Find column'}),
|
||||
keyText: 'CtrlOrCommand+F',
|
||||
testEnabled: () => getCurrentDataGrid() != null,
|
||||
getSubCommands: () => getCurrentDataGrid().buildFindMenu(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.hideColumn',
|
||||
category: 'Data grid',
|
||||
name: 'Hide column',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datgrid.hideColumn', { defaultMessage: 'Hide column' }),
|
||||
keyText: isMac() ? 'Alt+Command+F' : 'CtrlOrCommand+H',
|
||||
testEnabled: () => getCurrentDataGrid()?.canShowLeftPanel(),
|
||||
onClick: () => getCurrentDataGrid().hideColumn(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.clearFilter',
|
||||
category: 'Data grid',
|
||||
name: 'Clear filter',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.clearFilter', { defaultMessage : 'Clear filter'}),
|
||||
keyText: 'CtrlOrCommand+Shift+E',
|
||||
testEnabled: () => getCurrentDataGrid()?.clearFilterEnabled(),
|
||||
onClick: () => getCurrentDataGrid().clearFilter(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.generateSqlFromData',
|
||||
category: 'Data grid',
|
||||
name: 'Generate SQL',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.generateSql', { defaultMessage: 'Generate SQL'}),
|
||||
keyText: 'CtrlOrCommand+G',
|
||||
testEnabled: () => getCurrentDataGrid()?.generateSqlFromDataEnabled(),
|
||||
onClick: () => getCurrentDataGrid().generateSqlFromData(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.openFreeTable',
|
||||
category: 'Data grid',
|
||||
name: 'Edit selection as table',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.editSelection', { defaultMessage: 'Edit selection as table'}),
|
||||
testEnabled: () => getCurrentDataGrid() != null,
|
||||
onClick: () => getCurrentDataGrid().openFreeTable(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.newJson',
|
||||
category: 'Data grid',
|
||||
name: 'Add JSON document',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.addJsonDocument', { defaultMessage: 'Add JSON document'}),
|
||||
testEnabled: () => getCurrentDataGrid()?.addJsonDocumentEnabled(),
|
||||
onClick: () => getCurrentDataGrid().addJsonDocument(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'dataGrid.editCellValue',
|
||||
category: 'Data grid',
|
||||
name: 'Edit cell value',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.editCell', { defaultMessage: 'Edit cell value' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.editCellValueEnabled(),
|
||||
onClick: () => getCurrentDataGrid().editCellValue(),
|
||||
});
|
||||
@@ -279,8 +279,8 @@
|
||||
if (isProApp()) {
|
||||
registerCommand({
|
||||
id: 'dataGrid.sendToDataDeploy',
|
||||
category: 'Data grid',
|
||||
name: 'Send to data deployer',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.sendToDataDeployer', { defaultMessage: 'Send to data deployer' }),
|
||||
testEnabled: () => getCurrentDataGrid()?.sendToDataDeployEnabled(),
|
||||
onClick: () => getCurrentDataGrid().sendToDataDeploy(),
|
||||
});
|
||||
@@ -421,7 +421,7 @@
|
||||
import { openJsonLinesData } from '../utility/openJsonLinesData';
|
||||
import contextMenuActivator from '../utility/contextMenuActivator';
|
||||
import InputTextModal from '../modals/InputTextModal.svelte';
|
||||
import { _t } from '../translations';
|
||||
import { __t, _t } from '../translations';
|
||||
import { isProApp } from '../utility/proTools';
|
||||
import SaveArchiveModal from '../modals/SaveArchiveModal.svelte';
|
||||
import hasPermission from '../utility/hasPermission';
|
||||
@@ -1792,15 +1792,15 @@
|
||||
{ command: 'dataGrid.refresh' },
|
||||
{ placeTag: 'copy' },
|
||||
{
|
||||
text: 'Copy advanced',
|
||||
text: _t('datagrid.copyAdvanced', { defaultMessage: 'Copy advanced'}),
|
||||
submenu: [
|
||||
_.keys(copyRowsFormatDefs).map(format => ({
|
||||
text: copyRowsFormatDefs[format].label,
|
||||
text: _.isFunction(copyRowsFormatDefs[format].label) ? copyRowsFormatDefs[format].label() : copyRowsFormatDefs[format].label,
|
||||
onClick: () => copyToClipboardCore(format),
|
||||
})),
|
||||
{ divider: true },
|
||||
_.keys(copyRowsFormatDefs).map(format => ({
|
||||
text: `Set format: ${copyRowsFormatDefs[format].name}`,
|
||||
text: _t('datagrid.setFormat', { defaultMessage: 'Set format: ' }) + (_.isFunction(copyRowsFormatDefs[format].name) ? copyRowsFormatDefs[format].name() : copyRowsFormatDefs[format].name),
|
||||
onClick: () => ($copyRowsFormat = format),
|
||||
})),
|
||||
|
||||
@@ -1870,7 +1870,7 @@
|
||||
return [
|
||||
menu,
|
||||
{
|
||||
text: copyRowsFormatDefs[$copyRowsFormat].label,
|
||||
text: _.isFunction(copyRowsFormatDefs[$copyRowsFormat].label) ? copyRowsFormatDefs[$copyRowsFormat].label() : copyRowsFormatDefs[$copyRowsFormat].label,
|
||||
onClick: () => copyToClipboardCore($copyRowsFormat),
|
||||
keyText: 'CtrlOrCommand+C',
|
||||
tag: 'copy',
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
import TokenizedFilteredText from '../widgets/TokenizedFilteredText.svelte';
|
||||
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let managerSize;
|
||||
export let display: GridDisplay;
|
||||
export let onReferenceClick = ref => {};
|
||||
@@ -24,12 +26,12 @@
|
||||
</script>
|
||||
|
||||
<SearchBoxWrapper>
|
||||
<SearchInput placeholder="Search references" bind:value={filter} />
|
||||
<SearchInput placeholder={_t('dataGrid.searchReferences', { defaultMessage: 'Search references' })} bind:value={filter} />
|
||||
<CloseSearchButton bind:filter />
|
||||
</SearchBoxWrapper>
|
||||
<ManagerInnerContainer width={managerSize}>
|
||||
{#if foreignKeys.length > 0}
|
||||
<div class="bold nowrap ml-1">References tables ({foreignKeys.length})</div>
|
||||
<div class="bold nowrap ml-1">{_t('dataGrid.referencesTables', { defaultMessage: 'References tables' })} ({foreignKeys.length})</div>
|
||||
{#each foreignKeys.filter(fk => filterName(filter, fk.refTableName)) as fk}
|
||||
<div
|
||||
class="link"
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
<script context="module" lang="ts">
|
||||
import { __t } from '../translations'
|
||||
const getCurrentEditor = () => getActiveComponent('SqlDataGridCore');
|
||||
|
||||
registerCommand({
|
||||
id: 'sqlDataGrid.openQuery',
|
||||
category: 'Data grid',
|
||||
name: 'Open query',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.openQuery', { defaultMessage : 'Open query' }),
|
||||
testEnabled: () => getCurrentEditor() != null && hasPermission('dbops/query'),
|
||||
onClick: () => getCurrentEditor().openQuery(),
|
||||
});
|
||||
|
||||
registerCommand({
|
||||
id: 'sqlDataGrid.export',
|
||||
category: 'Data grid',
|
||||
name: 'Export',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('common.export', { defaultMessage : 'Export' }),
|
||||
icon: 'icon export',
|
||||
keyText: 'CtrlOrCommand+E',
|
||||
testEnabled: () => getCurrentEditor() != null && hasPermission('dbops/export'),
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
import ObjectListControl from '../elements/ObjectListControl.svelte';
|
||||
import Link from './Link.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let collection;
|
||||
export let title;
|
||||
@@ -24,18 +25,18 @@
|
||||
columns={[
|
||||
{
|
||||
fieldName: 'baseColumns',
|
||||
header: 'Base columns',
|
||||
header: _t('foreignKey.baseColumns', { defaultMessage: 'Base columns' }),
|
||||
slot: 0,
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
fieldName: 'refTableName',
|
||||
header: 'Referenced table',
|
||||
header: _t('foreignKey.refTableName', { defaultMessage: 'Referenced table' }),
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
fieldName: 'refColumns',
|
||||
header: 'Referenced columns',
|
||||
header: _t('foreignKey.refColumns', { defaultMessage: 'Referenced columns' }),
|
||||
slot: 1,
|
||||
sortable: true,
|
||||
},
|
||||
@@ -60,5 +61,5 @@
|
||||
<svelte:fragment slot="name" let:row><ConstraintLabel {...row} /></svelte:fragment>
|
||||
<svelte:fragment slot="0" let:row>{row?.columns.map(x => x.columnName).join(', ')}</svelte:fragment>
|
||||
<svelte:fragment slot="1" let:row>{row?.columns.map(x => x.refColumnName).join(', ')}</svelte:fragment>
|
||||
<svelte:fragment slot="2" let:row><Link onClick={() => onRemove(row)}>Remove</Link></svelte:fragment>
|
||||
<svelte:fragment slot="2" let:row><Link onClick={() => onRemove(row)}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link></svelte:fragment>
|
||||
</ObjectListControl>
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
import Link from './Link.svelte';
|
||||
import TableControl from './TableControl.svelte';
|
||||
import { writable } from 'svelte/store';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let title;
|
||||
export let collection;
|
||||
@@ -39,7 +40,7 @@
|
||||
</span>
|
||||
<span class="title mr-1">{title}</span>
|
||||
{#if onAddNew}
|
||||
<Link onClick={onAddNew}><FontIcon icon="icon add" /> Add new</Link>
|
||||
<Link onClick={onAddNew}><FontIcon icon="icon add" />{_t('common.addNew', { defaultMessage: 'Add new' })}</Link>
|
||||
{/if}
|
||||
{#if multipleItemsActions && activeMultipleSelection && activeMultipleSelection?.length > 0}
|
||||
{#each multipleItemsActions as item}
|
||||
@@ -65,7 +66,7 @@
|
||||
columns={_.compact([
|
||||
!hideDisplayName && {
|
||||
fieldName: displayNameFieldName || 'displayName',
|
||||
header: 'Name',
|
||||
header: _t('common.name', { defaultMessage: 'Name' }),
|
||||
slot: -1,
|
||||
sortable: true,
|
||||
filterable: !!displayNameFieldName,
|
||||
|
||||
@@ -368,7 +368,7 @@
|
||||
{/if}
|
||||
{/key}
|
||||
{:else}
|
||||
{row[col.fieldName] || ''}
|
||||
{ _.isFunction(row[col.fieldName]) ? row[col.fieldName]() : row[col.fieldName] || ''}
|
||||
{/if}
|
||||
</td>
|
||||
{/each}
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
import FormViewFilterColumn from './FormViewFilterColumn.svelte';
|
||||
import { stringFilterBehaviour } from 'dbgate-tools';
|
||||
import CheckboxField from '../forms/CheckboxField.svelte';
|
||||
import { _t } from '../translations';
|
||||
// import PrimaryKeyFilterEditor from './PrimaryKeyFilterEditor.svelte';
|
||||
|
||||
export let managerSize;
|
||||
@@ -36,7 +37,7 @@
|
||||
|
||||
{#if isFormView}
|
||||
<div class="m-1">
|
||||
<div>Column name filter</div>
|
||||
<div>{_t('datagrid.columnNameFilter', { defaultMessage: 'Column name filter' })}</div>
|
||||
<div class="flex">
|
||||
<input
|
||||
type="text"
|
||||
@@ -63,7 +64,7 @@
|
||||
{#if hasMultiColumnFilter}
|
||||
<div class="m-1">
|
||||
<div class="space-between">
|
||||
<span>Multi column filter</span>
|
||||
<span>{_t('dataGrid.multiColumnFilter', { defaultMessage: 'Multi column filter' })}</span>
|
||||
{#if multiColumnFilter}
|
||||
<div class="flex items-center gap-2">
|
||||
<CheckboxField
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
import MacroHeader from './MacroHeader.svelte';
|
||||
import MacroInfoTab from './MacroInfoTab.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
const selectedMacro = getContext('selectedMacro') as any;
|
||||
|
||||
@@ -17,7 +18,7 @@
|
||||
<TabControl
|
||||
tabs={[
|
||||
{
|
||||
label: 'Macro detail',
|
||||
label: _t('datagrid.macros.detail', { defaultMessage: 'Macro detail' }),
|
||||
component: MacroInfoTab,
|
||||
props: {
|
||||
onExecute,
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import { getContext } from 'svelte';
|
||||
import FontIcon from '../icons/FontIcon.svelte';
|
||||
import ToolbarButton from '../buttons/ToolbarButton.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let onExecute;
|
||||
|
||||
@@ -16,8 +17,8 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<ToolbarButton icon="icon run" on:click={onExecute}>Execute</ToolbarButton>
|
||||
<ToolbarButton icon="icon close" on:click={() => ($selectedMacro = null)}>Close</ToolbarButton>
|
||||
<ToolbarButton icon="icon run" on:click={onExecute}>{_t('common.execute', { defaultMessage: 'Execute' })}</ToolbarButton>
|
||||
<ToolbarButton icon="icon close" on:click={() => ($selectedMacro = null)}>{_t('common.close', { defaultMessage: 'Close' })}</ToolbarButton>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
import WidgetTitle from '../widgets/WidgetTitle.svelte';
|
||||
import MacroParameters from './MacroParameters.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
const selectedMacro = getContext('selectedMacro') as any;
|
||||
|
||||
@@ -13,23 +14,23 @@
|
||||
|
||||
<div class="wrapper">
|
||||
<div class="section">
|
||||
<WidgetTitle>Execute</WidgetTitle>
|
||||
<FormStyledButton value="Execute" on:click={onExecute} />
|
||||
<WidgetTitle>{_t('common.execute', { defaultMessage: 'Execute' })}</WidgetTitle>
|
||||
<FormStyledButton value={_t('common.execute', { defaultMessage: 'Execute' })} on:click={onExecute} />
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<WidgetTitle>Parameters</WidgetTitle>
|
||||
<WidgetTitle>{_t('common.parameters', { defaultMessage: 'Parameters' })}</WidgetTitle>
|
||||
{#if $selectedMacro?.args && $selectedMacro?.args?.length > 0}
|
||||
{#key $selectedMacro?.name}
|
||||
<MacroParameters args={$selectedMacro?.args||[]} namePrefix={`${$selectedMacro?.name}#`} />
|
||||
{/key}
|
||||
{:else}
|
||||
<div class="m-1">This macro has no parameters</div>
|
||||
<div class="m-1">{_t('datagrid.macros.noParameters', { defaultMessage: 'This macro has no parameters' })}</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<WidgetTitle>Description</WidgetTitle>
|
||||
<WidgetTitle>{_t('common.description', { defaultMessage: 'Description' })}</WidgetTitle>
|
||||
<div class="m-1">{$selectedMacro?.description}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
import SearchBoxWrapper from '../elements/SearchBoxWrapper.svelte';
|
||||
import SearchInput from '../elements/SearchInput.svelte';
|
||||
import macros from './macros';
|
||||
import { _t } from '../translations';
|
||||
|
||||
let filter = '';
|
||||
export let managerSize;
|
||||
@@ -16,7 +17,7 @@
|
||||
|
||||
<ManagerInnerContainer width={managerSize}>
|
||||
<SearchBoxWrapper>
|
||||
<SearchInput placeholder="Search macros" bind:value={filter} />
|
||||
<SearchInput placeholder={_t('datagrid.searchMacros', { defaultMessage: "Search macros"})} bind:value={filter} />
|
||||
</SearchBoxWrapper>
|
||||
<AppObjectList
|
||||
list={_.sortBy(macros, 'title').filter(x => (macroCondition ? macroCondition(x) : true))}
|
||||
|
||||
@@ -1,37 +1,39 @@
|
||||
import { __t } from '../translations';
|
||||
|
||||
const macros = [
|
||||
{
|
||||
title: 'Remove diacritics',
|
||||
title: __t('datagrid.macros.removeDiacritics', { defaultMessage: 'Remove diacritics' }),
|
||||
name: 'removeDiacritics',
|
||||
group: 'Text',
|
||||
description: 'Removes diacritics from selected cells',
|
||||
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||
description: __t('datagrid.macros.removeDiacriticsDescription', { defaultMessage: 'Removes diacritics from selected cells' }),
|
||||
type: 'transformValue',
|
||||
code: `return modules.lodash.deburr(value)`,
|
||||
},
|
||||
{
|
||||
title: 'Search & replace text',
|
||||
title: __t('datagrid.macros.searchReplaceText', { defaultMessage: 'Search & replace text' }),
|
||||
name: 'stringReplace',
|
||||
group: 'Text',
|
||||
description: 'Search & replace text or regular expression',
|
||||
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||
description: __t('datagrid.macros.searchReplaceTextDescription', { defaultMessage: 'Search & replace text or regular expression' }),
|
||||
type: 'transformValue',
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Find',
|
||||
label: __t('datagrid.macros.searchReplaceTextFind', { defaultMessage: 'Find' }),
|
||||
name: 'find',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Replace with',
|
||||
label: __t('datagrid.macros.searchReplaceTextReplaceWith', { defaultMessage: 'Replace with' }),
|
||||
name: 'replace',
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
label: 'Case sensitive',
|
||||
label: __t('datagrid.macros.searchReplaceTextCaseSensitive', { defaultMessage: 'Case sensitive' }),
|
||||
name: 'caseSensitive',
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
label: 'Regular expression',
|
||||
label: __t('datagrid.macros.searchReplaceTextIsRegex', { defaultMessage: 'Regular expression' }),
|
||||
name: 'isRegex',
|
||||
},
|
||||
],
|
||||
@@ -42,16 +44,16 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
||||
`,
|
||||
},
|
||||
{
|
||||
title: 'Change text case',
|
||||
title: __t('datagrid.macros.changeTextCase', { defaultMessage: 'Change text case' }),
|
||||
name: 'changeTextCase',
|
||||
group: 'Text',
|
||||
description: 'Uppercase, lowercase and other case functions',
|
||||
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||
description: __t('datagrid.macros.changeTextCaseDescription', { defaultMessage: 'Uppercase, lowercase and other case functions' }),
|
||||
type: 'transformValue',
|
||||
args: [
|
||||
{
|
||||
type: 'select',
|
||||
options: ['toUpper', 'toLower', 'lowerCase', 'upperCase', 'kebabCase', 'snakeCase', 'camelCase', 'startCase'],
|
||||
label: 'Type',
|
||||
label: __t('datagrid.macros.changeTextCaseType', { defaultMessage: 'Type' }),
|
||||
name: 'type',
|
||||
default: 'toUpper',
|
||||
},
|
||||
@@ -59,81 +61,81 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
||||
code: `return modules.lodash[args.type](value)`,
|
||||
},
|
||||
{
|
||||
title: 'Pad left',
|
||||
title: __t('datagrid.macros.padLeft', { defaultMessage: 'Pad left' }),
|
||||
name: 'padLeft',
|
||||
group: 'Text',
|
||||
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Character',
|
||||
label: __t('datagrid.macros.padCharacter', { defaultMessage: 'Character' }),
|
||||
name: 'character',
|
||||
default: '0',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Length',
|
||||
label: __t('datagrid.macros.padLength', { defaultMessage: 'Length' }),
|
||||
name: 'length',
|
||||
default: '3',
|
||||
},
|
||||
],
|
||||
description:
|
||||
'Returns string of a specified length in which the beginning of the current string is padded with spaces or other character',
|
||||
__t('datagrid.macros.padLeftDescription', { defaultMessage: 'Returns string of a specified length in which the beginning of the current string is padded with spaces or other character' }),
|
||||
type: 'transformValue',
|
||||
code: `return modules.lodash.padStart(value, +args.length, args.character)`,
|
||||
},
|
||||
{
|
||||
title: 'Pad right',
|
||||
title: __t('datagrid.macros.padRight', { defaultMessage: 'Pad right' }),
|
||||
name: 'padRight',
|
||||
group: 'Text',
|
||||
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Character',
|
||||
label: __t('datagrid.macros.padCharacter', { defaultMessage: 'Character' }),
|
||||
name: 'character',
|
||||
default: '0',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Length',
|
||||
label: __t('datagrid.macros.padLength', { defaultMessage: 'Length' }),
|
||||
name: 'length',
|
||||
default: '3',
|
||||
},
|
||||
],
|
||||
description:
|
||||
'Returns string of a specified length in which the end of the current string is padded with spaces or other character',
|
||||
__t('datagrid.macros.padRightDescription', { defaultMessage: 'Returns string of a specified length in which the end of the current string is padded with spaces or other character' }),
|
||||
type: 'transformValue',
|
||||
code: `return modules.lodash.padEnd(value, +args.length, args.character)`,
|
||||
},
|
||||
{
|
||||
title: 'Trim',
|
||||
title: __t('datagrid.macros.trim', { defaultMessage: 'Trim' }),
|
||||
name: 'trim',
|
||||
group: 'Text',
|
||||
description: 'Removes leading and trailing whitespace ',
|
||||
group: __t('datagrid.macros.textGroup', { defaultMessage: 'Text' }),
|
||||
description: __t('datagrid.macros.trimDescription', { defaultMessage: 'Removes leading and trailing whitespace' }),
|
||||
type: 'transformValue',
|
||||
code: `return modules.lodash.trim(value)`,
|
||||
},
|
||||
{
|
||||
title: 'Row index',
|
||||
title: __t('datagrid.macros.rowIndex', { defaultMessage: 'Row index' }),
|
||||
name: 'rowIndex',
|
||||
group: 'Tools',
|
||||
description: 'Index of row from 1 (autoincrement)',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.rowIndexDescription', { defaultMessage: 'Index of row from 1 (autoincrement)' }),
|
||||
type: 'transformValue',
|
||||
code: `return rowIndex + 1`,
|
||||
},
|
||||
{
|
||||
title: 'Generate UUID',
|
||||
title: __t('datagrid.macros.generateUUID', { defaultMessage: 'Generate UUID' }),
|
||||
name: 'uuidv1',
|
||||
group: 'Tools',
|
||||
description: 'Generate unique identifier',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.generateUUIDDescription', { defaultMessage: 'Generate unique identifier' }),
|
||||
type: 'transformValue',
|
||||
args: [
|
||||
{
|
||||
type: 'select',
|
||||
options: [
|
||||
{ value: 'uuidv1', name: 'V1 - from timestamp' },
|
||||
{ value: 'uuidv4', name: 'V4 - random generated' },
|
||||
{ value: 'uuidv4', name: 'V4 - random generated'},
|
||||
],
|
||||
label: 'Version',
|
||||
label: __t('datagrid.macros.version', { defaultMessage: 'Version' }),
|
||||
name: 'version',
|
||||
default: 'uuidv1',
|
||||
},
|
||||
@@ -141,26 +143,26 @@ return value ? value.toString().replace(new RegExp(rtext, rflags), args.replace
|
||||
code: `return modules[args.version]()`,
|
||||
},
|
||||
{
|
||||
title: 'Convert to integer',
|
||||
title: __t('datagrid.macros.toInt', { defaultMessage: 'Convert to integer' }),
|
||||
name: 'toInt',
|
||||
group: 'Tools',
|
||||
description: 'Converts to integral number',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.toIntDescription', { defaultMessage: 'Converts to integral number' }),
|
||||
type: 'transformValue',
|
||||
code: `return modules.lodash.isNaN(parseInt(value)) ? null : parseInt(value)`,
|
||||
},
|
||||
{
|
||||
title: 'Convert to number',
|
||||
title: __t('datagrid.macros.toNumber', { defaultMessage: 'Convert to number' }),
|
||||
name: 'toNumber',
|
||||
group: 'Tools',
|
||||
description: 'Converts to number',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.toNumberDescription', { defaultMessage: 'Converts to number' }),
|
||||
type: 'transformValue',
|
||||
code: `return modules.lodash.isNaN(parseFloat(value)) ? null : parseFloat(value)`,
|
||||
},
|
||||
{
|
||||
title: 'Convert to boolean',
|
||||
title: __t('datagrid.macros.toBoolean', { defaultMessage: 'Convert to boolean' }),
|
||||
name: 'toBoolean',
|
||||
group: 'Tools',
|
||||
description: 'Converts to boolean',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.toBooleanDescription', { defaultMessage: 'Converts to boolean' }),
|
||||
type: 'transformValue',
|
||||
code: `
|
||||
if (modules.lodash.isString(value)) {
|
||||
@@ -176,10 +178,10 @@ return !!value;
|
||||
`,
|
||||
},
|
||||
{
|
||||
title: 'Convert to string',
|
||||
title: __t('datagrid.macros.toString', { defaultMessage: 'Convert to string' }),
|
||||
name: 'toString',
|
||||
group: 'Tools',
|
||||
description: 'Converts to string',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.toStringDescription', { defaultMessage: 'Converts to string' }),
|
||||
type: 'transformValue',
|
||||
code: `
|
||||
if (value==null) return null;
|
||||
@@ -188,15 +190,15 @@ return !!value;
|
||||
`,
|
||||
},
|
||||
{
|
||||
title: 'Current date',
|
||||
title: __t('datagrid.macros.currentDate', { defaultMessage: 'Current date' }),
|
||||
name: 'currentDate',
|
||||
group: 'Tools',
|
||||
description: 'Gets current date',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.currentDateDescription', { defaultMessage: 'Gets current date' }),
|
||||
type: 'transformValue',
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Format',
|
||||
label: __t('datagrid.macros.format', { defaultMessage: 'Format' }),
|
||||
name: 'format',
|
||||
default: 'YYYY-MM-DD HH:mm:ss',
|
||||
},
|
||||
@@ -204,10 +206,10 @@ return !!value;
|
||||
code: `return modules.moment().format(args.format)`,
|
||||
},
|
||||
{
|
||||
title: 'Duplicate columns',
|
||||
title: __t('datagrid.macros.duplicateColumns', { defaultMessage: 'Duplicate columns' }),
|
||||
name: 'duplicateColumns',
|
||||
group: 'Tools',
|
||||
description: 'Duplicate selected columns',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.duplicateColumnsDescription', { defaultMessage: 'Duplicate selected columns' }),
|
||||
type: 'transformRow',
|
||||
code: `
|
||||
return {
|
||||
@@ -218,22 +220,22 @@ return !!value;
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Prefix',
|
||||
label: __t('datagrid.macros.prefix', { defaultMessage: 'Prefix' }),
|
||||
name: 'prefix',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Postfix',
|
||||
label: __t('datagrid.macros.postfix', { defaultMessage: 'Postfix' }),
|
||||
name: 'postfix',
|
||||
default: '_copy',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Split columns',
|
||||
title: __t('datagrid.macros.splitColumns', { defaultMessage: 'Split columns' }),
|
||||
name: 'splitColumns',
|
||||
group: 'Tools',
|
||||
description: 'Split selected columns',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.splitColumnsDescription', { defaultMessage: 'Split selected columns' }),
|
||||
type: 'transformRow',
|
||||
code: `
|
||||
const res = {...row};
|
||||
@@ -252,22 +254,22 @@ return !!value;
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Delimiter',
|
||||
label: __t('datagrid.macros.delimiter', { defaultMessage: 'Delimiter' }),
|
||||
name: 'delimiter',
|
||||
default: ',',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Calculation',
|
||||
title: __t('datagrid.macros.calculation', { defaultMessage: 'Calculation' }),
|
||||
name: 'calculation',
|
||||
group: 'Tools',
|
||||
description: 'Custom expression. Use row.column_name for accessing column values, value for original value',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.calculationDescription', { defaultMessage: 'Custom expression. Use row.column_name for accessing column values, value for original value' }),
|
||||
type: 'transformValue',
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Expression',
|
||||
label: __t('datagrid.macros.expression', { defaultMessage: 'Expression' }),
|
||||
name: 'expression',
|
||||
default: 'value',
|
||||
},
|
||||
@@ -275,10 +277,10 @@ return !!value;
|
||||
code: `return eval(args.expression);`,
|
||||
},
|
||||
{
|
||||
title: 'Extract date fields',
|
||||
title: __t('datagrid.macros.extractDateFields', { defaultMessage: 'Extract date fields' }),
|
||||
name: 'extractDateFields',
|
||||
group: 'Tools',
|
||||
description: 'Extract yaear, month, day and other date/time fields from selection and adds it as new columns',
|
||||
group: __t('datagrid.macros.toolsGroup', { defaultMessage: 'Tools' }),
|
||||
description: __t('datagrid.macros.extractDateFieldsDescription', { defaultMessage: 'Extract year, month, day and other date/time fields from selection and adds it as new columns' }),
|
||||
type: 'transformRow',
|
||||
code: `
|
||||
let mom = null;
|
||||
@@ -311,37 +313,37 @@ return !!value;
|
||||
args: [
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Year name',
|
||||
label: __t('datagrid.macros.yearName', { defaultMessage: 'Year name' }),
|
||||
name: 'year',
|
||||
default: 'year',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Month name',
|
||||
label: __t('datagrid.macros.monthName', { defaultMessage: 'Month name' }) ,
|
||||
name: 'month',
|
||||
default: 'month',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Day name',
|
||||
label: __t('datagrid.macros.dayName', { defaultMessage: 'Day name' }),
|
||||
name: 'day',
|
||||
default: 'day',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Hour name',
|
||||
label: __t('datagrid.macros.hourName', { defaultMessage: 'Hour name' }),
|
||||
name: 'hour',
|
||||
default: 'hour',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Minute name',
|
||||
label: __t('datagrid.macros.minuteName', { defaultMessage: 'Minute name' }),
|
||||
name: 'minute',
|
||||
default: 'minute',
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
label: 'Second name',
|
||||
label: __t('datagrid.macros.secondName', { defaultMessage: 'Second name' }),
|
||||
name: 'second',
|
||||
default: 'second',
|
||||
},
|
||||
|
||||
@@ -9,6 +9,8 @@
|
||||
import ModalBase from './ModalBase.svelte';
|
||||
import { closeCurrentModal } from './modalTools';
|
||||
import { commandsCustomized } from '../stores';
|
||||
import { _t } from '../translations';
|
||||
import _ from 'lodash';
|
||||
|
||||
export let tabs;
|
||||
export let onConfirm;
|
||||
@@ -27,10 +29,10 @@
|
||||
|
||||
<FormProvider>
|
||||
<ModalBase {...$$restProps}>
|
||||
<svelte:fragment slot="header">Confirm close tabs</svelte:fragment>
|
||||
<svelte:fragment slot="header">{_t('datagrid.closeTabs.header', { defaultMessage: 'Confirm close tabs' })}</svelte:fragment>
|
||||
|
||||
<div>
|
||||
Following files are modified, really close tabs? After closing, you could reopen them in history
|
||||
{_t('datagrid.closeTabs.modifiedFiles', { defaultMessage: 'Following files are modified, really close tabs? After closing, you could reopen them in history' })}
|
||||
<FontIcon icon="icon history" />
|
||||
widget
|
||||
</div>
|
||||
@@ -41,7 +43,7 @@
|
||||
|
||||
<svelte:fragment slot="footer">
|
||||
<FormSubmit
|
||||
value="Close tabs"
|
||||
value={_t('datagrid.closeTabs.close', { defaultMessage: 'Close tabs' })}
|
||||
on:click={() => {
|
||||
closeCurrentModal();
|
||||
onConfirm();
|
||||
@@ -49,7 +51,7 @@
|
||||
/>
|
||||
<FormStyledButton
|
||||
type="button"
|
||||
value="Cancel"
|
||||
value={_t('common.cancel', { defaultMessage: 'Cancel' })}
|
||||
on:click={() => {
|
||||
closeCurrentModal();
|
||||
onCancel();
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
import { isProApp } from '../utility/proTools';
|
||||
import ModalBase from './ModalBase.svelte';
|
||||
import { closeCurrentModal } from './modalTools';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let multiTabIndex = undefined;
|
||||
|
||||
@@ -14,8 +15,8 @@
|
||||
{
|
||||
icon: 'icon sql-file',
|
||||
colorClass: 'color-icon-blue',
|
||||
title: 'Query',
|
||||
description: 'SQL query editor',
|
||||
title: _t('common.query', { defaultMessage: 'Query' }),
|
||||
description: _t('common.queryEditor', { defaultMessage: 'SQL query editor' }),
|
||||
action: () => {
|
||||
newQuery({ multiTabIndex });
|
||||
},
|
||||
@@ -25,47 +26,47 @@
|
||||
{
|
||||
icon: 'icon connection',
|
||||
colorClass: 'color-icon-yellow',
|
||||
title: 'Connection',
|
||||
description: 'Database connection stored locally',
|
||||
title: _t('common.connection', { defaultMessage: 'Connection' }),
|
||||
description: _t('newObject.connectionLocal', { defaultMessage: 'Database connection stored locally' }),
|
||||
command: 'new.connection',
|
||||
changeWidget: 'database',
|
||||
testid: 'NewObjectModal_connection',
|
||||
disabledMessage: 'You are not allowed to create new connections',
|
||||
disabledMessage: _t('newObject.connectionLocalDisabled', { defaultMessage: 'You are not allowed to create new connections' }),
|
||||
},
|
||||
{
|
||||
icon: 'icon cloud-connection',
|
||||
colorClass: 'color-icon-blue',
|
||||
title: 'Connection on Cloud',
|
||||
description: 'Database connection stored on DbGate Cloud',
|
||||
title: _t('common.connectionOnCloud', { defaultMessage: 'Connection on Cloud' }),
|
||||
description: _t('newObject.connectionOnCloudDescription', { defaultMessage: 'Database connection stored on DbGate Cloud' }),
|
||||
command: 'new.connectionOnCloud',
|
||||
changeWidget: 'cloud-private',
|
||||
testid: 'NewObjectModal_connectionOnCloud',
|
||||
disabledMessage: 'For creating connections on DbGate Cloud, you need to be logged in',
|
||||
disabledMessage: _t('newObject.connectionOnCloudDisabled', { defaultMessage: 'For creating connections on DbGate Cloud, you need to be logged in' }),
|
||||
},
|
||||
{
|
||||
icon: 'icon query-design',
|
||||
colorClass: 'color-icon-red',
|
||||
title: 'Query Designer',
|
||||
description: 'Design SQL queries visually',
|
||||
title: _t('common.queryDesigner', { defaultMessage: 'Query Designer' }),
|
||||
description: _t('newObject.queryDesignerDescription', { defaultMessage: 'Design SQL queries visually' }),
|
||||
command: 'new.queryDesign',
|
||||
testid: 'NewObjectModal_queryDesign',
|
||||
disabledMessage: 'Query Designer is not available for current database',
|
||||
disabledMessage: _t('newObject.queryDesignerDisabled', { defaultMessage: 'Query Designer is not available for current database' }),
|
||||
isProFeature: true,
|
||||
},
|
||||
{
|
||||
icon: 'icon diagram',
|
||||
colorClass: 'color-icon-blue',
|
||||
title: 'ER Diagram',
|
||||
description: 'Visualize database structure',
|
||||
title: _t('common.erDiagram', { defaultMessage: 'ER Diagram' }),
|
||||
description: _t('newObject.erDiagramDescription', { defaultMessage: 'Visualize database structure' }),
|
||||
command: 'new.diagram',
|
||||
testid: 'NewObjectModal_diagram',
|
||||
disabledMessage: 'ER Diagram is not available for current database',
|
||||
disabledMessage: _t('newObject.erDiagramDisabled', { defaultMessage: 'ER Diagram is not available for current database' }),
|
||||
},
|
||||
{
|
||||
icon: 'icon perspective',
|
||||
colorClass: 'color-icon-yellow',
|
||||
title: 'Perspective',
|
||||
description: 'Join complex data from multiple databases',
|
||||
title: _t('common.perspective', { defaultMessage: 'Perspective' }),
|
||||
description: _t('newObject.perspectiveDescription', { defaultMessage: 'Join complex data from multiple databases' }),
|
||||
command: 'new.perspective',
|
||||
testid: 'NewObjectModal_perspective',
|
||||
isProFeature: true,
|
||||
@@ -73,56 +74,56 @@
|
||||
{
|
||||
icon: 'icon table',
|
||||
colorClass: 'color-icon-blue',
|
||||
title: 'Table',
|
||||
description: 'Create table in the current database',
|
||||
title: _t('common.table', { defaultMessage: 'Table' }),
|
||||
description: _t('newObject.tableDescription', { defaultMessage: 'Create table in the current database' }),
|
||||
command: 'new.table',
|
||||
testid: 'NewObjectModal_table',
|
||||
disabledMessage: 'Table creation is not available for current database',
|
||||
disabledMessage: _t('newObject.tableDisabled', { defaultMessage: 'Table creation is not available for current database' }),
|
||||
},
|
||||
{
|
||||
icon: 'icon sql-generator',
|
||||
colorClass: 'color-icon-green',
|
||||
title: 'SQL Generator',
|
||||
description: 'Generate SQL scripts for database objects',
|
||||
title: _t('common.sqlGenerator', { defaultMessage: 'SQL Generator' }),
|
||||
description: _t('newObject.sqlGeneratorDescription', { defaultMessage: 'Generate SQL scripts for database objects' }),
|
||||
command: 'sql.generator',
|
||||
testid: 'NewObjectModal_sqlGenerator',
|
||||
disabledMessage: 'SQL Generator is not available for current database',
|
||||
disabledMessage: _t('newObject.sqlGeneratorDisabled', { defaultMessage: 'SQL Generator is not available for current database' }),
|
||||
},
|
||||
{
|
||||
icon: 'icon export',
|
||||
colorClass: 'color-icon-green',
|
||||
title: 'Export database',
|
||||
description: 'Export to file like CSV, JSON, Excel, or other DB',
|
||||
title: _t('common.exportDatabase', { defaultMessage: 'Export database' }),
|
||||
description: _t('newObject.exportDescription', { defaultMessage: 'Export to file like CSV, JSON, Excel, or other DB' }),
|
||||
command: 'database.export',
|
||||
isProFeature: true,
|
||||
testid: 'NewObjectModal_databaseExport',
|
||||
disabledMessage: 'Export is not available for current database',
|
||||
disabledMessage: _t('newObject.exportDisabled', { defaultMessage: 'Export is not available for current database' }),
|
||||
},
|
||||
{
|
||||
icon: 'icon compare',
|
||||
colorClass: 'color-icon-red',
|
||||
title: 'Compare database',
|
||||
description: 'Compare database schemas',
|
||||
title: _t('common.compare', { defaultMessage: 'Compare database' }),
|
||||
description: _t('newObject.compareDescription', { defaultMessage: 'Compare database schemas' }),
|
||||
command: 'database.compare',
|
||||
testid: 'NewObjectModal_databaseCompare',
|
||||
disabledMessage: 'Database comparison is not available for current database',
|
||||
disabledMessage: _t('newObject.compareDisabled', { defaultMessage: 'Database comparison is not available for current database' }),
|
||||
isProFeature: true,
|
||||
},
|
||||
{
|
||||
icon: 'icon ai',
|
||||
colorClass: 'color-icon-blue',
|
||||
title: 'Database Chat',
|
||||
description: 'Chat with your database using AI',
|
||||
title: _t('common.databaseChat', { defaultMessage: 'Database Chat' }),
|
||||
description: _t('newObject.databaseChatDescription', { defaultMessage: 'Chat with your database using AI' }),
|
||||
command: 'database.chat',
|
||||
isProFeature: true,
|
||||
disabledMessage: 'Database chat is not available for current database',
|
||||
disabledMessage: _t('newObject.databaseChatDisabled', { defaultMessage: 'Database chat is not available for current database' }),
|
||||
testid: 'NewObjectModal_databaseChat',
|
||||
},
|
||||
];
|
||||
</script>
|
||||
|
||||
<ModalBase simplefix {...$$restProps}>
|
||||
<div class="create-header">Create new</div>
|
||||
<div class="create-header">{_t('common.createNew', { defaultMessage: 'Create new' })}</div>
|
||||
<div class="wrapper">
|
||||
{#each NEW_ITEMS as item}
|
||||
{@const enabled = item.command
|
||||
|
||||
@@ -460,13 +460,13 @@
|
||||
disabled={isConnected}
|
||||
data-testid="ConnectionDriverFields_defaultDatabase"
|
||||
asyncMenu={createDatabasesMenu}
|
||||
placeholder="(not selected - optional)"
|
||||
placeholder={_t('common.notSelectedOptional', { defaultMessage : "(not selected - optional)"})}
|
||||
/>
|
||||
{/if}
|
||||
|
||||
{#if defaultDatabase && driver?.showConnectionField('singleDatabase', $values, showConnectionFieldArgs)}
|
||||
<FormCheckboxField
|
||||
label={_t('connection.singleDatabase', { defaultMessage: `Use only database ${defaultDatabase}` })}
|
||||
label={_t('connection.singleDatabase', { defaultMessage: 'Use only database {defaultDatabase}', values: { defaultDatabase } })}
|
||||
name="singleDatabase"
|
||||
disabled={isConnected}
|
||||
data-testid="ConnectionDriverFields_singleDatabase"
|
||||
@@ -475,7 +475,7 @@
|
||||
|
||||
{#if driver?.showConnectionField('useSeparateSchemas', $values, showConnectionFieldArgs)}
|
||||
<FormCheckboxField
|
||||
label={_t('connection.useSeparateSchemas', { defaultMessage: `Use schemas separately (use this if you have many large schemas)` })}
|
||||
label={_t('connection.useSeparateSchemas', { defaultMessage: 'Use schemas separately (use this if you have many large schemas)' })}
|
||||
name="useSeparateSchemas"
|
||||
disabled={isConnected}
|
||||
data-testid="ConnectionDriverFields_useSeparateSchemas"
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<FormPasswordField
|
||||
label={_t('connection.password', {defaultMessage: "Password"})}
|
||||
label={_t('connection.password', {defaultMessage: 'Password'})}
|
||||
name="sshPassword"
|
||||
disabled={isConnected || !useSshTunnel}
|
||||
templateProps={{ noMargin: true }}
|
||||
|
||||
@@ -27,41 +27,41 @@
|
||||
<FormProvider initialValues={fillEditorColumnInfo(columnInfo || {}, tableInfo)}>
|
||||
<ModalBase {...$$restProps}>
|
||||
<svelte:fragment slot="header"
|
||||
>{columnInfo ? 'Edit column' : `Add column ${(tableInfo?.columns || []).length + 1}`}</svelte:fragment
|
||||
>{columnInfo ? _t('columnEditor.editColumn', { defaultMessage: 'Edit column' }) : _t('columnEditor.addColumn', { defaultMessage: 'Add column {columnNumber}', values: { columnNumber: (tableInfo?.columns || []).length + 1 } })}</svelte:fragment
|
||||
>
|
||||
|
||||
<FormTextField name="columnName" label="Column name" focused disabled={isReadOnly} />
|
||||
<FormTextField name="columnName" label={_t('columnEditor.columnName', { defaultMessage: 'Column name' })} focused disabled={isReadOnly} />
|
||||
<DataTypeEditor dialect={driver?.dialect} disabled={isReadOnly} />
|
||||
|
||||
{#if !driver?.dialect?.specificNullabilityImplementation}
|
||||
<FormCheckboxField name="notNull" label="NOT NULL" disabled={isReadOnly} />
|
||||
{/if}
|
||||
<FormCheckboxField name="isPrimaryKey" label="Is Primary Key" disabled={isReadOnly} />
|
||||
<FormCheckboxField name="isPrimaryKey" label={_t('columnEditor.isPrimaryKey', { defaultMessage: 'Is Primary Key' })} disabled={isReadOnly} />
|
||||
{#if !driver?.dialect?.disableAutoIncrement}
|
||||
<FormCheckboxField name="autoIncrement" label="Is Autoincrement" disabled={isReadOnly} />
|
||||
<FormCheckboxField name="autoIncrement" label={_t('columnEditor.autoIncrement', { defaultMessage: 'Is Autoincrement' })} disabled={isReadOnly} />
|
||||
{/if}
|
||||
<FormTextField
|
||||
name="defaultValue"
|
||||
label="Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string"
|
||||
label={_t('columnEditor.defaultValue', { defaultMessage: "Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string" })}
|
||||
disabled={!setTableInfo}
|
||||
/>
|
||||
<FormTextField name="computedExpression" label="Computed expression" disabled={isReadOnly} />
|
||||
<FormTextField name="computedExpression" label={_t('columnEditor.computedExpression', { defaultMessage: 'Computed expression' })} disabled={isReadOnly} />
|
||||
{#if driver?.dialect?.columnProperties?.isUnsigned}
|
||||
<FormCheckboxField name="isUnsigned" label="Unsigned" disabled={isReadOnly} />
|
||||
<FormCheckboxField name="isUnsigned" label={_t('columnEditor.isUnsigned', { defaultMessage: 'Unsigned' })} disabled={isReadOnly} />
|
||||
{/if}
|
||||
{#if driver?.dialect?.columnProperties?.isZerofill}
|
||||
<FormCheckboxField name="isZerofill" label="Zero fill" disabled={isReadOnly} />
|
||||
<FormCheckboxField name="isZerofill" label={_t('columnEditor.isZerofill', { defaultMessage: 'Zero fill' })} disabled={isReadOnly} />
|
||||
{/if}
|
||||
{#if driver?.dialect?.columnProperties?.columnComment}
|
||||
<FormTextField name="columnComment" label="Comment" disabled={isReadOnly} />
|
||||
<FormTextField name="columnComment" label={_t('columnEditor.columnComment', { defaultMessage: 'Comment' })} disabled={isReadOnly} />
|
||||
{/if}
|
||||
{#if driver?.dialect?.columnProperties?.isSparse}
|
||||
<FormCheckboxField name="isSparse" label="Sparse" disabled={isReadOnly} />
|
||||
<FormCheckboxField name="isSparse" label={_t('columnEditor.isSparse', { defaultMessage: 'Sparse' })} disabled={isReadOnly} />
|
||||
{/if}
|
||||
|
||||
<svelte:fragment slot="footer">
|
||||
<FormSubmit
|
||||
value={columnInfo ? 'Save' : 'Save and next'}
|
||||
value={columnInfo ? _t('common.save', { defaultMessage: 'Save' }) : _t('common.saveAndNext', { defaultMessage: 'Save and next' })}
|
||||
disabled={isReadOnly}
|
||||
on:click={e => {
|
||||
closeCurrentModal();
|
||||
@@ -85,11 +85,11 @@
|
||||
/>
|
||||
{/if}
|
||||
|
||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
||||
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
|
||||
{#if columnInfo}
|
||||
<FormStyledButton
|
||||
type="button"
|
||||
value="Remove"
|
||||
value={_t('common.remove', { defaultMessage: 'Remove' })}
|
||||
on:click={() => {
|
||||
closeCurrentModal();
|
||||
setTableInfo(tbl => editorDeleteColumn(tbl, columnInfo, addDataCommand));
|
||||
|
||||
@@ -9,13 +9,15 @@
|
||||
import { editorAddConstraint, editorDeleteConstraint, editorModifyConstraint } from 'dbgate-tools';
|
||||
import TextField from '../forms/TextField.svelte';
|
||||
import SelectField from '../forms/SelectField.svelte';
|
||||
import { _t, __t } from '../translations';
|
||||
import _ from 'lodash';
|
||||
|
||||
export let constraintInfo;
|
||||
export let setTableInfo;
|
||||
export let tableInfo;
|
||||
export let constraintLabel;
|
||||
export let constraintType;
|
||||
export let constraintNameLabel = 'Constraint name';
|
||||
export let constraintNameLabel = _t('tableEditor.constraintName', { defaultMessage: 'Constraint name' });
|
||||
export let getExtractConstraintProps;
|
||||
export let hideConstraintName = false;
|
||||
|
||||
@@ -41,7 +43,7 @@
|
||||
<FormProvider>
|
||||
<ModalBase {...$$restProps}>
|
||||
<svelte:fragment slot="header"
|
||||
>{constraintInfo ? `Edit ${constraintLabel}` : `Add ${constraintLabel}`}</svelte:fragment
|
||||
>{constraintInfo ? _t('tableEdit.editConstraintLabel', { defaultMessage: 'Edit {constraintLabel}', values: { constraintLabel: _.isFunction(constraintLabel) ? constraintLabel() : constraintLabel } }) : _t('tableEdit.addConstraintLabel', { defaultMessage: 'Add {constraintLabel}', values: { constraintLabel: _.isFunction(constraintLabel) ? constraintLabel() : constraintLabel } })}</svelte:fragment
|
||||
>
|
||||
|
||||
<div class="largeFormMarker">
|
||||
@@ -65,7 +67,7 @@
|
||||
|
||||
{#each columns as column, index}
|
||||
<div class="row">
|
||||
<div class="label col-3">Column {index + 1}</div>
|
||||
<div class="label col-3">{_t('common.column', { defaultMessage: 'Column ' })}{index + 1}</div>
|
||||
<div class={$$slots.column ? 'col-3' : 'col-6'}>
|
||||
{#key column.columnName}
|
||||
<SelectField
|
||||
@@ -91,7 +93,7 @@
|
||||
{/if}
|
||||
<div class="col-3 button">
|
||||
<FormStyledButton
|
||||
value="Delete"
|
||||
value={_t('common.delete', { defaultMessage: 'Delete' })}
|
||||
disabled={isReadOnly}
|
||||
on:click={e => {
|
||||
const x = [...columns];
|
||||
@@ -104,11 +106,11 @@
|
||||
{/each}
|
||||
|
||||
<div class="row">
|
||||
<div class="label col-3">Add new column</div>
|
||||
<div class="label col-3">{_t('columnsConstraintEditor.addNewColumn', { defaultMessage: 'Add new column' })}</div>
|
||||
<div class="col-9">
|
||||
{#key columns.length}
|
||||
<SelectField
|
||||
placeholder="Select column"
|
||||
placeholder={_t('columnsConstraintEditor.selectColumn', { defaultMessage: 'Select column' })}
|
||||
disabled={isReadOnly}
|
||||
value={''}
|
||||
on:change={e => {
|
||||
@@ -123,7 +125,7 @@
|
||||
isNative
|
||||
options={[
|
||||
{
|
||||
label: 'Choose column',
|
||||
label: _t('columnsConstraintEditor.chooseColumn', { defaultMessage: 'Choose column' }) ,
|
||||
value: '',
|
||||
},
|
||||
...(tableInfo?.columns?.map(col => ({
|
||||
@@ -139,7 +141,7 @@
|
||||
|
||||
<svelte:fragment slot="footer">
|
||||
<FormSubmit
|
||||
value={'Save'}
|
||||
value={_t('common.save', { defaultMessage: 'Save' })}
|
||||
disabled={isReadOnly}
|
||||
on:click={() => {
|
||||
closeCurrentModal();
|
||||
@@ -151,11 +153,11 @@
|
||||
}}
|
||||
/>
|
||||
|
||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
||||
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
|
||||
{#if constraintInfo}
|
||||
<FormStyledButton
|
||||
type="button"
|
||||
value="Remove"
|
||||
value={_t('common.remove', { defaultMessage: 'Remove' })}
|
||||
disabled={isReadOnly}
|
||||
on:click={() => {
|
||||
closeCurrentModal();
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<script lang="ts">
|
||||
import FormDropDownTextField from '../forms/FormDropDownTextField.svelte';
|
||||
import { getFormContext } from '../forms/FormProviderCore.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
const { values, setFieldValue } = getFormContext();
|
||||
|
||||
@@ -17,4 +18,4 @@
|
||||
export let disabled = false;
|
||||
</script>
|
||||
|
||||
<FormDropDownTextField name="dataType" label="Data type" menu={createDataTypesMenu} {disabled} />
|
||||
<FormDropDownTextField name="dataType" label="{_t('tableEditor.dataType', { defaultMessage: 'Data type' })}" menu={createDataTypesMenu} {disabled} />
|
||||
|
||||
@@ -60,11 +60,11 @@
|
||||
|
||||
<FormProvider>
|
||||
<ModalBase {...$$restProps}>
|
||||
<svelte:fragment slot="header">{constraintInfo ? `Edit foreign key` : `Add foreign key`}</svelte:fragment>
|
||||
<svelte:fragment slot="header">{constraintInfo ? _t('foreignKeyEditor.editForeignKey', { defaultMessage: 'Edit foreign key' }) : _t('foreignKeyEditor.addForeignKey', { defaultMessage: 'Add foreign key' })}</svelte:fragment>
|
||||
|
||||
<div class="largeFormMarker">
|
||||
<div class="row">
|
||||
<div class="label col-3">Constraint name</div>
|
||||
<div class="label col-3">{_t('tableEditor.constraintName', { defaultMessage: 'Constraint name' })}</div>
|
||||
<div class="col-9">
|
||||
<TextField
|
||||
value={constraintName}
|
||||
@@ -76,7 +76,7 @@
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="label col-3">Referenced table</div>
|
||||
<div class="label col-3">{_t('foreignKeyEditor.referencedTable', { defaultMessage: 'Referenced table' })}</div>
|
||||
<div class="col-9">
|
||||
<SelectField
|
||||
value={fullNameToString({ pureName: refTableName, schemaName: refSchemaName })}
|
||||
@@ -99,7 +99,7 @@
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="label col-3">On update action</div>
|
||||
<div class="label col-3">{_t('foreignKeyEditor.onUpdateAction', { defaultMessage: 'On update action' })}</div>
|
||||
<div class="col-9">
|
||||
<SelectField
|
||||
value={updateAction}
|
||||
@@ -115,7 +115,7 @@
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="label col-3">On delete action</div>
|
||||
<div class="label col-3">{_t('foreignKeyEditor.onDeleteAction', { defaultMessage: 'On delete action' })}</div>
|
||||
<div class="col-9">
|
||||
<SelectField
|
||||
value={deleteAction}
|
||||
@@ -132,10 +132,10 @@
|
||||
|
||||
<div class="row">
|
||||
<div class="col-5 mr-1">
|
||||
Base column - {tableInfo.pureName}
|
||||
{_t('foreignKeyEditor.baseColumn', { defaultMessage: 'Base column - ' })}{tableInfo.pureName}
|
||||
</div>
|
||||
<div class="col-5 ml-1">
|
||||
Ref column - {refTableName || '(table not set)'}
|
||||
{_t('foreignKeyEditor.refColumn', { defaultMessage: 'Ref column - ' })}{refTableName || _t('foreignKeyEditor.tableNotSet', { defaultMessage: '(table not set)' })}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
|
||||
<FormStyledButton
|
||||
type="button"
|
||||
value="Add column"
|
||||
value={_t('foreignKeyEditor.addColumn', { defaultMessage: 'Add column' })}
|
||||
disabled={isReadOnly}
|
||||
on:click={() => {
|
||||
columns = [...columns, {}];
|
||||
@@ -217,12 +217,12 @@
|
||||
}}
|
||||
/>
|
||||
|
||||
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
|
||||
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
|
||||
{#if constraintInfo}
|
||||
<FormStyledButton
|
||||
type="button"
|
||||
disabled={isReadOnly}
|
||||
value="Remove"
|
||||
value={_t('common.remove', { defaultMessage: 'Remove' })}
|
||||
on:click={() => {
|
||||
closeCurrentModal();
|
||||
setTableInfo(tbl => editorDeleteConstraint(tbl, constraintInfo));
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
import FormCheckboxField from '../forms/FormCheckboxField.svelte';
|
||||
import SelectField from '../forms/SelectField.svelte';
|
||||
import TextField from '../forms/TextField.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
||||
|
||||
@@ -29,7 +30,7 @@
|
||||
{...$$restProps}
|
||||
constraintLabel="index"
|
||||
constraintType="index"
|
||||
constraintNameLabel="Index name"
|
||||
constraintNameLabel={_t('indexEditor.indexName', { defaultMessage: 'Index name' })}
|
||||
{constraintInfo}
|
||||
{setTableInfo}
|
||||
{tableInfo}
|
||||
@@ -61,15 +62,14 @@
|
||||
<svelte:fragment slot="constraintProps">
|
||||
<div class="largeFormMarker">
|
||||
<div class="row">
|
||||
<CheckboxField checked={isUnique} on:change={e => (isUnique = e.target.checked)} disabled={isReadOnly} /> Is unique
|
||||
index
|
||||
<CheckboxField checked={isUnique} on:change={e => (isUnique = e.target.checked)} disabled={isReadOnly} /> {_t('indexEditor.isUnique', { defaultMessage: 'Is unique index' })}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="largeFormMarker">
|
||||
{#if driver?.dialect?.filteredIndexes}
|
||||
<div class="row">
|
||||
<div class="label col-3">Filtered index condition</div>
|
||||
<div class="label col-3">{_t('indexEditor.filteredIndexCondition', { defaultMessage: 'Filtered index condition' })}</div>
|
||||
<div class="col-9">
|
||||
<TextField
|
||||
value={filterDefinition}
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
<script lang="ts">
|
||||
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let constraintInfo;
|
||||
export let setTableInfo;
|
||||
export let tableInfo;
|
||||
export let driver;
|
||||
|
||||
export let constraintLabel = 'primary key';
|
||||
export let constraintLabel = _t('tableEditor.primaryKey', { defaultMessage: 'primary key' });
|
||||
export let constraintType = 'primaryKey';
|
||||
</script>
|
||||
|
||||
|
||||
@@ -9,13 +9,14 @@
|
||||
import { showModal } from '../modals/modalTools';
|
||||
|
||||
import PrimaryKeyEditorModal from './PrimaryKeyEditorModal.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let tableInfo;
|
||||
export let setTableInfo;
|
||||
export let isWritable;
|
||||
export let driver;
|
||||
|
||||
export let constraintLabel = 'primary key';
|
||||
export let constraintLabel = _t('tableEditor.primaryKey', { defaultMessage: 'primary key' });
|
||||
export let constraintType = 'primaryKey';
|
||||
|
||||
$: columns = tableInfo?.columns;
|
||||
@@ -35,7 +36,12 @@
|
||||
<ObjectListControl
|
||||
collection={_.compact([keyConstraint])}
|
||||
title={_.startCase(constraintLabel)}
|
||||
emptyMessage={isWritable ? `No ${constraintLabel} defined` : null}
|
||||
emptyMessage={isWritable
|
||||
? _t('tableEditor.noConstraintDefined', {
|
||||
defaultMessage: 'No {constraintLabel} defined',
|
||||
values: { constraintLabel },
|
||||
})
|
||||
: null}
|
||||
onAddNew={isWritable && !keyConstraint && columns?.length > 0 ? addKeyConstraint : null}
|
||||
hideDisplayName={driver?.dialect?.anonymousPrimaryKey}
|
||||
clickable
|
||||
@@ -51,7 +57,7 @@
|
||||
columns={[
|
||||
{
|
||||
fieldName: 'columns',
|
||||
header: 'Columns',
|
||||
header: _t('tableEditor.columns', { defaultMessage: 'Columns' }),
|
||||
slot: 0,
|
||||
sortable: true,
|
||||
},
|
||||
@@ -70,7 +76,7 @@
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
||||
}}>Remove</Link
|
||||
}}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link
|
||||
></svelte:fragment
|
||||
>
|
||||
</ObjectListControl>
|
||||
|
||||
@@ -3,8 +3,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableEditor.addColumn',
|
||||
category: 'Table editor',
|
||||
name: 'Add column',
|
||||
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||
name: __t('tableEditor.addColumn', { defaultMessage: 'Add column'}),
|
||||
icon: 'icon add-column',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -14,8 +14,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableEditor.addPrimaryKey',
|
||||
category: 'Table editor',
|
||||
name: 'Add primary key',
|
||||
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||
name: __t('tableEditor.addPrimaryKey', { defaultMessage: 'Add primary key'}),
|
||||
icon: 'icon add-key',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -25,8 +25,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableEditor.addForeignKey',
|
||||
category: 'Table editor',
|
||||
name: 'Add foreign key',
|
||||
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||
name: __t('tableEditor.addForeignKey', { defaultMessage: 'Add foreign key'}),
|
||||
icon: 'icon add-key',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -36,8 +36,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableEditor.addIndex',
|
||||
category: 'Table editor',
|
||||
name: 'Add index',
|
||||
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||
name: __t('tableEditor.addIndex', { defaultMessage: 'Add index'}),
|
||||
icon: 'icon add-key',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -47,8 +47,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableEditor.addUnique',
|
||||
category: 'Table editor',
|
||||
name: 'Add unique',
|
||||
category: __t('tableEditor', { defaultMessage: 'Table editor'}),
|
||||
name: __t('tableEditor.addUnique', { defaultMessage: 'Add unique'}),
|
||||
icon: 'icon add-key',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -83,6 +83,7 @@
|
||||
import UniqueEditorModal from './UniqueEditorModal.svelte';
|
||||
import ObjectFieldsEditor from '../elements/ObjectFieldsEditor.svelte';
|
||||
import PrimaryKeyLikeListControl from './PrimaryKeyLikeListControl.svelte';
|
||||
import { __t, _t } from '../translations';
|
||||
|
||||
export const activator = createActivator('TableEditor', true);
|
||||
|
||||
@@ -171,9 +172,9 @@
|
||||
{#if tableInfo && (tableFormOptions || isCreateTable)}
|
||||
{#key resetCounter}
|
||||
<ObjectFieldsEditor
|
||||
title="Table properties"
|
||||
title={_t('tableEditor.tableproperties', { defaultMessage: 'Table properties' })}
|
||||
fieldDefinitions={tableFormOptions ?? []}
|
||||
pureNameTitle={isCreateTable ? 'Table name' : null}
|
||||
pureNameTitle={isCreateTable ? _t('tableEditor.tablename', { defaultMessage: 'Table name' }) : null}
|
||||
schemaList={isCreateTable && schemaList?.length >= 0 ? schemaList : null}
|
||||
values={_.pick(tableInfo, ['schemaName', 'pureName', ...(tableFormOptions ?? []).map(x => x.name)])}
|
||||
onChangeValues={vals => {
|
||||
@@ -187,15 +188,15 @@
|
||||
|
||||
<ObjectListControl
|
||||
collection={columns?.map((x, index) => ({ ...x, ordinal: index + 1 }))}
|
||||
title={`Columns (${columns?.length || 0})`}
|
||||
emptyMessage="No columns defined"
|
||||
title={_t('tableEditor.columns', { defaultMessage: 'Columns ({columnCount})', values: { columnCount: columns?.length || 0 } })}
|
||||
emptyMessage={_t('tableEditor.nocolumnsdefined', { defaultMessage: 'No columns defined' })}
|
||||
clickable
|
||||
on:clickrow={e => showModal(ColumnEditorModal, { columnInfo: e.detail, tableInfo, setTableInfo, driver })}
|
||||
onAddNew={isWritable ? addColumn : null}
|
||||
displayNameFieldName="columnName"
|
||||
multipleItemsActions={[
|
||||
{
|
||||
text: 'Remove',
|
||||
text: _t('tableEditor.remove', { defaultMessage: 'Remove' }),
|
||||
icon: 'icon delete',
|
||||
onClick: selected => {
|
||||
setTableInfo(tbl => {
|
||||
@@ -205,7 +206,7 @@
|
||||
},
|
||||
},
|
||||
{
|
||||
text: 'Copy names',
|
||||
text: _t('tableEditor.copynames', { defaultMessage: 'Copy names' }),
|
||||
icon: 'icon copy',
|
||||
onClick: selected => {
|
||||
const names = selected.map(x => x.columnName).join('\n');
|
||||
@@ -213,7 +214,7 @@
|
||||
},
|
||||
},
|
||||
{
|
||||
text: 'Copy definitions',
|
||||
text: _t('tableEditor.copydefinitions', { defaultMessage: 'Copy definitions' }),
|
||||
icon: 'icon copy',
|
||||
onClick: selected => {
|
||||
const names = selected
|
||||
@@ -226,55 +227,55 @@
|
||||
columns={[
|
||||
!driver?.dialect?.specificNullabilityImplementation && {
|
||||
fieldName: 'notNull',
|
||||
header: 'Nullability',
|
||||
header: _t('tableEditor.nullability', { defaultMessage: 'Nullability' }),
|
||||
sortable: true,
|
||||
slot: 0,
|
||||
},
|
||||
{
|
||||
fieldName: 'dataType',
|
||||
header: 'Data Type',
|
||||
header: _t('tableEditor.dataType', { defaultMessage: 'Data type' }),
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
},
|
||||
{
|
||||
fieldName: 'defaultValue',
|
||||
header: 'Default value',
|
||||
header: _t('tableEditor.defaultValue', { defaultMessage: 'Default value' }),
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
},
|
||||
driver?.dialect?.columnProperties?.isSparse && {
|
||||
fieldName: 'isSparse',
|
||||
header: 'Is Sparse',
|
||||
header: _t('tableEditor.isSparse', { defaultMessage: 'Is Sparse' }),
|
||||
sortable: true,
|
||||
slot: 1,
|
||||
},
|
||||
{
|
||||
fieldName: 'computedExpression',
|
||||
header: 'Computed Expression',
|
||||
header: _t('tableEditor.computedExpression', { defaultMessage: 'Computed Expression' }),
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
},
|
||||
driver?.dialect?.columnProperties?.isPersisted && {
|
||||
fieldName: 'isPersisted',
|
||||
header: 'Is Persisted',
|
||||
header: _t('tableEditor.isPersisted', { defaultMessage: 'Is Persisted' }),
|
||||
sortable: true,
|
||||
slot: 2,
|
||||
},
|
||||
driver?.dialect?.columnProperties?.isUnsigned && {
|
||||
fieldName: 'isUnsigned',
|
||||
header: 'Unsigned',
|
||||
header: _t('tableEditor.isUnsigned', { defaultMessage: 'Unsigned' }),
|
||||
sortable: true,
|
||||
slot: 4,
|
||||
},
|
||||
driver?.dialect?.columnProperties?.isZerofill && {
|
||||
fieldName: 'isZerofill',
|
||||
header: 'Zero fill',
|
||||
header: _t('tableEditor.isZeroFill', { defaultMessage: 'Zero fill' }),
|
||||
sortable: true,
|
||||
slot: 5,
|
||||
},
|
||||
driver?.dialect?.columnProperties?.columnComment && {
|
||||
fieldName: 'columnComment',
|
||||
header: 'Comment',
|
||||
header: _t('tableEditor.columnComment', { defaultMessage: 'Comment' }),
|
||||
sortable: true,
|
||||
filterable: true,
|
||||
},
|
||||
@@ -287,19 +288,19 @@
|
||||
: null,
|
||||
]}
|
||||
>
|
||||
<svelte:fragment slot="0" let:row>{row?.notNull ? 'NOT NULL' : 'NULL'}</svelte:fragment>
|
||||
<svelte:fragment slot="1" let:row>{row?.isSparse ? 'YES' : 'NO'}</svelte:fragment>
|
||||
<svelte:fragment slot="2" let:row>{row?.isPersisted ? 'YES' : 'NO'}</svelte:fragment>
|
||||
<svelte:fragment slot="0" let:row>{row?.notNull ? _t('tableEditor.notnull', { defaultMessage: 'NOT NULL' }) : _t('tableEditor.null', { defaultMessage: 'NULL' })}</svelte:fragment>
|
||||
<svelte:fragment slot="1" let:row>{row?.isSparse ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||
<svelte:fragment slot="2" let:row>{row?.isPersisted ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||
<svelte:fragment slot="3" let:row
|
||||
><Link
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
setTableInfo(tbl => editorDeleteColumn(tbl, row));
|
||||
}}>Remove</Link
|
||||
}}>{_t('tableEditor.remove', { defaultMessage: 'Remove' })}</Link
|
||||
></svelte:fragment
|
||||
>
|
||||
<svelte:fragment slot="4" let:row>{row?.isUnsigned ? 'YES' : 'NO'}</svelte:fragment>
|
||||
<svelte:fragment slot="5" let:row>{row?.isZerofill ? 'YES' : 'NO'}</svelte:fragment>
|
||||
<svelte:fragment slot="4" let:row>{row?.isUnsigned ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||
<svelte:fragment slot="5" let:row>{row?.isZerofill ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||
<svelte:fragment slot="name" let:row><ColumnLabel {...row} forceIcon /></svelte:fragment>
|
||||
</ObjectListControl>
|
||||
|
||||
@@ -320,20 +321,20 @@
|
||||
<ObjectListControl
|
||||
collection={indexes}
|
||||
onAddNew={isWritable && columns?.length > 0 ? addIndex : null}
|
||||
title={`Indexes (${indexes?.length || 0})`}
|
||||
emptyMessage={isWritable ? 'No index defined' : null}
|
||||
title={_t('tableEditor.indexes', { defaultMessage: 'Indexes ({indexCount})', values: { indexCount: indexes?.length || 0 } })}
|
||||
emptyMessage={isWritable ? _t('tableEditor.noindexdefined', { defaultMessage: 'No index defined' }) : null}
|
||||
clickable
|
||||
on:clickrow={e => showModal(IndexEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo, driver })}
|
||||
columns={[
|
||||
{
|
||||
fieldName: 'columns',
|
||||
header: 'Columns',
|
||||
header: _t('tableEditor.columns', { defaultMessage: 'Columns' }),
|
||||
slot: 0,
|
||||
sortable: true,
|
||||
},
|
||||
{
|
||||
fieldName: 'unique',
|
||||
header: 'Unique',
|
||||
header: _t('tableEditor.unique', { defaultMessage: 'Unique' }),
|
||||
slot: 1,
|
||||
sortable: true,
|
||||
},
|
||||
@@ -347,13 +348,13 @@
|
||||
>
|
||||
<svelte:fragment slot="name" let:row><ConstraintLabel {...row} /></svelte:fragment>
|
||||
<svelte:fragment slot="0" let:row>{row?.columns.map(x => x.columnName).join(', ')}</svelte:fragment>
|
||||
<svelte:fragment slot="1" let:row>{row?.isUnique ? 'YES' : 'NO'}</svelte:fragment>
|
||||
<svelte:fragment slot="1" let:row>{row?.isUnique ? _t('tableEditor.yes', { defaultMessage: 'YES' }) : _t('tableEditor.no', { defaultMessage: 'NO' })}</svelte:fragment>
|
||||
<svelte:fragment slot="2" let:row
|
||||
><Link
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
||||
}}>Remove</Link
|
||||
}}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link
|
||||
></svelte:fragment
|
||||
>
|
||||
</ObjectListControl>
|
||||
@@ -363,14 +364,14 @@
|
||||
<ObjectListControl
|
||||
collection={uniques}
|
||||
onAddNew={isWritable && columns?.length > 0 ? addUnique : null}
|
||||
title={`Unique constraints (${uniques?.length || 0})`}
|
||||
emptyMessage={isWritable ? 'No unique defined' : null}
|
||||
title={_t('tableEditor.uniqueConstraints', { defaultMessage: 'Unique constraints ({constraintCount})', values: { constraintCount: uniques?.length || 0 } })}
|
||||
emptyMessage={isWritable ? _t('tableEditor.nouniquedefined', { defaultMessage: 'No unique defined' }) : null}
|
||||
clickable
|
||||
on:clickrow={e => showModal(UniqueEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo })}
|
||||
columns={[
|
||||
{
|
||||
fieldName: 'columns',
|
||||
header: 'Columns',
|
||||
header: _t('tableEditor.columns', { defaultMessage: 'Columns' }),
|
||||
slot: 0,
|
||||
sortable: true,
|
||||
},
|
||||
@@ -390,7 +391,7 @@
|
||||
onClick={e => {
|
||||
e.stopPropagation();
|
||||
setTableInfo(tbl => editorDeleteConstraint(tbl, row));
|
||||
}}>Remove</Link
|
||||
}}>{_t('common.remove', { defaultMessage: 'Remove' })}</Link
|
||||
></svelte:fragment
|
||||
>
|
||||
</ObjectListControl>
|
||||
@@ -400,13 +401,13 @@
|
||||
<ForeignKeyObjectListControl
|
||||
collection={foreignKeys}
|
||||
onAddNew={isWritable && columns?.length > 0 ? addForeignKey : null}
|
||||
title={`Foreign keys (${foreignKeys?.length || 0})`}
|
||||
emptyMessage={isWritable ? 'No foreign key defined' : null}
|
||||
title={_t('tableEditor.foreignKeys', { defaultMessage: 'Foreign keys ({foreignKeyCount})', values: { foreignKeyCount: foreignKeys?.length || 0 } })}
|
||||
emptyMessage={isWritable ? _t('tableEditor.noforeignkeydefined', { defaultMessage: 'No foreign key defined' }) : null}
|
||||
clickable
|
||||
onRemove={row => setTableInfo(tbl => editorDeleteConstraint(tbl, row))}
|
||||
on:clickrow={e => showModal(ForeignKeyEditorModal, { constraintInfo: e.detail, tableInfo, setTableInfo, dbInfo })}
|
||||
/>
|
||||
<ForeignKeyObjectListControl collection={dependencies} title="Dependencies" />
|
||||
<ForeignKeyObjectListControl collection={dependencies} title={_t('tableEditor.dependencies', { defaultMessage: 'Dependencies' })} />
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<script lang="ts">
|
||||
import ColumnsConstraintEditorModal from './ColumnsConstraintEditorModal.svelte';
|
||||
import { _t } from '../translations';
|
||||
|
||||
export let constraintInfo;
|
||||
export let setTableInfo;
|
||||
@@ -9,7 +10,7 @@
|
||||
|
||||
<ColumnsConstraintEditorModal
|
||||
{...$$restProps}
|
||||
constraintLabel="unique"
|
||||
constraintLabel={_t('tableEdit.unique', { defaultMessage: "unique" })}
|
||||
constraintType="unique"
|
||||
{constraintInfo}
|
||||
{setTableInfo}
|
||||
|
||||
@@ -300,7 +300,7 @@
|
||||
contentTestId="ConnectionTab_tabControlContent"
|
||||
tabs={[
|
||||
{
|
||||
label: 'General',
|
||||
label: _t('common.general', { defaultMessage: 'General' }),
|
||||
component: ConnectionDriverFields,
|
||||
props: { getDatabaseList, currentConnection },
|
||||
testid: 'ConnectionTab_tabGeneral',
|
||||
@@ -316,7 +316,7 @@
|
||||
testid: 'ConnectionTab_tabSsl',
|
||||
},
|
||||
{
|
||||
label: 'Advanced',
|
||||
label: _t('common.advanced', { defaultMessage: 'Advanced' }),
|
||||
component: ConnectionAdvancedDriverFields,
|
||||
testid: 'ConnectionTab_tabAdvanced',
|
||||
},
|
||||
@@ -383,7 +383,7 @@
|
||||
{/if}
|
||||
{#if isTesting}
|
||||
<div>
|
||||
<FontIcon icon="icon loading" /> Testing connection
|
||||
<FontIcon icon="icon loading" /> {_t('common.testingConnection', { defaultMessage: 'Testing connection' })}
|
||||
</div>
|
||||
{/if}
|
||||
</div>
|
||||
|
||||
@@ -2,21 +2,22 @@
|
||||
import registerCommand from '../commands/registerCommand';
|
||||
import { copyTextToClipboard } from '../utility/clipboard';
|
||||
import yaml from 'js-yaml';
|
||||
import { __t, _t } from '../translations';
|
||||
|
||||
const getCurrentEditor = () => getActiveComponent('QueryTab');
|
||||
|
||||
registerCommand({
|
||||
id: 'query.formatCode',
|
||||
category: 'Query',
|
||||
name: 'Format code',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.formatCode', { defaultMessage: 'Format code' }),
|
||||
keyText: 'Shift+Alt+F',
|
||||
testEnabled: () => getCurrentEditor()?.isSqlEditor(),
|
||||
onClick: () => getCurrentEditor().formatCode(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.switchAiAssistant',
|
||||
category: 'Query',
|
||||
name: 'AI Assistant',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.AiAssistant', { defaultMessage: 'AI Assistant' }),
|
||||
keyText: 'Shift+Alt+A',
|
||||
icon: 'icon ai',
|
||||
testEnabled: () => isProApp(),
|
||||
@@ -24,23 +25,23 @@
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.insertSqlJoin',
|
||||
category: 'Query',
|
||||
name: 'Insert SQL Join',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.insertSqlJoin', { defaultMessage: 'Insert SQL Join' }),
|
||||
keyText: 'CtrlOrCommand+J',
|
||||
testEnabled: () => getCurrentEditor()?.isSqlEditor(),
|
||||
onClick: () => getCurrentEditor().insertSqlJoin(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.toggleVisibleResultTabs',
|
||||
category: 'Query',
|
||||
name: 'Toggle visible result tabs',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.toggleVisibleResultTabs', { defaultMessage: 'Toggle visible result tabs' }),
|
||||
keyText: 'CtrlOrCommand+Shift+R',
|
||||
testEnabled: () => !!getCurrentEditor(),
|
||||
onClick: () => getCurrentEditor().toggleVisibleResultTabs(),
|
||||
});
|
||||
registerFileCommands({
|
||||
idPrefix: 'query',
|
||||
category: 'Query',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
getCurrentEditor,
|
||||
folder: 'sql',
|
||||
format: 'text',
|
||||
@@ -54,8 +55,8 @@
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.executeCurrent',
|
||||
category: 'Query',
|
||||
name: 'Execute current',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.executeCurrent', { defaultMessage: 'Execute current' }),
|
||||
keyText: 'CtrlOrCommand+Shift+Enter',
|
||||
testEnabled: () =>
|
||||
getCurrentEditor() != null && !getCurrentEditor()?.isBusy() && getCurrentEditor()?.hasConnection(),
|
||||
@@ -63,56 +64,56 @@
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.toggleAutoExecute',
|
||||
category: 'Query',
|
||||
name: 'Toggle auto execute',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.toggleAutoExecute', { defaultMessage: 'Toggle auto execute' }),
|
||||
testEnabled: () => getCurrentEditor() != null,
|
||||
onClick: () => getCurrentEditor().toggleAutoExecute(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.toggleFixedConnection',
|
||||
category: 'Query',
|
||||
name: 'Toggle fixed connection',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.toggleFixedConnection', { defaultMessage: 'Toggle fixed connection' }),
|
||||
testEnabled: () => getCurrentEditor() != null,
|
||||
onClick: () => getCurrentEditor().toggleFixedConnection(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.beginTransaction',
|
||||
category: 'Query',
|
||||
name: 'Begin transaction',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.beginTransaction', { defaultMessage: 'Begin transaction' }),
|
||||
icon: 'icon transaction',
|
||||
testEnabled: () => getCurrentEditor()?.beginTransactionEnabled(),
|
||||
onClick: () => getCurrentEditor().beginTransaction(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.autocommitOffSwitch',
|
||||
category: 'Query',
|
||||
name: 'Auto commit: OFF',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.autocommitOffSwitch', { defaultMessage: 'Auto commit: OFF' }),
|
||||
icon: 'icon autocommit-off',
|
||||
testEnabled: () => getCurrentEditor()?.autocommitOffSwitchEnabled(),
|
||||
onClick: () => getCurrentEditor().autocommitOffSwitch(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.autocommitOnSwitch',
|
||||
category: 'Query',
|
||||
name: 'Auto commit: ON',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.autocommitOnSwitch', { defaultMessage: 'Auto commit: ON' }),
|
||||
icon: 'icon autocommit-on',
|
||||
testEnabled: () => getCurrentEditor()?.autocommitOnSwitchEnabled(),
|
||||
onClick: () => getCurrentEditor().autocommitOnSwitch(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.commitTransaction',
|
||||
category: 'Query',
|
||||
name: 'Commit transaction',
|
||||
toolbarName: 'Commit',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.commitTransaction', { defaultMessage: 'Commit transaction' }),
|
||||
toolbarName: __t('command.query.commitTransactionToolbar', { defaultMessage: 'Commit' }),
|
||||
icon: 'icon commit',
|
||||
testEnabled: () => getCurrentEditor()?.endTransactionEnabled(),
|
||||
onClick: () => getCurrentEditor().commitTransaction(),
|
||||
});
|
||||
registerCommand({
|
||||
id: 'query.rollbackTransaction',
|
||||
category: 'Query',
|
||||
name: 'Rollback transaction',
|
||||
toolbarName: 'Rollback',
|
||||
category: __t('command.query', { defaultMessage: 'Query' }),
|
||||
name: __t('command.query.rollbackTransaction', { defaultMessage: 'Rollback transaction' }),
|
||||
toolbarName: __t('command.query.rollbackTransactionToolbar', { defaultMessage: 'Rollback' }),
|
||||
icon: 'icon rollback',
|
||||
testEnabled: () => getCurrentEditor()?.endTransactionEnabled(),
|
||||
onClick: () => getCurrentEditor().rollbackTransaction(),
|
||||
@@ -177,27 +178,27 @@
|
||||
const QUERY_PARAMETER_STYLES = [
|
||||
{
|
||||
value: '',
|
||||
text: '(no parameters)',
|
||||
text: _t('query.noParameters', { defaultMessage: '(no parameters)' }),
|
||||
},
|
||||
{
|
||||
value: '?',
|
||||
text: '? (positional)',
|
||||
text: _t('query.positional', { defaultMessage: '? (positional)' }),
|
||||
},
|
||||
{
|
||||
value: '@',
|
||||
text: '@variable',
|
||||
text: _t('query.variable', { defaultMessage: '@variable' }),
|
||||
},
|
||||
{
|
||||
value: ':',
|
||||
text: ':variable',
|
||||
text: _t('query.named', { defaultMessage: ':variable' }),
|
||||
},
|
||||
{
|
||||
value: '$',
|
||||
text: '$variable',
|
||||
text: _t('query.variable', { defaultMessage: '$variable' }),
|
||||
},
|
||||
{
|
||||
value: '#',
|
||||
text: '#variable',
|
||||
text: _t('query.variable', { defaultMessage: '#variable' }),
|
||||
},
|
||||
];
|
||||
|
||||
@@ -831,11 +832,11 @@
|
||||
},
|
||||
})}
|
||||
>
|
||||
{queryRowsLimit ? `Limit ${queryRowsLimit} rows` : 'Unlimited rows'}</ToolStripButton
|
||||
{queryRowsLimit ? _t('query.limitRows', { defaultMessage: 'Limit {queryRowsLimit} rows', values: { queryRowsLimit } }) : _t('query.unlimitedRows', { defaultMessage: 'Unlimited rows' })}</ToolStripButton
|
||||
>
|
||||
{/if}
|
||||
{#if resultCount == 1}
|
||||
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label="Export result" />
|
||||
<ToolStripExportButton command="jslTableGrid.export" {quickExportHandlerRef} label={_t('export.result', { defaultMessage: 'Export result' })} />
|
||||
{/if}
|
||||
<ToolStripDropDownButton
|
||||
menu={() =>
|
||||
@@ -885,7 +886,7 @@
|
||||
domResultTabs?.openCurrentChart();
|
||||
}}
|
||||
>
|
||||
Open chart</ToolStripButton
|
||||
{_t('chart.open', { defaultMessage: 'Open chart' })}</ToolStripButton
|
||||
>
|
||||
{/if}
|
||||
{#if isProApp() && !visibleResultTabs && hasPermission('dbops/charts')}
|
||||
@@ -896,7 +897,7 @@
|
||||
autoDetectCharts = !autoDetectCharts;
|
||||
}}
|
||||
>
|
||||
Detect chart<FontIcon
|
||||
{_t('chart.detect', { defaultMessage: 'Detect chart' })}<FontIcon
|
||||
icon={autoDetectCharts ? 'icon checkbox-marked' : 'icon checkbox-blank'}
|
||||
padLeft
|
||||
/></ToolStripButton
|
||||
|
||||
@@ -1,12 +1,35 @@
|
||||
<script lang="ts" context="module">
|
||||
const getCurrentEditor = () => getActiveComponent('TableDataTab');
|
||||
const INTERVALS = [5, 10, 15, 13, 60];
|
||||
const INTERVALS = [5, 10, 15, 30, 60];
|
||||
|
||||
const INTERVAL_COMMANDS = [
|
||||
{
|
||||
time: 5,
|
||||
name: __t('command.datagrid.setAutoRefresh.5', { defaultMessage: 'Refresh every 5 seconds' }),
|
||||
},
|
||||
{
|
||||
time: 10,
|
||||
name: __t('command.datagrid.setAutoRefresh.10', { defaultMessage: 'Refresh every 10 seconds' }),
|
||||
},
|
||||
{
|
||||
time: 15,
|
||||
name: __t('command.datagrid.setAutoRefresh.15', { defaultMessage: 'Refresh every 15 seconds' }),
|
||||
},
|
||||
{
|
||||
time: 30,
|
||||
name: __t('command.datagrid.setAutoRefresh.30', { defaultMessage: 'Refresh every 30 seconds' }),
|
||||
},
|
||||
{
|
||||
time: 60,
|
||||
name: __t('command.datagrid.setAutoRefresh.60', { defaultMessage: 'Refresh every 60 seconds' }),
|
||||
},
|
||||
]
|
||||
|
||||
registerCommand({
|
||||
id: 'tableData.save',
|
||||
group: 'save',
|
||||
category: 'Table data',
|
||||
name: 'Save',
|
||||
category: __t('command.tableData', { defaultMessage: 'Table data' }),
|
||||
name: __t('command.tableData.save', { defaultMessage: 'Save' }),
|
||||
// keyText: 'CtrlOrCommand+S',
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
@@ -17,28 +40,28 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableData.setAutoRefresh.1',
|
||||
category: 'Data grid',
|
||||
name: 'Refresh every 1 second',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.setAutoRefresh.1', { defaultMessage: 'Refresh every 1 second' }),
|
||||
isRelatedToTab: true,
|
||||
testEnabled: () => !!getCurrentEditor(),
|
||||
onClick: () => getCurrentEditor().setAutoRefresh(1),
|
||||
});
|
||||
|
||||
for (const seconds of INTERVALS) {
|
||||
for (const { time, name } of INTERVAL_COMMANDS) {
|
||||
registerCommand({
|
||||
id: `tableData.setAutoRefresh.${seconds}`,
|
||||
category: 'Data grid',
|
||||
name: `Refresh every ${seconds} seconds`,
|
||||
id: `tableData.setAutoRefresh.${time}`,
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name,
|
||||
isRelatedToTab: true,
|
||||
testEnabled: () => !!getCurrentEditor(),
|
||||
onClick: () => getCurrentEditor().setAutoRefresh(seconds),
|
||||
onClick: () => getCurrentEditor().setAutoRefresh(time),
|
||||
});
|
||||
}
|
||||
|
||||
registerCommand({
|
||||
id: 'tableData.stopAutoRefresh',
|
||||
category: 'Data grid',
|
||||
name: 'Stop auto refresh',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.stopAutoRefresh', { defaultMessage: 'Stop auto refresh' }),
|
||||
isRelatedToTab: true,
|
||||
keyText: 'CtrlOrCommand+Shift+R',
|
||||
testEnabled: () => getCurrentEditor()?.isAutoRefresh() === true,
|
||||
@@ -47,8 +70,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableData.startAutoRefresh',
|
||||
category: 'Data grid',
|
||||
name: 'Start auto refresh',
|
||||
category: __t('command.datagrid', { defaultMessage: 'Data grid' }),
|
||||
name: __t('command.datagrid.startAutoRefresh', { defaultMessage: 'Start auto refresh' }),
|
||||
isRelatedToTab: true,
|
||||
keyText: 'CtrlOrCommand+Shift+R',
|
||||
testEnabled: () => getCurrentEditor()?.isAutoRefresh() === false,
|
||||
@@ -101,6 +124,7 @@
|
||||
import { markTabSaved, markTabUnsaved } from '../utility/common';
|
||||
import ToolStripButton from '../buttons/ToolStripButton.svelte';
|
||||
import { getNumberIcon } from '../icons/FontIcon.svelte';
|
||||
import { __t, _t } from '../translations';
|
||||
|
||||
export let tabid;
|
||||
export let conid;
|
||||
@@ -260,7 +284,7 @@
|
||||
{ command: 'tableData.stopAutoRefresh', hideDisabled: true },
|
||||
{ command: 'tableData.startAutoRefresh', hideDisabled: true },
|
||||
'tableData.setAutoRefresh.1',
|
||||
...INTERVALS.map(seconds => ({ command: `tableData.setAutoRefresh.${seconds}`, text: `...${seconds} seconds` })),
|
||||
...INTERVALS.map(seconds => ({ command: `tableData.setAutoRefresh.${seconds}`, text: `...${seconds}` + ' ' + _t('command.datagrid.autoRefresh.seconds', { defaultMessage: 'seconds' }) })),
|
||||
];
|
||||
}
|
||||
</script>
|
||||
@@ -304,7 +328,7 @@
|
||||
defaultActionId: 'openStructure',
|
||||
},
|
||||
});
|
||||
}}>Structure</ToolStripButton
|
||||
}}>{_t('datagrid.structure', { defaultMessage: 'Structure' })}</ToolStripButton
|
||||
>
|
||||
|
||||
<ToolStripButton
|
||||
@@ -378,7 +402,7 @@
|
||||
|
||||
<ToolStripButton
|
||||
icon={$collapsedLeftColumnStore ? 'icon columns-outline' : 'icon columns'}
|
||||
on:click={() => collapsedLeftColumnStore.update(x => !x)}>View columns</ToolStripButton
|
||||
on:click={() => collapsedLeftColumnStore.update(x => !x)}>{_t('tableData.viewColumns', { defaultMessage: 'View columns' })}</ToolStripButton
|
||||
>
|
||||
</svelte:fragment>
|
||||
</ToolStripContainer>
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
registerCommand({
|
||||
id: 'tableStructure.save',
|
||||
group: 'save',
|
||||
category: 'Table editor',
|
||||
name: 'Save',
|
||||
category: __t('command.tableEditor', { defaultMessage: 'Table editor' }),
|
||||
name: __t('command.tableEditor.save', { defaultMessage: 'Save' }),
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
icon: 'icon save',
|
||||
@@ -17,8 +17,8 @@
|
||||
|
||||
registerCommand({
|
||||
id: 'tableStructure.reset',
|
||||
category: 'Table editor',
|
||||
name: 'Reset changes',
|
||||
category: __t('command.tableEditor', { defaultMessage: 'Table editor' }),
|
||||
name: __t('command.tableEditor.reset', { defaultMessage: 'Reset changes' }),
|
||||
toolbar: true,
|
||||
isRelatedToTab: true,
|
||||
icon: 'icon close',
|
||||
@@ -57,6 +57,7 @@
|
||||
import hasPermission from '../utility/hasPermission';
|
||||
import { changeTab, markTabSaved, markTabUnsaved } from '../utility/common';
|
||||
import { getBoolSettingsValue } from '../settings/settingsTools';
|
||||
import { _t, __t } from '../translations';
|
||||
|
||||
export let tabid;
|
||||
export let conid;
|
||||
@@ -197,7 +198,7 @@
|
||||
defaultActionId: 'openTable',
|
||||
},
|
||||
});
|
||||
}}>Data</ToolStripButton
|
||||
}}>{_t('common.data', { defaultMessage: 'Data' })}</ToolStripButton
|
||||
>
|
||||
|
||||
<ToolStripButton
|
||||
@@ -230,7 +231,7 @@
|
||||
|
||||
<ToolStripCommandButton
|
||||
command="tableStructure.save"
|
||||
buttonLabel={$editorValue?.base ? 'Alter table' : 'Create table'}
|
||||
buttonLabel={$editorValue?.base ? _t('tableStructure.alter', { defaultMessage: 'Alter table' }) : _t('tableStructure.create', { defaultMessage: 'Create table' })}
|
||||
/>
|
||||
<ToolStripCommandButton command="tableStructure.reset" />
|
||||
<ToolStripCommandButton command="tableEditor.addColumn" />
|
||||
|
||||
@@ -15,15 +15,22 @@ const compiledMessages: Partial<Record<string, Record<string, MessageFunction<'s
|
||||
|
||||
const defaultLanguage = 'en';
|
||||
|
||||
let selectedLanguageCache: string | null = null;
|
||||
|
||||
export function getSelectedLanguage(): string {
|
||||
const borwserLanguage = getBrowserLanguage();
|
||||
const selectedLanguage = getStringSettingsValue('localization.language', borwserLanguage);
|
||||
if (selectedLanguageCache) return selectedLanguageCache;
|
||||
|
||||
const browserLanguage = getBrowserLanguage();
|
||||
const selectedLanguage = getStringSettingsValue('localization.language', browserLanguage);
|
||||
|
||||
if (!supportedLanguages.includes(selectedLanguage)) return defaultLanguage;
|
||||
|
||||
return selectedLanguage;
|
||||
}
|
||||
|
||||
export function saveSelectedLanguageToCache() {
|
||||
selectedLanguageCache = getSelectedLanguage();
|
||||
}
|
||||
|
||||
export function getBrowserLanguage(): string {
|
||||
return 'en';
|
||||
// if (typeof window !== 'undefined') {
|
||||
@@ -70,3 +77,7 @@ export function _t(key: string, options: TranslateOptions): string {
|
||||
|
||||
return compliledTranslation(values ?? {});
|
||||
}
|
||||
|
||||
export function __t(key: string, options: TranslateOptions): () => string {
|
||||
return () => _t(key, options);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import _ from 'lodash';
|
||||
import { arrayToHexString, stringifyCellValue } from 'dbgate-tools';
|
||||
import yaml from 'js-yaml';
|
||||
import { DataEditorTypesBehaviour } from 'dbgate-types';
|
||||
import { __t, _t } from '../translations'
|
||||
|
||||
export function copyTextToClipboard(text) {
|
||||
const oldFocus = document.activeElement;
|
||||
@@ -157,53 +158,53 @@ export function copyRowsToClipboard(format, columns, rows, options) {
|
||||
|
||||
export const copyRowsFormatDefs = {
|
||||
textWithHeaders: {
|
||||
label: 'Copy with headers',
|
||||
name: 'With headers',
|
||||
label: __t('clipboard.copyWithHeaders', { defaultMessage : 'Copy with headers' }),
|
||||
name: __t('clipboard.withHeaders', { defaultMessage: 'With headers' }),
|
||||
formatter: clipboardTextFormatter('\t', true),
|
||||
},
|
||||
textWithoutHeaders: {
|
||||
label: 'Copy without headers',
|
||||
name: 'Without headers',
|
||||
label: __t('clipboard.copyWithoutHeaders', { defaultMessage : 'Copy without headers' }),
|
||||
name: __t('clipboard.withoutHeaders', { defaultMessage: 'Without headers' }),
|
||||
formatter: clipboardTextFormatter('\t', false),
|
||||
},
|
||||
headers: {
|
||||
label: 'Copy only headers',
|
||||
name: 'Only Headers',
|
||||
label: __t('clipboard.copyOnlyHeadres', { defaultMessage : 'Copy only headers'}),
|
||||
name: __t('clipboard.onlyHeaders', { defaultMessage : 'Only Headers' }),
|
||||
formatter: clipboardHeadersFormatter('\t'),
|
||||
},
|
||||
csv: {
|
||||
label: 'Copy as CSV',
|
||||
label: __t('clipboard.copyCSV', { defaultMessage : 'Copy as CSV'}),
|
||||
name: 'CSV',
|
||||
formatter: clipboardTextFormatter(',', true),
|
||||
},
|
||||
json: {
|
||||
label: 'Copy as JSON',
|
||||
label: __t('clipboard.copyJSON', { defaultMessage: 'Copy as JSON'}),
|
||||
name: 'JSON',
|
||||
formatter: clipboardJsonFormatter(),
|
||||
},
|
||||
jsonLines: {
|
||||
label: 'Copy as JSON lines/NDJSON',
|
||||
label: __t('clipboard.copyJSONLines', { defaultMessage : 'Copy as JSON lines/NDJSON' }),
|
||||
name: 'JSON lines/NDJSON',
|
||||
formatter: clipboardJsonLinesFormatter(),
|
||||
},
|
||||
yaml: {
|
||||
label: 'Copy as YAML',
|
||||
label: __t('clipboard.copyYAML', { defaultMessage : 'Copy as YAML'}),
|
||||
name: 'YAML',
|
||||
formatter: clipboardYamlFormatter(),
|
||||
},
|
||||
inserts: {
|
||||
label: 'Copy as SQL INSERTs',
|
||||
name: 'SQL INSERTs',
|
||||
label: __t('clipboard.copySQLInsert', { defaultMessage : 'Copy as SQL INSERTs'}),
|
||||
name: __t('clipboard.SQLInsert', { defaultMessage : 'SQL INSERTs' }),
|
||||
formatter: clipboardInsertsFormatter(),
|
||||
},
|
||||
updates: {
|
||||
label: 'Copy as SQL UPDATEs',
|
||||
name: 'SQL UPDATEs',
|
||||
label: __t('clipboard.copySQLUpdate', { defaultMessage : 'Copy as SQL UPDATEs'}),
|
||||
name: __t('clipboard.SQLUpdate', { defaultMessage : 'SQL UPDATEs' }),
|
||||
formatter: clipboardUpdatesFormatter(),
|
||||
},
|
||||
mongoInsert: {
|
||||
label: 'Copy as Mongo INSERTs',
|
||||
name: 'Mongo INSERTs',
|
||||
label: __t('clipboard.copyMongoInsert', { defaultMessage : 'Copy as Mongo INSERTs' }),
|
||||
name: __t('clipboard.mongoInsert', { defaultMessage : 'Mongo INSERTs' }),
|
||||
formatter: clipboardMongoInsertFormatter(),
|
||||
},
|
||||
};
|
||||
|
||||
@@ -112,8 +112,9 @@ function mapItem(item, commands) {
|
||||
if (item.command) {
|
||||
const command = commands[item.command];
|
||||
if (command) {
|
||||
const commandText = item.text || command.menuName || command.toolbarName || command.name;
|
||||
return {
|
||||
text: item.text || command.menuName || command.toolbarName || command.name,
|
||||
text: _.isFunction(commandText) ? commandText() : commandText,
|
||||
keyText: command.keyText || command.keyTextFromGroup || command.disableHandleKeyText,
|
||||
onClick: () => {
|
||||
if (command.isGroupCommand) {
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import type { QuickExportDefinition } from 'dbgate-types';
|
||||
import { currentArchive, getCurrentArchive, getExtensions } from '../stores';
|
||||
import hasPermission from './hasPermission';
|
||||
import { _t } from '../translations'
|
||||
import { isProApp } from './proTools';
|
||||
|
||||
export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition) => Function, advancedExportMenuItem) {
|
||||
const extensions = getExtensions();
|
||||
return [
|
||||
isProApp() && {
|
||||
text: 'Export advanced...',
|
||||
text: _t('export.exportAdvanced', { defaultMessage : 'Export advanced...'}),
|
||||
...advancedExportMenuItem,
|
||||
},
|
||||
{ divider: true },
|
||||
@@ -17,10 +18,10 @@ export function createQuickExportMenuItems(handler: (fmt: QuickExportDefinition)
|
||||
})),
|
||||
{ divider: true },
|
||||
isProApp() && {
|
||||
text: 'Current archive',
|
||||
text: _t('export.currentArchive', { defaultMessage : 'Current archive'}),
|
||||
onClick: handler({
|
||||
extension: 'jsonl',
|
||||
label: 'Current archive',
|
||||
label: _t('export.currentArchive', { defaultMessage : 'Current archive'}),
|
||||
noFilenameDependency: true,
|
||||
createWriter: (fileName, dataName) => ({
|
||||
functionName: 'archiveWriter',
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
? (schemaList?.map(x => ({ label: x.schemaName, value: x.schemaName })) ?? [])
|
||||
: [
|
||||
{
|
||||
label: _t('schema.all_schemas', {
|
||||
label: _t('schema.allSchemas', {
|
||||
defaultMessage: 'All schemas ({count})',
|
||||
values: { count: objectList?.length ?? 0 },
|
||||
}),
|
||||
|
||||
@@ -193,7 +193,7 @@
|
||||
|
||||
<WidgetsInnerContainer hideContent={differentFocusedDb}>
|
||||
<ErrorInfo
|
||||
message={_t('sqlObject.databaseEmpty', { defaultMessage: `Database ${database} is empty or structure is not loaded, press Refresh button to reload structure` })}
|
||||
message={_t('sqlObject.databaseEmpty', { defaultMessage: 'Database {database} is empty or structure is not loaded, press Refresh button to reload structure', values: { database } })}
|
||||
icon="img alert"
|
||||
/>
|
||||
<div class="m-1" />
|
||||
@@ -233,7 +233,7 @@
|
||||
{/if}
|
||||
<InlineButton
|
||||
on:click={handleRefreshDatabase}
|
||||
title="Refresh database connection and object list"
|
||||
title={_t('sqlObjectList.refreshDatabase', { defaultMessage: "Refresh database connection and object list" })}
|
||||
square
|
||||
data-testid="SqlObjectList_refreshButton"
|
||||
>
|
||||
|
||||
@@ -1,8 +1,27 @@
|
||||
{
|
||||
"app.databaseName": "Název databáze",
|
||||
"app.loading_plugin": "Načítám plugin {plugin} ...",
|
||||
"app.preparingPlugins": "Příprava pluginů...",
|
||||
"app.starting": "Spouštění DbGate",
|
||||
"authToken": "Auth token",
|
||||
"chart.detect": "Rozpoznat graf",
|
||||
"chart.open": "Otevřít graf",
|
||||
"clipboard.SQLInsert": "SQL INSERT příkazy",
|
||||
"clipboard.SQLUpdate": "SQL UPDATE příkazy",
|
||||
"clipboard.copyCSV": "Kopírovat jako CSV",
|
||||
"clipboard.copyJSON": "Kopírovat jako JSON",
|
||||
"clipboard.copyJSONLines": "Kopírovat jako JSON lines/NDJSON",
|
||||
"clipboard.copyMongoInsert": "Kopírovat jako Mongo INSERT příkazy",
|
||||
"clipboard.copyOnlyHeadres": "Kopírovat pouze hlavičky",
|
||||
"clipboard.copySQLInsert": "Kopírovat jako SQL INSERT příkazy",
|
||||
"clipboard.copySQLUpdate": "Kopírovat jako SQL UPDATE příkazy",
|
||||
"clipboard.copyWithHeaders": "Kopírovat s hlavičkami",
|
||||
"clipboard.copyWithoutHeaders": "Kopírovat bez hlaviček",
|
||||
"clipboard.copyYAML": "Kopírovat jako YAML",
|
||||
"clipboard.mongoInsert": "Kopírovat jako Mongo INSERT příkazy",
|
||||
"clipboard.onlyHeaders": "Pouze hlavičky",
|
||||
"clipboard.withHeaders": "S hlavičkami",
|
||||
"clipboard.withoutHeaders": "Bez hlaviček",
|
||||
"column.addNew": "Přidat nový sloupec",
|
||||
"column.copyName": "Kopírovat název",
|
||||
"column.dropColumn": "Odstranit sloupec",
|
||||
@@ -11,14 +30,37 @@
|
||||
"column.renameColumn": "Přejmenovat sloupec",
|
||||
"column.search": "Hledat sloupce",
|
||||
"column.variable": "Proměnné sloupce (jako MongoDB)",
|
||||
"columnEditor.addColumn": "Přidat sloupec {columnNumber}",
|
||||
"columnEditor.autoIncrement": "Autoinkrementace",
|
||||
"columnEditor.columnComment": "Komentář",
|
||||
"columnEditor.columnName": "Název sloupce",
|
||||
"columnEditor.computedExpression": "Vypočítaný výraz",
|
||||
"columnEditor.defaultValue": "Výchozí hodnota. Použijte platný SQL výraz, např. 'Hello World' pro řetězec, '' pro prázdný řetězec",
|
||||
"columnEditor.editColumn": "Upravit sloupec",
|
||||
"columnEditor.isPrimaryKey": "Je primární klíč",
|
||||
"columnEditor.isSparse": "Řídký",
|
||||
"columnEditor.isUnsigned": "Bez znaménka",
|
||||
"columnEditor.isZerofill": "Doplňování nul",
|
||||
"columnsConstraintEditor.addNewColumn": "Přidat nový sloupec",
|
||||
"columnsConstraintEditor.chooseColumn": "Vybrat sloupec",
|
||||
"columnsConstraintEditor.selectColumn": "Vybrat sloupec",
|
||||
"command.datagrid": "Datová mřížka",
|
||||
"command.datagrid.addJsonDocument": "Přidat JSON dokument",
|
||||
"command.datagrid.addNewColumn": "Přidat nový sloupec",
|
||||
"command.datagrid.addNewColumn.toolbar": "Nový sloupec",
|
||||
"command.datagrid.autoRefresh.seconds": "sekund",
|
||||
"command.datagrid.clearFilter": "Vymazat filtr",
|
||||
"command.datagrid.cloneRows": "Klonovat řádky",
|
||||
"command.datagrid.cloneRows.toolbar": "Klonovat řádek(y)",
|
||||
"command.datagrid.copyToClipboard": "Kopírovat do schránky",
|
||||
"command.datagrid.deleteSelectedRows": "Odstranit vybrané řádky",
|
||||
"command.datagrid.deleteSelectedRows.toolbar": "Odstranit řádek(y)",
|
||||
"command.datagrid.editCell": "Upravit hodnotu buňky",
|
||||
"command.datagrid.editJsonDocument": "Upravit řádek jako JSON dokument",
|
||||
"command.datagrid.editSelection": "Upravit výběr jako tabulku",
|
||||
"command.datagrid.filterSelected": "Filtrovat vybranou hodnotu",
|
||||
"command.datagrid.findColumn": "Najít sloupec",
|
||||
"command.datagrid.generateSql": "Generovat SQL",
|
||||
"command.datagrid.insertNewRow": "Vložit nový řádek",
|
||||
"command.datagrid.insertNewRow.toolbar": "Nový řádek",
|
||||
"command.datagrid.loadCellFromFile": "Načíst buňku ze souboru",
|
||||
@@ -31,12 +73,47 @@
|
||||
"command.datagrid.revertAllChanges.toolbar": "Vrátit vše",
|
||||
"command.datagrid.revertRowChanges": "Vrátit změny řádku",
|
||||
"command.datagrid.saveCellToFile": "Uložit buňku do souboru",
|
||||
"command.datagrid.sendToDataDeployer": "Odeslat do data deployer",
|
||||
"command.datagrid.setAutoRefresh.1": "Obnovit každou sekundu",
|
||||
"command.datagrid.setAutoRefresh.10": "Obnovit každých 10 sekund",
|
||||
"command.datagrid.setAutoRefresh.15": "Obnovit každých 15 sekund",
|
||||
"command.datagrid.setAutoRefresh.30": "Obnovit každých 30 sekund",
|
||||
"command.datagrid.setAutoRefresh.5": "Obnovit každých 5 sekund",
|
||||
"command.datagrid.setAutoRefresh.60": "Obnovit každých 60 sekund",
|
||||
"command.datagrid.setNull": "Nastavit NULL",
|
||||
"command.datagrid.startAutoRefresh": "Spustit automatické obnovování",
|
||||
"command.datagrid.stopAutoRefresh": "Zastavit automatické obnovování",
|
||||
"command.datagrid.switchToJSON": "Přepnout na JSON",
|
||||
"command.datagrid.switchToform": "Přepnout na formulář",
|
||||
"command.datagrid.toggleLeftPanel": "Přepnout levý panel",
|
||||
"command.datagrid.undo": "Krok zpět",
|
||||
"command.datagrid.viewJsonDocument": "Zobrazit řádek jako JSON dokument",
|
||||
"command.datagrid.viewJsonValue": "Zobrazit buňku jako JSON dokument",
|
||||
"command.datagrid.witchToTable": "Přepnout na tabulku",
|
||||
"command.datgrid.hideColumn": "Skrýt sloupec",
|
||||
"command.new.duckdbDatabase": "Nová DuckDB databáze",
|
||||
"command.new.sqliteDatabase": "Nová SQLite databáze",
|
||||
"command.openQuery": "Otevřít dotaz",
|
||||
"command.query": "Dotaz",
|
||||
"command.query.AiAssistant": "AI Asistent",
|
||||
"command.query.autocommitOffSwitch": "Automatické potvrzování: VYPNUTO",
|
||||
"command.query.autocommitOnSwitch": "Automatické potvrzování: ZAPNUTO",
|
||||
"command.query.beginTransaction": "Začít transakci",
|
||||
"command.query.commitTransaction": "Potvrdit transakci",
|
||||
"command.query.commitTransactionToolbar": "Potvrdit",
|
||||
"command.query.executeCurrent": "Spustit aktuální",
|
||||
"command.query.formatCode": "Formátovat kód",
|
||||
"command.query.insertSqlJoin": "Vložit SQL Join",
|
||||
"command.query.rollbackTransaction": "Vrátit transakci",
|
||||
"command.query.rollbackTransactionToolbar": "Vrátit",
|
||||
"command.query.toggleAutoExecute": "Přepnout automatické spuštění",
|
||||
"command.query.toggleFixedConnection": "Přepnout pevné připojení",
|
||||
"command.query.toggleVisibleResultTabs": "Přepnout zobrazení záložek výsledků",
|
||||
"command.tableData": "Data tabulky",
|
||||
"command.tableData.save": "Uložit",
|
||||
"command.tableEditor": "Editor tabulek",
|
||||
"command.tableEditor.reset": "Resetovat změny",
|
||||
"command.tableEditor.save": "Uložit",
|
||||
"command.tabs.addToFavorites": "Přidat aktuální kartu do oblíbených",
|
||||
"command.tabs.closeAll": "Zavřít všechny karty",
|
||||
"command.tabs.closeTab": "Zavřít kartu",
|
||||
@@ -45,27 +122,58 @@
|
||||
"command.tabs.nextTab": "Další karta",
|
||||
"command.tabs.previousTab": "Předchozí karta",
|
||||
"command.tabs.reopenClosedTab": "Znovu otevřít zavřenou kartu",
|
||||
"common.addNew": "Přidat nový",
|
||||
"common.advanced": "Pokročilé",
|
||||
"common.archive": "Archivovat (JSONL)",
|
||||
"common.cancel": "Zrušiť",
|
||||
"common.cancel": "Zrušit",
|
||||
"common.close": "Zavřít",
|
||||
"common.column": "Sloupec",
|
||||
"common.compare": "Porovnat databáze",
|
||||
"common.connection": "Připojení",
|
||||
"common.connectionOnCloud": "Připojení na cloudu",
|
||||
"common.connections": "Připojení",
|
||||
"common.createNew": "Vytvořit",
|
||||
"common.data": "Data",
|
||||
"common.database": "Databáze",
|
||||
"common.databaseChat": "Databázový chat",
|
||||
"common.datagrid.deepRefresh": "Obnovit se strukturou",
|
||||
"common.delete": "Smazat",
|
||||
"common.description": "Popis",
|
||||
"common.erDiagram": "ER Diagram",
|
||||
"common.execute": "Spustit",
|
||||
"common.export": "Export",
|
||||
"common.exportDatabase": "Exportovat databázi",
|
||||
"common.featurePremium": "Tato funkce je k dispozici pouze v DbGate Premium",
|
||||
"common.general": "Obecné",
|
||||
"common.import": "Import",
|
||||
"common.kill": "Ukončit",
|
||||
"common.name": "Název",
|
||||
"common.notSelectedOptional": "(nezvoleno - volitelné)",
|
||||
"common.parameters": "Parametry",
|
||||
"common.perspective": "Perspektiva",
|
||||
"common.query": "Dotaz",
|
||||
"common.queryDesigner": "Návrhář dotazů",
|
||||
"common.queryEditor": "Editor SQL dotazů",
|
||||
"common.refresh": "Obnovit",
|
||||
"common.remove": "Odstranit",
|
||||
"common.save": "Uložit",
|
||||
"common.saveAndNext": "Uložit a další",
|
||||
"common.saveToArchive": "Uložit do archívu",
|
||||
"common.schema": "Schéma",
|
||||
"common.searchBy": "Hledat podle:",
|
||||
"common.sqlGenerator": "SQL Generátor",
|
||||
"common.table": "Tabulka",
|
||||
"common.testingConnection": "Testování připojení",
|
||||
"connection.accessKeyId": "ID přístupového klíče",
|
||||
"connection.allowedDatabases": "Povolené databáze, jedna na řádek",
|
||||
"connection.allowedDatabasesRegex": "Regulární výraz pro povolené databáze",
|
||||
"connection.askPassword": "Neukládat, ptát se na heslo",
|
||||
"connection.askUser": "Neukládat, ptát se na přihlašovací jméno a heslo",
|
||||
"connection.authentication": "Autentizace",
|
||||
"connection.autoDetectNatMap": "Automatická detekce NAT mapy (použijte pro Redis Cluster v Docker síti)",
|
||||
"connection.chooseType": "Vyberte typ",
|
||||
"connection.clientLibraryPath": "Cesta ke klientské knihovně",
|
||||
"connection.closeConfirm": "Uzavření připojení uzavře {count} otevřených karet, pokračovat?",
|
||||
"connection.clusterNodes": "Uzly clusteru",
|
||||
"connection.color": "Barva",
|
||||
"connection.connect": "Připojit",
|
||||
@@ -80,6 +188,7 @@
|
||||
"connection.databaseUrl": "URL databáze",
|
||||
"connection.defaultDatabase": "Výchozí databáze",
|
||||
"connection.delete": "Odstranit",
|
||||
"connection.deleteConfirm": "Opravdu smazat připojení {name}?",
|
||||
"connection.disconnect": "Odpojit",
|
||||
"connection.displayName": "Zobrazený název",
|
||||
"connection.dockerWarning": "V Dockeru localhost a 127.0.0.1 nefungují, použijte místo toho dockerhost",
|
||||
@@ -87,6 +196,7 @@
|
||||
"connection.edit": "Upravit",
|
||||
"connection.endpointKey": "Klíč",
|
||||
"connection.engine": "Typ databáze",
|
||||
"connection.engineDriverNotFound": "Ovladač databáze {engine} nebyl nalezen, zkontrolujte nainstalované pluginy a změňte typ databáze v dialogu úpravy připojení",
|
||||
"connection.fillDetails": "Vyplňte detaily připojení k databázi",
|
||||
"connection.isReadOnly": "Je pouze pro čtení",
|
||||
"connection.keySeparator": "Oddělovač klíčů",
|
||||
@@ -107,6 +217,7 @@
|
||||
"connection.server": "Server",
|
||||
"connection.serverSummary": "Shrnutí serveru",
|
||||
"connection.serviceName": "Název služby",
|
||||
"connection.singleDatabase": "Používat pouze databázi {defaultDatabase}",
|
||||
"connection.socketPath": "Cesta k socketu",
|
||||
"connection.sshTunnel.agentFound": "SSH Agent nalezen",
|
||||
"connection.sshTunnel.agentNotFound": "SSH Agent nenalezen",
|
||||
@@ -124,28 +235,42 @@
|
||||
"connection.ssl.use": "Použít SSL",
|
||||
"connection.trustServerCertificate": "Důvěřovat certifikátu serveru",
|
||||
"connection.type": "Typ připojení",
|
||||
"connection.useSeparateSchemas": "Používat schémata samostatně (použijte, pokud máte mnoho velkých schémat).",
|
||||
"connection.useUrl": "Použít URL databáze",
|
||||
"connection.user": "Uživatel",
|
||||
"connection.viewDetails": "Zobrazit detaily",
|
||||
"connection.windowsDomain": "Doména (zadejte pro použití NTLM autentizace)",
|
||||
"dataGrid.columns": "Sloupce",
|
||||
"dataGrid.filters": "Filtry",
|
||||
"dataGrid.macros": "Makra",
|
||||
"dataGrid.multiColumnFilter": "Filtr více sloupců",
|
||||
"dataGrid.references": "Reference",
|
||||
"dataGrid.referencesTables": "Reference na tabulky",
|
||||
"dataGrid.searchReferences": "Hledat reference",
|
||||
"database.backup": "Záloha #",
|
||||
"database.chooseArchiveFolderForDataDeployer": "Vybrat archivní složku pro data deployer",
|
||||
"database.closeConfirm": "Uzavření připojení uzavře {count} otevřených karet, pokračovat?",
|
||||
"database.compare": "Porovnat",
|
||||
"database.compareWithCurrentDb": "Porovnat s {name}",
|
||||
"database.copyDatabaseName": "Kopírovat název databáze",
|
||||
"database.createDatabaseBackup": "Vytvořit zálohu databáze",
|
||||
"database.createNewApplication": "Vytvořit novou aplikaci",
|
||||
"database.dataDeployer": "Nasazovač dat",
|
||||
"database.dataDeployer": "Data Deployer",
|
||||
"database.databaseChat": "Databázový chat",
|
||||
"database.databaseProfiler": "Databázový profilovač",
|
||||
"database.designPerspectiveQuery": "Návrh perspektivního dotazu",
|
||||
"database.designQuery": "Návrh dotazu",
|
||||
"database.diagram": "Diagram #",
|
||||
"database.disconnect": "Odpojit",
|
||||
"database.dropAllObjectsConfirm": "Toto vygeneruje skript, po spuštění tohoto skriptu budou všechny objekty v {name} odstraněny. Pokračovat?",
|
||||
"database.dropConfirm": "Opravdu odstranit databázi {name}? Všechny otevřené relace s touto databází budou násilně uzavřeny.",
|
||||
"database.dropDatabase": "Odstranit databázi",
|
||||
"database.editApplications": "Upravit aplikaci",
|
||||
"database.export": "Export",
|
||||
"database.exportDbModel": "Export DB model",
|
||||
"database.generateScript": "Vygenerovat skript",
|
||||
"database.import": "Import",
|
||||
"database.newCollection": "Nová {collectionLabel}",
|
||||
"database.newQuery": "Nový dotaz",
|
||||
"database.newTable": "Nová tabulka",
|
||||
"database.perspective": "Perspektiva #",
|
||||
@@ -159,9 +284,77 @@
|
||||
"database.shellTitle": "Shell #",
|
||||
"database.showDiagram": "Zobrazit diagram",
|
||||
"database.sqlGenerator": "SQL generátor",
|
||||
"datagrid.closeTabs.close": "Zavřít karty",
|
||||
"datagrid.closeTabs.header": "Potvrdit zavření karet",
|
||||
"datagrid.closeTabs.modifiedFiles": "Následující soubory jsou změněny, opravdu zavřít karty? Po zavření je můžete znovu otevřít v historii",
|
||||
"datagrid.columnNameFilter": "Filtr názvu sloupce",
|
||||
"datagrid.copyAdvanced": "Pokročilé kopírování",
|
||||
"datagrid.macros.calculation": "Výpočet",
|
||||
"datagrid.macros.calculationDescription": "Vlastní výraz. Použijte řádek.název_sloupce pro přístup k hodnotám sloupců, value pro původní hodnotu",
|
||||
"datagrid.macros.changeTextCase": "Změnit velikost písmen",
|
||||
"datagrid.macros.changeTextCaseDescription": "Funkce pro velká písmena, malá písmena a další úpravy",
|
||||
"datagrid.macros.changeTextCaseType": "Typ",
|
||||
"datagrid.macros.currentDate": "Aktuální datum",
|
||||
"datagrid.macros.currentDateDescription": "Získá aktuální datum",
|
||||
"datagrid.macros.dayName": "Název dne",
|
||||
"datagrid.macros.delimiter": "Oddělovač",
|
||||
"datagrid.macros.detail": "Detail makra",
|
||||
"datagrid.macros.duplicateColumns": "Duplikovat sloupce",
|
||||
"datagrid.macros.duplicateColumnsDescription": "Duplikovat vybrané sloupce",
|
||||
"datagrid.macros.expression": "Výraz",
|
||||
"datagrid.macros.extractDateFields": "Extrahovat datumová pole",
|
||||
"datagrid.macros.extractDateFieldsDescription": "Extrahuje rok, měsíc, den a další časové údaje z výběru a přidá je jako nové sloupce",
|
||||
"datagrid.macros.format": "Formát",
|
||||
"datagrid.macros.generateUUID": "Generovat UUID",
|
||||
"datagrid.macros.generateUUIDDescription": "Generuje unikátní identifikátor",
|
||||
"datagrid.macros.hourName": "Název hodiny",
|
||||
"datagrid.macros.minuteName": "Název minuty",
|
||||
"datagrid.macros.monthName": "Název měsíce",
|
||||
"datagrid.macros.noParameters": "Nemá žádné parametry",
|
||||
"datagrid.macros.padCharacter": "Znak",
|
||||
"datagrid.macros.padLeft": "Doplnit zleva",
|
||||
"datagrid.macros.padLeftDescription": "Vrátí řetězec zadané délky, ve kterém je začátek aktuálního řetězce doplněn mezerami nebo jiným znakem",
|
||||
"datagrid.macros.padLength": "Délka",
|
||||
"datagrid.macros.padRight": "Doplnit zprava",
|
||||
"datagrid.macros.padRightDescription": "Vrátí řetězec zadané délky, ve kterém je konec aktuálního řetězce doplněn mezerami nebo jiným znakem",
|
||||
"datagrid.macros.postfix": "Přípona",
|
||||
"datagrid.macros.prefix": "Předpona",
|
||||
"datagrid.macros.removeDiacritics": "Odstranit diakritiku",
|
||||
"datagrid.macros.removeDiacriticsDescription": "Odstraní diakritiku z vybraných buněk",
|
||||
"datagrid.macros.rowIndex": "Index řádku",
|
||||
"datagrid.macros.rowIndexDescription": "Index řádku od 1 (automatické číslování)",
|
||||
"datagrid.macros.searchReplaceText": "Najít a nahradit text",
|
||||
"datagrid.macros.searchReplaceTextCaseSensitive": "Rozlišovat velikost písmen",
|
||||
"datagrid.macros.searchReplaceTextDescription": "Najít a nahradit text nebo regulární výraz",
|
||||
"datagrid.macros.searchReplaceTextFind": "Najít",
|
||||
"datagrid.macros.searchReplaceTextIsRegex": "Regulární výraz",
|
||||
"datagrid.macros.searchReplaceTextReplaceWith": "Nahradit čím",
|
||||
"datagrid.macros.secondName": "Název sekundy",
|
||||
"datagrid.macros.splitColumns": "Rozdělit sloupce",
|
||||
"datagrid.macros.splitColumnsDescription": "Rozdělit vybrané sloupce",
|
||||
"datagrid.macros.textGroup": "Textové",
|
||||
"datagrid.macros.toBoolean": "Převést na boolean",
|
||||
"datagrid.macros.toBooleanDescription": "Převede na boolean",
|
||||
"datagrid.macros.toInt": "Převést na celé číslo",
|
||||
"datagrid.macros.toIntDescription": "Převede na celé číslo",
|
||||
"datagrid.macros.toNumber": "Převést na číslo",
|
||||
"datagrid.macros.toNumberDescription": "Převede na číslo",
|
||||
"datagrid.macros.toString": "Převést na text",
|
||||
"datagrid.macros.toStringDescription": "Převede na text",
|
||||
"datagrid.macros.toolsGroup": "Nástroje",
|
||||
"datagrid.macros.trim": "Oříznout",
|
||||
"datagrid.macros.trimDescription": "Odstraní mezery na začátku a konci",
|
||||
"datagrid.macros.version": "Verze",
|
||||
"datagrid.macros.yearName": "Název roku",
|
||||
"datagrid.searchMacros": "Hledat makra",
|
||||
"datagrid.setFormat": "Nastavit formát: ",
|
||||
"datagrid.structure": "Struktura",
|
||||
"error.driverNotFound": "Neplatné připojení k databázi, ovladač nebyl nalezen",
|
||||
"error.selectedCloudConnection": "Vybrané připojení je z DbGate cloudu",
|
||||
"error.selectedNotCloudConnection": "Vybrané připojení není z DbGate cloudu",
|
||||
"export.currentArchive": "Aktuální archiv",
|
||||
"export.exportAdvanced": "Pokročilý export...",
|
||||
"export.result": "Exportovat výsledek",
|
||||
"file.allSupported": "Všechny podporované soubory",
|
||||
"file.diagramFiles": "Soubory diagramů",
|
||||
"file.duckdb": "Databáze DuckDB",
|
||||
@@ -239,6 +432,18 @@
|
||||
"filter.today": "Dnes",
|
||||
"filter.tomorrow": "Zítra",
|
||||
"filter.yesterday": "Včera",
|
||||
"foreignKey.baseColumns": "Základní sloupce",
|
||||
"foreignKey.refColumns": "Odkazované sloupce",
|
||||
"foreignKey.refTableName": "Odkazovaná tabulka",
|
||||
"foreignKeyEditor.addColumn": "Přidat sloupec",
|
||||
"foreignKeyEditor.addForeignKey": "Přidat cizí klíč",
|
||||
"foreignKeyEditor.baseColumn": "Základní sloupec - ",
|
||||
"foreignKeyEditor.editForeignKey": "Upravit cizí klíč",
|
||||
"foreignKeyEditor.onDeleteAction": "Akce při mazání",
|
||||
"foreignKeyEditor.onUpdateAction": "Akce při aktualizaci",
|
||||
"foreignKeyEditor.refColumn": "Referenční sloupec - ",
|
||||
"foreignKeyEditor.referencedTable": "Odkazovaná tabulka",
|
||||
"foreignKeyEditor.tableNotSet": "(tabulka není nastavena)",
|
||||
"importExport.createZipFileInArchive": "Vytvořit ZIP soubor v archivu",
|
||||
"importExport.exportToZipArchive": "Exportovat do ZIP archivu",
|
||||
"importExport.exportToZipFile": "Exportovat do ZIP souboru",
|
||||
@@ -246,7 +451,36 @@
|
||||
"importExport.importFromZipFile": "Importovat z ZIP souboru (v archivní složce)",
|
||||
"importExport.sourceFiles": "Zdrojové soubory",
|
||||
"importExport.tablesViewsCollections": "Tabulky / pohledy / kolekce",
|
||||
"indexEditor.filteredIndexCondition": "Podmínka filtrovaného indexu",
|
||||
"indexEditor.indexName": "Název indexu",
|
||||
"indexEditor.isUnique": "Je jedinečný index",
|
||||
"newObject.compareDescription": "Porovnat schémata databází",
|
||||
"newObject.compareDisabled": "Porovnání databází není pro aktuální databázi k dispozici.",
|
||||
"newObject.connectionLocal": "Připojení k databázi je uloženo lokálně",
|
||||
"newObject.connectionLocalDisabled": "Nemáte oprávnění vytvářet npvá připojení",
|
||||
"newObject.connectionOnCloudDescription": "Připojení k databázi je uloženo na DbGate Cloud",
|
||||
"newObject.connectionOnCloudDisabled": "Pro vytváření připojení v DbGate cloudu nemáte oprávnění",
|
||||
"newObject.databaseChatDescription": "Chatovat s databází pomocí AI",
|
||||
"newObject.databaseChatDisabled": "Databázový chat není pro aktuální databázi k dispozici",
|
||||
"newObject.erDiagramDescription": "Vizualizovat strukturu databáze",
|
||||
"newObject.erDiagramDisabled": "ER Diagram není pro aktuální databázi k dispozici",
|
||||
"newObject.exportDescription": "Exportovat do souboru jako CSV, JSON, Excel nebo jiné databáze",
|
||||
"newObject.exportDisabled": "Export není pro aktuální databázi k dispozici",
|
||||
"newObject.perspectiveDescription": "Propojte data z více databází",
|
||||
"newObject.queryDesignerDescription": "Vizuálně navrhnout SQL dotazy",
|
||||
"newObject.queryDesignerDisabled": "Návrhář dotazů není pro aktuální databázi k dispozici",
|
||||
"newObject.sqlGeneratorDescription": "Vygenerovat SQL skripty pro databázové objekty",
|
||||
"newObject.sqlGeneratorDisabled": "SQL generátor není pro aktuální databázi k dispozici",
|
||||
"newObject.tableDescription": "Vytvořit tabulku v aktuální databázi",
|
||||
"newObject.tableDisabled": "Vytvoření tabulky není pro aktuální databázi k dispozici",
|
||||
"query.limitRows": "Omezit na {queryRowsLimit} řádků",
|
||||
"query.named": ":proměnná",
|
||||
"query.noParameters": "(žádné parametry)",
|
||||
"query.positional": "? (poziční)",
|
||||
"query.unlimitedRows": "Neomezený počet řádků",
|
||||
"query.variable": "#proměnná",
|
||||
"schema.add": "Přidat nové schéma",
|
||||
"schema.allSchemas": "Všechna schémata ({count})",
|
||||
"schema.createSchema": "Vytvořit schéma",
|
||||
"schema.delete": "Odstranit schéma",
|
||||
"schema.resetToDefault": "Resetovat na výchozí",
|
||||
@@ -257,6 +491,7 @@
|
||||
"serverSummaryTab.processes": "Procesy",
|
||||
"serverSummaryTab.variables": "Proměnné",
|
||||
"settings.appearance": "Vzhled aplikace",
|
||||
"settings.appearance.afterInstalling": "Po instalaci pluginu témat (zkuste vyhledat \"theme\" v dostupných rozšířeních) zde budou k dispozici nová témata.",
|
||||
"settings.appearance.customSize": "Vlastní velikost",
|
||||
"settings.appearance.editorTheme": "Téma",
|
||||
"settings.appearance.editorTheme.default": "(použít výchozí téma)",
|
||||
@@ -267,6 +502,7 @@
|
||||
"settings.behaviour": "Chování",
|
||||
"settings.behaviour.jsonPreviewWrap": "Zalomit JSON v náhledu",
|
||||
"settings.behaviour.openDetailOnArrows": "Otevřít detail při navigaci klávesnicí",
|
||||
"settings.behaviour.singleClickPreview": "Když jedním kliknutím nebo výběrem souboru v zobrazení \"Tabulky, Pohledy, Funkce\", je zobrazen v režimu náhledu a znovu používá existující kartu (karta náhledu). To je užitečné, pokud rychle procházíte tabulky a nechcete, aby každá navštívená tabulka měla svou vlastní kartu. Když začnete upravovat tabulku nebo použijete dvojklik pro otevření tabulky ze zobrazení \"Tabulky\", nová karta je věnována této tabulce.",
|
||||
"settings.behaviour.useTabPreviewMode": "Použít režim náhledu na kartě",
|
||||
"settings.confirmations": "Potvrzení",
|
||||
"settings.confirmations.skipConfirm.collectionDataSave": "Přeskočit potvrzení při ukládání údajů kolekce (NoSQL)",
|
||||
@@ -349,6 +585,7 @@
|
||||
"sqlObject.columnComment": "Komentář sloupce",
|
||||
"sqlObject.columnDataType": "Datový typ sloupce",
|
||||
"sqlObject.columnName": "Název sloupce",
|
||||
"sqlObject.databaseEmpty": "Databáze {database} je prázdná nebo struktura není načtena, stiskněte tlačítko Obnovit pro znovunačtení struktury",
|
||||
"sqlObject.loadingStructure": "Načítání struktury databáze",
|
||||
"sqlObject.schemaName": "Schéma",
|
||||
"sqlObject.search.placeholder": "Hledat v tabulkách, pohledech, procedurách",
|
||||
@@ -358,9 +595,13 @@
|
||||
"sqlObject.tableViewProcedureName": "Název tabulky/pohledu/procedury",
|
||||
"sqlObject.tablesWithRows": "Pouze tabulky s řádky",
|
||||
"sqlObject.viewProcedureTriggerText": "Text pohledu/procedury/triggeru",
|
||||
"sqlObjectList.refreshDatabase": "Obnovit připojení k databázi a seznam objektů",
|
||||
"summaryProcesses.actions": "Akce",
|
||||
"summaryProcesses.client": "Klient",
|
||||
"summaryProcesses.connectionId": "ID připojení",
|
||||
"summaryProcesses.killConfirm": "Jste si jisti, že chcete ukončit proces {processId}?",
|
||||
"summaryProcesses.killError": "Chyba při ukončování procesu {processId}: {errorMessage}",
|
||||
"summaryProcesses.killSuccess": "Proces {processId} byl úspěšně ukončen",
|
||||
"summaryProcesses.namespace": "Namespace",
|
||||
"summaryProcesses.operation": "Operace",
|
||||
"summaryProcesses.processId": "ID procesu",
|
||||
@@ -370,6 +611,49 @@
|
||||
"summaryVariables.value": "Hodnota",
|
||||
"summaryVariables.variable": "Proměnná",
|
||||
"tab.administration": "Administrace",
|
||||
"tableData.viewColumns": "Zobrazit sloupce",
|
||||
"tableEdit.addConstraintLabel": "Přidat {constraintLabel}",
|
||||
"tableEdit.editConstraintLabel": "Upravit {constraintLabel}",
|
||||
"tableEdit.unique": "jedinečné",
|
||||
"tableEditor": "Editor tabulek",
|
||||
"tableEditor.addColumn": "Přidat sloupec",
|
||||
"tableEditor.addForeignKey": "Přidat cizí klíč",
|
||||
"tableEditor.addIndex": "Přidat index",
|
||||
"tableEditor.addPrimaryKey": "Přidat primární klíč",
|
||||
"tableEditor.addUnique": "Přidat jedinečný",
|
||||
"tableEditor.columnComment": "Komentář",
|
||||
"tableEditor.columns": "Sloupce",
|
||||
"tableEditor.computedExpression": "Vypočítaný výraz",
|
||||
"tableEditor.constraintName": "Název omezení",
|
||||
"tableEditor.copydefinitions": "Kopírovat definice",
|
||||
"tableEditor.copynames": "Kopírovat názvy",
|
||||
"tableEditor.dataType": "Datový typ",
|
||||
"tableEditor.defaultValue": "Výchozí hodnota",
|
||||
"tableEditor.dependencies": "Závislosti",
|
||||
"tableEditor.foreignKeys": "Cizí klíče ({foreignKeyCount})",
|
||||
"tableEditor.indexes": "Indexy ({indexCount})",
|
||||
"tableEditor.isPersisted": "Je persistentní",
|
||||
"tableEditor.isSparse": "Je řídký",
|
||||
"tableEditor.isUnsigned": "Bez znaménka",
|
||||
"tableEditor.isZeroFill": "Doplňování nul",
|
||||
"tableEditor.no": "NE",
|
||||
"tableEditor.noConstraintDefined": "Žádné {constraintLabel} nejsou definovány",
|
||||
"tableEditor.nocolumnsdefined": "Žádné sloupce nejsou definovány",
|
||||
"tableEditor.noforeignkeydefined": "Žádný cizí klíč není definován",
|
||||
"tableEditor.noindexdefined": "Žádný index není definován",
|
||||
"tableEditor.notnull": "NOT NULL",
|
||||
"tableEditor.nouniquedefined": "Žádný jedinečný klíč není definován",
|
||||
"tableEditor.null": "NULL",
|
||||
"tableEditor.nullability": "Možnost NULL",
|
||||
"tableEditor.primaryKey": "primární klíč",
|
||||
"tableEditor.remove": "Odstranit",
|
||||
"tableEditor.tablename": "Název tabulky",
|
||||
"tableEditor.tableproperties": "Vlastnosti tabulky",
|
||||
"tableEditor.unique": "Jedinečný",
|
||||
"tableEditor.uniqueConstraints": "Omezení jedinečnosti ({constraintCount})",
|
||||
"tableEditor.yes": "ANO",
|
||||
"tableStructure.alter": "Upravit tabulku",
|
||||
"tableStructure.create": "Vytvořit tabulku",
|
||||
"widget.databaseContent": "Obsah databáze",
|
||||
"widget.databases": "Databáze",
|
||||
"widget.keys": "Klíče",
|
||||
|
||||
@@ -1,8 +1,27 @@
|
||||
{
|
||||
"app.databaseName": "Database name",
|
||||
"app.loading_plugin": "Loading plugin {plugin} ...",
|
||||
"app.preparingPlugins": "Preparing plugins ...",
|
||||
"app.starting": "Starting DbGate",
|
||||
"authToken": "Auth token",
|
||||
"chart.detect": "Detect chart",
|
||||
"chart.open": "Open chart",
|
||||
"clipboard.SQLInsert": "SQL INSERTs",
|
||||
"clipboard.SQLUpdate": "SQL UPDATEs",
|
||||
"clipboard.copyCSV": "Copy as CSV",
|
||||
"clipboard.copyJSON": "Copy as JSON",
|
||||
"clipboard.copyJSONLines": "Copy as JSON lines/NDJSON",
|
||||
"clipboard.copyMongoInsert": "Copy as Mongo INSERTs",
|
||||
"clipboard.copyOnlyHeadres": "Copy only headers",
|
||||
"clipboard.copySQLInsert": "Copy as SQL INSERTs",
|
||||
"clipboard.copySQLUpdate": "Copy as SQL UPDATEs",
|
||||
"clipboard.copyWithHeaders": "Copy with headers",
|
||||
"clipboard.copyWithoutHeaders": "Copy without headers",
|
||||
"clipboard.copyYAML": "Copy as YAML",
|
||||
"clipboard.mongoInsert": "Mongo INSERTs",
|
||||
"clipboard.onlyHeaders": "Only Headers",
|
||||
"clipboard.withHeaders": "With headers",
|
||||
"clipboard.withoutHeaders": "Without headers",
|
||||
"column.addNew": "Add new column",
|
||||
"column.copyName": "Copy name",
|
||||
"column.dropColumn": "Drop column",
|
||||
@@ -11,14 +30,37 @@
|
||||
"column.renameColumn": "Rename column",
|
||||
"column.search": "Search columns",
|
||||
"column.variable": "Variable columns (like MongoDB)",
|
||||
"columnEditor.addColumn": "Add column {columnNumber}",
|
||||
"columnEditor.autoIncrement": "Is Autoincrement",
|
||||
"columnEditor.columnComment": "Comment",
|
||||
"columnEditor.columnName": "Column name",
|
||||
"columnEditor.computedExpression": "Computed expression",
|
||||
"columnEditor.defaultValue": "Default value. Please use valid SQL expression, eg. 'Hello World' for string value, '' for empty string",
|
||||
"columnEditor.editColumn": "Edit column",
|
||||
"columnEditor.isPrimaryKey": "Is Primary Key",
|
||||
"columnEditor.isSparse": "Sparse",
|
||||
"columnEditor.isUnsigned": "Unsigned",
|
||||
"columnEditor.isZerofill": "Zero fill",
|
||||
"columnsConstraintEditor.addNewColumn": "Add new column",
|
||||
"columnsConstraintEditor.chooseColumn": "Choose column",
|
||||
"columnsConstraintEditor.selectColumn": "Select column",
|
||||
"command.datagrid": "Data grid",
|
||||
"command.datagrid.addJsonDocument": "Add JSON document",
|
||||
"command.datagrid.addNewColumn": "Add new column",
|
||||
"command.datagrid.addNewColumn.toolbar": "New column",
|
||||
"command.datagrid.autoRefresh.seconds": "seconds",
|
||||
"command.datagrid.clearFilter": "Clear filter",
|
||||
"command.datagrid.cloneRows": "Clone rows",
|
||||
"command.datagrid.cloneRows.toolbar": "Clone row(s)",
|
||||
"command.datagrid.copyToClipboard": "Copy to clipboard",
|
||||
"command.datagrid.deleteSelectedRows": "Delete selected rows",
|
||||
"command.datagrid.deleteSelectedRows.toolbar": "Delete row(s)",
|
||||
"command.datagrid.editCell": "Edit cell value",
|
||||
"command.datagrid.editJsonDocument": "Edit row as JSON document",
|
||||
"command.datagrid.editSelection": "Edit selection as table",
|
||||
"command.datagrid.filterSelected": "Filter selected value",
|
||||
"command.datagrid.findColumn": "Find column",
|
||||
"command.datagrid.generateSql": "Generate SQL",
|
||||
"command.datagrid.insertNewRow": "Insert new row",
|
||||
"command.datagrid.insertNewRow.toolbar": "New row",
|
||||
"command.datagrid.loadCellFromFile": "Load cell from file",
|
||||
@@ -31,12 +73,47 @@
|
||||
"command.datagrid.revertAllChanges.toolbar": "Revert all",
|
||||
"command.datagrid.revertRowChanges": "Revert row changes",
|
||||
"command.datagrid.saveCellToFile": "Save cell to file",
|
||||
"command.datagrid.sendToDataDeployer": "Send to data deployer",
|
||||
"command.datagrid.setAutoRefresh.1": "Refresh every 1 second",
|
||||
"command.datagrid.setAutoRefresh.10": "Refresh every 10 seconds",
|
||||
"command.datagrid.setAutoRefresh.15": "Refresh every 15 seconds",
|
||||
"command.datagrid.setAutoRefresh.30": "Refresh every 30 seconds",
|
||||
"command.datagrid.setAutoRefresh.5": "Refresh every 5 seconds",
|
||||
"command.datagrid.setAutoRefresh.60": "Refresh every 60 seconds",
|
||||
"command.datagrid.setNull": "Set NULL",
|
||||
"command.datagrid.startAutoRefresh": "Start auto refresh",
|
||||
"command.datagrid.stopAutoRefresh": "Stop auto refresh",
|
||||
"command.datagrid.switchToJSON": "Switch to JSON",
|
||||
"command.datagrid.switchToform": "Switch to form",
|
||||
"command.datagrid.toggleLeftPanel": "Toggle left panel",
|
||||
"command.datagrid.undo": "Undo",
|
||||
"command.datagrid.viewJsonDocument": "View row as JSON document",
|
||||
"command.datagrid.viewJsonValue": "View cell as JSON document",
|
||||
"command.datagrid.witchToTable": "Switch to table",
|
||||
"command.datgrid.hideColumn": "Hide column",
|
||||
"command.new.duckdbDatabase": "New DuckDB database",
|
||||
"command.new.sqliteDatabase": "New SQLite database",
|
||||
"command.openQuery": "Open query",
|
||||
"command.query": "Query",
|
||||
"command.query.AiAssistant": "AI Assistant",
|
||||
"command.query.autocommitOffSwitch": "Auto commit: OFF",
|
||||
"command.query.autocommitOnSwitch": "Auto commit: ON",
|
||||
"command.query.beginTransaction": "Begin transaction",
|
||||
"command.query.commitTransaction": "Commit transaction",
|
||||
"command.query.commitTransactionToolbar": "Commit",
|
||||
"command.query.executeCurrent": "Execute current",
|
||||
"command.query.formatCode": "Format code",
|
||||
"command.query.insertSqlJoin": "Insert SQL Join",
|
||||
"command.query.rollbackTransaction": "Rollback transaction",
|
||||
"command.query.rollbackTransactionToolbar": "Rollback",
|
||||
"command.query.toggleAutoExecute": "Toggle auto execute",
|
||||
"command.query.toggleFixedConnection": "Toggle fixed connection",
|
||||
"command.query.toggleVisibleResultTabs": "Toggle visible result tabs",
|
||||
"command.tableData": "Table data",
|
||||
"command.tableData.save": "Save",
|
||||
"command.tableEditor": "Table editor",
|
||||
"command.tableEditor.reset": "Reset changes",
|
||||
"command.tableEditor.save": "Save",
|
||||
"command.tabs.addToFavorites": "Add current tab to favorites",
|
||||
"command.tabs.closeAll": "Close all tabs",
|
||||
"command.tabs.closeTab": "Close tab",
|
||||
@@ -45,27 +122,58 @@
|
||||
"command.tabs.nextTab": "Next tab",
|
||||
"command.tabs.previousTab": "Previous tab",
|
||||
"command.tabs.reopenClosedTab": "Reopen closed tab",
|
||||
"common.addNew": "Add new",
|
||||
"common.advanced": "Advanced",
|
||||
"common.archive": "Archive (JSONL)",
|
||||
"common.cancel": "Cancel",
|
||||
"common.close": "Close",
|
||||
"common.column": "Column ",
|
||||
"common.compare": "Compare database",
|
||||
"common.connection": "Connection",
|
||||
"common.connectionOnCloud": "Connection on Cloud",
|
||||
"common.connections": "Connections",
|
||||
"common.createNew": "Create new",
|
||||
"common.data": "Data",
|
||||
"common.database": "Database",
|
||||
"common.databaseChat": "Database Chat",
|
||||
"common.datagrid.deepRefresh": "Refresh with structure",
|
||||
"common.delete": "Delete",
|
||||
"common.description": "Description",
|
||||
"common.erDiagram": "ER Diagram",
|
||||
"common.execute": "Execute",
|
||||
"common.export": "Export",
|
||||
"common.exportDatabase": "Export database",
|
||||
"common.featurePremium": "This feature is available only in DbGate Premium",
|
||||
"common.general": "General",
|
||||
"common.import": "Import",
|
||||
"common.kill": "Kill",
|
||||
"common.name": "Name",
|
||||
"common.notSelectedOptional": "(not selected - optional)",
|
||||
"common.parameters": "Parameters",
|
||||
"common.perspective": "Perspective",
|
||||
"common.query": "Query",
|
||||
"common.queryDesigner": "Query Designer",
|
||||
"common.queryEditor": "SQL query editor",
|
||||
"common.refresh": "Refresh",
|
||||
"common.remove": "Remove",
|
||||
"common.save": "Save",
|
||||
"common.saveAndNext": "Save and next",
|
||||
"common.saveToArchive": "Save to archive",
|
||||
"common.schema": "Schema",
|
||||
"common.searchBy": "Search by:",
|
||||
"common.sqlGenerator": "SQL Generator",
|
||||
"common.table": "Table",
|
||||
"common.testingConnection": "Testing connection",
|
||||
"connection.accessKeyId": "Access Key ID",
|
||||
"connection.allowedDatabases": "Allowed databases, one per line",
|
||||
"connection.allowedDatabasesRegex": "Allowed databases regular expression",
|
||||
"connection.askPassword": "Don't save, ask for password",
|
||||
"connection.askUser": "Don't save, ask for login and password",
|
||||
"connection.authentication": "Authentication",
|
||||
"connection.autoDetectNatMap": "Auto detect NAT map (use for Redis Cluster in Docker network)",
|
||||
"connection.chooseType": "Choose type",
|
||||
"connection.clientLibraryPath": "Client library path",
|
||||
"connection.closeConfirm": "Closing connection will close {count} opened tabs, continue?",
|
||||
"connection.clusterNodes": "Cluster nodes",
|
||||
"connection.color": "Color",
|
||||
"connection.connect": "Connect",
|
||||
@@ -80,6 +188,7 @@
|
||||
"connection.databaseUrl": "Database URL",
|
||||
"connection.defaultDatabase": "Default database",
|
||||
"connection.delete": "Delete",
|
||||
"connection.deleteConfirm": "Really delete connection {name}?",
|
||||
"connection.disconnect": "Disconnect",
|
||||
"connection.displayName": "Display name",
|
||||
"connection.dockerWarning": "Under docker, localhost and 127.0.0.1 will not work, use dockerhost instead",
|
||||
@@ -87,6 +196,7 @@
|
||||
"connection.edit": "Edit",
|
||||
"connection.endpointKey": "Key",
|
||||
"connection.engine": "Database engine",
|
||||
"connection.engineDriverNotFound": "Engine driver {engine} not found, review installed plugins and change engine in edit connection dialog",
|
||||
"connection.fillDetails": "Fill database connection details",
|
||||
"connection.isReadOnly": "Is read only",
|
||||
"connection.keySeparator": "Key separator",
|
||||
@@ -107,6 +217,7 @@
|
||||
"connection.server": "Server",
|
||||
"connection.serverSummary": "Server summary",
|
||||
"connection.serviceName": "Service name",
|
||||
"connection.singleDatabase": "Use only database {defaultDatabase}",
|
||||
"connection.socketPath": "Socket path",
|
||||
"connection.sshTunnel.agentFound": "SSH Agent found",
|
||||
"connection.sshTunnel.agentNotFound": "SSH Agent not found",
|
||||
@@ -124,12 +235,23 @@
|
||||
"connection.ssl.use": "Use SSL",
|
||||
"connection.trustServerCertificate": "Trust server certificate",
|
||||
"connection.type": "Connection type",
|
||||
"connection.useSeparateSchemas": "Use schemas separately (use this if you have many large schemas)",
|
||||
"connection.useUrl": "Use database URL",
|
||||
"connection.user": "User",
|
||||
"connection.viewDetails": "View details",
|
||||
"connection.windowsDomain": "Domain (specify to use NTLM authentication)",
|
||||
"dataGrid.columns": "Columns",
|
||||
"dataGrid.filters": "Filters",
|
||||
"dataGrid.macros": "Macros",
|
||||
"dataGrid.multiColumnFilter": "Multi column filter",
|
||||
"dataGrid.references": "References",
|
||||
"dataGrid.referencesTables": "References tables",
|
||||
"dataGrid.searchReferences": "Search references",
|
||||
"database.backup": "Backup #",
|
||||
"database.chooseArchiveFolderForDataDeployer": "Choose archive folder for data deployer",
|
||||
"database.closeConfirm": "Closing connection will close {count} opened tabs, continue?",
|
||||
"database.compare": "Compare",
|
||||
"database.compareWithCurrentDb": "Compare with {name}",
|
||||
"database.copyDatabaseName": "Copy database name",
|
||||
"database.createDatabaseBackup": "Create database backup",
|
||||
"database.createNewApplication": "Create new application",
|
||||
@@ -140,12 +262,15 @@
|
||||
"database.designQuery": "Design query",
|
||||
"database.diagram": "Diagram #",
|
||||
"database.disconnect": "Disconnect",
|
||||
"database.dropAllObjectsConfirm": "This will generate script, after executing this script all objects in {name} will be dropped. Continue?",
|
||||
"database.dropConfirm": "Really drop database {name}? All opened sessions with this database will be forcefully closed.",
|
||||
"database.dropDatabase": "Drop database",
|
||||
"database.editApplications": "Edit application",
|
||||
"database.export": "Export",
|
||||
"database.exportDbModel": "Export DB model",
|
||||
"database.generateScript": "Generate script",
|
||||
"database.import": "Import",
|
||||
"database.newCollection": "New {collectionLabel}",
|
||||
"database.newQuery": "New query",
|
||||
"database.newTable": "New table",
|
||||
"database.perspective": "Perspective #",
|
||||
@@ -159,9 +284,77 @@
|
||||
"database.shellTitle": "Shell #",
|
||||
"database.showDiagram": "Show diagram",
|
||||
"database.sqlGenerator": "SQL Generator",
|
||||
"datagrid.closeTabs.close": "Close tabs",
|
||||
"datagrid.closeTabs.header": "Confirm close tabs",
|
||||
"datagrid.closeTabs.modifiedFiles": "Following files are modified, really close tabs? After closing, you could reopen them in history",
|
||||
"datagrid.columnNameFilter": "Column name filter",
|
||||
"datagrid.copyAdvanced": "Copy advanced",
|
||||
"datagrid.macros.calculation": "Calculation",
|
||||
"datagrid.macros.calculationDescription": "Custom expression. Use row.column_name for accessing column values, value for original value",
|
||||
"datagrid.macros.changeTextCase": "Change text case",
|
||||
"datagrid.macros.changeTextCaseDescription": "Uppercase, lowercase and other case functions",
|
||||
"datagrid.macros.changeTextCaseType": "Type",
|
||||
"datagrid.macros.currentDate": "Current date",
|
||||
"datagrid.macros.currentDateDescription": "Gets current date",
|
||||
"datagrid.macros.dayName": "Day name",
|
||||
"datagrid.macros.delimiter": "Delimiter",
|
||||
"datagrid.macros.detail": "Macro detail",
|
||||
"datagrid.macros.duplicateColumns": "Duplicate columns",
|
||||
"datagrid.macros.duplicateColumnsDescription": "Duplicate selected columns",
|
||||
"datagrid.macros.expression": "Expression",
|
||||
"datagrid.macros.extractDateFields": "Extract date fields",
|
||||
"datagrid.macros.extractDateFieldsDescription": "Extract year, month, day and other date/time fields from selection and adds it as new columns",
|
||||
"datagrid.macros.format": "Format",
|
||||
"datagrid.macros.generateUUID": "Generate UUID",
|
||||
"datagrid.macros.generateUUIDDescription": "Generate unique identifier",
|
||||
"datagrid.macros.hourName": "Hour name",
|
||||
"datagrid.macros.minuteName": "Minute name",
|
||||
"datagrid.macros.monthName": "Month name",
|
||||
"datagrid.macros.noParameters": "This macro has no parameters",
|
||||
"datagrid.macros.padCharacter": "Character",
|
||||
"datagrid.macros.padLeft": "Pad left",
|
||||
"datagrid.macros.padLeftDescription": "Returns string of a specified length in which the beginning of the current string is padded with spaces or other character",
|
||||
"datagrid.macros.padLength": "Length",
|
||||
"datagrid.macros.padRight": "Pad right",
|
||||
"datagrid.macros.padRightDescription": "Returns string of a specified length in which the end of the current string is padded with spaces or other character",
|
||||
"datagrid.macros.postfix": "Postfix",
|
||||
"datagrid.macros.prefix": "Prefix",
|
||||
"datagrid.macros.removeDiacritics": "Remove diacritics",
|
||||
"datagrid.macros.removeDiacriticsDescription": "Removes diacritics from selected cells",
|
||||
"datagrid.macros.rowIndex": "Row index",
|
||||
"datagrid.macros.rowIndexDescription": "Index of row from 1 (autoincrement)",
|
||||
"datagrid.macros.searchReplaceText": "Search & replace text",
|
||||
"datagrid.macros.searchReplaceTextCaseSensitive": "Case sensitive",
|
||||
"datagrid.macros.searchReplaceTextDescription": "Search & replace text or regular expression",
|
||||
"datagrid.macros.searchReplaceTextFind": "Find",
|
||||
"datagrid.macros.searchReplaceTextIsRegex": "Regular expression",
|
||||
"datagrid.macros.searchReplaceTextReplaceWith": "Replace with",
|
||||
"datagrid.macros.secondName": "Second name",
|
||||
"datagrid.macros.splitColumns": "Split columns",
|
||||
"datagrid.macros.splitColumnsDescription": "Split selected columns",
|
||||
"datagrid.macros.textGroup": "Text",
|
||||
"datagrid.macros.toBoolean": "Convert to boolean",
|
||||
"datagrid.macros.toBooleanDescription": "Converts to boolean",
|
||||
"datagrid.macros.toInt": "Convert to integer",
|
||||
"datagrid.macros.toIntDescription": "Converts to integral number",
|
||||
"datagrid.macros.toNumber": "Convert to number",
|
||||
"datagrid.macros.toNumberDescription": "Converts to number",
|
||||
"datagrid.macros.toString": "Convert to string",
|
||||
"datagrid.macros.toStringDescription": "Converts to string",
|
||||
"datagrid.macros.toolsGroup": "Tools",
|
||||
"datagrid.macros.trim": "Trim",
|
||||
"datagrid.macros.trimDescription": "Removes leading and trailing whitespace",
|
||||
"datagrid.macros.version": "Version",
|
||||
"datagrid.macros.yearName": "Year name",
|
||||
"datagrid.searchMacros": "Search macros",
|
||||
"datagrid.setFormat": "Set format: ",
|
||||
"datagrid.structure": "Structure",
|
||||
"error.driverNotFound": "Invalid database connection, driver not found",
|
||||
"error.selectedCloudConnection": "Selected connection is from DbGate cloud",
|
||||
"error.selectedNotCloudConnection": "Selected connection is not from DbGate cloud",
|
||||
"export.currentArchive": "Current archive",
|
||||
"export.exportAdvanced": "Export advanced...",
|
||||
"export.result": "Export result",
|
||||
"file.allSupported": "All supported files",
|
||||
"file.diagramFiles": "Diagram files",
|
||||
"file.duckdb": "DuckDB database",
|
||||
@@ -239,6 +432,18 @@
|
||||
"filter.today": "Today",
|
||||
"filter.tomorrow": "Tomorrow",
|
||||
"filter.yesterday": "Yesterday",
|
||||
"foreignKey.baseColumns": "Base columns",
|
||||
"foreignKey.refColumns": "Referenced columns",
|
||||
"foreignKey.refTableName": "Referenced table",
|
||||
"foreignKeyEditor.addColumn": "Add column",
|
||||
"foreignKeyEditor.addForeignKey": "Add foreign key",
|
||||
"foreignKeyEditor.baseColumn": "Base column - ",
|
||||
"foreignKeyEditor.editForeignKey": "Edit foreign key",
|
||||
"foreignKeyEditor.onDeleteAction": "On delete action",
|
||||
"foreignKeyEditor.onUpdateAction": "On update action",
|
||||
"foreignKeyEditor.refColumn": "Ref column - ",
|
||||
"foreignKeyEditor.referencedTable": "Referenced table",
|
||||
"foreignKeyEditor.tableNotSet": "(table not set)",
|
||||
"importExport.createZipFileInArchive": "Create ZIP file in archive",
|
||||
"importExport.exportToZipArchive": "Output ZIP archive",
|
||||
"importExport.exportToZipFile": "Export to ZIP file",
|
||||
@@ -246,7 +451,36 @@
|
||||
"importExport.importFromZipFile": "Import from ZIP file (in archive folder)",
|
||||
"importExport.sourceFiles": "Source files",
|
||||
"importExport.tablesViewsCollections": "Tables / views / collections",
|
||||
"indexEditor.filteredIndexCondition": "Filtered index condition",
|
||||
"indexEditor.indexName": "Index name",
|
||||
"indexEditor.isUnique": "Is unique index",
|
||||
"newObject.compareDescription": "Compare database schemas",
|
||||
"newObject.compareDisabled": "Database comparison is not available for current database",
|
||||
"newObject.connectionLocal": "Database connection stored locally",
|
||||
"newObject.connectionLocalDisabled": "You are not allowed to create new connections",
|
||||
"newObject.connectionOnCloudDescription": "Database connection stored on DbGate Cloud",
|
||||
"newObject.connectionOnCloudDisabled": "For creating connections on DbGate Cloud, you need to be logged in",
|
||||
"newObject.databaseChatDescription": "Chat with your database using AI",
|
||||
"newObject.databaseChatDisabled": "Database chat is not available for current database",
|
||||
"newObject.erDiagramDescription": "Visualize database structure",
|
||||
"newObject.erDiagramDisabled": "ER Diagram is not available for current database",
|
||||
"newObject.exportDescription": "Export to file like CSV, JSON, Excel, or other DB",
|
||||
"newObject.exportDisabled": "Export is not available for current database",
|
||||
"newObject.perspectiveDescription": "Join complex data from multiple databases",
|
||||
"newObject.queryDesignerDescription": "Design SQL queries visually",
|
||||
"newObject.queryDesignerDisabled": "Query Designer is not available for current database",
|
||||
"newObject.sqlGeneratorDescription": "Generate SQL scripts for database objects",
|
||||
"newObject.sqlGeneratorDisabled": "SQL Generator is not available for current database",
|
||||
"newObject.tableDescription": "Create table in the current database",
|
||||
"newObject.tableDisabled": "Table creation is not available for current database",
|
||||
"query.limitRows": "Limit {queryRowsLimit} rows",
|
||||
"query.named": ":variable",
|
||||
"query.noParameters": "(no parameters)",
|
||||
"query.positional": "? (positional)",
|
||||
"query.unlimitedRows": "Unlimited rows",
|
||||
"query.variable": "#variable",
|
||||
"schema.add": "Add new schema",
|
||||
"schema.allSchemas": "All schemas ({count})",
|
||||
"schema.createSchema": "Create schema",
|
||||
"schema.delete": "Delete schema",
|
||||
"schema.resetToDefault": "Reset to default",
|
||||
@@ -257,6 +491,7 @@
|
||||
"serverSummaryTab.processes": "Processes",
|
||||
"serverSummaryTab.variables": "Variables",
|
||||
"settings.appearance": "Application theme",
|
||||
"settings.appearance.afterInstalling": "After installing theme plugin (try search \"theme\" in available extensions) new themes will be available here.",
|
||||
"settings.appearance.customSize": "Custom size",
|
||||
"settings.appearance.editorTheme": "Theme",
|
||||
"settings.appearance.editorTheme.default": "(use theme default)",
|
||||
@@ -267,6 +502,7 @@
|
||||
"settings.behaviour": "Behaviour",
|
||||
"settings.behaviour.jsonPreviewWrap": "Wrap JSON in preview",
|
||||
"settings.behaviour.openDetailOnArrows": "Open detail on keyboard navigation",
|
||||
"settings.behaviour.singleClickPreview": "When you single-click or select a file in the \"Tables, Views, Functions\" view, it is shown in a preview mode and reuses an existing tab (preview tab). This is useful if you are quickly browsing tables and don\\'t want every visited table to have its own tab. When you start editing the table or use double-click to open the table from the \"Tables\" view, a new tab is dedicated to that table.",
|
||||
"settings.behaviour.useTabPreviewMode": "Use tab preview mode",
|
||||
"settings.confirmations": "Confirmations",
|
||||
"settings.confirmations.skipConfirm.collectionDataSave": "Skip confirmation when saving collection data (NoSQL)",
|
||||
@@ -349,6 +585,7 @@
|
||||
"sqlObject.columnComment": "Column comment",
|
||||
"sqlObject.columnDataType": "Column data type",
|
||||
"sqlObject.columnName": "Column name",
|
||||
"sqlObject.databaseEmpty": "Database {database} is empty or structure is not loaded, press Refresh button to reload structure",
|
||||
"sqlObject.loadingStructure": "Loading database structure",
|
||||
"sqlObject.schemaName": "Schema",
|
||||
"sqlObject.search.placeholder": "Search in tables, views, procedures",
|
||||
@@ -358,9 +595,13 @@
|
||||
"sqlObject.tableViewProcedureName": "Table/view/procedure name",
|
||||
"sqlObject.tablesWithRows": "Only tables with rows",
|
||||
"sqlObject.viewProcedureTriggerText": "View/procedure/trigger text",
|
||||
"sqlObjectList.refreshDatabase": "Refresh database connection and object list",
|
||||
"summaryProcesses.actions": "Actions",
|
||||
"summaryProcesses.client": "Client",
|
||||
"summaryProcesses.connectionId": "Connection ID",
|
||||
"summaryProcesses.killConfirm": "Are you sure you want to kill process {processId}?",
|
||||
"summaryProcesses.killError": "Error while killing process {processId}: {errorMessage}",
|
||||
"summaryProcesses.killSuccess": "Process {processId} killed successfully",
|
||||
"summaryProcesses.namespace": "Namespace",
|
||||
"summaryProcesses.operation": "Operation",
|
||||
"summaryProcesses.processId": "Process ID",
|
||||
@@ -370,6 +611,49 @@
|
||||
"summaryVariables.value": "Value",
|
||||
"summaryVariables.variable": "Variable",
|
||||
"tab.administration": "Administration",
|
||||
"tableData.viewColumns": "View columns",
|
||||
"tableEdit.addConstraintLabel": "Add {constraintLabel}",
|
||||
"tableEdit.editConstraintLabel": "Edit {constraintLabel}",
|
||||
"tableEdit.unique": "unique",
|
||||
"tableEditor": "Table editor",
|
||||
"tableEditor.addColumn": "Add column",
|
||||
"tableEditor.addForeignKey": "Add foreign key",
|
||||
"tableEditor.addIndex": "Add index",
|
||||
"tableEditor.addPrimaryKey": "Add primary key",
|
||||
"tableEditor.addUnique": "Add unique",
|
||||
"tableEditor.columnComment": "Comment",
|
||||
"tableEditor.columns": "Columns",
|
||||
"tableEditor.computedExpression": "Computed Expression",
|
||||
"tableEditor.constraintName": "Constraint name",
|
||||
"tableEditor.copydefinitions": "Copy definitions",
|
||||
"tableEditor.copynames": "Copy names",
|
||||
"tableEditor.dataType": "Data type",
|
||||
"tableEditor.defaultValue": "Default value",
|
||||
"tableEditor.dependencies": "Dependencies",
|
||||
"tableEditor.foreignKeys": "Foreign keys ({foreignKeyCount})",
|
||||
"tableEditor.indexes": "Indexes ({indexCount})",
|
||||
"tableEditor.isPersisted": "Is Persisted",
|
||||
"tableEditor.isSparse": "Is Sparse",
|
||||
"tableEditor.isUnsigned": "Unsigned",
|
||||
"tableEditor.isZeroFill": "Zero fill",
|
||||
"tableEditor.no": "NO",
|
||||
"tableEditor.noConstraintDefined": "No {constraintLabel} defined",
|
||||
"tableEditor.nocolumnsdefined": "No columns defined",
|
||||
"tableEditor.noforeignkeydefined": "No foreign key defined",
|
||||
"tableEditor.noindexdefined": "No index defined",
|
||||
"tableEditor.notnull": "NOT NULL",
|
||||
"tableEditor.nouniquedefined": "No unique defined",
|
||||
"tableEditor.null": "NULL",
|
||||
"tableEditor.nullability": "Nullability",
|
||||
"tableEditor.primaryKey": "primary key",
|
||||
"tableEditor.remove": "Remove",
|
||||
"tableEditor.tablename": "Table name",
|
||||
"tableEditor.tableproperties": "Table properties",
|
||||
"tableEditor.unique": "Unique",
|
||||
"tableEditor.uniqueConstraints": "Unique constraints ({constraintCount})",
|
||||
"tableEditor.yes": "YES",
|
||||
"tableStructure.alter": "Alter table",
|
||||
"tableStructure.create": "Create table",
|
||||
"widget.databaseContent": "Database content",
|
||||
"widget.databases": "Databases",
|
||||
"widget.keys": "Keys",
|
||||
|
||||
@@ -1,8 +1,27 @@
|
||||
{
|
||||
"app.databaseName": "Názov databázy",
|
||||
"app.loading_plugin": "Načítavam plugin {plugin} ...",
|
||||
"app.preparingPlugins": "Príprava pluginov...",
|
||||
"app.starting": "Spúšťam DbGate",
|
||||
"authToken": "Autentifikačný token",
|
||||
"chart.detect": "Rozpoznať graf",
|
||||
"chart.open": "Otvoriť graf",
|
||||
"clipboard.SQLInsert": "SQL INSERT príkazy",
|
||||
"clipboard.SQLUpdate": "SQL UPDATE príkazy",
|
||||
"clipboard.copyCSV": "Kopírovať ako CSV",
|
||||
"clipboard.copyJSON": "Kopírovať ako JSON",
|
||||
"clipboard.copyJSONLines": "Kopírovať ako JSON riadky/NDJSON",
|
||||
"clipboard.copyMongoInsert": "Kopírovať ako Mongo INSERT príkazy",
|
||||
"clipboard.copyOnlyHeadres": "Kopírovať iba hlavičky",
|
||||
"clipboard.copySQLInsert": "Kopírovať ako SQL INSERT príkazy",
|
||||
"clipboard.copySQLUpdate": "Kopírovať ako SQL UPDATE príkazy",
|
||||
"clipboard.copyWithHeaders": "Kopírovať s hlavičkami",
|
||||
"clipboard.copyWithoutHeaders": "Kopírovať bez hlavičiek",
|
||||
"clipboard.copyYAML": "Kopírovať ako YAML",
|
||||
"clipboard.mongoInsert": "Mongo INSERT príkazy",
|
||||
"clipboard.onlyHeaders": "Iba hlavičky",
|
||||
"clipboard.withHeaders": "S hlavičkami",
|
||||
"clipboard.withoutHeaders": "Bez hlavičiek",
|
||||
"column.addNew": "Pridať nový stĺpec",
|
||||
"column.copyName": "Kopírovať názov",
|
||||
"column.dropColumn": "Odstrániť stĺpec",
|
||||
@@ -11,14 +30,37 @@
|
||||
"column.renameColumn": "Premenovať stĺpec",
|
||||
"column.search": "Hľadať stĺpce",
|
||||
"column.variable": "Premenlivé stĺpce (ako MongoDB)",
|
||||
"columnEditor.addColumn": "Pridať stĺpec {columnNumber}",
|
||||
"columnEditor.autoIncrement": "Autoinkrement",
|
||||
"columnEditor.columnComment": "Komentár",
|
||||
"columnEditor.columnName": "Názov stĺpca",
|
||||
"columnEditor.computedExpression": "Vypočítaný výraz",
|
||||
"columnEditor.defaultValue": "Predvolená hodnota. Použite platný SQL výraz, napr. 'Hello World' pre reťazec, ' ' pre prázdny reťazec",
|
||||
"columnEditor.editColumn": "Upraviť stĺpec",
|
||||
"columnEditor.isPrimaryKey": "Je primárny kľúč",
|
||||
"columnEditor.isSparse": "Riedky",
|
||||
"columnEditor.isUnsigned": "Bez znamienka",
|
||||
"columnEditor.isZerofill": "Výplň nulami",
|
||||
"columnsConstraintEditor.addNewColumn": "Pridať nový stĺpec",
|
||||
"columnsConstraintEditor.chooseColumn": "Vybrať stĺpec",
|
||||
"columnsConstraintEditor.selectColumn": "Vybrať stĺpec",
|
||||
"command.datagrid": "Dátová mriežka",
|
||||
"command.datagrid.addJsonDocument": "Pridať JSON dokument",
|
||||
"command.datagrid.addNewColumn": "Pridať nový stĺpec",
|
||||
"command.datagrid.addNewColumn.toolbar": "Nový stĺpec",
|
||||
"command.datagrid.autoRefresh.seconds": "sekúnd",
|
||||
"command.datagrid.clearFilter": "Vymazať filter",
|
||||
"command.datagrid.cloneRows": "Klonovať riadky",
|
||||
"command.datagrid.cloneRows.toolbar": "Klonovať riadok(y)",
|
||||
"command.datagrid.copyToClipboard": "Kopírovať do schránky",
|
||||
"command.datagrid.deleteSelectedRows": "Odstrániť vybrané riadky",
|
||||
"command.datagrid.deleteSelectedRows.toolbar": "Odstrániť riadok(y)",
|
||||
"command.datagrid.editCell": "Upraviť hodnotu bunky",
|
||||
"command.datagrid.editJsonDocument": "Upraviť riadok ako JSON dokument",
|
||||
"command.datagrid.editSelection": "Upraviť výber ako tabuľku",
|
||||
"command.datagrid.filterSelected": "Filtrovať vybranú hodnotu",
|
||||
"command.datagrid.findColumn": "Nájsť stĺpec",
|
||||
"command.datagrid.generateSql": "Generovať SQL",
|
||||
"command.datagrid.insertNewRow": "Vložiť nový riadok",
|
||||
"command.datagrid.insertNewRow.toolbar": "Nový riadok",
|
||||
"command.datagrid.loadCellFromFile": "Načítať bunku zo súboru",
|
||||
@@ -31,12 +73,47 @@
|
||||
"command.datagrid.revertAllChanges.toolbar": "Vrátiť všetko",
|
||||
"command.datagrid.revertRowChanges": "Vrátiť zmeny riadka",
|
||||
"command.datagrid.saveCellToFile": "Uložiť bunku do súboru",
|
||||
"command.datagrid.sendToDataDeployer": "Odoslať do data deployer",
|
||||
"command.datagrid.setAutoRefresh.1": "Obnoviť každú sekundu",
|
||||
"command.datagrid.setAutoRefresh.10": "Obnoviť každých 10 sekúnd",
|
||||
"command.datagrid.setAutoRefresh.15": "Obnoviť každých 15 sekúnd",
|
||||
"command.datagrid.setAutoRefresh.30": "Obnoviť každých 30 sekúnd",
|
||||
"command.datagrid.setAutoRefresh.5": "Obnoviť každých 5 sekúnd",
|
||||
"command.datagrid.setAutoRefresh.60": "Obnoviť každých 60 sekúnd",
|
||||
"command.datagrid.setNull": "Nastaviť NULL",
|
||||
"command.datagrid.startAutoRefresh": "Spustiť automatické obnovovanie",
|
||||
"command.datagrid.stopAutoRefresh": "Zastaviť automatické obnovovanie",
|
||||
"command.datagrid.switchToJSON": "Prepnúť na JSON",
|
||||
"command.datagrid.switchToform": "Prepnúť na formulár",
|
||||
"command.datagrid.toggleLeftPanel": "Prepnúť ľavý panel",
|
||||
"command.datagrid.undo": "Krok späť",
|
||||
"command.datagrid.viewJsonDocument": "Zobraziť riadok ako JSON dokument",
|
||||
"command.datagrid.viewJsonValue": "Zobraziť bunku ako JSON dokument",
|
||||
"command.datagrid.witchToTable": "Prepnúť na tabuľku",
|
||||
"command.datgrid.hideColumn": "Skryť stĺpec",
|
||||
"command.new.duckdbDatabase": "Nová DuckDB databáza",
|
||||
"command.new.sqliteDatabase": "Nová SQLite databáza",
|
||||
"command.openQuery": "Otvoriť dotaz",
|
||||
"command.query": "Dotaz",
|
||||
"command.query.AiAssistant": "AI Asistent",
|
||||
"command.query.autocommitOffSwitch": "Automatické potvrdenie: VYPNUTÉ",
|
||||
"command.query.autocommitOnSwitch": "Automatické potvrdenie: ZAPNUTÉ",
|
||||
"command.query.beginTransaction": "Začať transakciu",
|
||||
"command.query.commitTransaction": "Potvrdiť transakciu",
|
||||
"command.query.commitTransactionToolbar": "Potvrdiť",
|
||||
"command.query.executeCurrent": "Spustiť aktuálny",
|
||||
"command.query.formatCode": "Formátovať kód",
|
||||
"command.query.insertSqlJoin": "Vložiť SQL Join",
|
||||
"command.query.rollbackTransaction": "Vrátiť transakciu",
|
||||
"command.query.rollbackTransactionToolbar": "Vrátiť",
|
||||
"command.query.toggleAutoExecute": "Prepnúť automatické vykonávanie",
|
||||
"command.query.toggleFixedConnection": "Prepnúť pevné pripojenie",
|
||||
"command.query.toggleVisibleResultTabs": "Prepnúť viditeľné výsledkové karty",
|
||||
"command.tableData": "Dáta tabuľky",
|
||||
"command.tableData.save": "Uložiť",
|
||||
"command.tableEditor": "Editor tabuliek",
|
||||
"command.tableEditor.reset": "Resetovať zmeny",
|
||||
"command.tableEditor.save": "Uložiť",
|
||||
"command.tabs.addToFavorites": "Pridať aktuálnu kartu do obľúbených",
|
||||
"command.tabs.closeAll": "Zavrieť všetky karty",
|
||||
"command.tabs.closeTab": "Zavrieť kartu",
|
||||
@@ -45,27 +122,58 @@
|
||||
"command.tabs.nextTab": "Ďalšia karta",
|
||||
"command.tabs.previousTab": "Predchádzajúca karta",
|
||||
"command.tabs.reopenClosedTab": "Znovu otvoriť zatvorenú kartu",
|
||||
"common.addNew": "Pridať nový",
|
||||
"common.advanced": "Pokročilé",
|
||||
"common.archive": "Archivovať (JSONL)",
|
||||
"common.cancel": "Zrušiť",
|
||||
"common.close": "Zavrieť",
|
||||
"common.column": "Stĺpec ",
|
||||
"common.compare": "Porovnať databázy",
|
||||
"common.connection": "Pripojenie",
|
||||
"common.connectionOnCloud": "Pripojenie na cloude",
|
||||
"common.connections": "Pripojenia",
|
||||
"common.createNew": "Vytvoriť",
|
||||
"common.data": "Dáta",
|
||||
"common.database": "Databáza",
|
||||
"common.databaseChat": "Chat s databázou",
|
||||
"common.datagrid.deepRefresh": "Obnoviť so štruktúrou",
|
||||
"common.delete": "Odstrániť",
|
||||
"common.description": "Popis",
|
||||
"common.erDiagram": "ER Diagram",
|
||||
"common.execute": "Spustiť",
|
||||
"common.export": "Exportovať",
|
||||
"common.exportDatabase": "Exportovať databázu",
|
||||
"common.featurePremium": "Táto funkcia je k dispozícii iba v DbGate Premium",
|
||||
"common.general": "Všeobecné",
|
||||
"common.import": "Importovať",
|
||||
"common.kill": "Ukončiť",
|
||||
"common.name": "Názov",
|
||||
"common.notSelectedOptional": "(nezvolené - voliteľné)",
|
||||
"common.parameters": "Parametre",
|
||||
"common.perspective": "Perspektíva",
|
||||
"common.query": "Dotaz",
|
||||
"common.queryDesigner": "Návrhár dotazov",
|
||||
"common.queryEditor": "Editor SQL dotazov",
|
||||
"common.refresh": "Obnoviť",
|
||||
"common.remove": "Odstrániť",
|
||||
"common.save": "Uložiť",
|
||||
"common.saveAndNext": "Uložiť a pokračovať",
|
||||
"common.saveToArchive": "Uložiť do archívu",
|
||||
"common.schema": "Schéma",
|
||||
"common.searchBy": "Hľadať podľa:",
|
||||
"common.sqlGenerator": "SQL Generátor",
|
||||
"common.table": "Tabuľka",
|
||||
"common.testingConnection": "Testovanie pripojenia",
|
||||
"connection.accessKeyId": "ID prístupového kľúča",
|
||||
"connection.allowedDatabases": "Povolené databázy, jedna na riadok",
|
||||
"connection.allowedDatabasesRegex": "Regulárny výraz pre povolené databázy",
|
||||
"connection.askPassword": "Neukladať, pýtať sa na heslo",
|
||||
"connection.askUser": "Neukladať, pýtať sa na prihlasovacie údaje a heslo",
|
||||
"connection.authentication": "Autentizácia",
|
||||
"connection.autoDetectNatMap": "Automatická detekcia NAT mapy (použite pre Redis Cluster v Docker sieti)",
|
||||
"connection.chooseType": "Vyberte typ",
|
||||
"connection.clientLibraryPath": "Cesta ku klientskej knižnici",
|
||||
"connection.closeConfirm": "Zatvorenie pripojenia zatvorí {count} otvorených kariet, pokračovať?",
|
||||
"connection.clusterNodes": "Uzly klastra",
|
||||
"connection.color": "Farba",
|
||||
"connection.connect": "Pripojiť",
|
||||
@@ -80,6 +188,7 @@
|
||||
"connection.databaseUrl": "URL databázy",
|
||||
"connection.defaultDatabase": "Predvolená databáza",
|
||||
"connection.delete": "Odstrániť",
|
||||
"connection.deleteConfirm": "Naozaj odstrániť pripojenie {name}?",
|
||||
"connection.disconnect": "Odpojiť",
|
||||
"connection.displayName": "Zobrazovaný názov",
|
||||
"connection.dockerWarning": "V Dockeri localhost a 127.0.0.1 nefungujú, použite namiesto toho dockerhost",
|
||||
@@ -87,6 +196,7 @@
|
||||
"connection.edit": "Upraviť",
|
||||
"connection.endpointKey": "Kľúč",
|
||||
"connection.engine": "Typ databázy",
|
||||
"connection.engineDriverNotFound": "Driver databázy {engine} nebol nájdený, skontrolujte nainštalované pluginy a zmeňte typ databázy v dialógu úpravy pripojenia",
|
||||
"connection.fillDetails": "Vyplňte údaje o pripojení k databáze",
|
||||
"connection.isReadOnly": "Je iba na čítanie",
|
||||
"connection.keySeparator": "Oddeľovač kľúčov",
|
||||
@@ -107,6 +217,7 @@
|
||||
"connection.server": "Server",
|
||||
"connection.serverSummary": "Zhrnutie servera",
|
||||
"connection.serviceName": "Názov služby",
|
||||
"connection.singleDatabase": "Používať iba databázu {defaultDatabase}",
|
||||
"connection.socketPath": "Cesta k socketu",
|
||||
"connection.sshTunnel.agentFound": "SSH Agent nájdený",
|
||||
"connection.sshTunnel.agentNotFound": "SSH Agent nenájdený",
|
||||
@@ -124,28 +235,42 @@
|
||||
"connection.ssl.use": "Použiť SSL",
|
||||
"connection.trustServerCertificate": "Dôverovať certifikátu servera",
|
||||
"connection.type": "Typ pripojenia",
|
||||
"connection.useSeparateSchemas": "Používať schémy samostatne (použite, ak máte veľa veľkých schém)",
|
||||
"connection.useUrl": "Použiť URL databázy",
|
||||
"connection.user": "Používateľ",
|
||||
"connection.viewDetails": "Zobraziť detaily",
|
||||
"connection.windowsDomain": "Doména (zadajte pre použitie NTLM autentizácie)",
|
||||
"dataGrid.columns": "Stĺpce",
|
||||
"dataGrid.filters": "Filtre",
|
||||
"dataGrid.macros": "Makrá",
|
||||
"dataGrid.multiColumnFilter": "Filter viacerých stĺpcov",
|
||||
"dataGrid.references": "Referencie",
|
||||
"dataGrid.referencesTables": "Referencie na tabuľky",
|
||||
"dataGrid.searchReferences": "Vyhľadať referencie",
|
||||
"database.backup": "Záloha #",
|
||||
"database.chooseArchiveFolderForDataDeployer": "Vybrať archívnu zložku pre data deployer",
|
||||
"database.closeConfirm": "Zatvorenie pripojenia zatvorí {count} otvorených kariet, pokračovať?",
|
||||
"database.compare": "Porovnať",
|
||||
"database.compareWithCurrentDb": "Porovnať s {name}",
|
||||
"database.copyDatabaseName": "Kopírovať názov databázy",
|
||||
"database.createDatabaseBackup": "Vytvoriť zálohu databázy",
|
||||
"database.createNewApplication": "Vytvoriť novú aplikáciu",
|
||||
"database.dataDeployer": "Nasadzovač dát",
|
||||
"database.dataDeployer": "Data deployer",
|
||||
"database.databaseChat": "Databázový chat",
|
||||
"database.databaseProfiler": "Databázový profilovač",
|
||||
"database.designPerspectiveQuery": "Návrh perspektívneho dotazu",
|
||||
"database.designQuery": "Návrh dotazu",
|
||||
"database.diagram": "Diagram #",
|
||||
"database.disconnect": "Odpojiť",
|
||||
"database.dropAllObjectsConfirm": "Toto vygeneruje skript, po spustení tohto skriptu budú všetky objekty v {name} odstránené. Pokračovať?",
|
||||
"database.dropConfirm": "Naozaj odstrániť databázu {name}? Všetky otvorené relácie s touto databázou budú zatvorené.",
|
||||
"database.dropDatabase": "Odstrániť databázu",
|
||||
"database.editApplications": "Upraviť aplikáciu",
|
||||
"database.export": "Exportovať",
|
||||
"database.exportDbModel": "Exportovať DB model",
|
||||
"database.generateScript": "Generovať skript",
|
||||
"database.import": "Importovať",
|
||||
"database.newCollection": "Nová {collectionLabel}",
|
||||
"database.newQuery": "Nový dotaz",
|
||||
"database.newTable": "Nová tabuľka",
|
||||
"database.perspective": "Perspektíva #",
|
||||
@@ -159,9 +284,77 @@
|
||||
"database.shellTitle": "Shell #",
|
||||
"database.showDiagram": "Zobraziť",
|
||||
"database.sqlGenerator": "SQL generátor",
|
||||
"datagrid.closeTabs.close": "Zavrieť karty",
|
||||
"datagrid.closeTabs.header": "Potvrdiť zatvorenie kariet",
|
||||
"datagrid.closeTabs.modifiedFiles": "Nasledujúce súbory sú upravené, naozaj zavrieť karty? Po zatvorení ich môžete znovu otvoriť v histórii",
|
||||
"datagrid.columnNameFilter": "Filter názvu stĺpca",
|
||||
"datagrid.copyAdvanced": "Pokročilé kopírovanie",
|
||||
"datagrid.macros.calculation": "Výpočet",
|
||||
"datagrid.macros.calculationDescription": "Vlastný výraz. Použite riadok.názov_stĺpca pre prístup k hodnotám stĺpcov, value pre pôvodnú hodnotu",
|
||||
"datagrid.macros.changeTextCase": "Zmeniť veľkosť písmen",
|
||||
"datagrid.macros.changeTextCaseDescription": "Funkcie pre veľké, malé a iné formáty písmen",
|
||||
"datagrid.macros.changeTextCaseType": "Typ",
|
||||
"datagrid.macros.currentDate": "Aktuálny dátum",
|
||||
"datagrid.macros.currentDateDescription": "Získa aktuálny dátum",
|
||||
"datagrid.macros.dayName": "Názov dňa",
|
||||
"datagrid.macros.delimiter": "Oddeľovač",
|
||||
"datagrid.macros.detail": "Detail makra",
|
||||
"datagrid.macros.duplicateColumns": "Duplikovať stĺpce",
|
||||
"datagrid.macros.duplicateColumnsDescription": "Duplikovať vybrané stĺpce",
|
||||
"datagrid.macros.expression": "Výraz",
|
||||
"datagrid.macros.extractDateFields": "Extrahovať polia dátumu",
|
||||
"datagrid.macros.extractDateFieldsDescription": "Extrahuje rok, mesiac, deň a ďalšie dátumové/časové polia z výberu a pridá ich ako nové stĺpce",
|
||||
"datagrid.macros.format": "Formát",
|
||||
"datagrid.macros.generateUUID": "Generovať UUID",
|
||||
"datagrid.macros.generateUUIDDescription": "Generovať unikátny identifikátor",
|
||||
"datagrid.macros.hourName": "Názov hodiny",
|
||||
"datagrid.macros.minuteName": "Názov minúty",
|
||||
"datagrid.macros.monthName": "Názov mesiaca",
|
||||
"datagrid.macros.noParameters": "Nemá žiadne parametre",
|
||||
"datagrid.macros.padCharacter": "Znak",
|
||||
"datagrid.macros.padLeft": "Doplniť zľava",
|
||||
"datagrid.macros.padLeftDescription": "Vráti reťazec zadanej dĺžky, v ktorom je začiatok aktuálneho reťazca doplnený medzerami alebo iným znakom",
|
||||
"datagrid.macros.padLength": "Dĺžka",
|
||||
"datagrid.macros.padRight": "Doplniť sprava",
|
||||
"datagrid.macros.padRightDescription": "Vráti reťazec zadanej dĺžky, v ktorom je koniec aktuálneho reťazca doplnený medzerami alebo iným znakom",
|
||||
"datagrid.macros.postfix": "Prípona",
|
||||
"datagrid.macros.prefix": "Predpona",
|
||||
"datagrid.macros.removeDiacritics": "Odstrániť diakritiku",
|
||||
"datagrid.macros.removeDiacriticsDescription": "Odstráni diakritiku z vybraných buniek",
|
||||
"datagrid.macros.rowIndex": "Index riadku",
|
||||
"datagrid.macros.rowIndexDescription": "Index riadku od 1 (automatické číslovanie)",
|
||||
"datagrid.macros.searchReplaceText": "Nájsť a nahradiť text",
|
||||
"datagrid.macros.searchReplaceTextCaseSensitive": "Rozlišovať veľkosť písmen",
|
||||
"datagrid.macros.searchReplaceTextDescription": "Nájsť a nahradiť text alebo regulárny výraz",
|
||||
"datagrid.macros.searchReplaceTextFind": "Nájsť",
|
||||
"datagrid.macros.searchReplaceTextIsRegex": "Regulárny výraz",
|
||||
"datagrid.macros.searchReplaceTextReplaceWith": "Nahradiť s",
|
||||
"datagrid.macros.secondName": "Názov sekundy",
|
||||
"datagrid.macros.splitColumns": "Rozdeliť stĺpce",
|
||||
"datagrid.macros.splitColumnsDescription": "Rozdeliť vybrané stĺpce",
|
||||
"datagrid.macros.textGroup": "Textové",
|
||||
"datagrid.macros.toBoolean": "Previesť na boolean",
|
||||
"datagrid.macros.toBooleanDescription": "Prevedie na boolean",
|
||||
"datagrid.macros.toInt": "Previesť na celé číslo",
|
||||
"datagrid.macros.toIntDescription": "Prevedie na celé číslo",
|
||||
"datagrid.macros.toNumber": "Previesť na číslo",
|
||||
"datagrid.macros.toNumberDescription": "Prevedie na číslo",
|
||||
"datagrid.macros.toString": "Previesť na reťazec",
|
||||
"datagrid.macros.toStringDescription": "Prevedie na reťazec",
|
||||
"datagrid.macros.toolsGroup": "Nástroje",
|
||||
"datagrid.macros.trim": "Orezať",
|
||||
"datagrid.macros.trimDescription": "Odstráni medzery na začiatku a konci",
|
||||
"datagrid.macros.version": "Verzia",
|
||||
"datagrid.macros.yearName": "Názov roka",
|
||||
"datagrid.searchMacros": "Vyhľadať makrá",
|
||||
"datagrid.setFormat": "Nastaviť formát: ",
|
||||
"datagrid.structure": "Štruktúra",
|
||||
"error.driverNotFound": "Neplatné pripojenie k databáze, ovládač nenájdený",
|
||||
"error.selectedCloudConnection": "Vybrané pripojenie je z DbGate cloudu",
|
||||
"error.selectedNotCloudConnection": "Vybrané pripojenie nie je z DbGate cloudu",
|
||||
"export.currentArchive": "Aktuálny archív",
|
||||
"export.exportAdvanced": "Pokročilý export...",
|
||||
"export.result": "Exportovať výsledok",
|
||||
"file.allSupported": "Všetky podporované súbory",
|
||||
"file.diagramFiles": "Súbory diagramov",
|
||||
"file.duckdb": "Databáza DuckDB",
|
||||
@@ -239,6 +432,18 @@
|
||||
"filter.today": "Dnes",
|
||||
"filter.tomorrow": "Zajtra",
|
||||
"filter.yesterday": "Včera",
|
||||
"foreignKey.baseColumns": "Základné stĺpce",
|
||||
"foreignKey.refColumns": "Referencované stĺpce",
|
||||
"foreignKey.refTableName": "Referencovaná tabuľka",
|
||||
"foreignKeyEditor.addColumn": "Pridať stĺpec",
|
||||
"foreignKeyEditor.addForeignKey": "Pridať cudzí kľúč",
|
||||
"foreignKeyEditor.baseColumn": "Základný stĺpec - ",
|
||||
"foreignKeyEditor.editForeignKey": "Upraviť cudzí kľúč",
|
||||
"foreignKeyEditor.onDeleteAction": "Akcia pri odstránení",
|
||||
"foreignKeyEditor.onUpdateAction": "Akcia pri aktualizácii",
|
||||
"foreignKeyEditor.refColumn": "Referencovaný stĺpec - ",
|
||||
"foreignKeyEditor.referencedTable": "Referencovaná tabuľka - ",
|
||||
"foreignKeyEditor.tableNotSet": "(tabuľka nie je nastavená)",
|
||||
"importExport.createZipFileInArchive": "Vytvoriť ZIP súbor v archíve",
|
||||
"importExport.exportToZipArchive": "Exportovať do ZIP archívu",
|
||||
"importExport.exportToZipFile": "Exportovať do ZIP súboru",
|
||||
@@ -246,7 +451,36 @@
|
||||
"importExport.importFromZipFile": "Importovať zo ZIP súboru (v archívnej zložke)",
|
||||
"importExport.sourceFiles": "Zdrojové súbory",
|
||||
"importExport.tablesViewsCollections": "Tabuľky / pohľady / kolekcie",
|
||||
"indexEditor.filteredIndexCondition": "Podmienka filtrovaného indexu",
|
||||
"indexEditor.indexName": "Názov indexu",
|
||||
"indexEditor.isUnique": "Je jedinečný index",
|
||||
"newObject.compareDescription": "Porovnať schémy databáz",
|
||||
"newObject.compareDisabled": "Porovnávanie databáz nie je k dispozícii pre aktuálnu databázu",
|
||||
"newObject.connectionLocal": "Pripojenie databázy uložené lokálne",
|
||||
"newObject.connectionLocalDisabled": "Nie ste oprávnení vytvárať nové pripojenia",
|
||||
"newObject.connectionOnCloudDescription": "Pripojenie databázy uložené na DbGate Cloud",
|
||||
"newObject.connectionOnCloudDisabled": "Na vytvorenie pripojení na DbGate Cloud sa musíte prihlásiť",
|
||||
"newObject.databaseChatDescription": "Chat s vašou databázou pomocou AI",
|
||||
"newObject.databaseChatDisabled": "Chat s databázou nie je k dispozícii pre aktuálnu databázu",
|
||||
"newObject.erDiagramDescription": "Vizualizovať štruktúru databázy",
|
||||
"newObject.erDiagramDisabled": "ER Diagram nie je k dispozícii pre aktuálnu databázu",
|
||||
"newObject.exportDescription": "Exportovať do súboru ako CSV, JSON, Excel alebo inej DB",
|
||||
"newObject.exportDisabled": "Export nie je k dispozícii pre aktuálnu databázu",
|
||||
"newObject.perspectiveDescription": "Spojiť údaje z viacerých databáz",
|
||||
"newObject.queryDesignerDescription": "Navrhnúť SQL dotazy vizuálne",
|
||||
"newObject.queryDesignerDisabled": "Návrhár dotazov nie je k dispozícii pre aktuálnu databázu",
|
||||
"newObject.sqlGeneratorDescription": "Generovať SQL skripty pre objekty databázy",
|
||||
"newObject.sqlGeneratorDisabled": "SQL Generátor nie je k dispozícii pre aktuálnu databázu",
|
||||
"newObject.tableDescription": "Vytvoriť tabuľku v aktuálnej databáze",
|
||||
"newObject.tableDisabled": "Vytvorenie tabuľky nie je k dispozícii pre aktuálnu databázu",
|
||||
"query.limitRows": "Obmedziť na {queryRowsLimit} riadkov",
|
||||
"query.named": ":premenná",
|
||||
"query.noParameters": "(žiadne parametre)",
|
||||
"query.positional": "? (pozíciový)",
|
||||
"query.unlimitedRows": "Neobmedzené riadky",
|
||||
"query.variable": "#premenná",
|
||||
"schema.add": "Pridať novú schému",
|
||||
"schema.allSchemas": "Všetky schémy ({count})",
|
||||
"schema.createSchema": "Vytvoriť schému",
|
||||
"schema.delete": "Odstrániť schému",
|
||||
"schema.resetToDefault": "Resetovať na predvolené",
|
||||
@@ -257,6 +491,7 @@
|
||||
"serverSummaryTab.processes": "Procesy",
|
||||
"serverSummaryTab.variables": "Premenné",
|
||||
"settings.appearance": "Vzhľad aplikácie",
|
||||
"settings.appearance.afterInstalling": "Po nainštalovaní (skúste vyhľadať \"themes\" v dostupných rozšíreniach) budú nové témy k dispozícii tu.",
|
||||
"settings.appearance.customSize": "Vlastná veľkosť",
|
||||
"settings.appearance.editorTheme": "Téma",
|
||||
"settings.appearance.editorTheme.default": "(použiť predvolenú tému)",
|
||||
@@ -267,6 +502,7 @@
|
||||
"settings.behaviour": "Správanie",
|
||||
"settings.behaviour.jsonPreviewWrap": "Zalomiť JSON v náhľade",
|
||||
"settings.behaviour.openDetailOnArrows": "Otvoriť detail pri navigácii klávesnicou",
|
||||
"settings.behaviour.singleClickPreview": "Pri jednoduchom kliknutí alebo výbere súboru v zobrazení \"Tabuľky, pohľady, funkcie\" sa zobrazí v režime náhľadu a znovu použije existujúcu kartu (karta náhľadu). Toto je užitočné, ak rýchlo prehliadate tabuľky a nechcete, aby každá navštívená tabuľka mala svoju vlastnú kartu. Keď začnete upravovať tabuľku alebo použijete dvojklik na otvorenie tabuľky zo zobrazenia \"Tabuľky\", nová karta bude venovaná tejto tabuľke.",
|
||||
"settings.behaviour.useTabPreviewMode": "Použiť režim náhľadu na karte",
|
||||
"settings.confirmations": "Potvrdenia",
|
||||
"settings.confirmations.skipConfirm.collectionDataSave": "Preskočiť potvrdenie pri ukladaní údajov kolekcie (NoSQL)",
|
||||
@@ -349,6 +585,7 @@
|
||||
"sqlObject.columnComment": "Komentár stĺpca",
|
||||
"sqlObject.columnDataType": "Dátový typ stĺpca",
|
||||
"sqlObject.columnName": "Názov stĺpca",
|
||||
"sqlObject.databaseEmpty": "Databáza {database} je prázdna alebo štruktúra nie je načítaná, stlačte tlačidlo Obnoviť pre opätovné načítanie štruktúry",
|
||||
"sqlObject.loadingStructure": "Načítavanie štruktúry databázy",
|
||||
"sqlObject.schemaName": "Schéma",
|
||||
"sqlObject.search.placeholder": "Hľadať v tabuľkách, pohľadoch, procedúrach",
|
||||
@@ -358,9 +595,13 @@
|
||||
"sqlObject.tableViewProcedureName": "Názov tabuľky/pohľadu/procedúry",
|
||||
"sqlObject.tablesWithRows": "Iba tabuľky s riadkami",
|
||||
"sqlObject.viewProcedureTriggerText": "Text pohľadu/procedúry/triggera",
|
||||
"sqlObjectList.refreshDatabase": "Obnoviť databázové pripojenia a zoznam objektov",
|
||||
"summaryProcesses.actions": "Akcie",
|
||||
"summaryProcesses.client": "Klient",
|
||||
"summaryProcesses.connectionId": "ID pripojenia",
|
||||
"summaryProcesses.killConfirm": "Ste si istí, že chcete ukončiť proces {processId}?",
|
||||
"summaryProcesses.killError": "Chyba pri ukončovaní procesu {processId}: {errorMessage}",
|
||||
"summaryProcesses.killSuccess": "Proces {processId} bol úspešne ukončený",
|
||||
"summaryProcesses.namespace": "Namespace",
|
||||
"summaryProcesses.operation": "Operácia",
|
||||
"summaryProcesses.processId": "ID procesu",
|
||||
@@ -370,6 +611,49 @@
|
||||
"summaryVariables.value": "Hodnota",
|
||||
"summaryVariables.variable": "Premenná",
|
||||
"tab.administration": "Administrácia",
|
||||
"tableData.viewColumns": "Zobraziť stĺpce",
|
||||
"tableEdit.addConstraintLabel": "Pridať {constraintLabel}",
|
||||
"tableEdit.editConstraintLabel": "Upraviť {constraintLabel}",
|
||||
"tableEdit.unique": "jedinečné",
|
||||
"tableEditor": "Editor tabuliek",
|
||||
"tableEditor.addColumn": "Pridať stĺpec",
|
||||
"tableEditor.addForeignKey": "Pridať cudzí kľúč",
|
||||
"tableEditor.addIndex": "Pridať index",
|
||||
"tableEditor.addPrimaryKey": "Pridať primárny kľúč",
|
||||
"tableEditor.addUnique": "Pridať obmedzenie jedinečnosti",
|
||||
"tableEditor.columnComment": "Komentár",
|
||||
"tableEditor.columns": "Stĺpce",
|
||||
"tableEditor.computedExpression": "Vypočítaný výraz",
|
||||
"tableEditor.constraintName": "Názov obmedzenia",
|
||||
"tableEditor.copydefinitions": "Kopírovať definície",
|
||||
"tableEditor.copynames": "Kopírovať názvy",
|
||||
"tableEditor.dataType": "Dátový typ",
|
||||
"tableEditor.defaultValue": "Predvolená hodnota",
|
||||
"tableEditor.dependencies": "Závislosti",
|
||||
"tableEditor.foreignKeys": "Cudzie kľúče ({foreignKeyCount})",
|
||||
"tableEditor.indexes": "Indexy ({indexCount})",
|
||||
"tableEditor.isPersisted": "Je perzistentný",
|
||||
"tableEditor.isSparse": "Je riedky",
|
||||
"tableEditor.isUnsigned": "Bez znamienka",
|
||||
"tableEditor.isZeroFill": "Je vyplnený nulami",
|
||||
"tableEditor.no": "NIE",
|
||||
"tableEditor.noConstraintDefined": "Nie je definovaný žiaden {constraintLabel}",
|
||||
"tableEditor.nocolumnsdefined": "Žiadne stĺpce nie sú definované",
|
||||
"tableEditor.noforeignkeydefined": "Nie je definovaný žiadny cudzí kľúč",
|
||||
"tableEditor.noindexdefined": "Nie je definovaný žiadny index",
|
||||
"tableEditor.notnull": "NOT NULL",
|
||||
"tableEditor.nouniquedefined": "Nie je definované žiadne obmedzenie jedinečnosti",
|
||||
"tableEditor.null": "NULL",
|
||||
"tableEditor.nullability": "Možnosť NULL",
|
||||
"tableEditor.primaryKey": "primárny kľúč",
|
||||
"tableEditor.remove": "Odstrániť",
|
||||
"tableEditor.tablename": "Názov tabuľky",
|
||||
"tableEditor.tableproperties": "Vlastnosti tabuľky",
|
||||
"tableEditor.unique": "Jedinečné",
|
||||
"tableEditor.uniqueConstraints": "Obmedzenia jedinečnosti ({constraintCount})",
|
||||
"tableEditor.yes": "ÁNO",
|
||||
"tableStructure.alter": "Úprava tabuľky",
|
||||
"tableStructure.create": "Vytvoriť tabuľku",
|
||||
"widget.databaseContent": "Obsah databázy",
|
||||
"widget.databases": "Databázy",
|
||||
"widget.keys": "Kľúče",
|
||||
|
||||
Reference in New Issue
Block a user