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
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
e986f287c6 chore(release): 0.7.31-beta.0 2025-01-06 11:11:23 +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
232211811b Merge pull request #909 from r4f4dev/feat/locale-uzbek
feat(language): add uzbek language support
2024-12-28 15:22:23 +01:00
r4f4dev
fb9c258cc1 feat(language): add uzbek language support 2024-12-28 19:15:41 +05:00
8de99dae7b fix: prevent delete confirmation modal from triggering on non-delete key presses, fixes #906 2024-12-24 11:03:27 +01:00
2bd69c6263 refactor: removed software-side sorting logic, fixes #904 2024-12-24 09:54:47 +01:00
21 changed files with 1335 additions and 87 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,37 @@
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.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)
### Features
* **language:** add uzbek language support ([fb9c258](https://github.com/antares-sql/antares/commit/fb9c258cc10e4d85242ca533a66a95f4101d472c))
### Bug Fixes
* prevent delete confirmation modal from triggering on non-delete key presses, fixes [#906](https://github.com/antares-sql/antares/issues/906) ([8de99da](https://github.com/antares-sql/antares/commit/8de99dae7b6eb72bd6833c607d3c3a5db9508ebb))
### [0.7.30](https://github.com/antares-sql/antares/compare/v0.7.30-beta.1...v0.7.30) (2024-12-04)

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.30",
"version": "0.7.31-beta.1",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "antares",
"version": "0.7.30",
"version": "0.7.31-beta.1",
"hasInstallScript": true,
"license": "MIT",
"dependencies": {

View File

@@ -1,7 +1,7 @@
{
"name": "antares",
"productName": "Antares",
"version": "0.7.30",
"version": "0.7.31-beta.1",
"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

@@ -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

@@ -284,7 +284,7 @@ const settingsStore = useSettingsStore();
const consoleStore = useConsoleStore();
const { getWorkspace } = useWorkspacesStore();
const { dataTabLimit: pageSize, defaultCopyType } = storeToRefs(settingsStore);
const { /* dataTabLimit: pageSize, */ defaultCopyType } = storeToRefs(settingsStore);
const { consoleHeight } = storeToRefs(consoleStore);
@@ -357,37 +357,37 @@ const isSortable = computed(() => {
return fields.value.every(field => field.name);
});
const isHardSort = computed(() => {
return props.mode === 'table' && localResults.value.length === pageSize.value;
});
// const isHardSort = computed(() => {
// return props.mode === 'table' && localResults.value.length === pageSize.value;
// });
const sortedResults = computed(() => {
if (currentSort.value[resultsetIndex.value] && !isHardSort.value) {
const sortObj = currentSort.value[resultsetIndex.value];
// if (currentSort.value[resultsetIndex.value] && !isHardSort.value) {
// const sortObj = currentSort.value[resultsetIndex.value];
return [...localResults.value].sort((a: any, b: any) => {
const modifier = sortObj.dir === 'desc' ? -1 : 1;
let valA = a[sortObj.field];
let valB = b[sortObj.field];
// return [...localResults.value].sort((a: any, b: any) => {
// const modifier = sortObj.dir === 'desc' ? -1 : 1;
// let valA = a[sortObj.field];
// let valB = b[sortObj.field];
// Handle null values
if (valA === null && valB !== null) return sortObj.dir === 'asc' ? -1 : 1;
if (valA !== null && valB === null) return sortObj.dir === 'asc' ? 1 : -1;
if (valA === null && valB === null) return 0;
// // Handle null values
// if (valA === null && valB !== null) return sortObj.dir === 'asc' ? -1 : 1;
// if (valA !== null && valB === null) return sortObj.dir === 'asc' ? 1 : -1;
// if (valA === null && valB === null) return 0;
valA = typeof valA === 'string' ? valA.toLowerCase() : valA;
valB = typeof valB === 'string' ? valB.toLowerCase() : valB;
// valA = typeof valA === 'string' ? valA.toLowerCase() : valA;
// valB = typeof valB === 'string' ? valB.toLowerCase() : valB;
if (typeof valA !== 'number' && !isNaN(valA)) valA = String(Number(valA));
if (typeof valB !== 'number' && !isNaN(valB)) valB = String(Number(valB));
// if (typeof valA !== 'number' && !isNaN(valA)) valA = String(Number(valA));
// if (typeof valB !== 'number' && !isNaN(valB)) valB = String(Number(valB));
if (valA < valB) return -1 * modifier;
if (valA > valB) return 1 * modifier;
return 0;
});
}
else
return localResults.value;
// if (valA < valB) return -1 * modifier;
// if (valA > valB) return 1 * modifier;
// return 0;
// });
// }
// else
return localResults.value;
});
const resultsWithRows = computed(() => props.results.filter(result => result.rows.length));
@@ -538,6 +538,7 @@ const closeContext = () => {
};
const showDeleteConfirmModal = (e: any) => {
if (e.code !== 'Delete') return;
if (e && e.path && ['INPUT', 'TEXTAREA', 'SELECT'].includes(e.path[0].tagName))
return;
if (selectedRows.value.length === 0) return;
@@ -827,12 +828,12 @@ const sort = (field: TableField) => {
};
}
if (isHardSort.value) {
emit('hard-sort', {
field: currentSort.value[resultsetIndex.value].field,
dir: currentSort.value[resultsetIndex.value].dir
});
}
// if (isHardSort.value) {
emit('hard-sort', {
field: currentSort.value[resultsetIndex.value].field,
dir: currentSort.value[resultsetIndex.value].dir
});
// }
};
const resetSort = () => {

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

@@ -16,6 +16,7 @@ import { nlNL } from './nl-NL';
import { ptBR } from './pt-BR';
import { ruRU } from './ru-RU';
import { ukUA } from './uk-UA';
import { uzUZ } from './uz-UZ';
import { viVN } from './vi-VN';
import { zhCN } from './zh-CN';
import { zhTW } from './zh-TW';
@@ -39,7 +40,8 @@ const messages = {
'cs-CZ': csCZ,
'uk-UA': ukUA,
'zh-TW': zhTW,
'he-IL': heIL
'he-IL': heIL,
'uz-UZ': uzUZ
};
type NestedPartial<T> = {

View File

@@ -17,5 +17,6 @@ export const localesNames: Record<string, string> = {
'ca-ES': 'Català',
'cs-CZ': 'Čeština',
'uk-UA': 'Українська',
'uz-UZ': 'O`zbek',
'he-IL': 'עברית'
};

576
src/renderer/i18n/uz-UZ.ts Normal file
View File

@@ -0,0 +1,576 @@
export const uzUZ = {
general: {
edit: 'Tahrirlash',
save: 'Saqlash',
close: 'Yopish',
delete: 'Oʻchirish',
confirm: 'Tasdiqlash',
cancel: 'Bekor qilish',
send: 'Yuborish',
refresh: 'Yangilash',
autoRefresh: 'Avto yangilash',
version: 'Versiya',
donate: 'Donat',
run: 'Bajarish',
results: 'Korsatildi',
size: 'Hajmi',
mimeType: 'Mime-Turi',
download: 'Yuklab olish',
add: 'Qoʻshish',
data: 'Maʼlumotlar',
properties: 'Xususiyatlar',
insert: 'Kiritish',
name: 'Nomi',
clear: 'Tozalash',
seconds: 'Soniyalar',
options: 'Parametrlar',
discard: 'Bekor qilish',
stay: 'Qolish',
author: 'Muallif',
upload: 'Yuklash',
browse: 'Koʻrish',
content: 'Mazmun',
cut: 'Kesish',
copy: 'Nusxalash',
paste: 'Qoʻyish',
tools: 'Asboblar',
format: 'Formatlash',
all: 'Hammasi',
duplicate: 'Nusxa kochirish',
new: 'Yangi',
history: 'Tarix',
select: 'Tanlash',
filter: 'Filtr',
change: 'Oʻzgartirish',
includes: 'Oʻz ichiga oladi',
completed: 'Tugallandi',
aborted: 'Bekor qilindi',
disabled: 'Oʻchirib qoʻyilgan',
enable: 'Yoqish',
disable: 'Oʻchirish',
contributors: 'Hissa qoʻshuvchilar',
pin: 'Biriktirish',
unpin: 'Ajratish',
folder: 'Papka | Papkalar',
deleteConfirm: 'Oʻchirib tashlashni tasdiqlaysizmi',
uploadFile: 'Fayl yuklash',
manualValue: 'Qiymatni qoʻlda kiritish',
selectAll: 'Hammasini tanlash',
pageNumber: 'Sahifa raqami',
directoryPath: 'Papka yoʻli',
actionSuccessful: '{action} muvaffaqiyatli bajarildi',
outputFormat: 'Chiqarish formati',
singleFile: 'Bitta {ext} fayl',
zipCompressedFile: 'ZIP siqilgan {ext} fayl',
include: 'Qoʻshish',
none: 'Yoʻq',
singleQuote: 'Yagona qoʻshtirnoq',
doubleQuote: 'Ikkilik qoʻshtirnoq',
copyName: 'Nomi nusxalash',
search: 'Qidirish',
title: 'Sarlavha',
archive: 'Arxiv',
undo: 'Bekor qilish',
moveTo: 'Koʻchirish'
},
connection: {
connectionName: 'Ulanish nomi',
client: 'Mijoz',
hostName: 'Xost nomi',
port: 'Port',
user: 'Foydalanuvchi',
password: 'Parol',
credentials: 'Vakolatlar',
connect: 'Ulanish',
connected: 'Ulangan',
disconnect: 'Uzish',
disconnected: 'Uzilgan',
ssl: 'SSL',
privateKey: 'Yopiq kalit',
certificate: 'Sertifikat',
caCertificate: 'CA sertifikat',
ciphers: 'Shifrlar',
sshTunnel: 'SSH tunnel',
passphrase: 'Parol frazasi',
connectionString: 'Ulanish qatori',
addConnection: 'Ulanish qoʻshish',
createConnection: 'Ulanish yaratish',
createNewConnection: 'Yangi ulanish yaratish',
askCredentials: 'Hisob maʼlumotlarini soʻrash',
testConnection: 'Ulanishni sinash',
editConnection: 'Ulanishni tahrirlash',
deleteConnection: 'Ulanishni oʻchirish',
connectionSuccessfullyMade: 'Ulanish muvaffaqiyatli amalga oshirildi!',
enableSsl: 'SSL ni yoqish',
enableSsh: 'SSH ni yoqish',
readOnlyMode: 'Faqat oʻqish rejimi',
untrustedConnection: 'Ishonchsiz ulanish',
allConnections: 'Barcha ulanishlar',
searchForConnections: 'Ulanishlarni qidirish',
keepAliveInterval: 'Ulanishni saqlash oraliq vaqti',
singleConnection: 'Bitta ulanish',
connection: 'Ulanish'
},
database: {
schema: 'Shema',
type: 'Tur',
foreignKeys: 'Tashqi kalitlar',
length: 'Uzunlik',
unsigned: 'Imzosiz',
default: 'Standart',
comment: 'Izoh',
collation: 'Moslash',
key: 'Kalit | Kalitlar',
order: 'Tartib',
expression: 'Ifoda',
autoIncrement: 'Avtomatik oshirish',
engine: 'Dvigatel',
field: 'Maydon | Maydonlar',
approximately: 'Taxminan',
total: 'Jami',
table: 'Jadval',
view: 'Korinish',
indexes: 'Indekslar',
definer: 'Belgilar',
algorithm: 'Algoritm',
trigger: 'Trigge | Triggeler',
storedRoutine: 'Saqlangan protsedura | Saqlangan protseduralar',
scheduler: 'Rejalashtiruvchi | Rejalashtiruvchilar',
event: 'Voqea',
parameters: 'Parametrlar',
function: 'Funktsiya | Funktsiyalar',
deterministic: 'Deterministik',
context: 'Kontekst',
export: 'Eksport',
import: 'Import',
returns: 'Qaytaradi',
timing: 'Vaqt',
state: 'Holat',
execution: 'Bajarish',
starts: 'Boshlanishi',
ends: 'Tugashi',
variables: 'Ozgaruvchilar',
processes: 'Jarayonlar',
database: 'Maʼlumotlar bazasi',
array: 'Massiv',
structure: 'Tuzilish',
row: 'Qator | Qatorlar',
cell: 'Yacheyka | Yacheykalar',
triggerFunction: 'Trigger funktsiyasi | Trigger funktsiyalari',
routine: 'Protsedura',
commit: 'Tasdiqlash',
rollback: 'Bekor qilish',
resultsTable: 'Natija jadvali',
ddl: 'DDL',
drop: 'Oʻchirish',
unableEditFieldWithoutPrimary: 'Birlamchi kalit bolmasa, maydonni tahrirlash mumkin emas',
editCell: 'Yacheykani tahrirlash',
deleteRows: 'Qatorni oʻchirish | {count} qatorni oʻchirish',
confirmToDeleteRows: 'Qatorni oʻchirishni tasdiqlaysizmi? | {count} qatorni oʻchirishni tasdiqlaysizmi?',
addNewRow: 'Yangi qator qoʻshish',
numberOfInserts: 'Qoʻshilganlar soni',
affectedRows: 'Taqsir qilingan qatorlar',
createNewDatabase: 'Yangi maʼlumotlar bazasi yaratish',
databaseName: 'Maʼlumotlar bazasi nomi',
serverDefault: 'Server standartlari boyicha',
deleteDatabase: 'Maʼlumotlar bazasini oʻchirish',
editDatabase: 'Maʼlumotlar bazasini tahrirlash',
clearChanges: 'Oʻzgarishlarni oʻchirish',
addNewField: 'Yangi maydon qoshish',
manageIndexes: 'Indekslarni boshqarish',
manageForeignKeys: 'Tashqi kalitlarni boshqarish',
allowNull: 'NULL ga ruxsat berish',
zeroFill: 'Nol bilan toʻldirish',
customValue: 'Foydalanuvchi qiymati',
onUpdate: 'Yangilanishda',
deleteField: 'Maydonni oʻchirish',
createNewIndex: 'Yangi indeks yaratish',
addToIndex: 'Indeksga qoʻshish',
createNewTable: 'Yangi jadval yaratish',
emptyTable: 'Jadvalni tozalash',
deleteTable: 'Jadvalni oʻchirish',
emptyConfirm: 'Tozalashni tasdiqlaysizmi?',
thereAreNoIndexes: 'Indekslar mavjud emas',
thereAreNoForeign: 'Tashqi kalitlar mavjud emas',
createNewForeign: 'Yangi tashqi kalit yaratish',
referenceTable: 'Jadvalga murojaat',
referenceField: 'Maydonga murojaat',
foreignFields: 'Tashqi maydonlar',
invalidDefault: 'Notogri qiymat',
onDelete: 'Oʻchirishda',
selectStatement: 'Tanlash operatori',
triggerStatement: 'Trigger operatori',
sqlSecurity: 'SQL xavfsizligi',
updateOption: 'Yangilash parametrlari',
deleteView: 'Korinishni oʻchirish',
createNewView: 'Yangi korinish yaratish',
deleteTrigger: 'Trigerni oʻchirish',
createNewTrigger: 'Yangi trigger yaratish',
currentUser: 'Hozirgi foydalanuvchi',
routineBody: 'Protsedura matni',
dataAccess: 'Maʼlumotlarga kirish',
thereAreNoParameters: 'Parametrlar yoʻq',
createNewParameter: 'Yangi parametr yaratish',
createNewRoutine: 'Yangi protsedura yaratish',
deleteRoutine: 'Protsedurani oʻchirish',
functionBody: 'Funktsiya matni',
createNewFunction: 'Yangi funktsiya yaratish',
deleteFunction: 'Funktsiyani oʻchirish',
schedulerBody: 'Rejalashtiruvchi matni',
createNewScheduler: 'Yangi rejalashtiruvchi yaratish',
deleteScheduler: 'Rejalashtiruvchini oʻchirish',
preserveOnCompletion: 'Yakunlangandan soʻng saqlash',
tableFiller: 'Jadval toʻldiruvchisi',
fakeDataLanguage: 'Soxta maʼlumotlar tili',
queryDuration: 'Soʻrov davomiyligi',
setNull: 'NULL qiymatni oʻrnatish',
processesList: 'Jarayonlar roʻyxati',
processInfo: 'Jarayon maʼlumotlari',
manageUsers: 'Foydalanuvchilarni boshqarish',
createNewSchema: 'Yangi shema yaratish',
schemaName: 'Shema nomi',
editSchema: 'Shemaga ozgartirish kiritish',
deleteSchema: 'Shemadan oʻchirish',
duplicateTable: 'Jadvalni dublikat qilish',
noSchema: 'Shemalar mavjud emas',
runQuery: 'Soʻrovni bajarish',
thereAreNoTableFields: 'Jadvalda maydonlar yoʻq',
newTable: 'Yangi jadval',
newView: 'Yangi korinish',
newTrigger: 'Yangi trigger',
newRoutine: 'Yangi protsedura',
newFunction: 'Yangi funktsiya',
newScheduler: 'Yangi rejalashtiruvchi',
newTriggerFunction: 'Yangi trigger funktsiyasi',
thereAreNoQueriesYet: 'Soʻrovlar hali mavjud emas',
searchForQueries: 'Soʻrovlarni qidirish',
killProcess: 'Jarayonni toʻxtatish',
exportSchema: 'Shemadan eksport qilish',
importSchema: 'Shemaga import qilish',
newInsertStmtEvery: 'Har bir uchun yangi INSERT operator',
processingTableExport: '{table} ni qayta ishlash',
fetchingTableExport: '{table} maʼlumotlarini olish',
writingTableExport: '{table} ga yozish',
checkAllTables: 'Barcha jadvallarni belgilash',
uncheckAllTables: 'Barcha jadvallardan belgilashni olib tashlash',
killQuery: 'Soʻrovni toʻxtatish',
insertRow: 'Qator kiritish | Qatorlarni kiritish',
commitMode: 'Tranzaksiya tasdiqlash rejimi',
autoCommit: 'Avtomatik tasdiqlash',
manualCommit: 'Qoʻlda tasdiqlash',
disableFKChecks: 'Tashqi kalitlarni tekshirishni oʻchirish',
formatQuery: 'Soʻrovni formatlash',
queryHistory: 'Soʻrovlar tarixi',
clearQuery: 'Soʻrovni tozalash',
fillCell: 'Yacheykani toʻldirish',
executeSelectedQuery: 'Tanlangan soʻrovni bajarish',
noResultsPresent: 'Natijalar yoʻq',
sqlExportOptions: 'SQL eksport parametrlari',
targetTable: 'Maqsad jadvali',
importQueryErrors: 'Diqqat: {n} xato yuz berdi | Diqqat: {n} xatolar yuz berdi',
executedQueries: '{n} soʻrov bajarildi | {n} soʻrovlar bajarildi',
insert: 'Kiritish',
materializedview: 'Materializatsiya qilingan korinish | Materializatsiya qilingan korinishlar',
exportTable: 'Jadvalni eksport qilish',
createNewMaterializedView: 'Yangi materializatsiya qilingan korinish yaratish',
newMaterializedView: 'Yangi materializatsiya qilingan korinish',
switchDatabase: 'Maʼlumotlar bazasini almashtirish',
searchForElements: 'Elementlarni qidirish',
searchForSchemas: 'Shemalarni qidirish',
savedQueries: 'Saqlangan soʻrovlar'
},
application: {
settings: 'Sozlamalar',
general: 'Umumiy',
themes: 'Mavzular',
update: 'Yangilash',
about: 'Dastur haqida',
language: 'Til',
light: 'Yorugʻ',
dark: 'Qorongʻi',
autoCompletion: 'Avto-tugallash',
application: 'Ilova',
editor: 'Tahrirchi',
scratchpad: 'Eslatmalar',
changelog: 'Oʻzgarishlar jurnali',
small: 'Kichik',
medium: 'Oʻrta',
large: 'Katta',
console: 'Konsol',
shortcuts: 'Qisqa tugmalar',
appearance: 'Tashqi koʻrinish',
color: 'Rang',
label: 'Yorliq',
icon: 'Belgi',
madeWithJS: '💛 va JavaScript bilan yaratilgan!',
checkForUpdates: 'Yangilanishlarni tekshirish',
noUpdatesAvailable: 'Yangilanishlar topilmadi',
checkingForUpdate: 'Yangilanishlarni qidirish',
checkFailure: 'Yangilanishlarni tekshirib boʻlmadi, iltimos keyinroq urinib koʻring',
updateAvailable: 'Yangilanish mavjud',
downloadingUpdate: 'Yangilanishni yuklab olish',
updateDownloaded: 'Yangilanish yuklab olindi',
restartToInstall: 'Oʻrnatish uchun Antares-ni qayta ishga tushiring',
notificationsTimeout: 'Bildirishnoma vaqti',
openNewTab: 'Yangi tab ochish',
unsavedChanges: 'Saqlanmagan oʻzgarishlar',
discardUnsavedChanges: 'Saqlanmagan maʼlumotlaringiz mavjud. Ushbu oynani yopish ularni bekor qiladi.',
applicationTheme: 'Ilova mavzusi',
editorTheme: 'Tahrirchi mavzusi',
wrapLongLines: 'Uzun satrlarni oʻrash',
includeBetaUpdates: 'Beta yangilanishlarni olish',
markdownSupported: 'Markdown qoʻllab-quvvatlanadi',
plantATree: 'Daraxt ekish',
dataTabPageSize: 'MAʼLUMOTLAR yorligʻi sahifa oʻlchami',
noOpenTabs: 'Ochiq yorliqlar yoʻq, chap paneldan foydalaning yoki:',
restorePreviousSession: 'Avvalgi sessiyani tiklash',
closeTab: 'Yorliqni yopish',
goToDownloadPage: 'Yuklash sahifasiga oʻtish',
disableBlur: 'Bulutni oʻchirish',
missingOrIncompleteTranslation: 'Yetishmayotgan yoki toʻliq boʻlmagan tarjima?',
findOutHowToContribute: 'Qanday hissa qoʻshishni bilib oling',
disableScratchpad: 'Eslatmalarni oʻchirish',
reportABug: 'Xato haqida xabar berish',
nextTab: 'Keyingi yorliq',
previousTab: 'Oldingi yorliq',
selectTabNumber: '{param} raqamli yorliqni tanlash',
toggleConsole: 'Konsolni almashtirish',
addShortcut: 'Qisqa tugma qoʻshish',
editShortcut: 'Qisqa tugmani tahrirlash',
deleteShortcut: 'Qisqa tugmani oʻchirish',
restoreDefaults: 'Standartlarga qaytarish',
restoreDefaultsQuestion: 'Standart qiymatlarni tiklashga rozimisiz?',
registerAShortcut: 'Qisqa tugma roʻyxatdan oʻtkazish',
invalidShortcutMessage: 'Bu kombinatsiyani ishlatib boʻlmaydi, boshqa birini sinab koʻring',
shortcutAlreadyExists: 'Bunday kombinatsiya allaqachon mavjud',
saveContent: 'Mazmunni saqlash',
openAllConnections: 'Barcha ulanishlarni ochish',
openSettings: 'Sozlamalarni ochish',
openScratchpad: 'Eslatmalarni ochish',
runOrReload: 'Bajaring yoki qayta yuklang',
openFilter: 'Filtrni ochish',
nextResultsPage: 'Keyingi sahifa',
previousResultsPage: 'Oldingi sahifa',
editFolder: 'Papkani tahrirlash',
folderName: 'Papkalar nomi',
deleteFolder: 'Papkani oʻchirish',
editConnectionAppearance: 'Ulanish tashqi koʻrinishini oʻzgartirish',
defaultCopyType: 'Odatiy nusxa koʻchirish turi',
showTableSize: 'Yon panelda jadval oʻlchamini koʻrsatish',
showTableSizeDescription: 'Faqat MySQL/MariaDB. Ushbu parametrni yoqish koʻp jadvalli sxemalarda ishlash tezligiga taʼsir qilishi mumkin.',
searchForSchemas: 'Sxemalarni qidirish',
searchForElements: 'Elementlarni qidirish',
switchSearchMethod: 'Qidiruv usulini almashtirish',
closeAllTabs: 'Barcha yorliqlarni yopish',
closeOtherTabs: 'Boshqa yorliqlarni yopish',
closeTabsToLeft: 'Chapdagi yorliqlarni yopish',
closeTabsToRight: 'Oʻngdagi yorliqlarni yopish',
phpArray: 'PHP massiv',
event: 'Hodisa',
customIcon: 'Maxsus belgi',
fileName: 'Fayl nomi',
choseFile: 'Faylni tanlash',
data: 'Maʼlumotlar',
password: 'Parol',
required: 'Majburiy',
newFolder: 'Yangi papka',
outOfFolder: 'Papkadan tashqari',
csvFieldDelimiter: 'CSV maydon ajratgichi',
csvLinesTerminator: 'CSV satr terminatori',
csvStringDelimiter: 'CSV satr ajratgichi',
csvIncludeHeader: 'Sarlavhani kiritish',
csvExportOptions: 'CSV eksport imkoniyatlari',
exportData: 'Maʼlumotlarni eksport qilish',
exportDataExplanation: 'Antares-dagi saqlangan ulanishlarni eksport qilish. Shifrlangan fayl uchun parol kiritishingiz soʻraladi.',
importData: 'Maʼlumotlarni import qilish',
importDataExplanation: '.antares faylini import qiladi, unda ulanishlar mavjud. Eksport paytida kiritilgan parolni kiritishingiz kerak.',
includeConnectionPasswords: 'Ulanish parollarini kiritish',
includeFolders: 'Papkalarni kiritish',
encryptionPassword: 'Shifrlash paroli',
encryptionPasswordError: 'Shifrlash paroli kamida 8 ta belgi boʻlishi kerak.',
ignoreDuplicates: 'Nusxalarni inkor qilish',
wrongImportPassword: 'Import paroli notoʻgʻri',
wrongFileFormat: 'Fayl formati notoʻgʻri',
dataImportSuccess: 'Maʼlumotlar muvaffaqiyatli import qilindi',
note: 'Eslatma | Eslatmalar',
thereAreNoNotesYet: 'Hali eslatmalar yoʻq',
addNote: 'Eslatma qoʻshish',
editNote: 'Eslatmani tahrirlash',
saveAsNote: 'Eslatma sifatida saqlash',
showArchivedNotes: 'Arxivlangan eslatmalarni koʻrsatish',
hideArchivedNotes: 'Arxivlangan eslatmalarni yashirish',
tag: 'Teg',
saveFile: 'Faylni saqlash',
saveFileAs: 'Faylni sifatida saqlash',
openFile: 'Faylni ochish',
openNotes: 'Eslatmalarni ochish',
debugConsole: 'Nosozliklarni tuzatish konsoli',
executedQueries: 'Bajarilgan soʻrovlar',
sizeLimitError: 'Maksimal oʻlcham {size} dan oshib ketdi'
},
faker: {
address: 'Manzil',
commerce: 'Tijorat',
company: 'Kompaniya',
database: 'Ma`lumotlar bazasi',
date: 'Sana',
finance: 'Moliyaviy',
git: 'Git',
hacker: 'Xaker',
internet: 'Internet',
lorem: 'Lorem',
name: 'Ism',
music: 'Musiqa',
phone: 'Telefon',
random: 'Tasodifiy',
system: 'Tizim',
time: 'Vaqt',
vehicle: 'Transport vositasi',
zipCode: 'Pochta kodi',
zipCodeByState: 'Shahar pochta kodi',
city: 'Shahar',
cityPrefix: 'Shahar prefiksi',
citySuffix: 'Shahar sufixi',
streetName: 'Ko`cha nomi',
streetAddress: 'Ko`cha manzili',
streetSuffix: 'Ko`cha sufixi',
streetPrefix: 'Ko`cha prefiksi',
secondaryAddress: 'Ikkinchi manzil',
county: 'Okrug',
country: 'Davlat',
countryCode: 'Davlat kodi',
state: 'Viloyat',
stateAbbr: 'Viloyat qisqartmasi',
latitude: 'Kenglik',
longitude: 'Uzunlik',
direction: 'Yo`nalish',
cardinalDirection: 'Kardinal yo`nalish',
ordinalDirection: 'Tartibiy yo`nalish',
nearbyGPSCoordinate: 'Yaqin GPS koordinatasi',
timeZone: 'Vaqt zonasі',
color: 'Rang',
department: 'Bo`lim',
productName: 'Mahsulot nomi',
price: 'Narx',
productAdjective: 'Mahsulotga oid sifat',
productMaterial: 'Mahsulot materiali',
product: 'Mahsulot',
productDescription: 'Mahsulot ta`rifi',
suffixes: 'Sufikslari',
companyName: 'Kompaniya nomi',
companySuffix: 'Kompaniya sufixi',
catchPhrase: 'Slogan',
bs: 'BS',
catchPhraseAdjective: 'Slogan sifat',
catchPhraseDescriptor: 'Slogan tavsifi',
catchPhraseNoun: 'Slogan ot',
bsAdjective: 'BS sifat',
bsBuzz: 'BS shovqin',
bsNoun: 'BS ot',
column: 'Ustun',
type: 'Tur',
collation: 'Taqqoslash',
engine: 'Dvigatel',
past: 'O`tgan',
now: 'Hozir',
future: 'Kelajak',
between: 'Orasida',
recent: 'Yaqinda',
soon: 'Tez orada',
month: 'Oy',
weekday: 'Hafta kuni',
account: 'Hisob',
accountName: 'Hisob nomi',
routingNumber: 'Yo`nalish raqami',
mask: 'Maska',
amount: 'Miqdor',
transactionType: 'Transaksiya turi',
currencyCode: 'Valyuta kodi',
currencyName: 'Valyuta nomi',
currencySymbol: 'Valyuta belgilari',
bitcoinAddress: 'Bitcoin hamyoni',
litecoinAddress: 'Litecoin hamyoni',
creditCardNumber: 'Kredit karta raqami',
creditCardCVV: 'CVV kodi',
ethereumAddress: 'Ethereum hamyoni',
iban: 'Iban',
bic: 'Bic',
transactionDescription: 'Transaksiya ta`rifi',
branch: 'Filial',
commitEntry: 'Kommit',
commitMessage: 'Kommit xabari',
commitSha: 'SHA kommit',
shortSha: 'Qisqa SHA',
abbreviation: 'Qisqartma',
adjective: 'Sifat',
noun: 'Ot',
verb: 'Fe`l',
ingverb: 'Ildiz fe`l',
phrase: 'Ibora',
avatar: 'Avatar',
email: 'Elektron pochta',
exampleEmail: 'Elektron pochta misoli',
userName: 'Login',
protocol: 'Protokol',
url: 'Url',
domainName: 'Domen nomi',
domainSuffix: 'Domen sufixi',
domainWord: 'Domen so`zi',
ip: 'Ip',
ipv6: 'Ipv6',
userAgent: 'User agent',
mac: 'MAC-manzil',
password: 'Parol',
word: 'So`z',
words: 'So`zlar',
sentence: 'Gap',
slug: 'Slug',
sentences: 'Gaplar',
paragraph: 'Paragraf',
paragraphs: 'Paragraflar',
text: 'Matn',
lines: 'Chiziqlar',
genre: 'Janr',
firstName: 'Ism',
lastName: 'Familiya',
middleName: 'Otasining ismi',
findName: 'To`liq ism',
jobTitle: 'Lavozim',
gender: 'Jins',
prefix: 'Prefiks',
suffix: 'Sufiks',
title: 'Sarlavha',
jobDescriptor: 'Lavozim ta`rifi',
jobArea: 'Lavozim sohasi',
jobType: 'Lavozim turi',
phoneNumber: 'Telefon raqami',
phoneNumberFormat: 'Telefon raqami formati',
phoneFormats: 'Telefon raqami formatlari',
number: 'Raqam',
float: 'O`nlik son',
arrayElement: 'Massiv elementi',
arrayElements: 'Massiv elementlari',
objectElement: 'Obyekt elementi',
uuid: 'Uuid',
boolean: 'Mantiqiy',
image: 'Rasm',
locale: 'Mahalliy',
alpha: 'Harflar',
alphaNumeric: 'Alfavitli-sonli',
hexaDecimal: 'O`n oltilik',
fileName: 'Fayl nomi',
commonFileName: 'Ommaviy fayl nomi',
mimeType: 'Mime-turi',
commonFileType: 'Ommaviy fayl turi',
commonFileExt: 'Ommaviy fayl kengaytmasi',
fileType: 'Fayl turi',
fileExt: 'Fayl kengaytmasi',
directoryPath: 'Katalog yo`li',
filePath: 'Fayl yo`li',
semver: 'Semver',
manufacturer: 'Ishlab chiqaruvchi',
model: 'Model',
fuel: 'Yoqilg`i',
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 {