1
1
mirror of https://github.com/Fabio286/antares.git synced 2025-06-05 21:59:22 +02:00

Compare commits

...

32 Commits

Author SHA1 Message Date
70aae2f194 chore(release): 0.7.31-beta.2 2025-01-30 16:16:14 +01:00
592d7b3517 feat: add developer tools and refresh buttons to console in development mode 2025-01-23 18:10:37 +01:00
2b743a2c79 Merge pull request #925 from dyaskur/develop
fix: fail to fill cell to datetime column(Postgre) fixes #924
2025-01-23 09:17:40 +01:00
️Yaskur Dyas⚔⚔️⚔
e493db5112 fix: reorder condition when format the update data 2025-01-23 08:16:52 +07:00
️Yaskur Dyas⚔⚔️⚔
d3d7ab38c0 fix: fail to fill cell to datetime column(Postgre) fixes #924 2025-01-23 06:32:22 +07:00
7a66c11868 chore(release): 0.7.31-beta.1 2025-01-22 10:56:01 +01:00
8544bb5378 refactor: reorder import statements in sqlUtils.ts for consistency 2025-01-22 10:53:58 +01:00
6709a75298 Merge pull request #921 from curiouslad/develop
Zoom in/out and fullscreen shortcuts
2025-01-20 09:07:08 +01:00
f25f6659d5 refactor: enhancement of new shortcuts implementation 2025-01-17 13:45:46 +01:00
8d0ff4953e Merge pull request #922 from jimcat8/cn_trans
Update localization
2025-01-16 09:45:33 +01:00
tianci
fbe28f0ff0 Update localization 2025-01-16 12:22:07 +08:00
0d8bcf5cd6 Merge pull request #920 from dyaskur/develop
fix: Cannot update column value with composite primary key and JSON column #916
2025-01-15 09:12:26 +01:00
mladen
47ac729d2f feat: zoom in/out and fullscreen shortcuts 2025-01-14 05:24:33 +01:00
️Yaskur Dyas⚔⚔️⚔
450c4c47f3 refactor: improve update cell condition and move whereJson formatter to sqlUtils 2025-01-14 05:44:12 +07:00
️Yaskur Dyas⚔⚔️⚔
110dcd335a fix: cannot update on JSON column in MariaDB and PostgreSQL 2025-01-14 05:15:46 +07:00
️Yaskur Dyas⚔⚔️⚔
0029967619 fix: cannot update column value with composite primary key and JSON column, fixes #916 2025-01-14 04:44:29 +07:00
34848e8dc3 Merge branch 'develop' of https://github.com/antares-sql/antares into develop 2025-01-13 10:23:23 +01:00
c32add76e8 Merge pull request #919 from dyaskur/develop
fix: fail to duplicate JSON row
2025-01-13 10:23:17 +01:00
️Yaskur Dyas⚔⚔️⚔
507dc7d55b fix: fail to duplicate JSON row 2025-01-12 10:30:31 +07:00
4a2b5926f4 fix: saved connections lost opening a second window after first app run 2025-01-10 18:20:36 +01:00
ed90b12a7b Merge pull request #918 from antares-sql/all-contributors/add-JoseGonzalez84
docs: add JoseGonzalez84 as a contributor for translation
2025-01-10 08:46:59 +01:00
allcontributors[bot]
00ce76a12e docs: update .all-contributorsrc [skip ci] 2025-01-10 07:46:47 +00:00
allcontributors[bot]
77b3a8a354 docs: update README.md [skip ci] 2025-01-10 07:46:46 +00:00
d3ae45ec94 perf(translation): update spanish translation 2025-01-10 08:45:58 +01:00
ad4478a822 Merge pull request #917 from antares-sql/all-contributors/add-salvymc
docs: add salvymc as a contributor for code
2025-01-09 16:50:59 +01:00
allcontributors[bot]
ba5dd9ff15 docs: update .all-contributorsrc [skip ci] 2025-01-09 15:50:45 +00:00
allcontributors[bot]
5aab824fe9 docs: update README.md [skip ci] 2025-01-09 15:50:44 +00:00
87ab58c50f Merge pull request #912 from salvymc/patch-1
Update WorkspaceExploreBarSchema.vue - Changed search to not be case sensitive
2025-01-09 16:48:37 +01:00
Salvatore Forino
39a30e48dd Update WorkspaceExploreBarSchema.vue
Changed search to not be case sensitive
2025-01-03 13:09:15 +01:00
46165d2f4f Merge pull request #910 from antares-sql/all-contributors/add-r4f4dev
docs: add r4f4dev as a contributor for translation
2024-12-28 23:46:00 +01:00
allcontributors[bot]
d0e56e4eb6 docs: update .all-contributorsrc [skip ci] 2024-12-28 22:45:32 +00:00
allcontributors[bot]
c803c072d1 docs: update README.md [skip ci] 2024-12-28 22:45:31 +00:00
19 changed files with 756 additions and 60 deletions

View File

@@ -338,6 +338,33 @@
"contributions": [
"platform"
]
},
{
"login": "r4f4dev",
"name": "r4f4dev",
"avatar_url": "https://avatars.githubusercontent.com/u/65920592?v=4",
"profile": "https://github.com/r4f4dev",
"contributions": [
"translation"
]
},
{
"login": "salvymc",
"name": "Salvatore Forino",
"avatar_url": "https://avatars.githubusercontent.com/u/10051897?v=4",
"profile": "https://github.com/salvymc",
"contributions": [
"code"
]
},
{
"login": "JoseGonzalez84",
"name": "José González",
"avatar_url": "https://avatars.githubusercontent.com/u/16820141?v=4",
"profile": "https://gadev.com.es/",
"contributions": [
"translation"
]
}
],
"contributorsPerLine": 7,

View File

@@ -2,6 +2,38 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
### [0.7.31-beta.2](https://github.com/antares-sql/antares/compare/v0.7.31-beta.1...v0.7.31-beta.2) (2025-01-30)
### Features
* add developer tools and refresh buttons to console in development mode ([592d7b3](https://github.com/antares-sql/antares/commit/592d7b35170f8437ebc15221c97985e889fccb40))
### Bug Fixes
* fail to fill cell to datetime column(Postgre) fixes [#924](https://github.com/antares-sql/antares/issues/924) ([d3d7ab3](https://github.com/antares-sql/antares/commit/d3d7ab38c029fc5ec23767c6c86c49a96e4e329c))
* reorder condition when format the update data ([e493db5](https://github.com/antares-sql/antares/commit/e493db5112478ff121e4e77f69c21747c5d2e032))
### [0.7.31-beta.1](https://github.com/antares-sql/antares/compare/v0.7.31-beta.0...v0.7.31-beta.1) (2025-01-22)
### Features
* zoom in/out and fullscreen shortcuts ([47ac729](https://github.com/antares-sql/antares/commit/47ac729d2f5cced2c503358f7d45a1795f232a20))
### Bug Fixes
* cannot update column value with composite primary key and JSON column, fixes [#916](https://github.com/antares-sql/antares/issues/916) ([0029967](https://github.com/antares-sql/antares/commit/002996761997444ff689bf2384dae64ccb9ef8f7))
* fail to duplicate JSON row ([507dc7d](https://github.com/antares-sql/antares/commit/507dc7d55b342240bf18fd58e6bc71709e8e33a0))
* saved connections lost opening a second window after first app run ([4a2b592](https://github.com/antares-sql/antares/commit/4a2b5926f4783d0b9b1e28485e9293a25ddd31f3))
### Improvements
* **translation:** update spanish translation ([d3ae45e](https://github.com/antares-sql/antares/commit/d3ae45ec94b3538e84ac3013b285034caea695cf))
### [0.7.31-beta.0](https://github.com/antares-sql/antares/compare/v0.7.30...v0.7.31-beta.0) (2025-01-06)

View File

@@ -159,6 +159,9 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
</tr>
<tr>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/carvalhods"><img src="https://avatars.githubusercontent.com/u/6569255?v=4?s=100" width="100px;" alt="David Carvalho"/><br /><sub><b>David Carvalho</b></sub></a><br /><a href="#platform-carvalhods" title="Packaging/porting to new platform">📦</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/r4f4dev"><img src="https://avatars.githubusercontent.com/u/65920592?v=4?s=100" width="100px;" alt="r4f4dev"/><br /><sub><b>r4f4dev</b></sub></a><br /><a href="#translation-r4f4dev" title="Translation">🌍</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://github.com/salvymc"><img src="https://avatars.githubusercontent.com/u/10051897?v=4?s=100" width="100px;" alt="Salvatore Forino"/><br /><sub><b>Salvatore Forino</b></sub></a><br /><a href="https://github.com/antares-sql/antares/commits?author=salvymc" title="Code">💻</a></td>
<td align="center" valign="top" width="14.28%"><a href="https://gadev.com.es/"><img src="https://avatars.githubusercontent.com/u/16820141?v=4?s=100" width="100px;" alt="José González"/><br /><sub><b>José González</b></sub></a><br /><a href="#translation-JoseGonzalez84" title="Translation">🌍</a></td>
</tr>
</tbody>
</table>

4
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "antares",
"version": "0.7.31-beta.0",
"version": "0.7.31-beta.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "antares",
"version": "0.7.31-beta.0",
"version": "0.7.31-beta.2",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {

View File

@@ -1,7 +1,7 @@
{
"name": "antares",
"productName": "Antares",
"version": "0.7.31-beta.0",
"version": "0.7.31-beta.2",
"description": "A modern, fast and productivity driven SQL client with a focus in UX.",
"license": "MIT",
"repository": "https://github.com/antares-sql/antares.git",

View File

@@ -2,6 +2,7 @@
/* eslint-disable no-useless-escape */
import { lineString, point, polygon } from '@turf/helpers';
import { BIT, BLOB, DATE, DATETIME, FLOAT, IS_MULTI_SPATIAL, NUMBER, SPATIAL, TEXT_SEARCH } from 'common/fieldTypes';
import * as antares from 'common/interfaces/antares';
import * as moment from 'moment';
import customizations from '../customizations';
@@ -209,3 +210,20 @@ export const jsonToSqlInsert = (args: {
return insertsString;
};
export const formatJsonForSqlWhere = (jsonValue: object, clientType: antares.ClientCode) => {
const formattedValue = JSON.stringify(jsonValue);
switch (clientType) {
case 'mysql':
return ` = CAST('${formattedValue}' AS JSON)`;
case 'maria':
return ` = '${formattedValue}'`;
case 'pg':
return `::text = '${formattedValue}'`;
case 'firebird':
case 'sqlite':
default:
return ` = '${formattedValue}'`;
}
};

View File

@@ -1,29 +1,34 @@
export const shortcutEvents: Record<string, { l18n: string; l18nParam?: string | number; context?: 'tab' }> = {
'run-or-reload': { l18n: 'application.runOrReload', context: 'tab' },
'open-new-tab': { l18n: 'application.openNewTab', context: 'tab' },
'close-tab': { l18n: 'application.closeTab', context: 'tab' },
'format-query': { l18n: 'database.formatQuery', context: 'tab' },
'kill-query': { l18n: 'database.killQuery', context: 'tab' },
'query-history': { l18n: 'database.queryHistory', context: 'tab' },
'clear-query': { l18n: 'database.clearQuery', context: 'tab' },
// 'save-file': { l18n: 'application.saveFile', context: 'tab' },
'open-file': { l18n: 'application.openFile', context: 'tab' },
'save-file-as': { l18n: 'application.saveFileAs', context: 'tab' },
'next-tab': { l18n: 'application.nextTab' },
'prev-tab': { l18n: 'application.previousTab' },
'open-all-connections': { l18n: 'application.openAllConnections' },
'open-filter': { l18n: 'application.openFilter' },
'next-page': { l18n: 'application.nextResultsPage' },
'prev-page': { l18n: 'application.previousResultsPage' },
'toggle-console': { l18n: 'application.toggleConsole' },
'save-content': { l18n: 'application.saveContent' },
'create-connection': { l18n: 'connection.createNewConnection' },
'open-settings': { l18n: 'application.openSettings' },
'open-scratchpad': { l18n: 'application.openNotes' }
export const shortcutEvents: Record<string, { i18n: string; i18nParam?: string | number; context?: 'tab' | 'main' }> = {
'run-or-reload': { i18n: 'application.runOrReload', context: 'tab' },
'open-new-tab': { i18n: 'application.openNewTab', context: 'tab' },
'close-tab': { i18n: 'application.closeTab', context: 'tab' },
'format-query': { i18n: 'database.formatQuery', context: 'tab' },
'kill-query': { i18n: 'database.killQuery', context: 'tab' },
'query-history': { i18n: 'database.queryHistory', context: 'tab' },
'clear-query': { i18n: 'database.clearQuery', context: 'tab' },
// 'save-file': { i18n: 'application.saveFile', context: 'tab' },
'open-file': { i18n: 'application.openFile', context: 'tab' },
'save-file-as': { i18n: 'application.saveFileAs', context: 'tab' },
'next-tab': { i18n: 'application.nextTab' },
'prev-tab': { i18n: 'application.previousTab' },
'open-all-connections': { i18n: 'application.openAllConnections' },
'open-filter': { i18n: 'application.openFilter' },
'next-page': { i18n: 'application.nextResultsPage' },
'prev-page': { i18n: 'application.previousResultsPage' },
'toggle-console': { i18n: 'application.toggleConsole' },
'save-content': { i18n: 'application.saveContent' },
'create-connection': { i18n: 'connection.createNewConnection' },
'open-settings': { i18n: 'application.openSettings' },
'open-scratchpad': { i18n: 'application.openNotes' },
setFullScreen: { i18n: 'application.fullScreen', context: 'main' },
setZoomIn: { i18n: 'application.zoomIn', context: 'main' },
setZoomOut: { i18n: 'application.zoomOut', context: 'main' },
setZoomReset: { i18n: 'application.zoomReset', context: 'main' }
};
interface ShortcutRecord {
event: string;
isFunction?: boolean;
keys: Electron.Accelerator[] | string[];
/** Needed for default shortcuts */
os: NodeJS.Platform[];
@@ -38,6 +43,30 @@ const shortcuts: ShortcutRecord[] = [
keys: ['F5'],
os: ['darwin', 'linux', 'win32']
},
{
event: 'setFullScreen',
isFunction: true,
keys: ['F11'],
os: ['darwin', 'linux', 'win32']
},
{
event: 'setZoomIn',
isFunction: true,
keys: ['CommandOrControl+='],
os: ['darwin', 'linux', 'win32']
},
{
event: 'setZoomOut',
isFunction: true,
keys: ['CommandOrControl+-'],
os: ['darwin', 'linux', 'win32']
},
{
event: 'setZoomReset',
isFunction: true,
keys: ['CommandOrControl+0'],
os: ['darwin', 'linux', 'win32']
},
{
event: 'save-content',
keys: ['CommandOrControl+S'],
@@ -142,8 +171,8 @@ const shortcuts: ShortcutRecord[] = [
for (let i = 1; i <= 9; i++) {
shortcutEvents[`select-tab-${i}`] = {
l18n: 'application.selectTabNumber',
l18nParam: i
i18n: 'application.selectTabNumber',
i18nParam: i
};
shortcuts.push({

View File

@@ -3,7 +3,7 @@ import { ARRAY, BIT, BLOB, BOOLEAN, DATE, DATETIME, FLOAT, LONG_TEXT, NUMBER, TE
import * as antares from 'common/interfaces/antares';
import { InsertRowsParams } from 'common/interfaces/tableApis';
import { fakerCustom } from 'common/libs/fakerCustom';
import { sqlEscaper } from 'common/libs/sqlUtils';
import { formatJsonForSqlWhere, sqlEscaper } from 'common/libs/sqlUtils';
import { ipcMain } from 'electron';
import * as fs from 'fs';
import * as moment from 'moment';
@@ -233,9 +233,10 @@ export default (connections: Record<string, antares.Client>) => {
for (const key in orgRow) {
if (typeof orgRow[key] === 'string')
orgRow[key] = `'${orgRow[key]}'`;
if (orgRow[key] === null)
orgRow[key] = ` = '${orgRow[key]}'`;
else if (typeof orgRow[key] === 'object' && orgRow[key] !== null)
orgRow[key] = formatJsonForSqlWhere(orgRow[key], connections[params.uid]._client);
else if (orgRow[key] === null)
orgRow[key] = `IS ${orgRow[key]}`;
else
orgRow[key] = `= ${orgRow[key]}`;

View File

@@ -81,7 +81,15 @@ export class ShortcutRegister {
accelerator: key,
visible: isMenuVisible,
click: () => {
this._mainWindow.webContents.send(shortcut.event);
if (shortcut.isFunction) {
if (shortcut.event in this) {
type exporterMethods = 'setFullScreen' | 'setZoomIn' | 'setZoomOut' | 'setZoomReset';
this[shortcut.event as exporterMethods]();
}
}
else
this._mainWindow.webContents.send(shortcut.event);
if (isDevelopment) console.log('LOCAL EVENT:', shortcut);
}
});
@@ -121,6 +129,24 @@ export class ShortcutRegister {
}
}
setFullScreen () {
this._mainWindow.setFullScreen(!this._mainWindow.isFullScreen());
}
setZoomIn () {
const currentZoom = this._mainWindow.webContents.getZoomLevel();
this._mainWindow.webContents.setZoomLevel(currentZoom + 1);
}
setZoomOut () {
const currentZoom = this._mainWindow.webContents.getZoomLevel();
this._mainWindow.webContents.setZoomLevel(currentZoom - 1);
}
setZoomReset () {
this._mainWindow.webContents.setZoomLevel(0);
}
reload () {
this.unregister();
this.init();

View File

@@ -21,7 +21,23 @@
<a class="tab-link" @click="selectedTab = 'debug'">{{ t('application.debugConsole') }}</a>
</li>
</ul>
<button class="btn btn-clear mr-1" @click="resizeConsole(0)" />
<div class="d-flex">
<div
v-if="isDevelopment"
class="c-hand mr-2"
@click="openDevTools()"
>
<BaseIcon icon-name="mdiBugPlayOutline" :size="22" />
</div>
<div
v-if="isDevelopment"
class="c-hand mr-2"
@click="reload()"
>
<BaseIcon icon-name="mdiRefresh" :size="22" />
</div>
<button class="btn btn-clear mr-1" @click="resizeConsole(0)" />
</div>
</div>
<div
v-show="selectedTab === 'query'"
@@ -71,6 +87,7 @@
</BaseContextMenu>
</template>
<script setup lang="ts">
import { getCurrentWindow } from '@electron/remote';
import * as moment from 'moment';
import { storeToRefs } from 'pinia';
import { highlight } from 'sql-highlight';
@@ -112,6 +129,8 @@ const isHover = ref(false);
const isContext = ref(false);
const contextContent: Ref<string> = ref(null);
const contextEvent: Ref<MouseEvent> = ref(null);
const w = ref(getCurrentWindow());
const isDevelopment = ref(process.env.NODE_ENV === 'development');
const resize = (e: MouseEvent) => {
const el = queryConsole.value;
@@ -142,6 +161,14 @@ const copyLog = () => {
isContext.value = false;
};
const openDevTools = () => {
w.value.webContents.openDevTools();
};
const reload = () => {
w.value.reload();
};
watch(workspaceQueryLogs, async () => {
if (!isHover.value) {
await nextTick();

View File

@@ -339,6 +339,8 @@ onMounted(() => {
for (const field of props.fields) {
if (typeof props.rowToDuplicate[field.name] !== 'object')
rowObj[field.name] = { value: props.rowToDuplicate[field.name] };
else if (field.type === 'JSON')
rowObj[field.name] = { value: JSON.stringify(props.rowToDuplicate[field.name]) };
if (field.autoIncrement || !!field.onUpdate)// Disable by default auto increment or "on update" fields
fieldsToExclude.value = [...fieldsToExclude.value, field.name];

View File

@@ -42,7 +42,7 @@
tabindex="0"
>
<div class="td py-1">
{{ t(shortcutEvents[shortcut.event].l18n, {param: shortcutEvents[shortcut.event].l18nParam}) }}
{{ t(shortcutEvents[shortcut.event].i18n, {param: shortcutEvents[shortcut.event].i18nParam}) }}
</div>
<div
class="td py-1"
@@ -167,7 +167,7 @@
</template>
<template #body>
<div class="mb-2">
{{ t('general.deleteConfirm') }} <b>{{ t(shortcutEvents[shortcutToDelete.event].l18n, {param: shortcutEvents[shortcutToDelete.event].l18nParam}) }} (<span v-html="parseKeys(shortcutToDelete.keys)" />)</b>?
{{ t('general.deleteConfirm') }} <b>{{ t(shortcutEvents[shortcutToDelete.event].i18n, {param: shortcutEvents[shortcutToDelete.event].i18nParam}) }} (<span v-html="parseKeys(shortcutToDelete.keys)" />)</b>?
</div>
</template>
</ConfirmModal>
@@ -233,7 +233,7 @@ const { shortcuts } = storeToRefs(settingsStore);
const eventOptions = computed(() => {
return Object.keys(shortcutEvents)
.map(key => {
return { value: key, label: t(shortcutEvents[key].l18n, { param: shortcutEvents[key].l18nParam }) };
return { value: key, label: t(shortcutEvents[key].i18n, { param: shortcutEvents[key].i18nParam }) };
})
.sort((a, b) => {
if (a.label < b.label) return -1;

View File

@@ -477,8 +477,12 @@ const searchTerm = computed(() => {
});
const filteredTables = computed(() => {
if (props.searchMethod === 'elements')
return props.database.tables.filter(table => table.name.search(searchTerm.value) >= 0 && table.type === 'table');
if (props.searchMethod === 'elements') {
const searchTermLower = searchTerm.value.toLowerCase();
return props.database.tables.filter(table =>
table.name.toLowerCase().includes(searchTermLower) && table.type === 'table'
);
}
else
return props.database.tables;
});

View File

@@ -7,7 +7,7 @@
:key="i"
class="mb-4"
>
{{ t(shortcutEvents[shortcut.event].l18n, {param: shortcutEvents[shortcut.event].l18nParam}) }}
{{ t(shortcutEvents[shortcut.event].i18n, {param: shortcutEvents[shortcut.event].i18nParam}) }}
</div>
</div>
<div class="column col-16">

View File

@@ -696,15 +696,15 @@ const fillCell = (event: { name: string; group: string; type: string }) => {
}
fakeValue = (fakerCustom as any)[event.group][event.name]();
if (['string', 'number'].includes(typeof fakeValue)) {
const isDateType = [...DATE, ...DATETIME].includes(selectedCell.value.type);
if (isDateType)
fakeValue = moment(fakeValue).format(`YYYY-MM-DD HH:mm:ss${datePrecision}`);
else if (['string', 'number'].includes(typeof fakeValue)) {
if (typeof fakeValue === 'number')
fakeValue = String(fakeValue);
if (selectedCell.value.length)
fakeValue = fakeValue.substring(0, selectedCell.value.length < 1024 ? Number(selectedCell.value.length) : 1024);
}
else if ([...DATE, ...DATETIME].includes(selectedCell.value.type))
fakeValue = moment(fakeValue).format(`YYYY-MM-DD HH:mm:ss${datePrecision}`);
else if (TIME.includes(selectedCell.value.type))
fakeValue = moment(fakeValue).format(`HH:mm:ss${datePrecision}`);

View File

@@ -416,7 +416,11 @@ export const enUS = {
openNotes: 'Open notes',
debugConsole: 'Debug console', // <- console tab name
executedQueries: 'Executed queries', // <- console tab name
sizeLimitError: 'Maximum size of {size} exceeded'
sizeLimitError: 'Maximum size of {size} exceeded',
fullScreen: 'Full screen',
zoomIn: 'Zoom in',
zoomOut: 'Zoom out',
zoomReset: 'Reset zoom'
},
faker: { // Faker.js methods, used in random generated content
address: 'Address',

View File

@@ -1,5 +1,14 @@
/**
* [TRANSLATION UPDATE HELPER]
* - Open a terminal in antares folder and run `npm run translation:check short-code` replacing short-code with the one you are updating.
* - The command will output which terms are missing or not translated from english.
* - Open antares folder with your editor of choice.
* - Go to antares/src/renderer/i18n/ and open the locale file you want to translate.
* - Add and translate missing terms and consider whether to translate untranslated terms.
*/
export const esES = {
general: {
general: { // General purpose terms
edit: 'Editar',
save: 'Guardar',
close: 'Cerrar',
@@ -8,6 +17,7 @@ export const esES = {
cancel: 'Cancelar',
send: 'Enviar',
refresh: 'Refrescar',
autoRefresh: 'Auto refresco',
version: 'Versión',
donate: 'Donar',
run: 'Ejecutar',
@@ -18,12 +28,62 @@ export const esES = {
add: 'Añadir',
data: 'Datos',
properties: 'Propiedades',
name: 'Nombre',
clear: 'Limpiar',
options: 'Opciones',
insert: 'Insertar',
discard: 'Descartar',
stay: 'Mantener',
author: 'Autor',
upload: 'Subir',
browse: 'Navegar',
content: 'Contenido',
cut: 'Cortar',
copy: 'Copiar',
paste: 'Pegar',
duplicate: 'Duplicar',
tools: 'Herramientas',
seconds: 'Segundos',
deleteConfirm: 'Confirmas la cancelación de',
uploadFile: 'Cargar fichero'
all: 'Todos',
new: 'Nuevo',
select: 'Seleccionar',
change: 'Cambiar',
include: 'Agregar',
includes: 'Agregados',
completed: 'Completado',
aborted: 'Cancelado',
disabled: 'Deshabilitado',
enable: 'Habilitar',
disable: 'Desabilitar',
contributors: 'Colaboradores',
pin: 'Fijar',
unpin: 'Desfijar',
folder: 'Carpeta | Carpetas',
none: 'Ninguno',
singleQuote: 'Comillas simples',
doubleQuote: 'Comillas dobles',
deleteConfirm: 'Confirmar la cancelación de',
uploadFile: 'Cargar fichero',
format: 'Formato', // Format code
history: 'Histórico',
filter: 'Filtro',
manualValue: 'Valor manual',
selectAll: 'Seleccionar todo',
pageNumber: 'Número de página',
directoryPath: 'Ruta de directorio',
actionSuccessful: '{action} exitoso',
outputFormat: 'Formato de salida',
singleFile: 'Fichero {ext} único',
zipCompressedFile: 'Fichero ZIP {ext} comprimido',
copyName: 'Copiar nombre',
search: 'Búsqueda',
title: 'Título',
archive: 'Archivo', // verb
undo: 'Deshacer',
moveTo: 'Mover a'
},
connection: {
connection: { // Database connection
connection: 'Conexión',
connectionName: 'Nombre de la conexión',
client: 'Cliente',
hostName: 'Servidor',
@@ -35,6 +95,17 @@ export const esES = {
connected: 'Conectado',
disconnect: 'Desconectar',
disconnected: 'Desconectado',
ssl: 'SSL',
enableSsl: 'Habilitar SSL',
privateKey: 'Clave privada',
certificate: 'Certificado',
caCertificate: 'Certificado CA',
ciphers: 'Cifrado',
untrustedConnection: 'Conexión no confiable',
passphrase: 'Frase de paso',
sshTunnel: 'Túnel SSH',
enableSsh: 'Habilitar SSH',
connectionString: 'Cadena de conexión',
addConnection: 'Añadir conexión',
createConnection: 'Crear conexión',
createNewConnection: 'Crear nueva conexión',
@@ -42,26 +113,216 @@ export const esES = {
testConnection: 'Comprobar conexión',
editConnection: 'Editar conexión',
deleteConnection: 'Eliminar conexión',
connectionSuccessfullyMade: 'Conexión realizada correctamente!'
connectionSuccessfullyMade: 'Conexión realizada correctamente!',
readOnlyMode: 'Solo lectura',
allConnections: 'Todas las conexiones',
searchForConnections: 'Buscar por conexiones',
keepAliveInterval: 'Tiempo de mantenimiento de conexión',
singleConnection: 'Conexión única'
},
database: {
database: { // Database related terms
schema: 'Esquema',
type: 'Tipo',
unableEditFieldWithoutPrimary: 'No se puede editar una campo sin Llave Primaria en el registro',
editCell: 'Editar celda',
insert: 'Insertar',
indexes: 'Índices',
foreignKeys: 'Claves Foráneas',
tablaChecks: 'Validación de tabla',
length: 'Longitud',
unsigned: 'Sin signo',
default: 'Por defecto',
comment: 'Comentario',
key: 'Clave | Claves',
order: 'Orden',
expression: 'Expresión',
autoIncrement: 'Autoincremental',
engine: 'Motor',
field: 'Campo | Campos',
approximately: 'Aproximadamente',
total: 'Total',
table: 'Tabla | Tablas',
view: 'Vista | Vistas',
materializedview: 'Vista Materializada | Vistas Materializadas',
definer: 'Definidor',
algorithm: 'Algoritmo',
trigger: 'Disparador | Disparadores',
storedRoutine: 'Procedimiento almacenado | Procedimientos almacenados',
scheduler: 'Planificador | Planificadores',
event: 'Evento',
parameters: 'Parámetros',
function: 'Función | Funciones',
deterministic: 'Determinístico',
context: 'Contexto',
export: 'Exportar',
import: 'Importar',
returns: 'Retorno',
timing: 'Timing',
state: 'Estado',
execution: 'Ejecución',
starts: 'Inicio',
ends: 'Final',
variables: 'Variables',
processes: 'Procesos',
database: 'Base de Datos',
array: 'Tupla',
structure: 'Estructura',
row: 'Fila | Filas',
cell: 'Celda | Celdas',
triggerFunction: 'Función disparadora | Funciones disparadoras',
routine: 'Rutina | Rutinas',
drop: 'Abandonar',
commit: 'Commit',
rollback: 'Marcha atrás',
ddl: 'DDL',
collation: 'Colación',
resultsTable: 'Tabla de resultados',
unableEditFieldWithoutPrimary: 'No es posible modificar un campo sin una clave primaria en el set de resultados',
editCell: 'Modificar celda',
deleteRows: 'Eliminar fila | Eliminar {count} filas',
confirmToDeleteRows: '¿Quiere realmente eliminar una fila? | ¿Quiere realmente eliminar {count} filas?',
addNewRow: 'Añadir nueva fila',
numberOfInserts: 'Numero de inserciones',
affectedRows: 'Filas afectadas'
numberOfInserts: 'Número de inserciones',
affectedRows: 'Líneas afectadas',
createNewDatabase: 'Crear nueva Base de Datos',
databaseName: 'Nombre de Base de Datos',
serverDefault: 'Servidor por defecto',
deleteDatabase: 'Eliminar Base de Datos',
editDatabase: 'Modificar Base de Datos',
clearChanges: 'Deshacer cambios',
addNewField: 'Añadir nuevo campo',
manageIndexes: 'Administrar índices',
manageForeignKeys: 'Administrar claves foráneas',
manageTableChecks: 'Administrar validaciones de tabla',
allowNull: 'Permitir NULL',
zeroFill: 'Rellenar con ceros',
customValue: 'Valor predeterminado',
onUpdate: 'On UPDATE',
deleteField: 'Eliminar campo',
createNewIndex: 'Crear nuevo índice',
createNewCheck: 'Crear nueva verificación',
checkClause: 'Comprobar cláusula',
addToIndex: 'Añadir al índice',
createNewTable: 'Crear nueva tabla',
emptyTable: 'Tabla vacía',
duplicateTable: 'Duplicar tabla',
deleteTable: 'Eliminar tabla',
exportTable: 'Exportar tabla',
emptyConfirm: 'Confirmar vaciado',
thereAreNoIndexes: 'No hay índices',
thereAreNoForeign: 'No hay claves foráneas',
thereAreNoTableChecks: 'No hay validaciones de tabla',
createNewForeign: 'Crear nueva clave foránea',
referenceTable: 'Ref. tabla',
referenceField: 'Ref. campo',
foreignFields: 'Campos foráneos',
invalidDefault: 'Valor por defecto no válido',
onDelete: 'On DELETE',
selectStatement: 'Declaración SELECT',
triggerStatement: 'Declaración TRIGGER',
sqlSecurity: 'Seguridad SQL',
updateOption: 'Opción UPDATE',
deleteView: 'Eliminar vista',
createNewView: 'Crear nueva vista',
createNewMaterializedView: 'Crear nueva vista materializada',
deleteTrigger: 'Eliminar disparador',
createNewTrigger: 'Crear nuevo disparador',
currentUser: 'Usuario actual',
routineBody: 'Cuerpo de rutina',
dataAccess: 'Acceso a datos',
thereAreNoParameters: 'No hay parámetros',
createNewParameter: 'Crear nuevo parámetro',
createNewRoutine: 'Crear nuevo procedimiento almacenado',
deleteRoutine: 'Eliminar procedimiento almacenado',
functionBody: 'Cuerpo de función',
createNewFunction: 'Crear nueva función',
deleteFunction: 'Eliminar función',
schedulerBody: 'Cuerpo de planificador',
createNewScheduler: 'Crear nuevo planificador',
deleteScheduler: 'Eliminar planificador',
preserveOnCompletion: 'Mantener al finalizar',
tableFiller: 'Rellenador de tabla',
fakeDataLanguage: 'Lenguaje de datos dummy',
queryDuration: 'Duración de la consulta',
setNull: 'Establecer a NULL',
processesList: 'Lista de procesos',
processInfo: 'Información de proceso',
manageUsers: 'Administrar usuarios',
createNewSchema: 'Crear nuevo esquema',
schemaName: 'Nombre de esquema',
editSchema: 'Modificar esquema',
deleteSchema: 'Eliminar esquema',
noSchema: 'No hay esquemas',
runQuery: 'Ejecutar consulta',
thereAreNoTableFields: 'No hay campos en la tabla',
newTable: 'Nueva tabla',
newView: 'Nueva vista',
newMaterializedView: 'Nueva vista materializada',
newTrigger: 'Nuevo disparador',
newRoutine: 'Nueva rutina',
newFunction: 'Nueva función',
newScheduler: 'Nuevo planificador',
newTriggerFunction: 'Nueva función de disparador',
thereAreNoQueriesYet: 'No quedan mas consultas',
searchForQueries: 'Buscar consultas',
killProcess: 'Matar proceso',
exportSchema: 'Exportar esquema',
importSchema: 'Importar esquema',
newInsertStmtEvery: 'Nueva declaración INSERT',
processingTableExport: 'Procesando {table}',
fetchingTableExport: 'Obteniendo datos de {table}',
writingTableExport: 'Escribiendo datos de {table}',
checkAllTables: 'Verificar todas las tablas',
uncheckAllTables: 'Desmarcar todas las tablas',
killQuery: 'Matar consulta',
insertRow: 'Añadir fila | Añadir filas',
commitMode: 'Modo de Commit',
autoCommit: 'Automático',
manualCommit: 'Manual',
importQueryErrors: 'Atención: {n} de error encontrado | Atención: {n} errores encontrados',
executedQueries: '{n} consulta ejecutada | {n} consultas ejecutadas',
disableFKChecks: 'Deshabilitar comprobación de claves foráneas',
formatQuery: 'Formato de consulta',
queryHistory: 'Histórico de consultas',
clearQuery: 'Limpiar consulta',
fillCell: 'Rellenar celda',
executeSelectedQuery: 'Ejecutar consulta seleccionada',
noResultsPresent: 'No se obtuvieron resultados',
sqlExportOptions: 'Opciones de exportación de SQL',
targetTable: 'Tabla objetivo',
switchDatabase: 'Cambiar de Base de datos',
searchForElements: 'Buscar por elementos',
searchForSchemas: 'Buscar por esquemas',
savedQueries: 'Consultas almacenadas'
},
application: {
settings: 'Configuración',
console: 'Consola',
general: 'General',
themes: 'Temas',
update: 'Actualizar',
about: 'Sobre',
language: 'Idioma',
shortcuts: 'Atajos',
key: 'Tecla | Teclas', // Keyboard key
event: 'Evento',
light: 'Claro',
dark: 'Oscuro',
autoCompletion: 'Autocompletado',
application: 'Aplicación',
editor: 'Editor',
changelog: 'Histórico de cambios',
small: 'Pequeño',
medium: 'Mediano',
large: 'Grande',
appearance: 'Apariencia',
color: 'Color',
label: 'Etiqueta',
icon: 'Icono',
customIcon: 'Icono personalizado',
fileName: 'Nombre de fichero',
choseFile: 'Elegir fichero',
data: 'Datos',
password: 'Contraseña',
required: 'Requerido',
madeWithJS: 'Hecho con 💛 y JavaScript!',
checkForUpdates: 'Comprobar actualizaciones',
noUpdatesAvailable: 'No hay actualizaciones',
@@ -71,7 +332,255 @@ export const esES = {
downloadingUpdate: 'Descargando actualización',
updateDownloaded: 'Descargada actualización',
restartToInstall: 'Reiniciar Antares para instalar',
includeBetaUpdates: 'Incluir actualizaciones en fase beta',
notificationsTimeout: 'Tiempo de espera',
openNewTab: 'Abrir nueva pestaña'
openNewTab: 'Abrir nueva pestaña',
unsavedChanges: 'Cambios sin guardar',
discardUnsavedChanges: 'Tiene algunos cambios sin guardar. Al cerrar esta pestaña, serán descartados.',
applicationTheme: 'Tema de la Aplicación',
editorTheme: 'Editor de Tema',
wrapLongLines: 'Mantener lineas largas',
markdownSupported: 'Markdown soportado',
plantATree: 'Planta un arbol',
dataTabPageSize: 'Resultados por página',
noOpenTabs: 'No hay pestañas abiertas. Navega por la barra de la izquierda o:',
restorePreviousSession: 'Restablecer la sesión anterior',
closeTab: 'Cerrar pestaña',
goToDownloadPage: 'Ir a la página de descargas',
disableBlur: 'Deshabilitar opacidad',
missingOrIncompleteTranslation: '¿No hay traducción o hay algo incorrecto?',
findOutHowToContribute: 'Mira como puedes contribuir',
reportABug: 'Informar de un problema',
nextTab: 'Siguiente pestaña',
previousTab: 'Anterior pestaña',
selectTabNumber: 'Selecciona numero de pestaña {param}',
toggleConsole: 'Alternar vista de consola',
addShortcut: 'Añadir atajo',
editShortcut: 'Modificar atajo',
deleteShortcut: 'Eliminar atajo',
restoreDefaults: 'Restablecer valores por defecto',
restoreDefaultsQuestion: '¿Está seguro que quiere establecer los valores por defecto?',
registerAShortcut: 'Registrar un atajo',
invalidShortcutMessage: 'Combinación no válida, por favor intente otra',
shortcutAlreadyExists: 'El atajo ya existe',
saveContent: 'Guardar contenido',
openAllConnections: 'Abrir todas las conexiones',
openSettings: 'Abrir configuración',
runOrReload: 'Ejecutar o recargar',
openFilter: 'Abrir filtro',
nextResultsPage: 'Siguiente pagina de resultados',
previousResultsPage: 'Anterior página de resultados',
editFolder: 'Modificar carpeta',
folderName: 'Nombre de carpeta',
deleteFolder: 'Eliminar carpeta',
newFolder: 'Crear nueva carpeta',
outOfFolder: 'Fuera de la carpeta',
editConnectionAppearance: 'Modificar apariencia de conexión',
defaultCopyType: 'Default copy type',
showTableSize: 'Mostrar tamaño de tabla en la barra lateral',
showTableSizeDescription: 'Solo para MySQL/MariaDB. Habilitar esta opción puede afectar al rendimiento en esquemas con muchas tablas.',
switchSearchMethod: 'Switch search method',
phpArray: 'Array de PHP',
closeAllTabs: 'Cerrar todas las pestañas',
closeOtherTabs: 'Cerrar las otras pestañas',
closeTabsToLeft: 'Cerrar las pestañas a la izquierda',
closeTabsToRight: 'Cerrar las pestañas a la derecha',
csvFieldDelimiter: 'Delimitador de campos',
csvLinesTerminator: 'Terminador de líneas',
csvStringDelimiter: 'Delimitador de cadenas',
csvIncludeHeader: 'Incluir cabecera',
csvExportOptions: 'Opciones de exportación de CSV',
exportData: 'Exportar datos',
exportDataExplanation: 'Exportar conexiones guardadas en Antares. Se le preguntará por una contraseña para encriptar el fichero exportado.',
importData: 'Importar datos',
importDataExplanation: 'Importará un fichero con extensión .antares que contiene conexiones. Necesitará la contraseña con la que se encriptó el mismo.',
includeConnectionPasswords: 'Incluir contraseñas de conexión',
includeFolders: 'Incluir carpetas',
encryptionPassword: 'Encryption password',
encryptionPasswordError: 'The encryption password must be at least 8 characters long.',
ignoreDuplicates: 'Ignore duplicates',
wrongImportPassword: 'Wrong import password',
wrongFileFormat: 'Wrong file format',
dataImportSuccess: 'Data successfully imported',
note: 'Note | Notes',
thereAreNoNotesYet: 'There are no notes yet',
addNote: 'Add note',
editNote: 'Edit note',
saveAsNote: 'Save as note',
showArchivedNotes: 'Show archived notes',
hideArchivedNotes: 'Hide archived notes',
tag: 'Tag', // Note tag,
saveFile: 'Save file',
saveFileAs: 'Save file as',
openFile: 'Open file',
openNotes: 'Open notes',
debugConsole: 'Debug console', // <- console tab name
executedQueries: 'Executed queries', // <- console tab name
sizeLimitError: 'Maximum size of {size} exceeded'
},
faker: { // Faker.js methods, used in random generated content
address: 'Dirección',
commerce: 'Comercio',
company: 'Compañía',
database: 'Base de datos',
date: 'Fecha',
finance: 'Finanzas',
git: 'Git',
hacker: 'Hacker',
internet: 'Internet',
lorem: 'Lorem',
name: 'Nombre',
music: 'Música',
phone: 'Teléfono',
random: 'Aleatorio',
system: 'Sistema',
time: 'Hora',
vehicle: 'Vehículo',
zipCode: 'Código Postal',
zipCodeByState: 'Código Postal por Estado',
city: 'Ciudad',
cityPrefix: 'Prefijo de ciudad',
citySuffix: 'Sufijo de ciudad',
streetName: 'Nombre de calle',
streetAddress: 'Dirección',
streetSuffix: 'Sufijo de calle',
streetPrefix: 'Prefijo de calle',
secondaryAddress: 'Dirección secundaria',
county: 'Condado',
country: 'País',
countryCode: 'Código de país',
state: 'Estado',
stateAbbr: 'Abreviatura de Estado',
latitude: 'Latitud',
longitude: 'Longitud',
direction: 'Dirección',
cardinalDirection: 'Dirección cardinal',
ordinalDirection: 'Dirección ordinal',
nearbyGPSCoordinate: 'Coordenadas GPS',
timeZone: 'Zona horaria',
color: 'Color',
department: 'Departmento',
productName: 'Nombre de producto',
price: 'Precio',
productAdjective: 'Adjetivo de producto',
productMaterial: 'Material de producto',
product: 'Producto',
productDescription: 'Descripción de producto',
suffixes: 'Sufijos',
companyName: 'Nombre de compañía',
companySuffix: 'Sufijo de compañía',
catchPhrase: 'Catch phrase',
bs: 'BS',
catchPhraseAdjective: 'Catch phrase adjective',
catchPhraseDescriptor: 'Catch phrase descriptor',
catchPhraseNoun: 'Catch phrase noun',
bsAdjective: 'BS adjective',
bsBuzz: 'BS buzz',
bsNoun: 'BS noun',
column: 'Columna',
type: 'Tipo',
collation: 'Colación',
engine: 'Motor',
past: 'Pasado',
now: 'Ahora',
future: 'Futuro',
between: 'Entre',
recent: 'Reciente',
soon: 'Pronto',
month: 'Mes',
weekday: 'Día de la semana',
account: 'Cuenta',
accountName: 'Nombre de cuenta',
routingNumber: 'Número de enrutamiento',
mask: 'Máscara',
amount: 'Cantidad',
transactionType: 'Tipo de transacción',
currencyCode: 'Código de Moneda',
currencyName: 'Nombre de Moneda',
currencySymbol: 'Símbolo de Moneda',
bitcoinAddress: 'Dirección Bitcoin',
litecoinAddress: 'Dirección Litecoin',
creditCardNumber: 'Número de tarjeta',
creditCardCVV: 'CVV',
ethereumAddress: 'Dirección Ethereum',
iban: 'IBAN',
bic: 'BIC',
transactionDescription: 'Descripción de transacción',
branch: 'Rama',
commitEntry: 'Entrada de Commit',
commitMessage: 'Mensaje de Commit',
commitSha: 'SHA de Commit',
shortSha: 'SHA corto',
abbreviation: 'Abreviatura',
adjective: 'Adjetivo',
noun: 'Sustantivo',
verb: 'Verbo',
ingverb: 'Adverbio',
phrase: 'Frase',
avatar: 'Avatar',
email: 'Email',
exampleEmail: 'Email de ejemplo',
userName: 'Nombre de usuario',
protocol: 'Protocolo',
url: 'URL',
domainName: 'Dominio',
domainSuffix: 'Prefijo de dominio',
domainWord: 'Palabra de dominio',
ip: 'IP',
ipv6: 'IPv6',
userAgent: 'Agente de Usuario',
mac: 'MAC',
password: 'Contraseña',
word: 'Palabra',
words: 'Palabras',
sentence: 'Sentencia',
slug: 'Slug',
sentences: 'Sentencias',
paragraph: 'Frase',
paragraphs: 'Frases',
text: 'Texto',
lines: 'Lineas',
genre: 'Género',
firstName: 'Nombre',
lastName: 'Apellido',
middleName: 'Apellido',
findName: 'Nombre completo',
jobTitle: 'Ocupación',
gender: 'Género',
prefix: 'Prefijo',
suffix: 'Sufijo',
title: 'Título',
jobDescriptor: 'Descripción de trabajo',
jobArea: 'Area de trabajo',
jobType: 'Tipo de trabajo',
phoneNumber: 'Número de teléfono',
phoneNumberFormat: 'Formato de número de teléfono',
phoneFormats: 'Formatos de teléfono',
number: 'Número',
float: 'Decimal',
arrayElement: 'Elemento Array',
arrayElements: 'Elementos de Array',
objectElement: 'Elemento Objeto',
uuid: 'UUID',
boolean: 'Booleano',
image: 'Imagen',
locale: 'Conf. regional',
alpha: 'Alpha',
alphaNumeric: 'Alfanumérico',
hexaDecimal: 'Hexadecimal',
fileName: 'Nombre de fichero',
commonFileName: 'Common file name',
mimeType: 'Mime-Type',
commonFileType: 'Common file type',
commonFileExt: 'Common file extension',
fileType: 'Tipo de fichero',
fileExt: 'Extension de fichero',
directoryPath: 'Ruta de directorio',
filePath: 'Ruta de fichero',
semver: 'SemVer',
manufacturer: 'Fabricante',
model: 'Modelo',
fuel: 'Combustible',
vin: 'VIN'
}
};

View File

@@ -117,6 +117,7 @@ export const zhCN = {
insert: '插入',
indexes: '索引',
foreignKeys: '外键',
tableChecks: '表检查',
length: '长度',
unsigned: '无符号',
default: '默认',
@@ -131,6 +132,7 @@ export const zhCN = {
total: '总计',
table: '表 | 表',
view: '视图 | 视图',
materializedview: '实体化视图 | 实体化视图',
definer: '定义者',
algorithm: '算法',
trigger: '触发器 | 触发器',
@@ -180,12 +182,15 @@ export const zhCN = {
addNewField: '添加新字段',
manageIndexes: '管理索引',
manageForeignKeys: '管理外键',
manageTableChecks: '管理表 check 约束',
allowNull: '允许 NULL',
zeroFill: '零填充',
customValue: '自定义值',
onUpdate: '在更新',
deleteField: '删除字段',
createNewIndex: '创建新索引',
createNewCheck: '创建新 check 约束',
checkClause: 'Check 约束',
addToIndex: '添加到索引',
createNewTable: '创建新表',
emptyTable: '清空表',
@@ -195,6 +200,7 @@ export const zhCN = {
emptyConfirm: '您是否确认清空',
thereAreNoIndexes: '没有索引',
thereAreNoForeign: '没有外键',
thereAreNoTableChecks: '没有表 check 约束',
createNewForeign: '创建新外键',
referenceTable: '参考表',
referenceField: '参考字段',
@@ -207,6 +213,7 @@ export const zhCN = {
updateOption: '更新选项',
deleteView: '删除视图',
createNewView: '创建新视图',
createNewMaterializedView: '创建新实体化视图',
deleteTrigger: '删除触发器',
createNewTrigger: '创建新触发器',
currentUser: '当前用户',
@@ -239,6 +246,7 @@ export const zhCN = {
thereAreNoTableFields: '没有表的字段',
newTable: '新表',
newView: '新视图',
newMaterializedView: '新实体化视图',
newTrigger: '新触发器',
newRoutine: '新例程',
newFunction: '新函数',
@@ -300,6 +308,7 @@ export const zhCN = {
color: '颜色',
label: '标签',
icon: '图标',
customIcon: '定制图标',
fileName: '文件名称',
choseFile: '选择文件',
data: '数据',
@@ -324,7 +333,7 @@ export const zhCN = {
wrapLongLines: '将长行换行显示',
markdownSupported: '支持 Markdown',
plantATree: '种植一棵树',
dataTabPageSize: '数据标签的页面大小',
dataTabPageSize: '每页结果',
noOpenTabs: '没有打开的标签, 请在左侧栏上导航或:',
restorePreviousSession: '恢复上一个会话',
closeTab: '关闭标签',
@@ -348,7 +357,6 @@ export const zhCN = {
saveContent: '保存内容',
openAllConnections: '打开所有连接',
openSettings: '打开设置',
openScratchpad: '打开草稿栏',
runOrReload: '运行或重新加载',
openFilter: '打开过滤器',
nextResultsPage: '下一个结果页',
@@ -356,6 +364,8 @@ export const zhCN = {
editFolder: '编辑文件夹',
folderName: '文件夹名称',
deleteFolder: '删除文件夹',
newFolder: '新文件夹',
outOfFolder: '',
editConnectionAppearance: '编辑连接的外观',
defaultCopyType: '默认复制类型',
showTableSize: '在侧边栏显示表大小',
@@ -394,7 +404,10 @@ export const zhCN = {
saveFile: '保存文件',
saveFileAs: '将文件另存为',
openFile: '打开文件',
openNotes: '打开笔记'
openNotes: '打开笔记',
debugConsole: '调试控制台',
executedQueries: '执行的查询',
sizeLimitError: '超过 {size} 的最大大小'
},
faker: { // Faker.js 方法,用于随机生成的内容
address: '地址',

View File

@@ -25,12 +25,13 @@ export interface SidebarElement {
export interface CustomIcon {base64: string; uid: string}
if (!key) { // If no key in local storace
if (!key) { // If no key in local storage
const storedKey = ipcRenderer.sendSync('get-key');// Ask for key stored on disk
if (!storedKey) { // Of nop stored key on disk
if (!storedKey) { // If not stored key on disk
const newKey = crypto.randomBytes(16).toString('hex');
localStorage.setItem('key', newKey);
ipcRenderer.send('set-key', newKey);
key = newKey;
}
else {