mirror of
https://github.com/Fabio286/antares.git
synced 2025-06-05 21:59:22 +02:00
Compare commits
20 Commits
v0.7.30-be
...
v0.7.31-be
Author | SHA1 | Date | |
---|---|---|---|
e986f287c6 | |||
232211811b | |||
|
fb9c258cc1 | ||
8de99dae7b | |||
2bd69c6263 | |||
4d1a81033d | |||
5887eea2ed | |||
6c69583c90 | |||
|
03461522b7 | ||
|
11807e3bb6 | ||
a54b8d719c | |||
d1f68da495 | |||
d666281daa | |||
481ae842dd | |||
|
acf5d459e2 | ||
2ee9cfcf0b | |||
f0d312fb59 | |||
24605d01e1 | |||
|
f639bc7983 | ||
|
5e51997e5b |
@@ -320,6 +320,24 @@
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "SawGoD",
|
||||
"name": "Nikita Karelikov",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/67802757?v=4",
|
||||
"profile": "http://telegram.dog/SawGoD",
|
||||
"contributions": [
|
||||
"translation"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "carvalhods",
|
||||
"name": "David Carvalho",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/6569255?v=4",
|
||||
"profile": "https://github.com/carvalhods",
|
||||
"contributions": [
|
||||
"platform"
|
||||
]
|
||||
}
|
||||
],
|
||||
"contributorsPerLine": 7,
|
||||
|
@@ -2,4 +2,5 @@ node_modules
|
||||
assets
|
||||
out
|
||||
dist
|
||||
build
|
||||
build
|
||||
misc
|
31
CHANGELOG.md
31
CHANGELOG.md
@@ -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.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)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* issue saving queries as file ([a54b8d7](https://github.com/antares-sql/antares/commit/a54b8d719c6454500b885050c9ce6feaf7cfae1f))
|
||||
|
||||
### [0.7.30-beta.1](https://github.com/antares-sql/antares/compare/v0.7.30-beta.0...v0.7.30-beta.1) (2024-11-15)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* missing support check for table check features ([2ee9cfc](https://github.com/antares-sql/antares/commit/2ee9cfcf0bbcf86e8a194d2eff78801300ce7cb3))
|
||||
|
||||
|
||||
### Improvements
|
||||
|
||||
* **PostgreSQL:** improved support of connection strings, closes [#893](https://github.com/antares-sql/antares/issues/893) ([f0d312f](https://github.com/antares-sql/antares/commit/f0d312fb59fd98d6e4501bc407959b91eb0650f2))
|
||||
|
||||
### [0.7.30-beta.0](https://github.com/antares-sql/antares/compare/v0.7.29...v0.7.30-beta.0) (2024-10-25)
|
||||
|
||||
|
||||
|
16
README.md
16
README.md
@@ -1,13 +1,13 @@
|
||||
|
||||
<!-- markdownlint-disable -->
|
||||
<p align="center">
|
||||
<img width="800" src="https://raw.githubusercontent.com/Fabio286/antares/master/docs/gh-logo.png">
|
||||
<img width="800" src="https://raw.githubusercontent.com/antares-sql/antares/master/docs/gh-logo.png">
|
||||
</p>
|
||||
<!-- markdownlint-restore -->
|
||||
|
||||
# Antares SQL Client
|
||||
|
||||
    [](https://www.treedom.net/en/user/fabio-di-stasio/event/antares-for-the-planet)
|
||||
    [](https://www.treedom.net/en/user/fabio-di-stasio/event/antares-for-the-planet)
|
||||
|
||||
Antares is an SQL client based on [Electron.js](https://github.com/electron/electron) and [Vue.js](https://github.com/vuejs/vue) that aims to become a useful tool, especially for developers.
|
||||
Our target is to support as many databases as possible, and all major operating systems, including the ARM versions.
|
||||
@@ -16,7 +16,7 @@ Our target is to support as many databases as possible, and all major operating
|
||||
However, there are all the features necessary to have a pleasant database management experience, so give it a chance and send us your feedback, we would really appreciate it.
|
||||
We are actively working on it, hoping to provide new cool features, improvements and fixes as soon as possible.
|
||||
|
||||
🔗 If you are curious to try Antares you can download and install the [latest release](https://github.com/Fabio286/antares/releases/latest).
|
||||
🔗 If you are curious to try Antares you can download and install the [latest release](https://github.com/antares-sql/antares/releases/latest).
|
||||
👁 To stay tuned for new releases follow Antares SQL on [Mastodon](https://fosstodon.org/@AntaresSQL).
|
||||
🌟 Don't forget to **leave a star** if you appreciate this project.
|
||||
|
||||
@@ -60,7 +60,7 @@ On Linux you can simply download and run the `.AppImage` distribution, install f
|
||||
|
||||
### Windows
|
||||
|
||||
On Windows you can choose between downloading the app from Microsoft Store or downloading the `.exe` from our [website](https://antares-sql.app/downloads) or [this github repo](https://github.com/Fabio286/antares/releases/latest). Distributions that are not from Microsoft Store are not signed with a certificate, so to install you need to click on "More info" and then "Run anyway" on SmartScreen prompt.
|
||||
On Windows you can choose between downloading the app from Microsoft Store or downloading the `.exe` from our [website](https://antares-sql.app/downloads) or [this github repo](https://github.com/antares-sql/antares/releases/latest). Distributions that are not from Microsoft Store are not signed with a certificate, so to install you need to click on "More info" and then "Run anyway" on SmartScreen prompt.
|
||||
|
||||
### MacOS
|
||||
|
||||
@@ -99,8 +99,8 @@ On macOS you can run `.dmg` distribution following [this guide](https://support.
|
||||
|
||||
## How to contribute
|
||||
|
||||
- 🌍 [Translate Antares](https://github.com/Fabio286/antares/wiki/Translate-Antares)
|
||||
- 📖 [Contributors Guide](https://github.com/Fabio286/antares/wiki/Contributors-Guide)
|
||||
- 🌍 [Translate Antares](https://github.com/antares-sql/antares/wiki/Translate-Antares)
|
||||
- 📖 [Contributors Guide](https://github.com/antares-sql/antares/wiki/Contributors-Guide)
|
||||
- 🚧 [Project Board](https://github.com/orgs/antares-sql/projects/3/views/2)
|
||||
|
||||
## Contributors ✨
|
||||
@@ -155,6 +155,10 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/zwei-c"><img src="https://avatars.githubusercontent.com/u/55912811?v=4?s=100" width="100px;" alt="CHANG, CHIH WEI"/><br /><sub><b>CHANG, CHIH WEI</b></sub></a><br /><a href="#translation-zwei-c" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mirrorb"><img src="https://avatars.githubusercontent.com/u/34116207?v=4?s=100" width="100px;" alt="GaoChun"/><br /><sub><b>GaoChun</b></sub></a><br /><a href="https://github.com/antares-sql/antares/commits?author=mirrorb" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/LeviEyal"><img src="https://avatars.githubusercontent.com/u/48846533?v=4?s=100" width="100px;" alt="Eyal Levi"/><br /><sub><b>Eyal Levi</b></sub></a><br /><a href="#translation-LeviEyal" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://telegram.dog/SawGoD"><img src="https://avatars.githubusercontent.com/u/67802757?v=4?s=100" width="100px;" alt="Nikita Karelikov"/><br /><sub><b>Nikita Karelikov</b></sub></a><br /><a href="#translation-SawGoD" title="Translation">🌍</a></td>
|
||||
</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>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
12
package-lock.json
generated
12
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "antares",
|
||||
"version": "0.7.30-beta.0",
|
||||
"version": "0.7.31-beta.0",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "antares",
|
||||
"version": "0.7.30-beta.0",
|
||||
"version": "0.7.31-beta.0",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
@@ -42,7 +42,6 @@
|
||||
"node-firebird": "~1.1.8",
|
||||
"node-loader": "~2.0.0",
|
||||
"pg": "~8.11.5",
|
||||
"pg-connection-string": "~2.5.0",
|
||||
"pg-query-stream": "~4.2.3",
|
||||
"pgsql-ast-parser": "~7.2.1",
|
||||
"pinia": "~2.1.7",
|
||||
@@ -12142,10 +12141,6 @@
|
||||
"license": "MIT",
|
||||
"optional": true
|
||||
},
|
||||
"node_modules/pg-connection-string": {
|
||||
"version": "2.5.0",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/pg-cursor": {
|
||||
"version": "2.10.3",
|
||||
"license": "MIT",
|
||||
@@ -24507,9 +24502,6 @@
|
||||
"version": "1.1.1",
|
||||
"optional": true
|
||||
},
|
||||
"pg-connection-string": {
|
||||
"version": "2.5.0"
|
||||
},
|
||||
"pg-cursor": {
|
||||
"version": "2.10.3",
|
||||
"requires": {}
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "antares",
|
||||
"productName": "Antares",
|
||||
"version": "0.7.30-beta.0",
|
||||
"version": "0.7.31-beta.0",
|
||||
"description": "A modern, fast and productivity driven SQL client with a focus in UX.",
|
||||
"license": "MIT",
|
||||
"repository": "https://github.com/antares-sql/antares.git",
|
||||
@@ -151,7 +151,6 @@
|
||||
"node-firebird": "~1.1.8",
|
||||
"node-loader": "~2.0.0",
|
||||
"pg": "~8.11.5",
|
||||
"pg-connection-string": "~2.5.0",
|
||||
"pg-query-stream": "~4.2.3",
|
||||
"pgsql-ast-parser": "~7.2.1",
|
||||
"pinia": "~2.1.7",
|
||||
|
@@ -57,6 +57,7 @@ export interface ConnectionParams {
|
||||
cert?: string;
|
||||
key?: string;
|
||||
ca?: string;
|
||||
connString?: string;
|
||||
untrustedConnection: boolean;
|
||||
ciphers?: string;
|
||||
ssh: boolean;
|
||||
|
@@ -26,6 +26,7 @@ export default (connections: Record<string, antares.Client>) => {
|
||||
user: conn.user,
|
||||
password: conn.password,
|
||||
readonly: conn.readonly,
|
||||
connectionString: conn.connString,
|
||||
database: '',
|
||||
schema: '',
|
||||
databasePath: '',
|
||||
@@ -122,6 +123,7 @@ export default (connections: Record<string, antares.Client>) => {
|
||||
password: conn.password,
|
||||
application_name: 'Antares SQL',
|
||||
readonly: conn.readonly,
|
||||
connectionString: conn.connString,
|
||||
database: '',
|
||||
schema: '',
|
||||
databasePath: '',
|
||||
|
@@ -155,6 +155,7 @@ export class PostgreSQLClient extends BaseClient {
|
||||
host: this._params.host,
|
||||
port: this._params.port,
|
||||
user: this._params.user,
|
||||
connectionString: this._params.connectionString,
|
||||
database: 'postgres' as string,
|
||||
password: this._params.password,
|
||||
ssl: null as ConnectionOptions
|
||||
|
@@ -67,7 +67,7 @@
|
||||
<div class="column col-7 col-sm-12">
|
||||
<input
|
||||
ref="pgString"
|
||||
v-model="connection.pgConnString"
|
||||
v-model="connection.connString"
|
||||
class="form-input"
|
||||
type="text"
|
||||
>
|
||||
@@ -502,8 +502,8 @@ const connection = ref({
|
||||
sshKey: '',
|
||||
sshPort: 22,
|
||||
sshKeepAliveInterval: 1800,
|
||||
pgConnString: ''
|
||||
}) as Ref<ConnectionParams & { pgConnString: string }>;
|
||||
connString: ''
|
||||
}) as Ref<ConnectionParams & { connString: string }>;
|
||||
|
||||
const firstInput: Ref<HTMLInputElement> = ref(null);
|
||||
const isConnecting = ref(false);
|
||||
|
@@ -68,7 +68,7 @@
|
||||
<div class="column col-7 col-sm-12">
|
||||
<input
|
||||
ref="pgString"
|
||||
v-model="localConnection.pgConnString"
|
||||
v-model="localConnection.connString"
|
||||
class="form-input"
|
||||
type="text"
|
||||
>
|
||||
@@ -502,7 +502,7 @@ const clients = [
|
||||
];
|
||||
|
||||
const firstInput: Ref<HTMLInputElement> = ref(null);
|
||||
const localConnection: Ref<ConnectionParams & { pgConnString: string }> = ref(null);
|
||||
const localConnection: Ref<ConnectionParams & { connString: string }> = ref(null);
|
||||
const isConnecting = ref(false);
|
||||
const isTesting = ref(false);
|
||||
const isAsking = ref(false);
|
||||
|
@@ -73,6 +73,7 @@
|
||||
<span>{{ t('database.foreignKeys') }}</span>
|
||||
</button>
|
||||
<button
|
||||
v-if="workspace.customizations.tableCheck"
|
||||
class="btn btn-dark btn-sm ml-2 mr-0"
|
||||
:disabled="isSaving || !localFields.length"
|
||||
:title="t('database.manageTableChecks')"
|
||||
|
@@ -73,6 +73,7 @@
|
||||
<span>{{ t('database.foreignKeys') }}</span>
|
||||
</button>
|
||||
<button
|
||||
v-if="workspace.customizations.tableCheck"
|
||||
class="btn btn-dark btn-sm ml-2 mr-0"
|
||||
:disabled="isSaving"
|
||||
:title="t('database.manageTableChecks')"
|
||||
|
@@ -745,7 +745,7 @@ const saveFileAs = async () => {
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const result: any = await Application.showSaveDialog({
|
||||
filters: [{ name: 'SQL', extensions: ['sql'] }],
|
||||
defaultPath: (!queryName.value.includes('.sql') ? `${queryName.value}.sql` :queryName.value) || 'query.sql'
|
||||
defaultPath: (queryName.value !== undefined && !queryName.value.includes('.sql') ? `${queryName.value}.sql` : queryName.value) || 'query.sql'
|
||||
});
|
||||
|
||||
if (result && !result.canceled) {
|
||||
|
@@ -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 = () => {
|
||||
|
@@ -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> = {
|
||||
|
@@ -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
576
src/renderer/i18n/uz-UZ.ts
Normal 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: 'Ko‘rsatildi',
|
||||
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 ko‘chirish',
|
||||
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: 'Ko‘rinish',
|
||||
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: 'O‘zgaruvchilar',
|
||||
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 bo‘lmasa, 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 bo‘yicha',
|
||||
deleteDatabase: 'Maʼlumotlar bazasini oʻchirish',
|
||||
editDatabase: 'Maʼlumotlar bazasini tahrirlash',
|
||||
clearChanges: 'Oʻzgarishlarni oʻchirish',
|
||||
addNewField: 'Yangi maydon qo‘shish',
|
||||
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: 'Noto‘g‘ri qiymat',
|
||||
onDelete: 'Oʻchirishda',
|
||||
selectStatement: 'Tanlash operatori',
|
||||
triggerStatement: 'Trigger operatori',
|
||||
sqlSecurity: 'SQL xavfsizligi',
|
||||
updateOption: 'Yangilash parametrlari',
|
||||
deleteView: 'Ko‘rinishni oʻchirish',
|
||||
createNewView: 'Yangi ko‘rinish 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 o‘zgartirish 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 ko‘rinish',
|
||||
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 ko‘rinish | Materializatsiya qilingan ko‘rinishlar',
|
||||
exportTable: 'Jadvalni eksport qilish',
|
||||
createNewMaterializedView: 'Yangi materializatsiya qilingan ko‘rinish yaratish',
|
||||
newMaterializedView: 'Yangi materializatsiya qilingan ko‘rinish',
|
||||
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'
|
||||
}
|
||||
};
|
@@ -1,18 +1,15 @@
|
||||
import { ConnectionParams, IpcResponse } from 'common/interfaces/antares';
|
||||
import { ipcRenderer } from 'electron';
|
||||
|
||||
import connStringConstruct from '../libs/connStringDecode';
|
||||
import { unproxify } from '../libs/unproxify';
|
||||
|
||||
export default class {
|
||||
static makeTest (params: ConnectionParams & { pgConnString?: string }): Promise<IpcResponse> {
|
||||
const newParams = connStringConstruct(params) as ConnectionParams;
|
||||
return ipcRenderer.invoke('test-connection', unproxify(newParams));
|
||||
static makeTest (params: ConnectionParams & { connString?: string }): Promise<IpcResponse> {
|
||||
return ipcRenderer.invoke('test-connection', unproxify(params));
|
||||
}
|
||||
|
||||
static connect (params: ConnectionParams & { pgConnString?: string }): Promise<IpcResponse> {
|
||||
const newParams = connStringConstruct(params) as ConnectionParams;
|
||||
return ipcRenderer.invoke('connect', unproxify(newParams));
|
||||
static connect (params: ConnectionParams & { connString?: string }): Promise<IpcResponse> {
|
||||
return ipcRenderer.invoke('connect', unproxify(params));
|
||||
}
|
||||
|
||||
static abortConnection (uid: string): void {
|
||||
|
@@ -1,50 +0,0 @@
|
||||
import { ConnectionParams } from 'common/interfaces/antares';
|
||||
import * as formatter from 'pg-connection-string'; // parses a connection string
|
||||
|
||||
const formatHost = (host: string) => {
|
||||
const results = host === 'localhost' ? '127.0.0.1' : host;
|
||||
return results;
|
||||
};
|
||||
|
||||
const checkForSSl = (conn: string) => {
|
||||
return conn.includes('ssl=true');
|
||||
};
|
||||
|
||||
const connStringConstruct = (args: ConnectionParams & { pgConnString?: string }): ConnectionParams => {
|
||||
if (!args.pgConnString)
|
||||
return args;
|
||||
|
||||
if (typeof args.pgConnString !== 'string')
|
||||
return args;
|
||||
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
const stringArgs: any = formatter.parse(args.pgConnString);
|
||||
|
||||
const client = args.client || 'pg';
|
||||
|
||||
args.client = client;
|
||||
args.host = formatHost(stringArgs.host);
|
||||
args.database = stringArgs.database;
|
||||
args.port = stringArgs.port || '5432';
|
||||
args.user = stringArgs.user;
|
||||
args.password = stringArgs.password;
|
||||
|
||||
// ssh
|
||||
args.ssh = stringArgs.ssh || args.ssh;
|
||||
args.sshHost = stringArgs.sshHost;
|
||||
args.sshUser = stringArgs.sshUser;
|
||||
args.sshPass = stringArgs.sshPass;
|
||||
args.sshKey = stringArgs.sshKey;
|
||||
args.sshPort = stringArgs.sshPort;
|
||||
|
||||
// ssl mode
|
||||
args.ssl = checkForSSl(args.pgConnString) || args.ssl;
|
||||
args.cert = stringArgs.sslcert;
|
||||
args.key = stringArgs.sslkey;
|
||||
args.ca = stringArgs.sslrootcert;
|
||||
args.ciphers = stringArgs.ciphers;
|
||||
|
||||
return args;
|
||||
};
|
||||
|
||||
export default connStringConstruct;
|
@@ -147,7 +147,7 @@ export const useWorkspacesStore = defineStore('workspaces', {
|
||||
else
|
||||
this.selectedWorkspace = uid;
|
||||
},
|
||||
async connectWorkspace (connection: ConnectionParams & { pgConnString?: string }, args?: {mode?: string; signal?: AbortSignal}) {
|
||||
async connectWorkspace (connection: ConnectionParams & { connString?: string }, args?: {mode?: string; signal?: AbortSignal}) {
|
||||
this.workspaces = (this.workspaces as Workspace[]).map(workspace => workspace.uid === connection.uid
|
||||
? {
|
||||
...workspace,
|
||||
@@ -427,7 +427,7 @@ export const useWorkspacesStore = defineStore('workspaces', {
|
||||
|
||||
this.selectTab({ uid, tab: 0 });
|
||||
},
|
||||
async switchConnection (connection: ConnectionParams & { pgConnString?: string }) {
|
||||
async switchConnection (connection: ConnectionParams & { connString?: string }) {
|
||||
await Connection.disconnect(connection.uid);
|
||||
return this.connectWorkspace(connection, { mode: 'switch' });
|
||||
},
|
||||
|
Reference in New Issue
Block a user