Merge pull request #1252 from dbgate/feature/translation2

Feature/translation2
This commit is contained in:
Jan Prochazka
2025-11-11 08:50:22 +01:00
committed by GitHub
47 changed files with 1073 additions and 383 deletions

View File

@@ -8,6 +8,7 @@
import Link from '../elements/Link.svelte';
import { focusedConnectionOrDatabase } from '../stores';
import { tick } from 'svelte';
import { _val } from '../translations';
export let list;
export let module;
@@ -40,12 +41,12 @@
$: listTranslated = (list || []).map(data => ({
...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,
group: data?.group && _val(data.group),
title: data?.title && _val(data.title),
description: data?.description && _val(data.description),
args: (data?.args || []).map(x => ({
...x,
label: x?.label && _.isFunction(x.label) ? x.label() : x.label,
label: x?.label && _val(x.label),
})),
}));

View File

@@ -446,8 +446,7 @@ await dbgateApi.executeQuery(${JSON.stringify(
driver?.databaseEngineTypes?.includes('document') && {
onClick: handleNewCollection,
text: _t('database.newCollection', {
defaultMessage: 'New {collectionLabel}',
values: { collectionLabel: driver?.collectionSingularLabel ?? 'collection/container' },
defaultMessage: 'New collection/container'
}),
},
hasPermission(`dbops/query`) &&

View File

@@ -1,5 +1,6 @@
<script lang="ts" context="module">
import { copyTextToClipboard } from '../utility/clipboard';
import { _t, _val } from '../translations';
export const extractKey = ({ schemaName, pureName }) => (schemaName ? `${schemaName}.${pureName}` : pureName);
export const createMatcher =
@@ -69,13 +70,13 @@
function createScriptTemplatesSubmenu(objectTypeField) {
return {
label: 'SQL template',
label: _t('dbObject.sqlTemplate', { defaultMessage: 'SQL template' }),
submenu: getSupportedScriptTemplates(objectTypeField),
};
}
interface DbObjMenuItem {
label?: string;
label?: string | (() => string);
tab?: string;
forceNewTab?: boolean;
initialData?: any;
@@ -113,19 +114,19 @@
divider: true,
},
isProApp() && {
label: 'Design query',
label: _t('dbObject.designQuery', { defaultMessage: 'Design query' }),
isQueryDesigner: true,
requiresWriteAccess: true,
},
isProApp() && {
label: 'Design perspective query',
label: _t('dbObject.designPerspectiveQuery', { defaultMessage: 'Design perspective query' }),
tab: 'PerspectiveTab',
forceNewTab: true,
icon: 'img perspective',
},
createScriptTemplatesSubmenu('tables'),
{
label: 'SQL generator',
label: _t('dbObject.sqlGenerator', { defaultMessage: 'SQL generator' }),
submenu: [
{
label: 'CREATE TABLE',
@@ -154,33 +155,33 @@
divider: true,
},
hasPermission('dbops/model/edit') && {
label: 'Drop table',
label: _t('dbObject.dropTable', { defaultMessage: 'Drop table' }),
isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/table/rename') &&
!driver?.dialect.disableRenameTable && {
label: 'Rename table',
label: _t('dbObject.renameTable', { defaultMessage: 'Rename table' }),
isRename: true,
requiresWriteAccess: true,
},
hasPermission('dbops/table/truncate') && {
label: 'Truncate table',
label: _t('dbObject.truncateTable', { defaultMessage: 'Truncate table' }),
isTruncate: true,
requiresWriteAccess: true,
},
{
label: 'Copy table name',
label: _t('dbObject.copyTableName', { defaultMessage: 'Copy table name' }),
isCopyTableName: true,
requiresWriteAccess: false,
},
hasPermission('dbops/table/backup') && {
label: 'Create table backup',
label: _t('dbObject.createTableBackup', { defaultMessage: 'Create table backup' }),
isDuplicateTable: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/view') && {
label: 'Show diagram',
label: _t('dbObject.showDiagram', { defaultMessage: 'Show diagram' }),
isDiagram: true,
},
{
@@ -204,18 +205,18 @@
divider: true,
},
isProApp() && {
label: 'Design query',
label: _t('dbObject.designQuery', { defaultMessage: 'Design query' }),
isQueryDesigner: true,
},
isProApp() && {
label: 'Design perspective query',
label: _t('dbObject.designPerspectiveQuery', { defaultMessage: 'Design perspective query' }),
tab: 'PerspectiveTab',
forceNewTab: true,
icon: 'img perspective',
},
createScriptTemplatesSubmenu('views'),
{
label: 'SQL generator',
label: _t('dbObject.sqlGenerator', { defaultMessage: 'SQL generator' }),
submenu: [
{
label: 'CREATE VIEW',
@@ -235,12 +236,12 @@
divider: true,
},
hasPermission('dbops/model/edit') && {
label: 'Drop view',
label: _t('dbObject.dropView', { defaultMessage: 'Drop view' }),
isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename view',
label: _t('dbObject.renameView', { defaultMessage: 'Rename view' }),
isRename: true,
requiresWriteAccess: true,
},
@@ -260,12 +261,12 @@
divider: true,
},
hasPermission('dbops/model/edit') && {
label: 'Drop view',
label: _t('dbObject.dropView', { defaultMessage: 'Drop view' }),
isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename view',
label: _t('dbObject.renameView', { defaultMessage: 'Rename view' }),
isRename: true,
requiresWriteAccess: true,
},
@@ -273,12 +274,12 @@
divider: true,
},
{
label: 'Query designer',
label: _t('dbObject.queryDesigner', { defaultMessage: 'Query designer' }),
isQueryDesigner: true,
},
createScriptTemplatesSubmenu('matviews'),
{
label: 'SQL generator',
label: _t('dbObject.sqlGenerator', { defaultMessage: 'SQL generator' }),
submenu: [
{
label: 'CREATE MATERIALIZED VIEW',
@@ -306,7 +307,7 @@
case 'queries':
return [
{
label: 'Open data',
label: _t('dbObject.openData', { defaultMessage: 'Open data' }),
tab: 'QueryDataTab',
forceNewTab: true,
},
@@ -318,18 +319,18 @@
divider: true,
},
hasPermission('dbops/model/edit') && {
label: 'Drop procedure',
label: _t('dbObject.dropProcedure', { defaultMessage: 'Drop procedure' }),
isDrop: true,
requiresWriteAccess: true,
},
hasPermission('dbops/model/edit') && {
label: 'Rename procedure',
label: _t('dbObject.renameProcedure', { defaultMessage: 'Rename procedure' }),
isRename: true,
requiresWriteAccess: true,
},
createScriptTemplatesSubmenu('procedures'),
{
label: 'SQL generator',
label: _t('dbObject.sqlGenerator', { defaultMessage: 'SQL generator' }),
submenu: [
{
label: 'CREATE PROCEDURE',
@@ -352,7 +353,7 @@
return [
...defaultDatabaseObjectAppObjectActions['triggers'],
hasPermission('dbops/model/edit') && {
label: 'Drop trigger',
label: _t('dbObject.dropTrigger', { defaultMessage: 'Drop trigger' }),
isDrop: true,
requiresWriteAccess: true,
},
@@ -360,7 +361,7 @@
divider: true,
},
{
label: 'SQL generator',
label: _t('dbObject.sqlGenerator', { defaultMessage: 'SQL generator' }),
submenu: [
{
label: 'CREATE TRIGGER',
@@ -384,7 +385,7 @@
divider: true,
},
isProApp() && {
label: 'Design perspective query',
label: _t('dbObject.designPerspectiveQuery', { defaultMessage: 'Design perspective query' }),
tab: 'PerspectiveTab',
forceNewTab: true,
icon: 'img perspective',
@@ -395,17 +396,17 @@
functionName: 'tableReader',
},
hasPermission('dbops/model/edit') && {
label: `Drop ${driver?.collectionSingularLabel ?? 'collection/container'}`,
label: _t('dbObject.dropCollection', { defaultMessage: 'Drop collection/container'}),
isDropCollection: true,
requiresWriteAccess: true,
},
hasPermission('dbops/table/rename') && {
label: `Rename ${driver?.collectionSingularLabel ?? 'collection/container'}`,
label: _t('dbObject.renameCollection', { defaultMessage: 'Rename collection/container'}),
isRenameCollection: true,
requiresWriteAccess: true,
},
hasPermission('dbops/table/backup') && {
label: `Create ${driver?.collectionSingularLabel ?? 'collection/container'} backup`,
label: _t('dbObject.createCollectionBackup', { defaultMessage: 'Create collection/container backup'}),
isDuplicateCollection: true,
requiresWriteAccess: true,
},
@@ -418,7 +419,7 @@
const menu: DbObjMenuItem[] = [
...defaultDatabaseObjectAppObjectActions['schedulerEvents'],
hasPermission('dbops/model/edit') && {
label: 'Drop event',
label: _t('dbObject.dropEvent', { defaultMessage: 'Drop event' }),
isDrop: true,
requiresWriteAccess: true,
},
@@ -426,12 +427,12 @@
if (data?.status === 'ENABLED') {
menu.push({
label: 'Disable',
label: _t('dbObject.disable', { defaultMessage: 'Disable' }),
isDisableEvent: true,
});
} else {
menu.push({
label: 'Enable',
label: _t('dbObject.enable', { defaultMessage: 'Enable' }),
isEnableEvent: true,
});
}
@@ -441,7 +442,7 @@
divider: true,
},
{
label: 'SQL generator',
label: _t('dbObject.sqlGenerator', { defaultMessage: 'SQL generator' }),
submenu: [
{
label: 'CREATE SCHEDULER EVENT',
@@ -474,7 +475,7 @@
if (menu.isQueryDesigner) {
openNewTab(
{
title: 'Query #',
title: _t('dbObject.query', { defaultMessage: 'Query #' }),
icon: 'img query-design',
tabComponent: 'QueryDesignTab',
focused: true,
@@ -499,7 +500,7 @@
} else if (menu.isDiagram) {
openNewTab(
{
title: 'Diagram #',
title: _t('dbObject.diagram', { defaultMessage: 'Diagram #' }),
icon: 'img diagram',
tabComponent: 'DiagramTab',
props: {
@@ -589,7 +590,7 @@
});
} else if (menu.isDropCollection) {
showModal(ConfirmModal, {
message: `Really drop collection ${data.pureName}?`,
message: _t('dbObject.confirmDropCollection', { defaultMessage: 'Really drop collection {name}?', values: { name: data.pureName } }),
onConfirm: async () => {
const dbid = _.pick(data, ['conid', 'database']);
runOperationOnDatabase(dbid, {
@@ -603,8 +604,8 @@
} else if (menu.isRenameCollection) {
const driver = await getDriver();
showModal(InputTextModal, {
label: `New ${driver?.collectionSingularLabel ?? 'collection/container'} name`,
header: `Rename ${driver?.collectionSingularLabel ?? 'collection/container'}`,
label: _t('dbObject.newCollectionName', { defaultMessage: 'New collection/container name' }),
header: _t('dbObject.renameCollection', { defaultMessage: 'Rename collection/container' }),
value: data.pureName,
onConfirm: async newName => {
const dbid = _.pick(data, ['conid', 'database']);
@@ -620,7 +621,7 @@
const driver = await getDriver();
showModal(ConfirmModal, {
message: `Really create ${driver?.collectionSingularLabel ?? 'collection/container'} copy named ${newName}?`,
message: _t('dbObject.confirmCloneCollection', { defaultMessage: 'Really create collection/container copy named {name}?', values: { name: newName } }),
onConfirm: async () => {
const dbid = _.pick(data, ['conid', 'database']);
runOperationOnDatabase(dbid, {
@@ -718,7 +719,7 @@
const filteredSumenus = coreMenus.map(item => {
if (!item.submenu) {
return item;
return { ...item , label: _val(item.label)};
}
return {
...item,
@@ -768,7 +769,7 @@
openNewTab(
{
// title: getObjectTitle(connection, schemaName, pureName),
title: tabComponent ? getObjectTitle(connection, schemaName, pureName) : 'Query #',
title: tabComponent ? getObjectTitle(connection, schemaName, pureName) : _t('dbObject.query', { defaultMessage: 'Query #' }),
focused: tabComponent == null,
tooltip,
icon:

View File

@@ -1,3 +1,4 @@
import { __t } from '../translations';
export function matchDatabaseObjectAppObject(obj1, obj2) {
return (
obj1?.objectTypeField == obj2?.objectTypeField &&
@@ -11,12 +12,12 @@ export function matchDatabaseObjectAppObject(obj1, obj2) {
function getTableLikeActions(dataTab) {
return [
{
label: 'Open data',
label: __t('dbObject.openData', { defaultMessage: 'Open data' }),
tab: dataTab,
defaultActionId: 'openTable',
},
{
label: 'Open raw data',
label: __t('dbObject.openRawData', { defaultMessage: 'Open raw data' }),
tab: dataTab,
defaultActionId: 'openRawTable',
isRawMode: true,
@@ -33,13 +34,13 @@ function getTableLikeActions(dataTab) {
// defaultActionId: 'openForm',
// },
{
label: 'Open structure',
label: __t('dbObject.openStructure', { defaultMessage: 'Open structure' }),
tab: 'TableStructureTab',
icon: 'img table-structure',
defaultActionId: 'openStructure',
},
{
label: 'Show SQL',
label: __t('dbObject.showSql', { defaultMessage: 'Show SQL' }),
tab: 'SqlObjectTab',
defaultActionId: 'showSql',
icon: 'img sql-file',
@@ -53,7 +54,7 @@ export const defaultDatabaseObjectAppObjectActions = {
matviews: getTableLikeActions('ViewDataTab'),
procedures: [
{
label: 'Show SQL',
label: __t('dbObject.showSql', { defaultMessage: 'Show SQL' }),
tab: 'SqlObjectTab',
defaultActionId: 'showSql',
icon: 'img sql-file',
@@ -61,7 +62,7 @@ export const defaultDatabaseObjectAppObjectActions = {
],
functions: [
{
label: 'Show SQL',
label: __t('dbObject.showSql', { defaultMessage: 'Show SQL' }),
tab: 'SqlObjectTab',
defaultActionId: 'showSql',
icon: 'img sql-file',
@@ -69,7 +70,7 @@ export const defaultDatabaseObjectAppObjectActions = {
],
triggers: [
{
label: 'Show SQL',
label: __t('dbObject.showSql', { defaultMessage: 'Show SQL' }),
tab: 'SqlObjectTab',
defaultActionId: 'showSql',
icon: 'img sql-file',
@@ -77,12 +78,12 @@ export const defaultDatabaseObjectAppObjectActions = {
],
collections: [
{
label: 'Open data',
label: __t('dbObject.openData', { defaultMessage: 'Open data' }),
tab: 'CollectionDataTab',
defaultActionId: 'openTable',
},
{
label: 'Open JSON',
label: __t('dbObject.openJson', { defaultMessage: 'Open JSON' }),
tab: 'CollectionDataTab',
defaultActionId: 'openJson',
initialData: {
@@ -94,7 +95,7 @@ export const defaultDatabaseObjectAppObjectActions = {
],
schedulerEvents: [
{
label: 'Show SQL',
label: __t('dbObject.showSql', { defaultMessage: 'Show SQL' }),
tab: 'SqlObjectTab',
defaultActionId: 'showSql',
icon: 'img sql-file',
@@ -102,7 +103,7 @@ export const defaultDatabaseObjectAppObjectActions = {
],
queries: [
{
label: 'Show query',
label: __t('dbObject.showQuery', { defaultMessage: 'Show query' }),
tab: 'QueryDataTab',
defaultActionId: 'showAppQuery',
icon: 'img app-query',

View File

@@ -1,6 +1,6 @@
<script context="module">
function getCommandTitle(command) {
let res = _.isFunction(command.text) ? command.text() : command.text;
let res = _val(command.text);
if (command.keyText || command.keyTextFromGroup) {
res += ` (${formatKeyText(command.keyText || command.keyTextFromGroup)})`;
}
@@ -13,6 +13,7 @@
import { formatKeyText } from '../utility/common';
import ToolStripButton from './ToolStripButton.svelte';
import _ from 'lodash';
import { _val } from '../translations';
export let command;
export let component = ToolStripButton;
@@ -33,6 +34,6 @@
{iconAfter}
{...$$restProps}
>
{(_.isFunction(buttonLabel) ? buttonLabel() : buttonLabel) || (_.isFunction(cmd?.toolbarName) ? cmd.toolbarName() : cmd.toolbarName) || (_.isFunction(cmd?.name) ? cmd.name() : cmd.name)}
{(_val(buttonLabel) || _val(cmd?.toolbarName) || _val(cmd?.name))}
</svelte:component>
{/if}

View File

@@ -24,6 +24,7 @@
import ToolStripCommandButton from './ToolStripCommandButton.svelte';
import ToolStripDropDownButton from './ToolStripDropDownButton.svelte';
import _ from 'lodash';
import { _val } from '../translations';
export let quickExportHandlerRef = null;
export let command = 'sqlDataGrid.export';
export let label = 'Export';
@@ -39,7 +40,7 @@
{#if hasPermission('dbops/export')}
{#if quickExportHandlerRef}
<ToolStripDropDownButton menu={getExportMenu} label={_.isFunction(label) ? label() : label} icon="icon export" />
<ToolStripDropDownButton menu={getExportMenu} label={_val(label)} icon="icon export" />
{:else}
<ToolStripCommandButton {command} />
{/if}

View File

@@ -1,9 +1,9 @@
<script context="module">
registerCommand({
id: 'commandPalette.show',
category: 'Command palette',
name: 'Show',
toolbarName: 'Command palette',
category: __t('command.commandPalette', { defaultMessage: 'Command palette' }),
name: __t('command.commandPalette.show', { defaultMessage: 'Show' }),
toolbarName: __t('command.commandPalette', { defaultMessage: 'Command palette' }),
toolbarOrder: 0,
keyText: 'F1',
toolbar: true,
@@ -15,9 +15,9 @@
registerCommand({
id: 'database.search',
category: 'Database',
toolbarName: 'Database search',
name: 'Search',
category: __t('command.database', { defaultMessage: 'Database' }),
toolbarName: __t('command.database.databaseSearch', { defaultMessage: 'Database search' }),
name: __t('command.database.search', { defaultMessage: 'Search' }),
keyText: isElectronAvailable() ? 'CtrlOrCommand+P' : 'F3',
onClick: () => visibleCommandPalette.set('database'),
testEnabled: () => getVisibleCommandPalette() != 'database',
@@ -81,7 +81,7 @@
import { getLocalStorage } from '../utility/storageCache';
import registerCommand from './registerCommand';
import { formatKeyText, switchCurrentDatabase } from '../utility/common';
import { _val } from '../translations';
import { _val, __t } from '../translations';
let domInput;
let filter = '';

View File

@@ -4,11 +4,12 @@ import getElectron from '../utility/getElectron';
import registerCommand from './registerCommand';
import { apiCall } from '../utility/api';
import { switchCurrentDatabase } from '../utility/common';
import { __t } from '../translations';
registerCommand({
id: 'database.changeState',
category: 'Database',
name: 'Change status',
category: __t('command.database', { defaultMessage: 'Database' }),
name: __t('command.database.changeStatus', { defaultMessage: 'Change status' }),
getSubCommands: () => {
const current = getCurrentDatabase();
if (!current) return [];

View File

@@ -3,6 +3,7 @@ import { recentDatabases, currentDatabase, getRecentDatabases } from '../stores'
import registerCommand from './registerCommand';
import { getConnectionLabel } from 'dbgate-tools';
import { switchCurrentDatabase } from '../utility/common';
import { __t } from '../translations';
currentDatabase.subscribe(value => {
if (!value) return;
@@ -24,8 +25,8 @@ function switchDatabaseCommand(db) {
registerCommand({
id: 'database.switch',
category: 'Database',
name: 'Change to recent',
category: __t('command.database', { defaultMessage: 'Database' }),
name: __t('command.database.changeRecent', { defaultMessage: 'Change to recent' }),
menuName: 'Switch recent database',
keyText: 'CtrlOrCommand+D',
getSubCommands: () => getRecentDatabases().map(switchDatabaseCommand),

View File

@@ -1,6 +1,7 @@
import { commands } from '../stores';
import { invalidateCommandDefinitions } from './invalidateCommands';
import _ from 'lodash';
import { _val } from '../translations';
export interface SubCommand {
text: string;
@@ -44,10 +45,7 @@ export default function registerCommand(command: GlobalCommand) {
[command.id]: {
text:
_.isFunction(command.category) || _.isFunction(command.name)
? () =>
`${_.isFunction(command.category) ? command.category() : command.category}: ${
_.isFunction(command.name) ? command.name() : command.name
}`
? () => `${_val(command.category)}: ${_val(command.name)}`
: `${command.category}: ${command.name}`,
...command,
enabled: !testEnabled,

View File

@@ -52,6 +52,7 @@ import { openWebLink } from '../utility/simpleTools';
import { _t } from '../translations';
import ExportImportConnectionsModal from '../modals/ExportImportConnectionsModal.svelte';
import { getBoolSettingsValue } from '../settings/settingsTools';
import { __t } from '../translations';
// function themeCommand(theme: ThemeDefinition) {
// return {
@@ -69,42 +70,42 @@ import { getBoolSettingsValue } from '../settings/settingsTools';
registerCommand({
id: 'theme.changeTheme',
category: 'Theme',
name: 'Change',
toolbarName: 'Change theme',
category: __t('command.theme', { defaultMessage: 'Theme' }),
name: __t('command.theme.change', { defaultMessage: 'Change' }),
toolbarName: __t('command.theme.changeToolbar', { defaultMessage: 'Change theme' }),
onClick: () => showModal(SettingsModal, { selectedTab: 'theme' }),
// getSubCommands: () => get(extensions).themes.map(themeCommand),
});
registerCommand({
id: 'toolbar.show',
category: 'Toolbar',
name: 'Show',
category: __t('command.toolbar', { defaultMessage: 'Toolbar' }),
name: __t('command.toolbar.show', { defaultMessage: 'Show' }),
onClick: () => visibleToolbar.set(true),
testEnabled: () => !getVisibleToolbar(),
});
registerCommand({
id: 'toolbar.hide',
category: 'Toolbar',
name: 'Hide',
category: __t('command.toolbar', { defaultMessage: 'Toolbar' }),
name: __t('command.toolbar.hide', { defaultMessage: 'Hide' }),
onClick: () => visibleToolbar.set(false),
testEnabled: () => getVisibleToolbar(),
});
registerCommand({
id: 'about.show',
category: 'About',
name: 'Show',
toolbarName: 'About',
category: __t('command.about', { defaultMessage: 'About' }),
name: __t('command.about.show', { defaultMessage: 'Show' }),
toolbarName: __t('command.about.toolbar', { defaultMessage: 'About' }),
onClick: () => showModal(AboutModal),
});
registerCommand({
id: 'toggle.sidebar',
category: 'Sidebar',
name: 'Show',
toolbarName: 'Toggle sidebar',
category: __t('command.sidebar', { defaultMessage: 'Sidebar' }),
name: __t('command.sidebar.show', { defaultMessage: 'Show' }),
toolbarName: __t('command.sidebar.toggleToolbar', { defaultMessage: 'Toggle sidebar' }),
keyText: 'CtrlOrCommand+B',
onClick: () => visibleWidgetSideBar.update(x => !x),
});
@@ -113,10 +114,10 @@ registerCommand({
id: 'new.connection',
toolbar: true,
icon: 'icon new-connection',
toolbarName: 'Add connection',
category: 'New',
toolbarName: __t('command.new.connection', { defaultMessage: 'Add connection' }),
category: __t('command.new', { defaultMessage: 'New'}),
toolbarOrder: 1,
name: 'Connection',
name: __t('command.new.connection', { defaultMessage: 'Connection' }),
testEnabled: () => !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase,
onClick: () => {
openNewTab({
@@ -131,10 +132,10 @@ registerCommand({
id: 'new.connectionOnCloud',
toolbar: true,
icon: 'img cloud-connection',
toolbarName: 'Add connection',
category: 'New',
toolbarName: __t('command.new.connection', { defaultMessage: 'Add connection' }),
category: __t('command.new', { defaultMessage: 'New' }),
toolbarOrder: 1,
name: 'Connection on Cloud',
name: __t('command.new.connectionCloud', { defaultMessage: 'Connection on Cloud' }),
testEnabled: () =>
!getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase && !!getCloudSigninTokenHolder(),
onClick: () => {
@@ -153,10 +154,10 @@ registerCommand({
id: 'new.connection.folder',
toolbar: true,
icon: 'icon add-folder',
toolbarName: 'Add connection folder',
category: 'New',
toolbarName: __t('command.new.connectionFolderToolbar', { defaultMessage: 'Add connection folder' }),
category: __t('command.new', { defaultMessage: 'New' }),
toolbarOrder: 1,
name: 'Connection folder',
name: __t('command.new.connectionFolder', { defaultMessage: 'Connection folder' }),
testEnabled: () => !getCurrentConfig()?.runAsPortal,
onClick: () => {
showModal(InputTextModal, {
@@ -176,21 +177,21 @@ registerCommand({
registerCommand({
id: 'new.query',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'icon file',
toolbar: true,
toolbarOrder: 2,
name: 'Query',
toolbarName: 'New query',
name: __t('command.new.query', { defaultMessage: 'Query' }),
toolbarName: __t('command.new.queryToolbar', { defaultMessage: 'New query' }),
keyText: 'CtrlOrCommand+T',
onClick: () => newQuery(),
});
registerCommand({
id: 'new.shell',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img shell',
name: 'JavaScript Shell',
name: __t('command.new.shell', { defaultMessage: 'JavaScript Shell' }),
menuName: 'New JavaScript shell',
onClick: () => {
openNewTab({
@@ -204,9 +205,9 @@ registerCommand({
if (isProApp()) {
registerCommand({
id: 'new.queryDesign',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img query-design',
name: 'Query design',
name: __t('command.new.queryDesign', { defaultMessage: 'Query design' }),
menuName: 'New query design',
onClick: () => newQueryDesign(),
testEnabled: () =>
@@ -218,9 +219,9 @@ if (isProApp()) {
if (isProApp()) {
registerCommand({
id: 'new.modelTransform',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img transform',
name: 'Model transform',
name: __t('command.new.modelTransform', { defaultMessage: 'Model transform' }),
menuName: 'New model transform',
onClick: () => {
openNewTab(
@@ -262,9 +263,9 @@ if (isProApp()) {
if (isProApp()) {
registerCommand({
id: 'new.perspective',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img perspective',
name: 'Perspective',
name: __t('command.new.perspective', { defaultMessage: 'Perspective' }),
menuName: 'New perspective',
onClick: () => newPerspective(),
});
@@ -273,9 +274,9 @@ if (isProApp()) {
if (isProApp()) {
registerCommand({
id: 'new.application',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img app',
name: 'Application',
name: __t('command.new.application', { defaultMessage: 'Application' }),
menuName: 'New application',
onClick: () => {
openNewTab({
@@ -289,9 +290,9 @@ if (isProApp()) {
registerCommand({
id: 'new.diagram',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img diagram',
name: 'ER Diagram',
name: __t('command.new.diagram', { defaultMessage: 'ER Diagram' }),
menuName: 'New ER diagram',
testEnabled: () =>
getCurrentDatabase() &&
@@ -301,9 +302,9 @@ registerCommand({
registerCommand({
id: 'new.archiveFolder',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img archive',
name: 'Archive folder',
name: __t('command.new.archiveFolder', { defaultMessage: 'Archive folder' }),
onClick: () => {
showModal(InputTextModal, {
value: '',
@@ -335,11 +336,11 @@ registerCommand({
registerCommand({
id: 'new.table',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'icon table',
name: 'Table',
name: __t('command.new.table', { defaultMessage: 'Table' }),
toolbar: true,
toolbarName: 'New table',
toolbarName: __t('command.new.tableToolbar', { defaultMessage: 'New table' }),
testEnabled: () => {
if (!hasPermission('dbops/model/edit')) return false;
const driver = findEngineDriver(get(currentDatabase)?.connection, getExtensions());
@@ -355,11 +356,11 @@ registerCommand({
registerCommand({
id: 'new.collection',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'icon table',
name: 'Collection',
name: __t('command.new.collection', { defaultMessage: 'Collection' }),
toolbar: true,
toolbarName: 'New collection/container',
toolbarName: __t('command.new.collectionToolbar', { defaultMessage: 'New collection/container' }),
testEnabled: () => {
const driver = findEngineDriver(get(currentDatabase)?.connection, getExtensions());
return !!get(currentDatabase) && driver?.databaseEngineTypes?.includes('document');
@@ -381,9 +382,9 @@ registerCommand({
registerCommand({
id: 'new.markdown',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img markdown',
name: 'Markdown page',
name: __t('command.new.markdown', { defaultMessage: 'Markdown page' }),
onClick: () => {
openNewTab({
title: 'Page #',
@@ -396,9 +397,9 @@ registerCommand({
if (isProApp()) {
registerCommand({
id: 'new.modelCompare',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'icon compare',
name: 'Compare DB',
name: __t('command.new.modelCompare', { defaultMessage: 'Compare DB' }),
toolbar: true,
onClick: () => {
openNewTab({
@@ -412,9 +413,9 @@ if (isProApp()) {
registerCommand({
id: 'new.jsonl',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img archive',
name: 'JSON Lines',
name: __t('command.new.jsonl', { defaultMessage: 'JSON Lines' }),
menuName: 'New JSON lines file',
onClick: () => {
openNewTab(
@@ -432,9 +433,9 @@ registerCommand({
registerCommand({
id: 'new.sqliteDatabase',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img sqlite-database',
name: 'SQLite database',
name: __t('command.new.sqliteDatabase', { defaultMessage: 'SQLite database' }),
menuName: _t('command.new.sqliteDatabase', { defaultMessage: 'New SQLite database' }),
onClick: () => {
showModal(InputTextModal, {
@@ -452,9 +453,9 @@ registerCommand({
registerCommand({
id: 'new.duckdbDatabase',
category: 'New',
category: __t('command.new', { defaultMessage: 'New' }),
icon: 'img sqlite-database',
name: 'DuckDB database',
name: __t('command.new.duckdbDatabase', { defaultMessage: 'DuckDB database' }),
menuName: _t('command.new.duckdbDatabase', { defaultMessage: 'New DuckDB database' }),
onClick: () => {
showModal(InputTextModal, {
@@ -472,8 +473,8 @@ registerCommand({
registerCommand({
id: 'tabs.changelog',
category: 'Tabs',
name: 'Changelog',
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.changelog', { defaultMessage: 'Changelog' }),
onClick: () => {
openNewTab({
title: 'ChangeLog',
@@ -488,7 +489,7 @@ registerCommand({
id: 'group.save',
category: null,
isGroupCommand: true,
name: 'Save',
name: __t('command.save', { defaultMessage: 'Save' }),
keyText: 'CtrlOrCommand+S',
group: 'save',
});
@@ -497,7 +498,7 @@ registerCommand({
id: 'group.saveAs',
category: null,
isGroupCommand: true,
name: 'Save As',
name: __t('command.saveAs', { defaultMessage: 'Save As' }),
keyText: 'CtrlOrCommand+Shift+S',
group: 'saveAs',
});
@@ -506,7 +507,7 @@ registerCommand({
id: 'group.undo',
category: null,
isGroupCommand: true,
name: 'Undo',
name: __t('command.undo', { defaultMessage: 'Undo' }),
keyText: 'CtrlOrCommand+Z',
group: 'undo',
});
@@ -515,15 +516,15 @@ registerCommand({
id: 'group.redo',
category: null,
isGroupCommand: true,
name: 'Redo',
name: __t('command.redo', { defaultMessage: 'Redo' }),
keyText: 'CtrlOrCommand+Y',
group: 'redo',
});
registerCommand({
id: 'file.open',
category: 'File',
name: 'Open',
category: __t('command.file', { defaultMessage: 'File' }),
name: __t('command.file.open', { defaultMessage: 'Open' }),
keyText: 'CtrlOrCommand+O',
testEnabled: () => getElectron() != null,
onClick: openElectronFile,
@@ -531,36 +532,36 @@ registerCommand({
registerCommand({
id: 'file.openArchive',
category: 'File',
name: 'Open DB Model/Archive',
category: __t('command.file', { defaultMessage: 'File' }),
name: __t('command.file.openArchive', { defaultMessage: 'Open DB Model/Archive' }),
testEnabled: () => getElectron() != null,
onClick: openArchiveFolder,
});
registerCommand({
id: 'folder.showLogs',
category: 'Folder',
name: 'Open logs',
category: __t('command.folder', { defaultMessage: 'Folder' }),
name: __t('command.folder.openLogs', { defaultMessage: 'Open logs' }),
testEnabled: () => getElectron() != null,
onClick: () => electron.showItemInFolder(getCurrentConfig().logsFilePath),
});
registerCommand({
id: 'folder.showData',
category: 'Folder',
name: 'Open data folder',
category: __t('command.folder', { defaultMessage: 'Folder' }),
name: __t('command.folder.openData', { defaultMessage: 'Open data folder' }),
testEnabled: () => getElectron() != null,
onClick: () => electron.showItemInFolder(getCurrentConfig().connectionsFilePath),
});
registerCommand({
id: 'app.resetSettings',
category: 'File',
name: 'Reset layout data & settings',
category: __t('command.file', { defaultMessage: 'File' }),
name: __t('command.file.resetLayout', { defaultMessage: 'Reset layout data & settings' }),
testEnabled: () => true,
onClick: () => {
showModal(ConfirmModal, {
message: `Really reset layout data? All opened tabs, settings and layout data will be lost. Connections and saved files will be preserved. After this, restart DbGate for applying changes.`,
message: _t('command.file.resetLayoutConfirm', { defaultMessage: 'Really reset layout data? All opened tabs, settings and layout data will be lost. Connections and saved files will be preserved. After this, restart DbGate for applying changes.' }),
onConfirm: async () => {
await apiCall('config/delete-settings');
localStorage.clear();
@@ -577,8 +578,8 @@ registerCommand({
registerCommand({
id: 'app.exportConnections',
category: 'Settings',
name: 'Export connections',
category: __t('command.settings', { defaultMessage: 'Settings' }),
name: __t('command.settings.exportConnections', { defaultMessage: 'Export connections' }),
testEnabled: () => !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase,
onClick: () => {
showModal(ExportImportConnectionsModal, {
@@ -589,8 +590,8 @@ registerCommand({
registerCommand({
id: 'app.importConnections',
category: 'Settings',
name: 'Import connections',
category: __t('command.settings', { defaultMessage: 'Settings' }),
name: __t('command.settings.importConnections', { defaultMessage: 'Import connections' }),
testEnabled: () => !getCurrentConfig()?.runAsPortal && !getCurrentConfig()?.storageDatabase,
onClick: async () => {
const files = await electron.showOpenDialog({
@@ -615,8 +616,8 @@ registerCommand({
registerCommand({
id: 'file.import',
category: 'File',
name: 'Import data',
category: __t('command.file', { defaultMessage: 'File' }),
name: __t('command.file.import', { defaultMessage: 'Import data' }),
toolbar: true,
icon: 'icon import',
onClick: () =>
@@ -636,8 +637,8 @@ registerCommand({
registerCommand({
id: 'view.reset',
category: 'View',
name: 'Reset view',
category: __t('command.view', { defaultMessage: 'View' }),
name: __t('command.view.reset', { defaultMessage: 'Reset view' }),
onClick: () => {
const keys = [
'leftPanelWidth',
@@ -664,14 +665,14 @@ registerCommand({
'currentArchive',
];
for (const key of keys) removeLocalStorage(key);
showSnackbarSuccess('Restart DbGate (or reload on web) for applying changes');
showSnackbarSuccess(_t('command.view.restart', { defaultMessage: 'Restart DbGate (or reload on web) for applying changes' }));
},
});
registerCommand({
id: 'sql.generator',
category: 'SQL',
name: 'SQL Generator',
category: __t('command.sql', { defaultMessage: 'SQL' }),
name: __t('command.sql.generator', { defaultMessage: 'SQL Generator' }),
toolbar: true,
icon: 'icon sql-generator',
testEnabled: () =>
@@ -687,8 +688,8 @@ registerCommand({
registerCommand({
id: 'database.export',
category: 'Database',
name: 'Export database',
category: __t('command.database', { defaultMessage: 'Database' }),
name: __t('command.database.export', { defaultMessage: 'Export database' }),
toolbar: true,
icon: 'icon export',
testEnabled: () => getCurrentDatabase() != null && hasPermission(`dbops/export`) && isProApp(),
@@ -705,8 +706,8 @@ registerCommand({
if (isProApp()) {
registerCommand({
id: 'database.compare',
category: 'Database',
name: 'Compare databases',
category: __t('command.database', { defaultMessage: 'Database' }),
name: __t('command.database.compare', { defaultMessage: 'Compare databases' }),
toolbar: true,
icon: 'icon compare',
testEnabled: () =>
@@ -738,8 +739,8 @@ if (isProApp()) {
registerCommand({
id: 'database.chat',
category: 'Database',
name: 'Database chat',
category: __t('command.database', { defaultMessage: 'Database' }),
name: __t('command.database.chat', { defaultMessage: 'Database chat' }),
toolbar: true,
icon: 'icon ai',
testEnabled: () =>
@@ -763,11 +764,11 @@ if (isProApp()) {
if (hasPermission('settings/change')) {
registerCommand({
id: 'settings.commands',
category: 'Settings',
name: 'Keyboard shortcuts',
category: __t('command.settings', { defaultMessage: 'Settings' }),
name: __t('command.settings.shortcuts', { defaultMessage: 'Keyboard shortcuts' }),
onClick: () => {
openNewTab({
title: 'Keyboard Shortcuts',
title: _t('command.settings.shortcuts', { defaultMessage: 'Keyboard shortcuts' }),
icon: 'icon keyboard',
tabComponent: 'CommandListTab',
props: {},
@@ -778,9 +779,9 @@ if (hasPermission('settings/change')) {
registerCommand({
id: 'settings.show',
category: 'Settings',
name: 'Change',
toolbarName: 'Settings',
category: __t('command.settings', { defaultMessage: 'Settings' }),
name: __t('command.settings.change', { defaultMessage: 'Change' }),
toolbarName: __t('command.settings', { defaultMessage: 'Settings' }),
onClick: () => showModal(SettingsModal),
testEnabled: () => hasPermission('settings/change'),
});
@@ -788,8 +789,8 @@ if (hasPermission('settings/change')) {
registerCommand({
id: 'cloud.logout',
category: 'Cloud',
name: 'Logout',
category: __t('command.cloud', { defaultMessage: 'Cloud' }),
name: __t('command.cloud.logout', { defaultMessage: 'Logout' }),
onClick: () => {
cloudSigninTokenHolder.set(null);
},
@@ -797,8 +798,8 @@ registerCommand({
registerCommand({
id: 'file.exit',
category: 'File',
name: isMac() ? 'Quit' : 'Exit',
category: __t('command.file', { defaultMessage: 'File' }),
name: isMac() ? __t('command.file.quit', { defaultMessage: 'Quit' }) : __t('command.file.exit', { defaultMessage: 'Exit' }),
// keyText: isMac() ? 'Command+Q' : null,
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('quit-app'),
@@ -806,16 +807,16 @@ registerCommand({
registerCommand({
id: 'app.logout',
category: 'App',
name: 'Logout',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.app.logout', { defaultMessage: 'Logout' }),
testEnabled: () => getCurrentConfig()?.isUserLoggedIn,
onClick: doLogout,
});
registerCommand({
id: 'app.loggedUserCommands',
category: 'App',
name: 'Logged user',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.app.loggedUser', { defaultMessage: 'Logged user' }),
getSubCommands: () => {
const config = getCurrentConfig();
if (!config) return [];
@@ -832,16 +833,16 @@ registerCommand({
registerCommand({
id: 'app.disconnect',
category: 'App',
name: 'Disconnect',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.app.disconnect', { defaultMessage: 'Disconnect' }),
testEnabled: () => getCurrentConfig()?.singleConnection != null && !getCurrentConfig()?.isUserLoggedIn,
onClick: () => disconnectServerConnection(getCurrentConfig()?.singleConnection?._id),
});
registerCommand({
id: 'file.checkForUpdates',
category: 'App',
name: 'Check for updates',
id: 'app.checkForUpdates',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.app.checkForUpdates', { defaultMessage: 'Check for updates' }),
// testEnabled: () => true,
testEnabled: () => getAppUpdaterActive(),
onClick: () => getElectron().send('check-for-updates'),
@@ -867,7 +868,7 @@ export function registerFileCommands({
id: idPrefix + '.save',
group: 'save',
category,
name: 'Save',
name: __t('command.save', { defaultMessage: 'Save' }),
// keyText: 'CtrlOrCommand+S',
icon: 'icon save',
toolbar: true,
@@ -879,14 +880,14 @@ export function registerFileCommands({
id: idPrefix + '.saveAs',
group: 'saveAs',
category,
name: 'Save As',
name: __t('command.saveAs', { defaultMessage: 'Save As' }),
testEnabled: () => getCurrentEditor() != null,
onClick: () => saveTabFile(getCurrentEditor(), 'save-as', folder, format, fileExtension),
});
registerCommand({
id: idPrefix + '.saveToDisk',
category,
name: 'Save to disk',
name: __t('command.saveToDisk', { defaultMessage: 'Save to disk' }),
testEnabled: () => getCurrentEditor() != null && getElectron() != null,
onClick: () => saveTabFile(getCurrentEditor(), 'save-to-disk', folder, format, fileExtension),
});
@@ -896,7 +897,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.execute',
category,
name: 'Execute',
name: __t('command.execute', { defaultMessage: 'Execute' }),
icon: 'icon run',
toolbar: true,
isRelatedToTab: true,
@@ -910,7 +911,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.kill',
category,
name: 'Kill',
name: __t('command.kill', { defaultMessage: 'Kill' }),
icon: 'icon close',
toolbar: true,
isRelatedToTab: true,
@@ -923,7 +924,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.toggleComment',
category,
name: 'Toggle comment',
name: __t('command.toggleComment', { defaultMessage: 'Toggle comment' }),
keyText: 'CtrlOrCommand+/',
disableHandleKeyText: 'CtrlOrCommand+/',
testEnabled: () => getCurrentEditor() != null,
@@ -935,7 +936,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.copy',
category,
name: 'Copy',
name: __t('command.copy', { defaultMessage: 'Copy' }),
disableHandleKeyText: 'CtrlOrCommand+C',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().copy(),
@@ -943,7 +944,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.paste',
category,
name: 'Paste',
name: __t('command.paste', { defaultMessage: 'Paste' }),
disableHandleKeyText: 'CtrlOrCommand+V',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().paste(),
@@ -954,7 +955,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.find',
category,
name: 'Find',
name: __t('command.find', { defaultMessage: 'Find' }),
keyText: 'CtrlOrCommand+F',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().find(),
@@ -963,7 +964,7 @@ export function registerFileCommands({
id: idPrefix + '.replace',
category,
keyText: isMac() ? 'Alt+Command+F' : 'CtrlOrCommand+H',
name: 'Replace',
name: __t('command.replace', { defaultMessage: 'Replace' }),
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().replace(),
});
@@ -972,7 +973,7 @@ export function registerFileCommands({
registerCommand({
id: idPrefix + '.undo',
category,
name: 'Undo',
name: __t('command.undo', { defaultMessage: 'Undo' }),
group: 'undo',
icon: 'icon undo',
testEnabled: () => getCurrentEditor()?.canUndo(),
@@ -982,7 +983,7 @@ export function registerFileCommands({
id: idPrefix + '.redo',
category,
group: 'redo',
name: 'Redo',
name: __t('command.redo', { defaultMessage: 'Redo' }),
icon: 'icon redo',
testEnabled: () => getCurrentEditor()?.canRedo(),
onClick: () => getCurrentEditor().redo(),
@@ -992,24 +993,24 @@ export function registerFileCommands({
registerCommand({
id: 'app.minimize',
category: 'Application',
name: 'Minimize',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.minimize', { defaultMessage: 'Minimize' }),
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'minimize'),
});
registerCommand({
id: 'app.maximize',
category: 'Application',
name: 'Maximize',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.maximize', { defaultMessage: 'Maximize' }),
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'maximize'),
});
registerCommand({
id: 'app.toggleFullScreen',
category: 'Application',
name: 'Toggle full screen',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.toggleFullScreen', { defaultMessage: 'Toggle full screen' }),
keyText: 'F11',
testEnabled: () => getElectron() != null,
onClick: async () => {
@@ -1023,45 +1024,45 @@ registerCommand({
registerCommand({
id: 'app.toggleDevTools',
category: 'Application',
name: 'Toggle Dev Tools',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.toggleDevTools', { defaultMessage: 'Toggle Dev Tools' }),
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'devtools'),
});
registerCommand({
id: 'app.reload',
category: 'Application',
name: 'Reload',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.reload', { defaultMessage: 'Reload' }),
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'reload'),
});
registerCommand({
id: 'app.openDocs',
category: 'Application',
name: 'Documentation',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.documentation', { defaultMessage: 'Documentation' }),
onClick: () => openWebLink('https://docs.dbgate.io/'),
});
registerCommand({
id: 'app.openWeb',
category: 'Application',
name: 'DbGate web',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.web', { defaultMessage: 'DbGate web' }),
onClick: () => openWebLink('https://www.dbgate.io/'),
});
registerCommand({
id: 'app.openIssue',
category: 'Application',
name: 'Report problem or feature request',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.openIssue', { defaultMessage: 'Report problem or feature request' }),
onClick: () => openWebLink('https://github.com/dbgate/dbgate/issues/new'),
});
registerCommand({
id: 'app.openSponsoring',
category: 'Application',
name: 'Become sponsor',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.becomeSponsor', { defaultMessage: 'Become sponsor' }),
testEnabled: () => !isProApp(),
onClick: () => openWebLink('https://opencollective.com/dbgate'),
});
@@ -1075,8 +1076,8 @@ registerCommand({
registerCommand({
id: 'app.zoomIn',
category: 'Application',
name: 'Zoom in',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.zoomIn', { defaultMessage: 'Zoom in' }),
keyText: 'CtrlOrCommand+=',
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'zoomin'),
@@ -1084,8 +1085,8 @@ registerCommand({
registerCommand({
id: 'app.zoomOut',
category: 'Application',
name: 'Zoom out',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.zoomOut', { defaultMessage: 'Zoom out' }),
keyText: 'CtrlOrCommand+-',
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'zoomout'),
@@ -1093,16 +1094,16 @@ registerCommand({
registerCommand({
id: 'app.zoomReset',
category: 'Application',
name: 'Reset zoom',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.zoomReset', { defaultMessage: 'Reset zoom' }),
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'zoomreset'),
});
registerCommand({
id: 'edit.undo',
category: 'Edit',
name: 'Undo',
category: __t('command.edit', { defaultMessage: 'Edit' }),
name: __t('command.edit.undo', { defaultMessage: 'Undo' }),
keyText: 'CtrlOrCommand+Z',
systemCommand: true,
testEnabled: () => getElectron() != null,
@@ -1111,8 +1112,8 @@ registerCommand({
registerCommand({
id: 'edit.redo',
category: 'Edit',
name: 'Redo',
category: __t('command.edit', { defaultMessage: 'Edit' }),
name: __t('command.edit.redo', { defaultMessage: 'Redo' }),
systemCommand: true,
testEnabled: () => getElectron() != null,
onClick: () => getElectron().send('window-action', 'redo'),
@@ -1120,8 +1121,8 @@ registerCommand({
registerCommand({
id: 'edit.cut',
category: 'Edit',
name: 'Cut',
category: __t('command.edit', { defaultMessage: 'Edit' }),
name: __t('command.edit.cut', { defaultMessage: 'Cut' }),
keyText: 'CtrlOrCommand+X',
systemCommand: true,
testEnabled: () => getElectron() != null,
@@ -1130,8 +1131,8 @@ registerCommand({
registerCommand({
id: 'edit.copy',
category: 'Edit',
name: 'Copy',
category: __t('command.edit', { defaultMessage: 'Edit' }),
name: __t('command.edit.copy', { defaultMessage: 'Copy' }),
keyText: 'CtrlOrCommand+C',
systemCommand: true,
testEnabled: () => getElectron() != null,
@@ -1140,8 +1141,8 @@ registerCommand({
registerCommand({
id: 'edit.paste',
category: 'Edit',
name: 'Paste',
category: __t('command.edit', { defaultMessage: 'Edit' }),
name: __t('command.edit.paste', { defaultMessage: 'Paste' }),
keyText: 'CtrlOrCommand+V',
systemCommand: true,
testEnabled: () => getElectron() != null,
@@ -1150,8 +1151,8 @@ registerCommand({
registerCommand({
id: 'edit.selectAll',
category: 'Edit',
name: 'Select All',
category: __t('command.edit', { defaultMessage: 'Edit' }),
name: __t('command.edit.selectAll', { defaultMessage: 'Select All' }),
keyText: 'CtrlOrCommand+A',
systemCommand: true,
testEnabled: () => getElectron() != null,
@@ -1160,8 +1161,8 @@ registerCommand({
registerCommand({
id: 'app.unsetCurrentDatabase',
category: 'Application',
name: 'Unset current database',
category: __t('command.application', { defaultMessage: 'Application' }),
name: __t('command.application.unsetCurrentDatabase', { defaultMessage: 'Unset current database' }),
testEnabled: () => getCurrentDatabase() != null,
onClick: () => currentDatabase.set(null),
});
@@ -1170,8 +1171,8 @@ let loadedCampaignList = [];
registerCommand({
id: 'internal.loadCampaigns',
category: 'Internal',
name: 'Load campaign list',
category: __t('command.internal', { defaultMessage: 'Internal' }),
name: __t('command.internal.loadCampaigns', { defaultMessage: 'Load campaign list' }),
testEnabled: () => getBoolSettingsValue('internal.showCampaigns', false),
onClick: async () => {
const resp = await apiCall('cloud/promo-widget-list', {});
@@ -1181,8 +1182,8 @@ registerCommand({
registerCommand({
id: 'internal.showCampaigns',
category: 'Internal',
name: 'Show campaigns',
category: __t('command.internal', { defaultMessage: 'Internal' }),
name: __t('command.internal.showCampaigns', { defaultMessage: 'Show campaigns' }),
testEnabled: () => getBoolSettingsValue('internal.showCampaigns', false) && loadedCampaignList?.length > 0,
getSubCommands: () => {
return loadedCampaignList.map(campaign => ({

View File

@@ -3,16 +3,16 @@
registerCommand({
id: 'collectionDataGrid.openQuery',
category: 'Data grid',
name: 'Open query',
category: __t('command.dataGrid', { defaultMessage: 'Data grid' }),
name: __t('command.dataGrid.openQuery', { defaultMessage: 'Open query' }),
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().openQuery(),
});
registerCommand({
id: 'collectionDataGrid.export',
category: 'Data grid',
name: 'Export',
category: __t('command.dataGrid', { defaultMessage: 'Data grid' }),
name: __t('command.dataGrid.export', { defaultMessage: 'Export' }),
keyText: 'CtrlOrCommand+E',
icon: 'icon export',
testEnabled: () => getCurrentEditor() != null,
@@ -140,6 +140,7 @@
import LoadingDataGridCore from './LoadingDataGridCore.svelte';
import { mongoFilterBehaviour, standardFilterBehaviours } from 'dbgate-tools';
import { openImportExportTab } from '../utility/importExportTools';
import { __t } from '../translations';
export let conid;
export let display;

View File

@@ -421,7 +421,7 @@
import { openJsonLinesData } from '../utility/openJsonLinesData';
import contextMenuActivator from '../utility/contextMenuActivator';
import InputTextModal from '../modals/InputTextModal.svelte';
import { __t, _t } from '../translations';
import { __t, _t, _val } from '../translations';
import { isProApp } from '../utility/proTools';
import SaveArchiveModal from '../modals/SaveArchiveModal.svelte';
import hasPermission from '../utility/hasPermission';
@@ -1795,12 +1795,12 @@
text: _t('datagrid.copyAdvanced', { defaultMessage: 'Copy advanced'}),
submenu: [
_.keys(copyRowsFormatDefs).map(format => ({
text: _.isFunction(copyRowsFormatDefs[format].label) ? copyRowsFormatDefs[format].label() : copyRowsFormatDefs[format].label,
text: _val(copyRowsFormatDefs[format].label),
onClick: () => copyToClipboardCore(format),
})),
{ divider: true },
_.keys(copyRowsFormatDefs).map(format => ({
text: _t('datagrid.setFormat', { defaultMessage: 'Set format: ' }) + (_.isFunction(copyRowsFormatDefs[format].name) ? copyRowsFormatDefs[format].name() : copyRowsFormatDefs[format].name),
text: _t('datagrid.setFormat', { defaultMessage: 'Set format: ' }) + (_val(copyRowsFormatDefs[format].name)),
onClick: () => ($copyRowsFormat = format),
})),
@@ -1870,7 +1870,7 @@
return [
menu,
{
text: _.isFunction(copyRowsFormatDefs[$copyRowsFormat].label) ? copyRowsFormatDefs[$copyRowsFormat].label() : copyRowsFormatDefs[$copyRowsFormat].label,
text: _val(copyRowsFormatDefs[$copyRowsFormat].label),
onClick: () => copyToClipboardCore($copyRowsFormat),
keyText: 'CtrlOrCommand+C',
tag: 'copy',

View File

@@ -3,8 +3,8 @@
registerCommand({
id: 'jslTableGrid.export',
category: 'Data grid',
name: 'Export',
category: __t('command.dataGrid', { defaultMessage: 'Data grid' }),
name: __t('command.dataGrid.export', { defaultMessage: 'Export' }),
icon: 'icon export',
keyText: 'CtrlOrCommand+E',
testEnabled: () => getCurrentEditor() != null,
@@ -56,6 +56,7 @@
import LoadingDataGridCore from './LoadingDataGridCore.svelte';
import { openImportExportTab } from '../utility/importExportTools';
import { __t } from '../translations';
export let jslid;
export let display;

View File

@@ -55,7 +55,7 @@
{/if}
{#if dependencies.length > 0}
<div class="bold nowrap ml-1">Dependent tables ({dependencies.length})</div>
<div class="bold nowrap ml-1">{_t('dataGrid.dependentTables', { defaultMessage: 'Dependent tables' })} ({dependencies.length})</div>
{#each dependencies.filter(fk => filterName(filter, fk.pureName)) as fk}
<div
class="link"

View File

@@ -3,9 +3,9 @@
registerCommand({
id: 'designer.arrange',
category: 'Designer',
category: __t('command.designer', { defaultMessage: 'Designer' }),
icon: 'icon arrange',
name: 'Arrange',
name: __t('command.designer.arrange', { defaultMessage: 'Arrange' }),
toolbar: true,
isRelatedToTab: true,
testEnabled: () => getCurrentEditor()?.canArrange(),
@@ -15,9 +15,9 @@
registerCommand({
id: 'diagram.export',
category: 'Designer',
toolbarName: 'Export diagram',
name: 'Export diagram',
category: __t('command.designer', { defaultMessage: 'Designer' }),
toolbarName: __t('command.designer.exportDiagram', { defaultMessage: 'Export diagram' }),
name: __t('command.designer.exportDiagram', { defaultMessage: 'Export diagram' }),
icon: 'icon report',
toolbar: true,
isRelatedToTab: true,
@@ -27,9 +27,9 @@
registerCommand({
id: 'diagram.deleteSelectedTables',
category: 'Designer',
toolbarName: 'Remove',
name: 'Remove selected tables',
category: __t('command.designer', { defaultMessage: 'Designer' }),
toolbarName: __t('command.designer.remove', { defaultMessage: 'Remove' }),
name: __t('command.designer.removeSelectedTables', { defaultMessage: 'Remove selected tables' }),
icon: 'icon delete',
toolbar: true,
isRelatedToTab: true,
@@ -67,6 +67,7 @@
import { isProApp } from '../utility/proTools';
import dragScroll from '../utility/dragScroll';
import FormStyledButton from '../buttons/FormStyledButton.svelte';
import { __t } from '../translations';
export let value;
export let onChange;

View File

@@ -27,6 +27,7 @@
import { evaluateCondition } from 'dbgate-sqltree';
import { compileCompoudEvalCondition } from 'dbgate-filterparser';
import { chevronExpandIcon } from '../icons/expandIcons';
import { _val } from '../translations';
export let columns: (TableControlColumn | false)[];
export let rows = null;
@@ -368,7 +369,7 @@
{/if}
{/key}
{:else}
{ _.isFunction(row[col.fieldName]) ? row[col.fieldName]() : row[col.fieldName] || ''}
{ _val(row[col.fieldName]) || '' }
{/if}
</td>
{/each}

View File

@@ -5,6 +5,7 @@
import { getFormContext } from './FormProviderCore.svelte';
import TextField from './TextField.svelte';
import { _t } from '../translations';
export let name;
export let disabled = false;
@@ -29,7 +30,7 @@
setFieldValue(name, e.target['value']);
}
}}
placeholder={isCrypted ? '(Password is encrypted)' : undefined}
placeholder={isCrypted ? _t('common.passwordEncrypted', { defaultMessage: 'Password is encrypted' }) : undefined}
type={isCrypted || showPassword ? 'text' : 'password'}
/>
{#if !isCrypted}

View File

@@ -1,6 +1,7 @@
<script lang="ts">
import { getFormContext } from './FormProviderCore.svelte';
import TextField from './TextField.svelte';
import { _val } from '../translations';
export let name;
export let defaultValue;
@@ -11,7 +12,7 @@
<TextField
{...$$restProps}
value={$values?.[name] ?? defaultValue}
value={$values?.[name] ? _val($values[name]) : defaultValue}
on:input={e => setFieldValue(name, e.target['value'])}
on:input={e => {
if (saveOnInput) {

View File

@@ -3,8 +3,8 @@
registerCommand({
id: 'collectionJsonView.expandAll',
category: 'Collection data',
name: 'Expand all',
category: __t('command.collectionData', { defaultMessage: 'Collection data' }),
name: __t('command.collectionData.expandAll', { defaultMessage: 'Expand all' }),
isRelatedToTab: true,
icon: 'icon expand-all',
onClick: () => getCurrentEditor().handleExpandAll(),
@@ -12,8 +12,8 @@
});
registerCommand({
id: 'collectionJsonView.collapseAll',
category: 'Collection data',
name: 'Collapse all',
category: __t('command.collectionData', { defaultMessage: 'Collection data' }),
name: __t('command.collectionData.collapseAll', { defaultMessage: 'Collapse all' }),
isRelatedToTab: true,
icon: 'icon collapse-all',
onClick: () => getCurrentEditor().handleCollapseAll(),
@@ -37,6 +37,7 @@
import CollectionJsonRow from './CollectionJsonRow.svelte';
import { getIntSettingsValue } from '../settings/settingsTools';
import invalidateCommands from '../commands/invalidateCommands';
import { __t } from '../translations';
export let conid;
export let database;

View File

@@ -14,8 +14,8 @@
registerCommand({
id: 'dataForm.refresh',
category: 'Data form',
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('common.refresh', { defaultMessage: 'Refresh' }),
keyText: 'F5 | CtrlOrCommand+R',
toolbar: true,
isRelatedToTab: true,
@@ -26,8 +26,8 @@
registerCommand({
id: 'dataForm.copyToClipboard',
category: 'Data form',
name: 'Copy to clipboard',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.copyToClipboard', { defaultMessage: 'Copy to clipboard' }),
keyText: 'CtrlOrCommand+C',
disableHandleKeyText: 'CtrlOrCommand+C',
testEnabled: () => getCurrentDataForm() != null,
@@ -36,8 +36,8 @@
registerCommand({
id: 'dataForm.revertRowChanges',
category: 'Data form',
name: 'Revert row changes',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.revertRowChanges', { defaultMessage: 'Revert row changes' }),
keyText: 'CtrlOrCommand+U',
testEnabled: () => getCurrentDataForm()?.getGrider()?.containsChanges,
onClick: () => getCurrentDataForm().getGrider().revertRowChanges(0),
@@ -45,8 +45,8 @@
registerCommand({
id: 'dataForm.setNull',
category: 'Data form',
name: 'Set NULL',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.setNull', { defaultMessage: 'Set NULL' }),
keyText: 'CtrlOrCommand+0',
testEnabled: () => getCurrentDataForm() != null && !getCurrentDataForm()?.getEditorTypes()?.supportFieldRemoval,
onClick: () => getCurrentDataForm().setFixedValue(null),
@@ -54,8 +54,8 @@
registerCommand({
id: 'dataForm.removeField',
category: 'Data form',
name: 'Remove field',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.removeField', { defaultMessage: 'Remove field' }),
keyText: 'CtrlOrCommand+0',
testEnabled: () => getCurrentDataForm() != null && getCurrentDataForm()?.getEditorTypes()?.supportFieldRemoval,
onClick: () => getCurrentDataForm().setFixedValue(undefined),
@@ -63,8 +63,8 @@
registerCommand({
id: 'dataForm.undo',
category: 'Data form',
name: 'Undo',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.undo', { defaultMessage: 'Undo' }),
group: 'undo',
icon: 'icon undo',
toolbar: true,
@@ -75,8 +75,8 @@
registerCommand({
id: 'dataForm.redo',
category: 'Data form',
name: 'Redo',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.redo', { defaultMessage: 'Redo' }),
group: 'redo',
icon: 'icon redo',
toolbar: true,
@@ -87,16 +87,16 @@
registerCommand({
id: 'dataForm.reconnect',
category: 'Data grid',
name: 'Reconnect',
category: __t('command.dataGrid', { defaultMessage: 'Data grid' }),
name: __t('command.dataGrid.reconnect', { defaultMessage: 'Reconnect' }),
testEnabled: () => getCurrentDataForm() != null,
onClick: () => getCurrentDataForm().reconnect(),
});
registerCommand({
id: 'dataForm.filterSelected',
category: 'Data form',
name: 'Filter this value',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.filterSelected', { defaultMessage: 'Filter this value' }),
keyText: 'CtrlOrCommand+Shift+F',
testEnabled: () => getCurrentDataForm() != null,
onClick: () => getCurrentDataForm().filterSelectedValue(),
@@ -104,16 +104,16 @@
registerCommand({
id: 'dataForm.addToFilter',
category: 'Data form',
name: 'Add to filter',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.addToFilter', { defaultMessage: 'Add to filter' }),
testEnabled: () => getCurrentDataForm() != null,
onClick: () => getCurrentDataForm().addToFilter(),
});
registerCommand({
id: 'dataForm.goToFirst',
category: 'Data form',
name: 'First',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.goToFirst', { defaultMessage: 'First' }),
keyText: 'CtrlOrCommand+Home',
toolbar: true,
isRelatedToTab: true,
@@ -124,8 +124,8 @@
registerCommand({
id: 'dataForm.goToPrevious',
category: 'Data form',
name: 'Previous',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.goToPrevious', { defaultMessage: 'Previous' }),
keyText: 'CtrlOrCommand+ArrowUp',
toolbar: true,
isRelatedToTab: true,
@@ -136,8 +136,8 @@
registerCommand({
id: 'dataForm.goToNext',
category: 'Data form',
name: 'Next',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.goToNext', { defaultMessage: 'Next' }),
keyText: 'CtrlOrCommand+ArrowDown',
toolbar: true,
isRelatedToTab: true,
@@ -148,8 +148,8 @@
registerCommand({
id: 'dataForm.goToLast',
category: 'Data form',
name: 'Last',
category: __t('command.dataForm', { defaultMessage: 'Data form' }),
name: __t('command.dataForm.goToLast', { defaultMessage: 'Last' }),
keyText: 'CtrlOrCommand+End',
toolbar: true,
isRelatedToTab: true,
@@ -197,7 +197,7 @@
import resizeObserver from '../utility/resizeObserver';
import openReferenceForm from './openReferenceForm';
import { useSettings } from '../utility/metadataLoaders';
import { _t } from '../translations';
import { _t, __t } from '../translations';
export let conid;
export let database;
@@ -243,20 +243,16 @@
function getRowCountInfo(allRowCount) {
if (rowCountNotAvailable) {
return `Row: ${((display.config.formViewRecordNumber || 0) + 1).toLocaleString()} / ???`;
return _t('dataForm.rowCount', { defaultMessage: 'Row: {rowCount} / ???', values: { rowCount: ((display.config.formViewRecordNumber || 0) + 1).toLocaleString() } });
}
if (rowData == null) {
if (allRowCount != null) {
return `Out of bounds: ${(
(display.config.formViewRecordNumber || 0) + 1
).toLocaleString()} / ${allRowCount.toLocaleString()}`;
return _t('dataForm.outOfBounds', { defaultMessage: 'Out of bounds: {current} / {total}', values: { current: ((display.config.formViewRecordNumber || 0) + 1).toLocaleString(), total: allRowCount.toLocaleString() } });
}
return 'No data';
return _t('dataForm.noData', { defaultMessage: 'No data' });
}
if (allRowCount == null || display == null) return 'Loading row count...';
return `Row: ${(
(display.config.formViewRecordNumber || 0) + 1
).toLocaleString()} / ${allRowCount.toLocaleString()}`;
if (allRowCount == null || display == null) return _t('dataForm.loadingRowCount', { defaultMessage: 'Loading row count...' });
return _t('dataForm.rowCount', { defaultMessage: 'Row: {current} / {total}', values: { current: ((display.config.formViewRecordNumber || 0) + 1).toLocaleString(), total: allRowCount.toLocaleString() } });
}
export function getGrider() {
@@ -720,7 +716,7 @@
</div>
{#if isLoading}
<LoadingInfo wrapper message="Loading data" />
<LoadingInfo wrapper message={_t('common.loadingData', { defaultMessage: 'Loading data' })} />
{/if}
<style>

View File

@@ -11,6 +11,7 @@
import KeyboardModal from './KeyboardModal.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal, showModal } from './modalTools';
import { _t } from '../translations';
export let command;
@@ -23,16 +24,16 @@
<FormProviderCore {values}>
<ModalBase {...$$restProps}>
<svelte:fragment slot="header">Configure commmand</svelte:fragment>
<svelte:fragment slot="header">{_t('commandModal.configure', { defaultMessage: 'Configure command' })}</svelte:fragment>
<FormTextField label="Category" name="category" disabled />
<FormTextField label="Name" name="name" disabled />
<FormTextField label={_t('commandModal.category', { defaultMessage: 'Category' })} name="category" disabled />
<FormTextField label={_t('commandModal.name', { defaultMessage: 'Name' })} name="name" disabled />
<div class="row">
<FormTextField label="Keyboard shortcut" name="keyText" templateProps={{ noMargin: true }} focused />
<FormTextField label={_t('commandModal.keyboardShortcut', { defaultMessage: 'Keyboard shortcut' })} name="keyText" templateProps={{ noMargin: true }} focused />
<FormStyledButton
type="button"
value="Keyboard"
value={_t('commandModal.keyboard', { defaultMessage: 'Keyboard' })}
on:click={handleKeyboard}
data-testid="CommandModal_keyboardButton"
/>
@@ -56,7 +57,7 @@
/>
<FormStyledButton
type="button"
value="Reset"
value={_t('common.reset', { defaultMessage: 'Reset' })}
on:click={() => {
closeCurrentModal();
apiCall('config/update-settings', {
@@ -64,7 +65,7 @@
});
}}
/>
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
</svelte:fragment>
</ModalBase>
</FormProviderCore>

View File

@@ -13,6 +13,7 @@
import { parseCellValue, safeJsonParse, stringifyCellValue } from 'dbgate-tools';
import { showSnackbarError } from '../utility/snackbar';
import ErrorMessageModal from './ErrorMessageModal.svelte';
import { _t } from '../translations';
export let onSave;
export let value;
@@ -49,14 +50,14 @@
if (parsed) {
textValue = JSON.stringify(parsed, null, 2);
} else {
showModal(ErrorMessageModal, { message: 'Not valid JSON' });
showModal(ErrorMessageModal, { message: _t('dataGrid.formatJson.invalid', { defaultMessage: 'Not valid JSON' }) });
}
}
</script>
<FormProvider>
<ModalBase {...$$restProps}>
<div slot="header">Edit cell value</div>
<div slot="header">{_t('dataGrid.editCellValue', { defaultMessage: 'Edit cell value' })}</div>
<div class="editor">
<AceEditor bind:value={textValue} bind:this={editor} onKeyDown={handleKeyDown} mode={syntaxMode} />
@@ -72,21 +73,21 @@
closeCurrentModal();
}}
/>
<FormStyledButton type="button" value="Cancel" on:click={closeCurrentModal} />
<FormStyledButton type="button" value={_t('common.cancel', { defaultMessage: 'Cancel' })} on:click={closeCurrentModal} />
</div>
<div>
<FormStyledButton type="button" value="Format JSON" on:click={handleFormatJson} />
<FormStyledButton type="button" skipWidth={true} value={_t('dataGrid.formatJson', { defaultMessage: 'Format JSON' })} on:click={handleFormatJson} />
Code highlighting:
{_t('dataGrid.codeHighlighting', { defaultMessage: 'Code highlighting:' })}
<SelectField
isNative
value={syntaxMode}
on:change={e => (syntaxMode = e.detail)}
options={[
{ value: 'text', label: 'None (raw text)' },
{ value: 'text', label: _t('dataGrid.codeHighlighting.none', { defaultMessage: 'None (raw text)' }) },
{ value: 'json', label: 'JSON' },
{ value: 'html', label: 'HTML' },
{ value: 'html', label: 'HTML'},
{ value: 'xml', label: 'XML' },
]}
/>

View File

@@ -6,8 +6,9 @@
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
import { _t } from '../translations';
export let title = 'Error';
export let title = _t('common.error', { defaultMessage: 'Error' });
export let message;
export let showAsCode = false;
</script>
@@ -30,7 +31,7 @@
{/if}
<div slot="footer">
<FormSubmit value="Close" on:click={closeCurrentModal} data-testid="ErrorMessageModal_closeButton" />
<FormSubmit value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} data-testid="ErrorMessageModal_closeButton" />
</div>
</ModalBase>
</FormProvider>

View File

@@ -5,6 +5,7 @@
import keycodes from '../utility/keycodes';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal } from './modalTools';
import { _t } from '../translations';
export let onChange;
let value;
@@ -38,7 +39,7 @@
</script>
<ModalBase {...$$restProps} simple>
<div class="mb-2">Show desired key combination and press ENTER</div>
<div class="mb-2">_{_t('commandModal.showKeyCombination', { defaultMessage: 'Show desired key combination and press ENTER' })}</div>
<div class="largeFormMarker">
<TextField on:keydown={handleKeyDown} bind:value focused />
</div>

View File

@@ -10,6 +10,7 @@
import ErrorMessageModal from './ErrorMessageModal.svelte';
import ModalBase from './ModalBase.svelte';
import { closeCurrentModal, showModal } from './modalTools';
import { _t } from '../translations';
export let driver;
export let dbid;
@@ -44,14 +45,14 @@
<FormProvider initialValues={{ name: '' }}>
<ModalBase {...$$restProps}>
<svelte:fragment slot="header">
Create {driver?.collectionSingularLabel ?? 'collection/container'}
{_t('dbObject.createCollection', { defaultMessage: 'Create collection/container'})}
</svelte:fragment>
<FormArgumentList args={driver?.newCollectionFormParams} />
<svelte:fragment slot="footer">
<FormSubmit value="OK" on:click={e => handleSubmit(e.detail)} disabled={isSaving} />
<FormStyledButton type="button" value="Cancel" on:click={closeCurrentModal} />
<FormStyledButton type="button" value={_t('common.cancel', { defaultMessage: 'Cancel' })} on:click={closeCurrentModal} />
</svelte:fragment>
</ModalBase>
</FormProvider>

View File

@@ -15,6 +15,7 @@
import _ from 'lodash';
import { apiCall } from '../utility/api';
import ErrorInfo from '../elements/ErrorInfo.svelte';
import { _t } from '../translations';
export let onConfirm;
export let conid;
@@ -73,15 +74,15 @@
<FormProvider>
<ModalBase {...$$restProps}>
<svelte:fragment slot="header">Choose value from {field}</svelte:fragment>
<svelte:fragment slot="header">{_t('dataGrid.chooseValue', { defaultMessage: 'Choose value from {field}', values: { field } })}</svelte:fragment>
<!-- <FormTextField name="search" label='Search' placeholder="Search" bind:value={search} /> -->
<div class="largeFormMarker">
<SearchInput placeholder="Search" bind:value={search} isDebounced />
<SearchInput placeholder={_t('common.search', { defaultMessage: 'Search' })} bind:value={search} isDebounced />
</div>
{#if isLoading}
<LoadingInfo message="Loading data" />
<LoadingInfo message={_t('common.loadingData', { defaultMessage: 'Loading data' })} />
{/if}
{#if !isLoading && rows}
@@ -111,7 +112,7 @@
},
{
fieldName: 'value',
header: 'Value',
header: _t('dataGrid.value', { defaultMessage: 'Value' }),
formatter: row => (row.value == null ? '(NULL)' : row.value),
},
]}
@@ -146,7 +147,7 @@
}}
/>
{/if}
<FormStyledButton type="button" value="Close" on:click={closeCurrentModal} />
<FormStyledButton type="button" value={_t('common.close', { defaultMessage: 'Close' })} on:click={closeCurrentModal} />
</svelte:fragment>
</ModalBase>
</FormProvider>

View File

@@ -143,19 +143,20 @@ ORDER BY
label={_t('settings.tabGroup.showServerName', { defaultMessage: 'Show server name alongside database name in title of the tab group' })}
defaultValue={false}
/>
<!-- <div class="heading">{_t('settings.localization', { defaultMessage: 'Localization' })}</div>
<div class="heading">{_t('settings.localization', { defaultMessage: 'Localization' })}</div>
<FormSelectField
label="Language"
label={_t('settings.localization.language', { defaultMessage: 'Language' })}
name="localization.language"
defaultValue={getSelectedLanguage()}
isNative
options={[
{ value: 'en', label: 'English' },
{ value: 'cs', label: 'Czech' },
{ value: 'cs', label: 'Čeština' },
{ value: 'sk', label: 'Slovenčina' },
]}
on:change={() => {
showModal(ConfirmModal, {
message: 'Application will be reloaded to apply new language settings',
message: _t('settings.localization.reloadWarning', { defaultMessage: 'Application will be reloaded to apply new language settings' }),
onConfirm: () => {
setTimeout(() => {
internalRedirectTo('/');
@@ -163,7 +164,7 @@ ORDER BY
},
});
}}
/> -->
/>
<div class="heading">{_t('settings.dataGrid.title', { defaultMessage: 'Data grid' })}</div>
<FormTextField

View File

@@ -43,7 +43,7 @@
<FormProvider>
<ModalBase {...$$restProps}>
<svelte:fragment slot="header"
>{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
>{constraintInfo ? _t('tableEdit.editConstraintLabel', { defaultMessage: 'Edit {constraintLabel}', values: { constraintLabel } }) : _t('tableEdit.addConstraintLabel', { defaultMessage: 'Add {constraintLabel}', values: { constraintLabel } })}</svelte:fragment
>
<div class="largeFormMarker">

View File

@@ -239,8 +239,8 @@
registerCommand({
id: 'tabs.nextTab',
category: 'Tabs',
name: _t('command.tabs.nextTab', { defaultMessage: 'Next tab' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.nextTab', { defaultMessage: 'Next tab' }),
keyText: 'Ctrl+Tab',
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 2,
onClick: () => switchTabByOrder(false),
@@ -248,8 +248,8 @@
registerCommand({
id: 'tabs.previousTab',
category: 'Tabs',
name: _t('command.tabs.previousTab', { defaultMessage: 'Previous tab' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.previousTab', { defaultMessage: 'Previous tab' }),
keyText: 'Ctrl+Shift+Tab',
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 2,
onClick: () => switchTabByOrder(true),
@@ -257,16 +257,16 @@
registerCommand({
id: 'tabs.closeAll',
category: 'Tabs',
name: _t('command.tabs.closeAll', { defaultMessage: 'Close all tabs' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.closeAll', { defaultMessage: 'Close all tabs' }),
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1,
onClick: closeAll,
});
registerCommand({
id: 'tabs.closeTab',
category: 'Tabs',
name: _t('command.tabs.closeTab', { defaultMessage: 'Close tab' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.closeTab', { defaultMessage: 'Close tab' }),
keyText: isElectronAvailable() ? 'CtrlOrCommand+W' : 'Alt+W',
testEnabled: () => {
const hasAnyOtherTab = getOpenedTabs().filter(x => !x.closedTime).length >= 1;
@@ -279,24 +279,24 @@
registerCommand({
id: 'tabs.closeTabsWithCurrentDb',
category: 'Tabs',
name: _t('command.tabs.closeTabsWithCurrentDb', { defaultMessage: 'Close tabs with current DB' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.closeTabsWithCurrentDb', { defaultMessage: 'Close tabs with current DB' }),
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(),
onClick: closeTabsWithCurrentDb,
});
registerCommand({
id: 'tabs.closeTabsButCurrentDb',
category: 'Tabs',
name: _t('command.tabs.closeTabsButCurrentDb', { defaultMessage: 'Close tabs but current DB' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.closeTabsButCurrentDb', { defaultMessage: 'Close tabs but current DB' }),
testEnabled: () => getOpenedTabs().filter(x => !x.closedTime).length >= 1 && !!getCurrentDatabase(),
onClick: closeTabsButCurrentDb,
});
registerCommand({
id: 'tabs.reopenClosedTab',
category: 'Tabs',
name: _t('command.tabs.reopenClosedTab', { defaultMessage: 'Reopen closed tab' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.reopenClosedTab', { defaultMessage: 'Reopen closed tab' }),
keyText: 'CtrlOrCommand+Shift+T',
testEnabled: () => getOpenedTabs().filter(x => x.closedTime).length >= 1,
onClick: reopenClosedTab,
@@ -304,8 +304,8 @@
registerCommand({
id: 'tabs.addToFavorites',
category: 'Tabs',
name: _t('command.tabs.addToFavorites', { defaultMessage: 'Add current tab to favorites' }),
category: __t('command.tabs', { defaultMessage: 'Tabs' }),
name: __t('command.tabs.addToFavorites', { defaultMessage: 'Add current tab to favorites' }),
// icon: 'icon favorite',
// toolbar: true,
testEnabled: () =>
@@ -360,6 +360,7 @@
import NewObjectModal from '../modals/NewObjectModal.svelte';
import { isProApp } from '../utility/proTools';
import { openWebLink } from '../utility/simpleTools';
import { __t } from '../translations';
export let multiTabIndex;
export let shownTab;

View File

@@ -6,8 +6,8 @@
registerCommand({
id: 'archiveFile.save',
group: 'save',
category: 'Archive file',
name: 'Save',
category: __t('command.archiveFile', { defaultMessage: 'Archive file' }),
name: __t('command.archiveFile.save', { defaultMessage: 'Save' }),
toolbar: true,
isRelatedToTab: true,
icon: 'icon save',
@@ -17,8 +17,8 @@
registerCommand({
id: 'archiveFile.saveAs',
category: 'Archive file',
name: 'Save as',
category: __t('command.archiveFile', { defaultMessage: 'Archive file' }),
name: __t('command.archiveFile.saveAs', { defaultMessage: 'Save as' }),
icon: 'icon save',
isRelatedToTab: true,
testEnabled: () => getCurrentEditor() != null,
@@ -49,6 +49,7 @@
import { changeTab, markTabSaved, markTabUnsaved, sleep } from '../utility/common';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import createUndoReducer from '../utility/createUndoReducer';
import { __t } from '../translations';
export const activator = createActivator('ArchiveFileTab', true);

View File

@@ -8,8 +8,8 @@
registerCommand({
id: 'collectionTable.save',
group: 'save',
category: 'Collection data',
name: 'Save',
category: __t('command.collectionData', { defaultMessage: 'Collection data' }),
name: __t('command.collectionData.save', { defaultMessage: 'Save' }),
// keyText: 'CtrlOrCommand+S',
toolbar: true,
isRelatedToTab: true,
@@ -56,6 +56,7 @@
import useEditorData from '../query/useEditorData';
import { markTabSaved, markTabUnsaved } from '../utility/common';
import { getNumberIcon } from '../icons/FontIcon.svelte';
import { __t } from '../translations';
export let tabid;
export let conid;

View File

@@ -3,7 +3,7 @@
registerFileCommands({
idPrefix: 'diagram',
category: 'Diagram',
category: __t('command.diagram', { defaultMessage: 'Diagram' }),
getCurrentEditor,
folder: 'diagrams',
format: 'json',
@@ -32,6 +32,7 @@
import DiagramSettings from '../designer/DiagramSettings.svelte';
import { derived } from 'svelte/store';
import { isProApp } from '../utility/proTools';
import { __t } from '../translations';
export let tabid;
export let conid;

View File

@@ -3,7 +3,7 @@
registerFileCommands({
idPrefix: 'favoriteJsonEditor',
category: 'Favorite JSON editor',
category: __t('command.favoriteJsonEditor', { defaultMessage: 'Favorite JSON editor' }),
getCurrentEditor,
folder: null,
format: null,
@@ -15,15 +15,15 @@
registerCommand({
id: 'favoriteJsonEditor.save',
group: 'save',
name: 'Save',
category: 'Favorite JSON editor',
name: __t('command.favoriteJsonEditor.save', { defaultMessage: 'Save' }),
category: __t('command.favoriteJsonEditor', { defaultMessage: 'Favorite JSON editor' }),
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().save(),
});
registerCommand({
id: 'favoriteJsonEditor.preview',
name: 'Preview',
category: 'Favorite JSON editor',
name: __t('command.favoriteJsonEditor.preview', { defaultMessage: 'Preview' }),
category: __t('command.favoriteJsonEditor', { defaultMessage: 'Favorite JSON editor' }),
keyText: 'F5 | CtrlOrCommand+Enter',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().preview(),
@@ -43,6 +43,7 @@
import { openFavorite } from '../appobj/FavoriteFileAppObject.svelte';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import { apiCall } from '../utility/api';
import { __t } from '../translations';
export let tabid;
export let savedFile;

View File

@@ -17,7 +17,7 @@
id: 'jsonl.save',
group: 'save',
category: 'JSON Lines editor',
name: 'Save',
name: __t('command.jsonl.save', { defaultMessage: 'Save' }),
toolbar: true,
isRelatedToTab: true,
icon: 'icon save',
@@ -28,7 +28,7 @@
registerCommand({
id: 'jsonl.preview',
category: 'JSON Lines editor',
name: 'Preview',
name: __t('command.jsonl.preview', { defaultMessage: 'Preview' }),
icon: 'icon preview',
keyText: 'F5',
testEnabled: () => getCurrentEditor() != null,
@@ -38,7 +38,7 @@
registerCommand({
id: 'jsonl.previewNewTab',
category: 'JSON Lines editor',
name: 'Preview in new tab',
name: __t('command.jsonl.previewNewTab', { defaultMessage: 'Preview in new tab' }),
icon: 'icon preview',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().previewMewTab(),
@@ -47,7 +47,7 @@
registerCommand({
id: 'jsonl.closePreview',
category: 'JSON Lines editor',
name: 'Close preview',
name: __t('command.jsonl.closePreview', { defaultMessage: 'Close preview' }),
icon: 'icon close',
testEnabled: () => getCurrentEditor()?.isPreview(),
onClick: () => getCurrentEditor().closePreview(),
@@ -74,6 +74,7 @@
import VerticalSplitter from '../elements/VerticalSplitter.svelte';
import JslDataGrid from '../datagrid/JslDataGrid.svelte';
import ToolStripCommandSplitButton from '../buttons/ToolStripCommandSplitButton.svelte';
import { __t } from '../translations';
export let tabid;
export let archiveFolder;

View File

@@ -16,7 +16,7 @@
registerCommand({
id: 'markdown.preview',
category: 'Markdown',
name: 'Preview',
name: __t('command.markdown.preview', { defaultMessage: 'Preview' }),
icon: 'icon run',
toolbar: true,
isRelatedToTab: true,
@@ -38,6 +38,7 @@
import openNewTab from '../utility/openNewTab';
import { setSelectedTab } from '../utility/common';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import { __t } from '../translations';
export let tabid;

View File

@@ -5,8 +5,8 @@
registerCommand({
id: 'queryData.stopLoading',
category: 'Query data',
name: 'Stop loading',
category: __t('command.queryData', { defaultMessage: 'Query data' }),
name: __t('command.queryData.stopLoading', { defaultMessage: 'Stop loading' }),
icon: 'icon stop',
testEnabled: () => getCurrentEditor()?.isLoading(),
onClick: () => getCurrentEditor().stopLoading(),
@@ -32,6 +32,7 @@
import yaml from 'js-yaml';
import JslChart from '../charts/JslChart.svelte';
import ToolStripButton from '../buttons/ToolStripButton.svelte';
import { __t } from '../translations';
export const activator = createActivator('QueryDataTab', true);

View File

@@ -3,8 +3,8 @@
registerCommand({
id: 'serverSummary.refresh',
category: 'Server sumnmary',
name: _t('common.refresh', { defaultMessage: 'Refresh' }),
category: __t('command.serverSummary', { defaultMessage: 'Server summary' }),
name: __t('common.refresh', { defaultMessage: 'Refresh' }),
keyText: 'F5 | CtrlOrCommand+R',
toolbar: true,
isRelatedToTab: true,
@@ -21,7 +21,7 @@
import LoadingInfo from '../elements/LoadingInfo.svelte';
import TabControl from '../elements/TabControl.svelte';
import { _t } from '../translations';
import { _t, __t } from '../translations';
import { apiCall } from '../utility/api';
import createActivator, { getActiveComponent } from '../utility/createActivator';
import openNewTab from '../utility/openNewTab';

View File

@@ -18,7 +18,7 @@
registerCommand({
id: 'shell.copyNodeScript',
category: 'Shell',
name: 'Copy nodejs script',
name: __t('command.shell.copyNodeScript', { defaultMessage: 'Copy nodejs script' }),
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().copyNodeScript(),
});
@@ -49,6 +49,7 @@
import { showSnackbarError } from '../utility/snackbar';
import useEffect from '../utility/useEffect';
import useTimerLabel from '../utility/useTimerLabel';
import { __t } from '../translations';
export let tabid;

View File

@@ -3,8 +3,8 @@
registerCommand({
id: 'sqlObject.find',
category: 'SQL Object',
name: 'Find',
category: __t('command.sqlObject', { defaultMessage: 'SQL Object' }),
name: __t('command.sqlObject.find', { defaultMessage: 'Find' }),
keyText: 'CtrlOrCommand+F',
testEnabled: () => getCurrentEditor() != null,
onClick: () => getCurrentEditor().find(),
@@ -31,6 +31,7 @@
import ToolStripButton from '../buttons/ToolStripButton.svelte';
import openNewTab from '../utility/openNewTab';
import { getBoolSettingsValue } from '../settings/settingsTools';
import { __t } from '../translations';
export let tabid;
export let appObjectData;

View File

@@ -3,6 +3,7 @@ import { currentDatabase, getExtensions, getOpenedTabs, loadingSchemaLists, open
import _ from 'lodash';
import { getSchemaList } from './metadataLoaders';
import { showSnackbarError } from './snackbar';
import { _t } from '../translations';
export class LoadingToken {
isCanceled = false;
@@ -57,8 +58,14 @@ export function setSelectedTab(tabid) {
}
export function getObjectTypeFieldLabel(objectTypeField, driver?) {
if (objectTypeField == 'matviews') return 'Materialized Views';
if (objectTypeField == 'collections') return _.startCase(driver?.collectionPluralLabel) ?? 'Collections/Containers';
if (objectTypeField == 'tables') return _t('dbObject.tables', { defaultMessage: 'Tables' });
if (objectTypeField == 'views') return _t('dbObject.views', { defaultMessage: 'Views' });
if (objectTypeField == 'procedures') return _t('dbObject.procedures', { defaultMessage: 'Procedures' });
if (objectTypeField == 'functions') return _t('dbObject.functions', { defaultMessage: 'Functions' });
if (objectTypeField == 'triggers') return _t('dbObject.triggers', { defaultMessage: 'Triggers' });
if (objectTypeField == 'schedulerEvents') return _t('dbObject.schedulerEvents', { defaultMessage: 'Scheduler Events' });
if (objectTypeField == 'matviews') return _t('dbObject.matviews', { defaultMessage: 'Materialized Views' });
if (objectTypeField == 'collections') return _t('dbObject.collections', { defaultMessage: 'Collections/Containers' });
return _.startCase(objectTypeField);
}

View File

@@ -4,6 +4,7 @@ import invalidateCommands from '../commands/invalidateCommands';
import { runGroupCommand } from '../commands/runCommand';
import { currentDropDownMenu, visibleCommandPalette } from '../stores';
import getAsArray from './getAsArray';
import { _val } from '../translations';
let isContextMenuSupressed = false;
@@ -114,7 +115,7 @@ function mapItem(item, commands) {
if (command) {
const commandText = item.text || command.menuName || command.toolbarName || command.name;
return {
text: _.isFunction(commandText) ? commandText() : commandText,
text: _val(commandText),
keyText: command.keyText || command.keyTextFromGroup || command.disableHandleKeyText,
onClick: () => {
if (command.isGroupCommand) {

View File

@@ -44,7 +44,7 @@
<WidgetColumnBarItem
title={driver?.databaseEngineTypes?.includes('document')
? (driver?.collectionPluralLabel ?? 'Collections/containers')
? _t('widget.collectionsContainers', { defaultMessage: 'Collections/containers' })
: _t('widget.tablesViewsFunctions', { defaultMessage: 'Tables, views, functions' })}
name="dbObjects"
storageName="dbObjectsWidget"

View File

@@ -205,7 +205,7 @@
{#if driver?.databaseEngineTypes?.includes('document')}
<div class="m-1" />
<InlineButton on:click={() => runCommand('new.collection')}
>New {driver?.collectionSingularLabel ?? 'collection/container'}</InlineButton
>{_t('sqlObject.newCollection', { defaultMessage: 'New collection/container'})}</InlineButton
>
{/if}
</WidgetsInnerContainer>

View File

@@ -44,6 +44,64 @@
"columnsConstraintEditor.addNewColumn": "Přidat nový sloupec",
"columnsConstraintEditor.chooseColumn": "Vybrat sloupec",
"columnsConstraintEditor.selectColumn": "Vybrat sloupec",
"command.about": "O aplikaci",
"command.about.show": "Zobrazit",
"command.about.toolbar": "O aplikaci",
"command.app.checkForUpdates": "Zkontrolovat dostupné aktualizace",
"command.app.disconnect": "Odpojit",
"command.app.loggedUser": "Přihlášený uživatel",
"command.app.logout": "Odhlásit",
"command.application": "Aplikace",
"command.application.becomeSponsor": "Stát se sponzorem",
"command.application.documentation": "Dokumentace",
"command.application.maximize": "Maximalizovat",
"command.application.minimize": "Minimalizovat",
"command.application.openIssue": "Nahlásit problém nebo požadavek na funkci",
"command.application.reload": "Obnovit",
"command.application.toggleDevTools": "Přepnout vývojářské nástroje",
"command.application.toggleFullScreen": "Přepnout celou obrazovku",
"command.application.unsetCurrentDatabase": "Zrušit aktuální databázi",
"command.application.web": "DbGate web",
"command.application.zoomIn": "Přiblížit",
"command.application.zoomOut": "Oddálit",
"command.application.zoomReset": "Resetovat přiblížení",
"command.archiveFile": "Archivní soubor",
"command.archiveFile.save": "Uložit",
"command.archiveFile.saveAs": "Uložit jako",
"command.cloud": "Cloud",
"command.cloud.logout": "Odhlásit",
"command.collectionData": "Data kolekce",
"command.collectionData.collapseAll": "Sbalit vše",
"command.collectionData.expandAll": "Rozbalit vše",
"command.collectionData.save": "Uložit",
"command.commandPalette": "Paleta příkazů",
"command.commandPalette.show": "Zobrazit",
"command.copy": "Kopírovat",
"command.dataForm": "Formulář dat",
"command.dataForm.addToFilter": "Přidat do filtru",
"command.dataForm.copyToClipboard": "Zkopírovat do schránky",
"command.dataForm.filterSelected": "Filtrovat tuto hodnotu",
"command.dataForm.goToFirst": "První",
"command.dataForm.goToLast": "Poslední",
"command.dataForm.goToNext": "Další",
"command.dataForm.goToPrevious": "Předchozí",
"command.dataForm.redo": "Znovu",
"command.dataForm.removeField": "Odstranit pole",
"command.dataForm.revertRowChanges": "Vrátit změny řádku",
"command.dataForm.setNull": "Nastavit NULL",
"command.dataForm.undo": "Vrátit",
"command.dataGrid": "Datová mřížka",
"command.dataGrid.export": "Export",
"command.dataGrid.openQuery": "Otevřít dotaz",
"command.dataGrid.reconnect": "Znovu připojit",
"command.database": "Databáze",
"command.database.changeRecent": "Změnit na nedávnou",
"command.database.changeStatus": "Změnit stav",
"command.database.chat": "Chat databáze",
"command.database.compare": "Porovnat databáze",
"command.database.databaseSearch": "Vyhledávání v databázi",
"command.database.export": "Exportovat databázi",
"command.database.search": "Vyhledat",
"command.datagrid": "Datová mřížka",
"command.datagrid.addJsonDocument": "Přidat JSON dokument",
"command.datagrid.addNewColumn": "Přidat nový sloupec",
@@ -91,9 +149,69 @@
"command.datagrid.viewJsonValue": "Zobrazit buňku jako JSON dokument",
"command.datagrid.witchToTable": "Přepnout na tabulku",
"command.datgrid.hideColumn": "Skrýt sloupec",
"command.designer": "Návrhář",
"command.designer.arrange": "Uspořádat",
"command.designer.exportDiagram": "Exportovat diagram",
"command.designer.remove": "Odebrat",
"command.designer.removeSelectedTables": "Odebrat vybrané tabulky",
"command.diagram": "Diagram",
"command.edit": "Upravit",
"command.edit.copy": "Kopírovat",
"command.edit.cut": "Vyjmout",
"command.edit.paste": "Vložit",
"command.edit.redo": "Znovu",
"command.edit.selectAll": "Vybrat vše",
"command.edit.undo": "Zpět",
"command.execute": "Spustit",
"command.favoriteJsonEditor": "Oblíbený JSON editor",
"command.favoriteJsonEditor.preview": "Náhled",
"command.favoriteJsonEditor.save": "Uložit",
"command.file": "Soubor",
"command.file.exit": "Ukončit",
"command.file.import": "Importovat data",
"command.file.open": "Otevřít",
"command.file.openArchive": "Otevřít DB Model/Archiv",
"command.file.quit": "Ukončit",
"command.file.resetLayout": "Resetovat data rozložení a nastavení",
"command.file.resetLayoutConfirm": "Opravdu resetovat data rozložení? Všechny otevřené karty, nastavení a data rozložení budou ztracena. Připojení a uložené soubory budou zachovány. Po tomto restartujte DbGate pro použití změn.",
"command.find": "Najít",
"command.folder": "Složka",
"command.folder.openData": "Otevřít složku dat",
"command.folder.openLogs": "Otevřít logy",
"command.internal": "Interní",
"command.internal.loadCampaigns": "Načíst seznam kampaní",
"command.internal.showCampaigns": "Zobrazit kampaně",
"command.jsonl.closePreview": "Zavřít náhled",
"command.jsonl.preview": "Náhled",
"command.jsonl.previewNewTab": "Náhled v nové kartě",
"command.jsonl.save": "Uložit",
"command.kill": "Ukončit",
"command.markdown.preview": "Náhled",
"command.new": "Nový",
"command.new.application": "Aplikace",
"command.new.archiveFolder": "Složka archivů",
"command.new.collection": "Kolekce",
"command.new.collectionToolbar": "Nová kolekce/kontejner",
"command.new.connection": "Přidat připojení",
"command.new.connectionCloud": "Připojení na Cloud",
"command.new.connectionFolder": "Složka připojení",
"command.new.connectionFolderToolbar": "Přidat složku připojení",
"command.new.diagram": "ER Diagram",
"command.new.duckdbDatabase": "Nová DuckDB databáze",
"command.new.jsonl": "JSON Lines",
"command.new.markdown": "Markdown stránka",
"command.new.modelCompare": "Porovnat DB",
"command.new.modelTransform": "Transformace modelu",
"command.new.perspective": "Perspektiva",
"command.new.query": "Dotaz",
"command.new.queryDesign": "Design dotazu",
"command.new.queryToolbar": "Nový dotaz",
"command.new.shell": "JavaScript Shell",
"command.new.sqliteDatabase": "Nová SQLite databáze",
"command.new.table": "Tabulka",
"command.new.tableToolbar": "Nová tabulka",
"command.openQuery": "Otevřít dotaz",
"command.paste": "Vložit",
"command.query": "Dotaz",
"command.query.AiAssistant": "AI Asistent",
"command.query.autocommitOffSwitch": "Automatické potvrzování: VYPNUTO",
@@ -109,12 +227,35 @@
"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.queryData": "Údaje z dotazu",
"command.queryData.stopLoading": "Zastavit načítání",
"command.redo": "Znovu",
"command.replace": "Nahradit",
"command.save": "Uložit",
"command.saveAs": "Uložit jako",
"command.saveToDisk": "Uložit na disk",
"command.serverSummary": "Souhrn serveru",
"command.settings": "Nastavení",
"command.settings.change": "Změnit",
"command.settings.exportConnections": "Exportovat připojení",
"command.settings.importConnections": "Importovat připojení",
"command.settings.shortcuts": "Klávesové zkratky",
"command.shell.copyNodeScript": "Kopírovat nodejs script",
"command.sidebar": "Postranní panel",
"command.sidebar.show": "Zobrazit",
"command.sidebar.toggleToolbar": "Přepnout postranní panel",
"command.sql": "SQL",
"command.sql.generator": "SQL Generátor",
"command.sqlObject": "SQL Objekt",
"command.sqlObject.find": "Najít",
"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": "Karty",
"command.tabs.addToFavorites": "Přidat aktuální kartu do oblíbených",
"command.tabs.changelog": "Seznam změn",
"command.tabs.closeAll": "Zavřít všechny karty",
"command.tabs.closeTab": "Zavřít kartu",
"command.tabs.closeTabsButCurrentDb": "Zavřít karty kromě aktuální DB",
@@ -122,6 +263,23 @@
"command.tabs.nextTab": "Další karta",
"command.tabs.previousTab": "Předchozí karta",
"command.tabs.reopenClosedTab": "Znovu otevřít zavřenou kartu",
"command.theme": "Téma",
"command.theme.change": "Změnit",
"command.theme.changeToolbar": "Změnit téma",
"command.toggleComment": "Přepnout komentář",
"command.toolbar": "Panel nástrojů",
"command.toolbar.hide": "Skrýt",
"command.toolbar.show": "Zobrazit",
"command.undo": "Zpět",
"command.view": "Zobrazení",
"command.view.reset": "Resetovat zobrazení",
"command.view.restart": "Restartovat DbGate (nebo obnovit na webu) pro použití změn",
"commandModal.category": "Kategorie",
"commandModal.configure": "Konfigurovat příkaz",
"commandModal.keyboard": "Klávesnice",
"commandModal.keyboardShortcut": "Klávesová zkratka",
"commandModal.name": "Název",
"commandModal.showKeyCombination": "Zadejte požadovanou kombinaci kláves a stiskněte ENTER",
"common.addNew": "Přidat nový",
"common.advanced": "Pokročilé",
"common.archive": "Archivovat (JSONL)",
@@ -140,6 +298,7 @@
"common.delete": "Smazat",
"common.description": "Popis",
"common.erDiagram": "ER Diagram",
"common.error": "Chyba",
"common.execute": "Spustit",
"common.export": "Export",
"common.exportDatabase": "Exportovat databázi",
@@ -147,19 +306,23 @@
"common.general": "Obecné",
"common.import": "Import",
"common.kill": "Ukončit",
"common.loadingData": "Načítání dat",
"common.name": "Název",
"common.notSelectedOptional": "(nezvoleno - volitelné)",
"common.parameters": "Parametry",
"common.passwordEncrypted": "Heslo je zašifrované",
"common.perspective": "Perspektiva",
"common.query": "Dotaz",
"common.queryDesigner": "Návrhář dotazů",
"common.queryEditor": "Editor SQL dotazů",
"common.refresh": "Obnovit",
"common.remove": "Odstranit",
"common.reset": "Resetovat",
"common.save": "Uložit",
"common.saveAndNext": "Uložit a další",
"common.saveToArchive": "Uložit do archívu",
"common.schema": "Schéma",
"common.search": "Hledat",
"common.searchBy": "Hledat podle:",
"common.sqlGenerator": "SQL Generátor",
"common.table": "Tabulka",
@@ -240,13 +403,25 @@
"connection.user": "Uživatel",
"connection.viewDetails": "Zobrazit detaily",
"connection.windowsDomain": "Doména (zadejte pro použití NTLM autentizace)",
"dataForm.loadingRowCount": "Načítání počtu řádků...",
"dataForm.noData": "Žádná data",
"dataForm.outOfBounds": "Mimo rozsah: {current} / {total}",
"dataForm.rowCount": "Řádek: {current} / {total}",
"dataGrid.chooseValue": "Vybrat hodnotu z {field}",
"dataGrid.codeHighlighting": "Zvýraznění kódu:",
"dataGrid.codeHighlighting.none": "Žádné (neformátovaný text)",
"dataGrid.columns": "Sloupce",
"dataGrid.dependentTables": "Závislé tabulky",
"dataGrid.editCellValue": "Upravit hodnotu buňky",
"dataGrid.filters": "Filtry",
"dataGrid.formatJson": "Formátovat JSON",
"dataGrid.formatJson.invalid": "Neplatný JSON",
"dataGrid.macros": "Makra",
"dataGrid.multiColumnFilter": "Filtr více sloupců",
"dataGrid.references": "Reference",
"dataGrid.referencesTables": "Reference na tabulky",
"dataGrid.searchReferences": "Hledat reference",
"dataGrid.value": "Hodnota",
"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?",
@@ -270,7 +445,7 @@
"database.exportDbModel": "Export DB model",
"database.generateScript": "Vygenerovat skript",
"database.import": "Import",
"database.newCollection": "Nová {collectionLabel}",
"database.newCollection": "Nová kolekce/kontejner",
"database.newQuery": "Nový dotaz",
"database.newTable": "Nová tabulka",
"database.perspective": "Perspektiva #",
@@ -349,6 +524,48 @@
"datagrid.searchMacros": "Hledat makra",
"datagrid.setFormat": "Nastavit formát: ",
"datagrid.structure": "Struktura",
"dbObject.collections": "Kolekce/Kontejnery",
"dbObject.confirmCloneCollection": "Opravdu vytvořit kopii kolekce/kontejneru s názvem {name}?",
"dbObject.confirmDropCollection": "Opravdu odstranit kolekci {name}?",
"dbObject.copyTableName": "Kopírovat název tabulky",
"dbObject.createCollection": "Vytvořit kolekci/kontejner",
"dbObject.createCollectionBackup": "Vytvořit zálohu kolekce/kontejneru",
"dbObject.createTableBackup": "Vytvořit zálohu tabulky",
"dbObject.designPerspectiveQuery": "Návrh perspektivního dotazu",
"dbObject.designQuery": "Návrh dotazu",
"dbObject.diagram": "Diagram #",
"dbObject.disable": "Zakázat",
"dbObject.dropCollection": "Odstranit kolekci/kontejner",
"dbObject.dropEvent": "Odstranit událost",
"dbObject.dropProcedure": "Odstranit proceduru",
"dbObject.dropTable": "Odstranit tabulku",
"dbObject.dropTrigger": "Odstranit trigger",
"dbObject.dropView": "Odstranit pohled",
"dbObject.enable": "Povolit",
"dbObject.functions": "Funkce",
"dbObject.matviews": "Materializované pohledy",
"dbObject.newCollectionName": "Nový název kolekce/kontejneru",
"dbObject.openData": "Otevřít data",
"dbObject.openJson": "Otevřít JSON",
"dbObject.openRawData": "Otevřít surová data",
"dbObject.openStructure": "Otevřít strukturu",
"dbObject.procedures": "Procedury",
"dbObject.query": "Dotaz #",
"dbObject.queryDesigner": "Návrhář dotazů",
"dbObject.renameCollection": "Přejmenovat kolekci/kontejner",
"dbObject.renameProcedure": "Přejmenovat proceduru",
"dbObject.renameTable": "Přejmenovat tabulku",
"dbObject.renameView": "Přejmenovat pohled",
"dbObject.schedulerEvents": "Události plánovače",
"dbObject.showDiagram": "Zobrazit diagram",
"dbObject.showQuery": "Zobrazit dotaz",
"dbObject.showSql": "Zobrazit SQL",
"dbObject.sqlGenerator": "SQL generátor",
"dbObject.sqlTemplate": "SQL šablona",
"dbObject.tables": "Tabulky",
"dbObject.triggers": "Triggery",
"dbObject.truncateTable": "Oříznout tabulku",
"dbObject.views": "Pohledy",
"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",
@@ -587,6 +804,7 @@
"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.newCollection": "Nová kolekce/kontejner",
"sqlObject.schemaName": "Schéma",
"sqlObject.search.placeholder": "Hledat v tabulkách, pohledech, procedurách",
"sqlObject.searchBy": "Hledat podle:",
@@ -654,6 +872,7 @@
"tableEditor.yes": "ANO",
"tableStructure.alter": "Upravit tabulku",
"tableStructure.create": "Vytvořit tabulku",
"widget.collectionsContainers": "Kolekce/kontejnery",
"widget.databaseContent": "Obsah databáze",
"widget.databases": "Databáze",
"widget.keys": "Klíče",

View File

@@ -44,6 +44,64 @@
"columnsConstraintEditor.addNewColumn": "Add new column",
"columnsConstraintEditor.chooseColumn": "Choose column",
"columnsConstraintEditor.selectColumn": "Select column",
"command.about": "About",
"command.about.show": "Show",
"command.about.toolbar": "About",
"command.app.checkForUpdates": "Check for updates",
"command.app.disconnect": "Disconnect",
"command.app.loggedUser": "Logged user",
"command.app.logout": "Logout",
"command.application": "Application",
"command.application.becomeSponsor": "Become sponsor",
"command.application.documentation": "Documentation",
"command.application.maximize": "Maximize",
"command.application.minimize": "Minimize",
"command.application.openIssue": "Report problem or feature request",
"command.application.reload": "Reload",
"command.application.toggleDevTools": "Toggle Dev Tools",
"command.application.toggleFullScreen": "Toggle full screen",
"command.application.unsetCurrentDatabase": "Unset current database",
"command.application.web": "DbGate web",
"command.application.zoomIn": "Zoom in",
"command.application.zoomOut": "Zoom out",
"command.application.zoomReset": "Reset zoom",
"command.archiveFile": "Archive file",
"command.archiveFile.save": "Save",
"command.archiveFile.saveAs": "Save as",
"command.cloud": "Cloud",
"command.cloud.logout": "Logout",
"command.collectionData": "Collection data",
"command.collectionData.collapseAll": "Collapse all",
"command.collectionData.expandAll": "Expand all",
"command.collectionData.save": "Save",
"command.commandPalette": "Command palette",
"command.commandPalette.show": "Show",
"command.copy": "Copy",
"command.dataForm": "Data form",
"command.dataForm.addToFilter": "Add to filter",
"command.dataForm.copyToClipboard": "Copy to clipboard",
"command.dataForm.filterSelected": "Filter this value",
"command.dataForm.goToFirst": "First",
"command.dataForm.goToLast": "Last",
"command.dataForm.goToNext": "Next",
"command.dataForm.goToPrevious": "Previous",
"command.dataForm.redo": "Redo",
"command.dataForm.removeField": "Remove field",
"command.dataForm.revertRowChanges": "Revert row changes",
"command.dataForm.setNull": "Set NULL",
"command.dataForm.undo": "Undo",
"command.dataGrid": "Data grid",
"command.dataGrid.export": "Export",
"command.dataGrid.openQuery": "Open query",
"command.dataGrid.reconnect": "Reconnect",
"command.database": "Database",
"command.database.changeRecent": "Change to recent",
"command.database.changeStatus": "Change status",
"command.database.chat": "Database chat",
"command.database.compare": "Compare databases",
"command.database.databaseSearch": "Database search",
"command.database.export": "Export database",
"command.database.search": "Search",
"command.datagrid": "Data grid",
"command.datagrid.addJsonDocument": "Add JSON document",
"command.datagrid.addNewColumn": "Add new column",
@@ -91,9 +149,69 @@
"command.datagrid.viewJsonValue": "View cell as JSON document",
"command.datagrid.witchToTable": "Switch to table",
"command.datgrid.hideColumn": "Hide column",
"command.designer": "Designer",
"command.designer.arrange": "Arrange",
"command.designer.exportDiagram": "Export diagram",
"command.designer.remove": "Remove",
"command.designer.removeSelectedTables": "Remove selected tables",
"command.diagram": "Diagram",
"command.edit": "Edit",
"command.edit.copy": "Copy",
"command.edit.cut": "Cut",
"command.edit.paste": "Paste",
"command.edit.redo": "Redo",
"command.edit.selectAll": "Select All",
"command.edit.undo": "Undo",
"command.execute": "Execute",
"command.favoriteJsonEditor": "Favorite JSON editor",
"command.favoriteJsonEditor.preview": "Preview",
"command.favoriteJsonEditor.save": "Save",
"command.file": "File",
"command.file.exit": "Exit",
"command.file.import": "Import data",
"command.file.open": "Open",
"command.file.openArchive": "Open DB Model/Archive",
"command.file.quit": "Quit",
"command.file.resetLayout": "Reset layout data & settings",
"command.file.resetLayoutConfirm": "Really reset layout data? All opened tabs, settings and layout data will be lost. Connections and saved files will be preserved. After this, restart DbGate for applying changes.",
"command.find": "Find",
"command.folder": "Folder",
"command.folder.openData": "Open data folder",
"command.folder.openLogs": "Open logs",
"command.internal": "Internal",
"command.internal.loadCampaigns": "Load campaign list",
"command.internal.showCampaigns": "Show campaigns",
"command.jsonl.closePreview": "Close preview",
"command.jsonl.preview": "Preview",
"command.jsonl.previewNewTab": "Preview in new tab",
"command.jsonl.save": "Save",
"command.kill": "Kill",
"command.markdown.preview": "Preview",
"command.new": "New",
"command.new.application": "Application",
"command.new.archiveFolder": "Archive folder",
"command.new.collection": "Collection",
"command.new.collectionToolbar": "New collection/container",
"command.new.connection": "Add connection",
"command.new.connectionCloud": "Connection on Cloud",
"command.new.connectionFolder": "Connection folder",
"command.new.connectionFolderToolbar": "Add connection folder",
"command.new.diagram": "ER Diagram",
"command.new.duckdbDatabase": "New DuckDB database",
"command.new.jsonl": "JSON Lines",
"command.new.markdown": "Markdown page",
"command.new.modelCompare": "Compare DB",
"command.new.modelTransform": "Model transform",
"command.new.perspective": "Perspective",
"command.new.query": "Query",
"command.new.queryDesign": "Query design",
"command.new.queryToolbar": "New query",
"command.new.shell": "JavaScript Shell",
"command.new.sqliteDatabase": "New SQLite database",
"command.new.table": "Table",
"command.new.tableToolbar": "New table",
"command.openQuery": "Open query",
"command.paste": "Paste",
"command.query": "Query",
"command.query.AiAssistant": "AI Assistant",
"command.query.autocommitOffSwitch": "Auto commit: OFF",
@@ -109,12 +227,35 @@
"command.query.toggleAutoExecute": "Toggle auto execute",
"command.query.toggleFixedConnection": "Toggle fixed connection",
"command.query.toggleVisibleResultTabs": "Toggle visible result tabs",
"command.queryData": "Query data",
"command.queryData.stopLoading": "Stop loading",
"command.redo": "Redo",
"command.replace": "Replace",
"command.save": "Save",
"command.saveAs": "Save As",
"command.saveToDisk": "Save to disk",
"command.serverSummary": "Server summary",
"command.settings": "Settings",
"command.settings.change": "Change",
"command.settings.exportConnections": "Export connections",
"command.settings.importConnections": "Import connections",
"command.settings.shortcuts": "Keyboard shortcuts",
"command.shell.copyNodeScript": "Copy nodejs script",
"command.sidebar": "Sidebar",
"command.sidebar.show": "Show",
"command.sidebar.toggleToolbar": "Toggle sidebar",
"command.sql": "SQL",
"command.sql.generator": "SQL Generator",
"command.sqlObject": "SQL Object",
"command.sqlObject.find": "Find",
"command.tableData": "Table data",
"command.tableData.save": "Save",
"command.tableEditor": "Table editor",
"command.tableEditor.reset": "Reset changes",
"command.tableEditor.save": "Save",
"command.tabs": "Tabs",
"command.tabs.addToFavorites": "Add current tab to favorites",
"command.tabs.changelog": "Changelog",
"command.tabs.closeAll": "Close all tabs",
"command.tabs.closeTab": "Close tab",
"command.tabs.closeTabsButCurrentDb": "Close tabs but current DB",
@@ -122,6 +263,23 @@
"command.tabs.nextTab": "Next tab",
"command.tabs.previousTab": "Previous tab",
"command.tabs.reopenClosedTab": "Reopen closed tab",
"command.theme": "Theme",
"command.theme.change": "Change",
"command.theme.changeToolbar": "Change theme",
"command.toggleComment": "Toggle comment",
"command.toolbar": "Toolbar",
"command.toolbar.hide": "Hide",
"command.toolbar.show": "Show",
"command.undo": "Undo",
"command.view": "View",
"command.view.reset": "Reset view",
"command.view.restart": "Restart DbGate (or reload on web) for applying changes",
"commandModal.category": "Category",
"commandModal.configure": "Configure command",
"commandModal.keyboard": "Keyboard",
"commandModal.keyboardShortcut": "Keyboard shortcut",
"commandModal.name": "Name",
"commandModal.showKeyCombination": "Show desired key combination and press ENTER",
"common.addNew": "Add new",
"common.advanced": "Advanced",
"common.archive": "Archive (JSONL)",
@@ -140,6 +298,7 @@
"common.delete": "Delete",
"common.description": "Description",
"common.erDiagram": "ER Diagram",
"common.error": "Error",
"common.execute": "Execute",
"common.export": "Export",
"common.exportDatabase": "Export database",
@@ -147,19 +306,23 @@
"common.general": "General",
"common.import": "Import",
"common.kill": "Kill",
"common.loadingData": "Loading data",
"common.name": "Name",
"common.notSelectedOptional": "(not selected - optional)",
"common.parameters": "Parameters",
"common.passwordEncrypted": "Password is encrypted",
"common.perspective": "Perspective",
"common.query": "Query",
"common.queryDesigner": "Query Designer",
"common.queryEditor": "SQL query editor",
"common.refresh": "Refresh",
"common.remove": "Remove",
"common.reset": "Reset",
"common.save": "Save",
"common.saveAndNext": "Save and next",
"common.saveToArchive": "Save to archive",
"common.schema": "Schema",
"common.search": "Search",
"common.searchBy": "Search by:",
"common.sqlGenerator": "SQL Generator",
"common.table": "Table",
@@ -240,13 +403,25 @@
"connection.user": "User",
"connection.viewDetails": "View details",
"connection.windowsDomain": "Domain (specify to use NTLM authentication)",
"dataForm.loadingRowCount": "Loading row count...",
"dataForm.noData": "No data",
"dataForm.outOfBounds": "Out of bounds: {current} / {total}",
"dataForm.rowCount": "Row: {current} / {total}",
"dataGrid.chooseValue": "Choose value from {field}",
"dataGrid.codeHighlighting": "Code highlighting:",
"dataGrid.codeHighlighting.none": "None (raw text)",
"dataGrid.columns": "Columns",
"dataGrid.dependentTables": "Dependent tables",
"dataGrid.editCellValue": "Edit cell value",
"dataGrid.filters": "Filters",
"dataGrid.formatJson": "Format JSON",
"dataGrid.formatJson.invalid": "Not valid JSON",
"dataGrid.macros": "Macros",
"dataGrid.multiColumnFilter": "Multi column filter",
"dataGrid.references": "References",
"dataGrid.referencesTables": "References tables",
"dataGrid.searchReferences": "Search references",
"dataGrid.value": "Value",
"database.backup": "Backup #",
"database.chooseArchiveFolderForDataDeployer": "Choose archive folder for data deployer",
"database.closeConfirm": "Closing connection will close {count} opened tabs, continue?",
@@ -270,7 +445,7 @@
"database.exportDbModel": "Export DB model",
"database.generateScript": "Generate script",
"database.import": "Import",
"database.newCollection": "New {collectionLabel}",
"database.newCollection": "New collection/container",
"database.newQuery": "New query",
"database.newTable": "New table",
"database.perspective": "Perspective #",
@@ -349,6 +524,48 @@
"datagrid.searchMacros": "Search macros",
"datagrid.setFormat": "Set format: ",
"datagrid.structure": "Structure",
"dbObject.collections": "Collections/Containers",
"dbObject.confirmCloneCollection": "Really create collection/container copy named {name}?",
"dbObject.confirmDropCollection": "Really drop collection {name}?",
"dbObject.copyTableName": "Copy table name",
"dbObject.createCollection": "Create collection/container",
"dbObject.createCollectionBackup": "Create collection/container backup",
"dbObject.createTableBackup": "Create table backup",
"dbObject.designPerspectiveQuery": "Design perspective query",
"dbObject.designQuery": "Design query",
"dbObject.diagram": "Diagram #",
"dbObject.disable": "Disable",
"dbObject.dropCollection": "Drop collection/container",
"dbObject.dropEvent": "Drop event",
"dbObject.dropProcedure": "Drop procedure",
"dbObject.dropTable": "Drop table",
"dbObject.dropTrigger": "Drop trigger",
"dbObject.dropView": "Drop view",
"dbObject.enable": "Enable",
"dbObject.functions": "Functions",
"dbObject.matviews": "Materialized Views",
"dbObject.newCollectionName": "New collection/container name",
"dbObject.openData": "Open data",
"dbObject.openJson": "Open JSON",
"dbObject.openRawData": "Open raw data",
"dbObject.openStructure": "Open structure",
"dbObject.procedures": "Procedures",
"dbObject.query": "Query #",
"dbObject.queryDesigner": "Query designer",
"dbObject.renameCollection": "Rename collection/container",
"dbObject.renameProcedure": "Rename procedure",
"dbObject.renameTable": "Rename table",
"dbObject.renameView": "Rename view",
"dbObject.schedulerEvents": "Scheduler Events",
"dbObject.showDiagram": "Show diagram",
"dbObject.showQuery": "Show query",
"dbObject.showSql": "Show SQL",
"dbObject.sqlGenerator": "SQL generator",
"dbObject.sqlTemplate": "SQL template",
"dbObject.tables": "Tables",
"dbObject.triggers": "Triggers",
"dbObject.truncateTable": "Truncate table",
"dbObject.views": "Views",
"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",
@@ -587,6 +804,7 @@
"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.newCollection": "New collection/container",
"sqlObject.schemaName": "Schema",
"sqlObject.search.placeholder": "Search in tables, views, procedures",
"sqlObject.searchBy": "Search by:",
@@ -654,6 +872,7 @@
"tableEditor.yes": "YES",
"tableStructure.alter": "Alter table",
"tableStructure.create": "Create table",
"widget.collectionsContainers": "Collections/containers",
"widget.databaseContent": "Database content",
"widget.databases": "Databases",
"widget.keys": "Keys",

View File

@@ -44,6 +44,64 @@
"columnsConstraintEditor.addNewColumn": "Pridať nový stĺpec",
"columnsConstraintEditor.chooseColumn": "Vybrať stĺpec",
"columnsConstraintEditor.selectColumn": "Vybrať stĺpec",
"command.about": "O aplikácii",
"command.about.show": "Zobraziť",
"command.about.toolbar": "O aplikácii",
"command.app.checkForUpdates": "Skontrolovať dostupnosť aktualizácií",
"command.app.disconnect": "Odpojiť",
"command.app.loggedUser": "Prihlásený používateľ",
"command.app.logout": "Odhlásiť sa",
"command.application": "Aplikácia",
"command.application.becomeSponsor": "Stať sa sponzorom",
"command.application.documentation": "Dokumentácia",
"command.application.maximize": "Maximalizovať",
"command.application.minimize": "Minimalizovať",
"command.application.openIssue": "Nahlásiť problém alebo požiadať o funkciu",
"command.application.reload": "Znova načítať",
"command.application.toggleDevTools": "Prepnúť vývojárske nástroje",
"command.application.toggleFullScreen": "Prepnúť celú obrazovku",
"command.application.unsetCurrentDatabase": "Zrušiť aktuálnu databázu",
"command.application.web": "DbGate web",
"command.application.zoomIn": "Priblížiť",
"command.application.zoomOut": "Oddialiť",
"command.application.zoomReset": "Obnoviť priblíženie",
"command.archiveFile": "Archivný súbor",
"command.archiveFile.save": "Uložiť",
"command.archiveFile.saveAs": "Uložiť ako",
"command.cloud": "Cloud",
"command.cloud.logout": "Odhlásiť sa",
"command.collectionData": "Údaje z kolekcie",
"command.collectionData.collapseAll": "Zbaliť všetko",
"command.collectionData.expandAll": "Rozbaliť všetko",
"command.collectionData.save": "Uložiť",
"command.commandPalette": "Paleta príkazov",
"command.commandPalette.show": "Zobraziť",
"command.copy": "Kopírovať",
"command.dataForm": "Formulár dát",
"command.dataForm.addToFilter": "Pridať do filtru",
"command.dataForm.copyToClipboard": "Kopírovať do schránky",
"command.dataForm.filterSelected": "Filtrovať túto hodnotu",
"command.dataForm.goToFirst": "Prvý",
"command.dataForm.goToLast": "Posledný",
"command.dataForm.goToNext": "Ďalší",
"command.dataForm.goToPrevious": "Predchádzajúci",
"command.dataForm.redo": "Znova",
"command.dataForm.removeField": "Odstrániť pole",
"command.dataForm.revertRowChanges": "Vrátiť zmeny riadka",
"command.dataForm.setNull": "Nastaviť NULL",
"command.dataForm.undo": "Vrátiť",
"command.dataGrid": "Dátová mriežka",
"command.dataGrid.export": "Export",
"command.dataGrid.openQuery": "Otvoriť dotaz",
"command.dataGrid.reconnect": "Znovu pripojiť",
"command.database": "Databáza",
"command.database.changeRecent": "Zmeniť nedávne",
"command.database.changeStatus": "Zmeniť stav",
"command.database.chat": "Chat s databázou",
"command.database.compare": "Porovnať databázy",
"command.database.databaseSearch": "Hľadanie v databáze",
"command.database.export": "Exportovať databázu",
"command.database.search": "Hľadať",
"command.datagrid": "Dátová mriežka",
"command.datagrid.addJsonDocument": "Pridať JSON dokument",
"command.datagrid.addNewColumn": "Pridať nový stĺpec",
@@ -91,9 +149,69 @@
"command.datagrid.viewJsonValue": "Zobraziť bunku ako JSON dokument",
"command.datagrid.witchToTable": "Prepnúť na tabuľku",
"command.datgrid.hideColumn": "Skryť stĺpec",
"command.designer": "Návrhár",
"command.designer.arrange": "Usporiadať",
"command.designer.exportDiagram": "Exportovať diagram",
"command.designer.remove": "Odstrániť",
"command.designer.removeSelectedTables": "Odstrániť vybrané tabuľky",
"command.diagram": "Diagram",
"command.edit": "Upraviť",
"command.edit.copy": "Kopírovať",
"command.edit.cut": "Vystrihnúť",
"command.edit.paste": "Prilepiť",
"command.edit.redo": "Opakovať",
"command.edit.selectAll": "Vybrať všetky",
"command.edit.undo": "Krok späť",
"command.execute": "Vykonať",
"command.favoriteJsonEditor": "Obľúbený JSON editor",
"command.favoriteJsonEditor.preview": "Náhľad",
"command.favoriteJsonEditor.save": "Uložiť",
"command.file": "Súbor",
"command.file.exit": "Ukončiť",
"command.file.import": "Importovať dáta",
"command.file.open": "Otvoriť",
"command.file.openArchive": "Otvoriť DB Model/Archív",
"command.file.quit": "Ukončiť",
"command.file.resetLayout": "Resetovať rozloženie a nastavenia",
"command.file.resetLayoutConfirm": "Naozaj chcete resetovať údaje rozloženia? Všetky otvorené karty, nastavenia a údaje rozloženia budú stratené. Pripojenia a uložené súbory zostanú zachované. Po tejto akcii reštartujte DbGate, aby sa zmeny prejavili.",
"command.find": "Hľadať",
"command.folder": "Priečinok",
"command.folder.openData": "Otvoriť priečinok dát",
"command.folder.openLogs": "Otvoriť logy",
"command.internal": "Interné",
"command.internal.loadCampaigns": "Načítať zoznam kampaní",
"command.internal.showCampaigns": "Zobraziť kampane",
"command.jsonl.closePreview": "Zavrieť náhľad",
"command.jsonl.preview": "Náhľad",
"command.jsonl.previewNewTab": "Náhľad na novej karte",
"command.jsonl.save": "Uložiť",
"command.kill": "Ukončiť",
"command.markdown.preview": "Náhľad",
"command.new": "Nový",
"command.new.application": "Aplikácia",
"command.new.archiveFolder": "Archívny priečinok",
"command.new.collection": "Kolekcia",
"command.new.collectionToolbar": "Nová kolekcia/kontajner",
"command.new.connection": "Pridať pripojenie",
"command.new.connectionCloud": "Pripojenie na Cloude",
"command.new.connectionFolder": "Priečinok pripojení",
"command.new.connectionFolderToolbar": "Pridať priečinok pripojení",
"command.new.diagram": "ER Diagram",
"command.new.duckdbDatabase": "Nová DuckDB databáza",
"command.new.jsonl": "JSON Lines",
"command.new.markdown": "Markdown stránka",
"command.new.modelCompare": "Porovnať DB",
"command.new.modelTransform": "Transformácia modelu",
"command.new.perspective": "Perspektíva",
"command.new.query": "Dotaz",
"command.new.queryDesign": "Návrh dotazu",
"command.new.queryToolbar": "Nový dotaz",
"command.new.shell": "JavaScript Shell",
"command.new.sqliteDatabase": "Nová SQLite databáza",
"command.new.table": "Tabuľka",
"command.new.tableToolbar": "Nová tabuľka",
"command.openQuery": "Otvoriť dotaz",
"command.paste": "Prilepiť",
"command.query": "Dotaz",
"command.query.AiAssistant": "AI Asistent",
"command.query.autocommitOffSwitch": "Automatické potvrdenie: VYPNUTÉ",
@@ -109,12 +227,35 @@
"command.query.toggleAutoExecute": "Prepnúť automatické vykonávanie",
"command.query.toggleFixedConnection": "Prepnúť pevné pripojenie",
"command.query.toggleVisibleResultTabs": "Prepnúť viditeľné výsledkové karty",
"command.queryData": "Údaje z dotazu",
"command.queryData.stopLoading": "Zastaviť načítavanie",
"command.redo": "Opakovať",
"command.replace": "Nahradiť",
"command.save": "Uložiť",
"command.saveAs": "Uložiť ako",
"command.saveToDisk": "Uložiť na disk",
"command.serverSummary": "Prehľad servera",
"command.settings": "Nastavenia",
"command.settings.change": "Zmena",
"command.settings.exportConnections": "Exportovať pripojenia",
"command.settings.importConnections": "Importovať pripojenia",
"command.settings.shortcuts": "Klávesové skratky",
"command.shell.copyNodeScript": "Kopírovať nodejs skript",
"command.sidebar": "Bočný panel",
"command.sidebar.show": "Zobraziť",
"command.sidebar.toggleToolbar": "Prepnúť bočný panel",
"command.sql": "SQL",
"command.sql.generator": "SQL Generátor",
"command.sqlObject": "SQL Objekt",
"command.sqlObject.find": "Nájsť",
"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": "Karty",
"command.tabs.addToFavorites": "Pridať aktuálnu kartu do obľúbených",
"command.tabs.changelog": "Zoznam zmien",
"command.tabs.closeAll": "Zavrieť všetky karty",
"command.tabs.closeTab": "Zavrieť kartu",
"command.tabs.closeTabsButCurrentDb": "Zavrieť karty okrem aktuálnej DB",
@@ -122,6 +263,23 @@
"command.tabs.nextTab": "Ďalšia karta",
"command.tabs.previousTab": "Predchádzajúca karta",
"command.tabs.reopenClosedTab": "Znovu otvoriť zatvorenú kartu",
"command.theme": "Téma",
"command.theme.change": "Zmeniť",
"command.theme.changeToolbar": "Zmeniť tému",
"command.toggleComment": "Prepnúť komentár",
"command.toolbar": "Panel nástrojov",
"command.toolbar.hide": "Skryť",
"command.toolbar.show": "Zobraziť",
"command.undo": "Krok späť",
"command.view": "Zobraziť",
"command.view.reset": "Resetovať zobrazenie",
"command.view.restart": "Reštartovať DbGate (alebo znovu načítať na webe) pre aplikovanie zmien",
"commandModal.category": "Kategória",
"commandModal.configure": "Konfigurovať príkaz",
"commandModal.keyboard": "Klávesnica",
"commandModal.keyboardShortcut": "Klávesová skratka",
"commandModal.name": "Názov",
"commandModal.showKeyCombination": "Zobraziť požadovanú klávesovú kombináciu a stlačiť ENTER",
"common.addNew": "Pridať nový",
"common.advanced": "Pokročilé",
"common.archive": "Archivovať (JSONL)",
@@ -140,6 +298,7 @@
"common.delete": "Odstrániť",
"common.description": "Popis",
"common.erDiagram": "ER Diagram",
"common.error": "Chyba",
"common.execute": "Spustiť",
"common.export": "Exportovať",
"common.exportDatabase": "Exportovať databázu",
@@ -147,19 +306,23 @@
"common.general": "Všeobecné",
"common.import": "Importovať",
"common.kill": "Ukončiť",
"common.loadingData": "Načítavanie dát",
"common.name": "Názov",
"common.notSelectedOptional": "(nezvolené - voliteľné)",
"common.parameters": "Parametre",
"common.passwordEncrypted": "Heslo je zašifrované",
"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.reset": "Resetovať",
"common.save": "Uložiť",
"common.saveAndNext": "Uložiť a pokračovať",
"common.saveToArchive": "Uložiť do archívu",
"common.schema": "Schéma",
"common.search": "Hledat",
"common.searchBy": "Hľadať podľa:",
"common.sqlGenerator": "SQL Generátor",
"common.table": "Tabuľka",
@@ -240,13 +403,25 @@
"connection.user": "Používateľ",
"connection.viewDetails": "Zobraziť detaily",
"connection.windowsDomain": "Doména (zadajte pre použitie NTLM autentizácie)",
"dataForm.loadingRowCount": "Načítavanie počtu riadkov...",
"dataForm.noData": "Žiadne dáta",
"dataForm.outOfBounds": "Mimo rozsahu: {current} / {total}",
"dataForm.rowCount": "Riadok: {current} / {total}",
"dataGrid.chooseValue": "Vybrať hodnotu z {field}",
"dataGrid.codeHighlighting": "Zvýraznenie kódu:",
"dataGrid.codeHighlighting.none": "Žiadne (neformátovaný text)",
"dataGrid.columns": "Stĺpce",
"dataGrid.dependentTables": "Závislé tabuľky",
"dataGrid.editCellValue": "Upraviť hodnotu bunky",
"dataGrid.filters": "Filtre",
"dataGrid.formatJson": "Formátovať JSON",
"dataGrid.formatJson.invalid": "Neplatný JSON",
"dataGrid.macros": "Makrá",
"dataGrid.multiColumnFilter": "Filter viacerých stĺpcov",
"dataGrid.references": "Referencie",
"dataGrid.referencesTables": "Referencie na tabuľky",
"dataGrid.searchReferences": "Vyhľadať referencie",
"dataGrid.value": "Hodnota",
"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ť?",
@@ -270,7 +445,7 @@
"database.exportDbModel": "Exportovať DB model",
"database.generateScript": "Generovať skript",
"database.import": "Importovať",
"database.newCollection": "Nová {collectionLabel}",
"database.newCollection": "Nová kolekcia/kontajner",
"database.newQuery": "Nový dotaz",
"database.newTable": "Nová tabuľka",
"database.perspective": "Perspektíva #",
@@ -349,6 +524,48 @@
"datagrid.searchMacros": "Vyhľadať makrá",
"datagrid.setFormat": "Nastaviť formát: ",
"datagrid.structure": "Štruktúra",
"dbObject.collections": "Kolekcie/Kontajnery",
"dbObject.confirmCloneCollection": "Naozaj vytvoriť kópiu kolekcie/kontajnera s názvom {name}?",
"dbObject.confirmDropCollection": "Naozaj odstrániť kolekciu/kontajner {name}?",
"dbObject.copyTableName": "Kopírovať názov tabuľky",
"dbObject.createCollection": "Vytvoriť kolekciu/kontajner",
"dbObject.createCollectionBackup": "Vytvoriť zálohu kolekcie/kontajnera",
"dbObject.createTableBackup": "Vytvoriť zálohu tabuľky",
"dbObject.designPerspectiveQuery": "Návrh perspektívneho dotazu",
"dbObject.designQuery": "Návrh dotazu",
"dbObject.diagram": "Diagram #",
"dbObject.disable": "Zakázať",
"dbObject.dropCollection": "Odstrániť kolekciu/kontajner",
"dbObject.dropEvent": "Odstrániť udalosť",
"dbObject.dropProcedure": "Odstrániť procedúru",
"dbObject.dropTable": "Odstrániť tabuľku",
"dbObject.dropTrigger": "Odstrániť trigger",
"dbObject.dropView": "Odstrániť pohľad",
"dbObject.enable": "Povoliť",
"dbObject.functions": "Funkcie",
"dbObject.matviews": "Materializované pohľady",
"dbObject.newCollectionName": "Nový názov kolekcie/kontajnera",
"dbObject.openData": "Otvoriť dáta",
"dbObject.openJson": "Otvoriť JSON",
"dbObject.openRawData": "Otvoriť surové dáta",
"dbObject.openStructure": "Otvoriť štruktúru",
"dbObject.procedures": "Procedúry",
"dbObject.query": "Dotaz #",
"dbObject.queryDesigner": "Návrhár dotazu",
"dbObject.renameCollection": "Premenovať kolekciu/kontajner",
"dbObject.renameProcedure": "Premenovať procedúru",
"dbObject.renameTable": "Premenovať tabuľku",
"dbObject.renameView": "Premenovať pohľad",
"dbObject.schedulerEvents": "Plánované Udalosti",
"dbObject.showDiagram": "Zobraziť diagram",
"dbObject.showQuery": "Zobraziť dotaz",
"dbObject.showSql": "Zobraziť SQL",
"dbObject.sqlGenerator": "SQL generátor",
"dbObject.sqlTemplate": "SQL šablóna",
"dbObject.tables": "Tabuľky",
"dbObject.triggers": "Triggery",
"dbObject.truncateTable": "Orezanie tabuľky",
"dbObject.views": "Pohľady",
"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",
@@ -587,6 +804,7 @@
"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.newCollection": "Nová kolekcia/kontajner",
"sqlObject.schemaName": "Schéma",
"sqlObject.search.placeholder": "Hľadať v tabuľkách, pohľadoch, procedúrach",
"sqlObject.searchBy": "Hľadať podľa:",
@@ -654,6 +872,7 @@
"tableEditor.yes": "ÁNO",
"tableStructure.alter": "Úprava tabuľky",
"tableStructure.create": "Vytvoriť tabuľku",
"widget.collectionsContainers": "Kolekcie/kontajnery",
"widget.databaseContent": "Obsah databázy",
"widget.databases": "Databázy",
"widget.keys": "Kľúče",