diff options
| author | 2015-04-04 14:41:04 -0400 | |
|---|---|---|
| committer | 2015-04-04 14:41:04 -0400 | |
| commit | a5b034d4a9c44f9bc1e83b01de82530f8fc63013 (patch) | |
| tree | 7a358206c4aff9c33df1752c92eafec97cee2244 | |
| parent | 306d6d3ca9c9ad774d19135681a7f9805f77035f (diff) | |
Imported Upstream version 3.0.4upstream/3.0.4
340 files changed, 5658 insertions, 3858 deletions
diff --git a/Plugins/ConfigMigration/ConfigMigration_de.ts b/Plugins/ConfigMigration/ConfigMigration_de.ts index 7179052..ebaf7af 100644 --- a/Plugins/ConfigMigration/ConfigMigration_de.ts +++ b/Plugins/ConfigMigration/ConfigMigration_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_es.ts b/Plugins/ConfigMigration/ConfigMigration_es.ts index f412dc9..3854dd1 100644 --- a/Plugins/ConfigMigration/ConfigMigration_es.ts +++ b/Plugins/ConfigMigration/ConfigMigration_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_fr.ts b/Plugins/ConfigMigration/ConfigMigration_fr.ts index ff23dbb..c0ad4a6 100644 --- a/Plugins/ConfigMigration/ConfigMigration_fr.ts +++ b/Plugins/ConfigMigration/ConfigMigration_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_pl.ts b/Plugins/ConfigMigration/ConfigMigration_pl.ts index 08919fd..f2ef5d8 100644 --- a/Plugins/ConfigMigration/ConfigMigration_pl.ts +++ b/Plugins/ConfigMigration/ConfigMigration_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_pt_BR.ts b/Plugins/ConfigMigration/ConfigMigration_pt_BR.ts index d6cf37b..fb23daf 100644 --- a/Plugins/ConfigMigration/ConfigMigration_pt_BR.ts +++ b/Plugins/ConfigMigration/ConfigMigration_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_ru.ts b/Plugins/ConfigMigration/ConfigMigration_ru.ts index f487465..0337f58 100644 --- a/Plugins/ConfigMigration/ConfigMigration_ru.ts +++ b/Plugins/ConfigMigration/ConfigMigration_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_sk.ts b/Plugins/ConfigMigration/ConfigMigration_sk.ts index 84d3076..ffe6eef 100644 --- a/Plugins/ConfigMigration/ConfigMigration_sk.ts +++ b/Plugins/ConfigMigration/ConfigMigration_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/ConfigMigration_zh_CN.ts b/Plugins/ConfigMigration/ConfigMigration_zh_CN.ts index dedba47..249e493 100644 --- a/Plugins/ConfigMigration/ConfigMigration_zh_CN.ts +++ b/Plugins/ConfigMigration/ConfigMigration_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>ConfigMigration</name> <message> diff --git a/Plugins/ConfigMigration/configmigration.json b/Plugins/ConfigMigration/configmigration.json index a8c62d3..a0629c0 100644 --- a/Plugins/ConfigMigration/configmigration.json +++ b/Plugins/ConfigMigration/configmigration.json @@ -2,7 +2,7 @@ "type": "GeneralPurposePlugin", "title": "Configuration migration", "description": "Performs migration from SQLiteStudio 2.1.x configuration to version 3.0.0.", - "version": 10002, + "version": 10003, "author": "SalSoft", "gui": true } diff --git a/Plugins/ConfigMigration/configmigration.qrc b/Plugins/ConfigMigration/configmigration.qrc index af137f0..d8c40cd 100644 --- a/Plugins/ConfigMigration/configmigration.qrc +++ b/Plugins/ConfigMigration/configmigration.qrc @@ -6,5 +6,7 @@ <file>ConfigMigration_pl.qm</file> <file>ConfigMigration_ru.qm</file> <file>ConfigMigration_fr.qm</file> + <file>ConfigMigration_sk.qm</file> + <file>ConfigMigration_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/CsvExport/CsvExport_de.ts b/Plugins/CsvExport/CsvExport_de.ts index f87bc99..1d07517 100644 --- a/Plugins/CsvExport/CsvExport_de.ts +++ b/Plugins/CsvExport/CsvExport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/CsvExport_es.ts b/Plugins/CsvExport/CsvExport_es.ts index de3f0cb..09fd76a 100644 --- a/Plugins/CsvExport/CsvExport_es.ts +++ b/Plugins/CsvExport/CsvExport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/CsvExport_fr.ts b/Plugins/CsvExport/CsvExport_fr.ts index b36745a..4917c87 100644 --- a/Plugins/CsvExport/CsvExport_fr.ts +++ b/Plugins/CsvExport/CsvExport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/CsvExport_pl.ts b/Plugins/CsvExport/CsvExport_pl.ts index a925db2..a608049 100644 --- a/Plugins/CsvExport/CsvExport_pl.ts +++ b/Plugins/CsvExport/CsvExport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/CsvExport_pt_BR.ts b/Plugins/CsvExport/CsvExport_pt_BR.ts index 8f3f678..0c8b1d9 100644 --- a/Plugins/CsvExport/CsvExport_pt_BR.ts +++ b/Plugins/CsvExport/CsvExport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/CsvExport_ru.ts b/Plugins/CsvExport/CsvExport_ru.ts index 230a06f..5cf441b 100644 --- a/Plugins/CsvExport/CsvExport_ru.ts +++ b/Plugins/CsvExport/CsvExport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/CsvExport_sk.qm b/Plugins/CsvExport/CsvExport_sk.qm Binary files differindex 1776294..ea246cd 100644 --- a/Plugins/CsvExport/CsvExport_sk.qm +++ b/Plugins/CsvExport/CsvExport_sk.qm diff --git a/Plugins/CsvExport/CsvExport_sk.ts b/Plugins/CsvExport/CsvExport_sk.ts index 4a85fbd..54ab016 100644 --- a/Plugins/CsvExport/CsvExport_sk.ts +++ b/Plugins/CsvExport/CsvExport_sk.ts @@ -6,52 +6,52 @@ <message> <location filename="CsvExport.ui" line="20"/> <source>Column names in first row</source> - <translation type="unfinished"></translation> + <translation>Názvy stĺpcov v prvom riadku</translation> </message> <message> <location filename="CsvExport.ui" line="30"/> <source>Column separator:</source> - <translation type="unfinished"></translation> + <translation>Oddeľovač stĺpcov:</translation> </message> <message> <location filename="CsvExport.ui" line="41"/> <source>, (comma)</source> - <translation type="unfinished"></translation> + <translation>, (čiarka)</translation> </message> <message> <location filename="CsvExport.ui" line="46"/> <source>; (semicolon)</source> - <translation type="unfinished"></translation> + <translation>; (bodkočiarka)</translation> </message> <message> <location filename="CsvExport.ui" line="51"/> <source>\t (tab)</source> - <translation type="unfinished"></translation> + <translation>\t (tabulátor)</translation> </message> <message> <location filename="CsvExport.ui" line="56"/> <source> (whitespace)</source> - <translation type="unfinished"></translation> + <translation> (medzera)</translation> </message> <message> <location filename="CsvExport.ui" line="61"/> <source>Custom:</source> - <translation type="unfinished"></translation> + <translation>Iný:</translation> </message> <message> <location filename="CsvExport.ui" line="82"/> <source>Export NULL values as:</source> - <translation type="unfinished"></translation> + <translation>Exportovať NULL hodnoty ako:</translation> </message> <message> <location filename="CsvExport.ui" line="89"/> <source>Empty string</source> - <translation type="unfinished"></translation> + <translation>Prázdny reťazec</translation> </message> <message> <location filename="csvexport.cpp" line="42"/> <source>Enter the custom separator character.</source> - <translation type="unfinished"></translation> + <translation>Zadajte vlasntý oddeľovač.</translation> </message> </context> </TS> diff --git a/Plugins/CsvExport/CsvExport_zh_CN.ts b/Plugins/CsvExport/CsvExport_zh_CN.ts index c0c8045..e73fe4e 100644 --- a/Plugins/CsvExport/CsvExport_zh_CN.ts +++ b/Plugins/CsvExport/CsvExport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>CsvExport</name> <message> diff --git a/Plugins/CsvExport/csvexport.json b/Plugins/CsvExport/csvexport.json index d19e750..face150 100644 --- a/Plugins/CsvExport/csvexport.json +++ b/Plugins/CsvExport/csvexport.json @@ -2,6 +2,6 @@ "type": "ExportPlugin", "title": "CSV export", "description": "Provides CSV format for exporting", - "version": 10001, + "version": 10002, "author": "SalSoft" } diff --git a/Plugins/CsvExport/csvexport.qrc b/Plugins/CsvExport/csvexport.qrc index 2467458..e6660ec 100644 --- a/Plugins/CsvExport/csvexport.qrc +++ b/Plugins/CsvExport/csvexport.qrc @@ -6,5 +6,7 @@ <file>CsvExport_pl.qm</file> <file>CsvExport_ru.qm</file> <file>CsvExport_fr.qm</file> + <file>CsvExport_sk.qm</file> + <file>CsvExport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/CsvImport/CsvImport_de.ts b/Plugins/CsvImport/CsvImport_de.ts index 04dc2c3..4ebea97 100644 --- a/Plugins/CsvImport/CsvImport_de.ts +++ b/Plugins/CsvImport/CsvImport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>CsvImport</name> <message> diff --git a/Plugins/CsvImport/CsvImport_es.ts b/Plugins/CsvImport/CsvImport_es.ts index 6be4b48..14ff9c3 100644 --- a/Plugins/CsvImport/CsvImport_es.ts +++ b/Plugins/CsvImport/CsvImport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>CsvImport</name> <message> diff --git a/Plugins/CsvImport/CsvImport_fr.ts b/Plugins/CsvImport/CsvImport_fr.ts index 66d7de9..f8854e0 100644 --- a/Plugins/CsvImport/CsvImport_fr.ts +++ b/Plugins/CsvImport/CsvImport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>CsvImport</name> <message> diff --git a/Plugins/CsvImport/CsvImport_pl.ts b/Plugins/CsvImport/CsvImport_pl.ts index 7b9494f..227b16c 100644 --- a/Plugins/CsvImport/CsvImport_pl.ts +++ b/Plugins/CsvImport/CsvImport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>CsvImport</name> <message> diff --git a/Plugins/CsvImport/CsvImport_pt_BR.ts b/Plugins/CsvImport/CsvImport_pt_BR.ts index b01222f..063fc09 100644 --- a/Plugins/CsvImport/CsvImport_pt_BR.ts +++ b/Plugins/CsvImport/CsvImport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>CsvImport</name> <message> diff --git a/Plugins/CsvImport/CsvImport_ru.qm b/Plugins/CsvImport/CsvImport_ru.qm Binary files differindex 0202276..e72533e 100644 --- a/Plugins/CsvImport/CsvImport_ru.qm +++ b/Plugins/CsvImport/CsvImport_ru.qm diff --git a/Plugins/CsvImport/CsvImport_ru.ts b/Plugins/CsvImport/CsvImport_ru.ts index a38f2d1..93ecdba 100644 --- a/Plugins/CsvImport/CsvImport_ru.ts +++ b/Plugins/CsvImport/CsvImport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>CsvImport</name> <message> @@ -64,7 +64,7 @@ <message> <location filename="CsvImportOptions.ui" line="55"/> <source>First line represents CSV column names</source> - <translation type="unfinished"></translation> + <translation>Имена столбцов в первой строке</translation> </message> <message> <source>Skip first row of data</source> diff --git a/Plugins/CsvImport/CsvImport_sk.qm b/Plugins/CsvImport/CsvImport_sk.qm Binary files differindex 1776294..281fc9a 100644 --- a/Plugins/CsvImport/CsvImport_sk.qm +++ b/Plugins/CsvImport/CsvImport_sk.qm diff --git a/Plugins/CsvImport/CsvImport_sk.ts b/Plugins/CsvImport/CsvImport_sk.ts index c402357..5d915ac 100644 --- a/Plugins/CsvImport/CsvImport_sk.ts +++ b/Plugins/CsvImport/CsvImport_sk.ts @@ -6,27 +6,27 @@ <message> <location filename="csvimport.cpp" line="30"/> <source>Cannot read file %1</source> - <translation type="unfinished"></translation> + <translation>Nemôžem čítať súbor %1</translation> </message> <message> <location filename="csvimport.cpp" line="62"/> <source>Could not find any data in the file %1.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem nájsť dáta v súbore %1.</translation> </message> <message> <location filename="csvimport.cpp" line="167"/> <source>Enter the custom separator character.</source> - <translation type="unfinished"></translation> + <translation>Zadajte vlastný oddeľovač.</translation> </message> <message> <location filename="csvimport.cpp" line="181"/> <source>Enter the value that will be interpreted as a NULL.</source> - <translation type="unfinished"></translation> + <translation>Zadajte hodnotu, ktorá bude interpretovaná ako NULL.</translation> </message> <message> <location filename="csvimport.cpp" line="194"/> <source>CSV files (*.csv);;Text files (*.txt);;All files (*)</source> - <translation type="unfinished"></translation> + <translation>CSV súbory (*.csv);;Textové súbory (*.txt);;Všetky súbory (*)</translation> </message> </context> <context> @@ -34,52 +34,52 @@ <message> <location filename="CsvImportOptions.ui" line="24"/> <source>, (comma)</source> - <translation type="unfinished"></translation> + <translation>, (čiarka)</translation> </message> <message> <location filename="CsvImportOptions.ui" line="29"/> <source>; (semicolon)</source> - <translation type="unfinished"></translation> + <translation>; (bodkočiarka)</translation> </message> <message> <location filename="CsvImportOptions.ui" line="34"/> <source>\t (tab)</source> - <translation type="unfinished"></translation> + <translation>\t (tabulátor)</translation> </message> <message> <location filename="CsvImportOptions.ui" line="39"/> <source> (whitespace)</source> - <translation type="unfinished"></translation> + <translation> (medzera)</translation> </message> <message> <location filename="CsvImportOptions.ui" line="44"/> <source>Custom:</source> - <translation type="unfinished"></translation> + <translation>Iný:</translation> </message> <message> <location filename="CsvImportOptions.ui" line="52"/> <source><p>Enable this if the first data line in your CSV file represents column names. You don't want column names to be imported into the table as a regular data.</p></source> - <translation type="unfinished"></translation> + <translation><p>Zaškrtnite túto voľbu ak prvý riadok v CSV súbore obsahuje názvy stĺpcov a nechcete aby boli naimportované do tabuľky</p></translation> </message> <message> <location filename="CsvImportOptions.ui" line="55"/> <source>First line represents CSV column names</source> - <translation type="unfinished"></translation> + <translation>Názvy stĺpcov v prvom riadku</translation> </message> <message> <location filename="CsvImportOptions.ui" line="65"/> <source>Field separator:</source> - <translation type="unfinished"></translation> + <translation>Oddeľovač:</translation> </message> <message> <location filename="CsvImportOptions.ui" line="85"/> <source>NULL values:</source> - <translation type="unfinished"></translation> + <translation>NULL hodnoty:</translation> </message> <message> <location filename="CsvImportOptions.ui" line="95"/> <source>If your CSV data contains null values, define how are they represented in the CSV.</source> - <translation type="unfinished"></translation> + <translation>Ak váš CSV súbor obsahuje null hodnoty, zadajte ako sú reprezentované v CSV.</translation> </message> </context> </TS> diff --git a/Plugins/CsvImport/CsvImport_zh_CN.ts b/Plugins/CsvImport/CsvImport_zh_CN.ts index 8248169..c1958e3 100644 --- a/Plugins/CsvImport/CsvImport_zh_CN.ts +++ b/Plugins/CsvImport/CsvImport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>CsvImport</name> <message> diff --git a/Plugins/CsvImport/csvimport.json b/Plugins/CsvImport/csvimport.json index f6280fe..64f8e18 100644 --- a/Plugins/CsvImport/csvimport.json +++ b/Plugins/CsvImport/csvimport.json @@ -2,6 +2,6 @@ "type": "ImportPlugin", "title": "CSV import", "description": "CSV format support for importing data", - "version": 10002, + "version": 10003, "author": "SalSoft" } diff --git a/Plugins/CsvImport/csvimport.qrc b/Plugins/CsvImport/csvimport.qrc index b65feb0..e63d26f 100644 --- a/Plugins/CsvImport/csvimport.qrc +++ b/Plugins/CsvImport/csvimport.qrc @@ -6,5 +6,7 @@ <file>CsvImport_pl.qm</file> <file>CsvImport_ru.qm</file> <file>CsvImport_fr.qm</file> + <file>CsvImport_sk.qm</file> + <file>CsvImport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/DbSqlite2/dbsqlite2.json b/Plugins/DbSqlite2/dbsqlite2.json index 275a794..6761faf 100644 --- a/Plugins/DbSqlite2/dbsqlite2.json +++ b/Plugins/DbSqlite2/dbsqlite2.json @@ -2,6 +2,6 @@ "type": "DbPlugin", "title": "SQLite 2", "description": "Provides support for SQLite 2.* databases", - "version": 10001, + "version": 10002, "author": "SalSoft" } diff --git a/Plugins/HtmlExport/HtmlExport_de.ts b/Plugins/HtmlExport/HtmlExport_de.ts index 2f2ed17..f5463cd 100644 --- a/Plugins/HtmlExport/HtmlExport_de.ts +++ b/Plugins/HtmlExport/HtmlExport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/HtmlExport_es.ts b/Plugins/HtmlExport/HtmlExport_es.ts index 970ee6c..5f3a331 100644 --- a/Plugins/HtmlExport/HtmlExport_es.ts +++ b/Plugins/HtmlExport/HtmlExport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/HtmlExport_fr.ts b/Plugins/HtmlExport/HtmlExport_fr.ts index 6fe39b9..594670e 100644 --- a/Plugins/HtmlExport/HtmlExport_fr.ts +++ b/Plugins/HtmlExport/HtmlExport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/HtmlExport_pl.ts b/Plugins/HtmlExport/HtmlExport_pl.ts index ebe1925..3796e73 100644 --- a/Plugins/HtmlExport/HtmlExport_pl.ts +++ b/Plugins/HtmlExport/HtmlExport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/HtmlExport_pt_BR.ts b/Plugins/HtmlExport/HtmlExport_pt_BR.ts index 86b0993..66a2993 100644 --- a/Plugins/HtmlExport/HtmlExport_pt_BR.ts +++ b/Plugins/HtmlExport/HtmlExport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/HtmlExport_ru.ts b/Plugins/HtmlExport/HtmlExport_ru.ts index a62e54b..9165c02 100644 --- a/Plugins/HtmlExport/HtmlExport_ru.ts +++ b/Plugins/HtmlExport/HtmlExport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/HtmlExport_sk.qm b/Plugins/HtmlExport/HtmlExport_sk.qm Binary files differindex 1776294..29c8745 100644 --- a/Plugins/HtmlExport/HtmlExport_sk.qm +++ b/Plugins/HtmlExport/HtmlExport_sk.qm diff --git a/Plugins/HtmlExport/HtmlExport_sk.ts b/Plugins/HtmlExport/HtmlExport_sk.ts index 66e64d7..55dedbe 100644 --- a/Plugins/HtmlExport/HtmlExport_sk.ts +++ b/Plugins/HtmlExport/HtmlExport_sk.ts @@ -127,37 +127,37 @@ <message> <location filename="htmlexport.ui" line="36"/> <source>Maximum number of characters per cell:</source> - <translation type="unfinished"></translation> + <translation>Maximálny počet znakov na bunku:</translation> </message> <message> <location filename="htmlexport.ui" line="43"/> <source>Include data types in first row</source> - <translation type="unfinished"></translation> + <translation>Dátové typy pridať do prvého riadka k názvom stĺpcov</translation> </message> <message> <location filename="htmlexport.ui" line="53"/> <source>Column names as first row</source> - <translation type="unfinished"></translation> + <translation>Názvy stĺpcov ako prvý riadok</translation> </message> <message> <location filename="htmlexport.ui" line="63"/> <source>Row numbers as first column</source> - <translation type="unfinished"></translation> + <translation>Číslovanie riadkov ako prvý stĺpec</translation> </message> <message> <location filename="htmlexport.ui" line="73"/> <source>Output format</source> - <translation type="unfinished"></translation> + <translation>Výstupný formát</translation> </message> <message> <location filename="htmlexport.ui" line="79"/> <source>Format document (new lines, indentation)</source> - <translation type="unfinished"></translation> + <translation>Formátovať dokument (nové riadky, odsadenie)</translation> </message> <message> <location filename="htmlexport.ui" line="92"/> <source>Compress (everything in one line)</source> - <translation type="unfinished"></translation> + <translation>Zhustiť (všetko do jedného riadka)</translation> </message> <message> <location filename="htmlexport.ui" line="108"/> diff --git a/Plugins/HtmlExport/HtmlExport_zh_CN.ts b/Plugins/HtmlExport/HtmlExport_zh_CN.ts index fbcebf0..72750a1 100644 --- a/Plugins/HtmlExport/HtmlExport_zh_CN.ts +++ b/Plugins/HtmlExport/HtmlExport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>HtmlExport</name> <message> diff --git a/Plugins/HtmlExport/htmlexport.json b/Plugins/HtmlExport/htmlexport.json index 530a21d..2ca4b6d 100644 --- a/Plugins/HtmlExport/htmlexport.json +++ b/Plugins/HtmlExport/htmlexport.json @@ -2,6 +2,6 @@ "type": "ExportPlugin", "title": "HTML export", "description": "Provides HTML format for exporting.", - "version": 10000, + "version": 10001, "author": "SalSoft" } diff --git a/Plugins/HtmlExport/htmlexport.qrc b/Plugins/HtmlExport/htmlexport.qrc index d7b8c64..5c41bc9 100644 --- a/Plugins/HtmlExport/htmlexport.qrc +++ b/Plugins/HtmlExport/htmlexport.qrc @@ -9,5 +9,7 @@ <file>HtmlExport_pl.qm</file> <file>HtmlExport_ru.qm</file> <file>HtmlExport_fr.qm</file> + <file>HtmlExport_sk.qm</file> + <file>HtmlExport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/JsonExport/JsonExport_de.ts b/Plugins/JsonExport/JsonExport_de.ts index e345feb..15fece3 100644 --- a/Plugins/JsonExport/JsonExport_de.ts +++ b/Plugins/JsonExport/JsonExport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/JsonExport_es.ts b/Plugins/JsonExport/JsonExport_es.ts index e93d0ff..38209b9 100644 --- a/Plugins/JsonExport/JsonExport_es.ts +++ b/Plugins/JsonExport/JsonExport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/JsonExport_fr.ts b/Plugins/JsonExport/JsonExport_fr.ts index cb53aff..48af099 100644 --- a/Plugins/JsonExport/JsonExport_fr.ts +++ b/Plugins/JsonExport/JsonExport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/JsonExport_pl.ts b/Plugins/JsonExport/JsonExport_pl.ts index bdfdf8a..4a28cc2 100644 --- a/Plugins/JsonExport/JsonExport_pl.ts +++ b/Plugins/JsonExport/JsonExport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/JsonExport_pt_BR.ts b/Plugins/JsonExport/JsonExport_pt_BR.ts index 53480f6..ba1735d 100644 --- a/Plugins/JsonExport/JsonExport_pt_BR.ts +++ b/Plugins/JsonExport/JsonExport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/JsonExport_ru.ts b/Plugins/JsonExport/JsonExport_ru.ts index 5419206..61b24eb 100644 --- a/Plugins/JsonExport/JsonExport_ru.ts +++ b/Plugins/JsonExport/JsonExport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/JsonExport_sk.qm b/Plugins/JsonExport/JsonExport_sk.qm Binary files differindex 1776294..c854235 100644 --- a/Plugins/JsonExport/JsonExport_sk.qm +++ b/Plugins/JsonExport/JsonExport_sk.qm diff --git a/Plugins/JsonExport/JsonExport_sk.ts b/Plugins/JsonExport/JsonExport_sk.ts index 6fd3228..caade25 100644 --- a/Plugins/JsonExport/JsonExport_sk.ts +++ b/Plugins/JsonExport/JsonExport_sk.ts @@ -6,17 +6,17 @@ <message> <location filename="jsonexport.ui" line="20"/> <source>Output format</source> - <translation type="unfinished"></translation> + <translation>Výstupný formát</translation> </message> <message> <location filename="jsonexport.ui" line="26"/> <source>Format document (new lines, indentation)</source> - <translation type="unfinished"></translation> + <translation>Formátovať dokument (nové riadky, odsadenie)</translation> </message> <message> <location filename="jsonexport.ui" line="42"/> <source>Compress (everything in one line)</source> - <translation type="unfinished"></translation> + <translation>Zhustiť (všetko do jedného riadka)</translation> </message> </context> </TS> diff --git a/Plugins/JsonExport/JsonExport_zh_CN.ts b/Plugins/JsonExport/JsonExport_zh_CN.ts index 2102dc6..be101c4 100644 --- a/Plugins/JsonExport/JsonExport_zh_CN.ts +++ b/Plugins/JsonExport/JsonExport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>JsonExportConfig</name> <message> diff --git a/Plugins/JsonExport/jsonexport.json b/Plugins/JsonExport/jsonexport.json index c56270c..bdc6396 100644 --- a/Plugins/JsonExport/jsonexport.json +++ b/Plugins/JsonExport/jsonexport.json @@ -2,6 +2,6 @@ "type": "ExportPlugin", "title": "JSON export", "description": "Provides JSON format for exporting.", - "version": 10000, + "version": 10001, "author": "SalSoft" } diff --git a/Plugins/JsonExport/jsonexport.qrc b/Plugins/JsonExport/jsonexport.qrc index 7899199..72cd201 100644 --- a/Plugins/JsonExport/jsonexport.qrc +++ b/Plugins/JsonExport/jsonexport.qrc @@ -6,5 +6,7 @@ <file>JsonExport_pl.qm</file> <file>JsonExport_ru.qm</file> <file>JsonExport_fr.qm</file> + <file>JsonExport_sk.qm</file> + <file>JsonExport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/PdfExport/PdfExport_de.ts b/Plugins/PdfExport/PdfExport_de.ts index 6b9f49f..7e5d8e6 100644 --- a/Plugins/PdfExport/PdfExport_de.ts +++ b/Plugins/PdfExport/PdfExport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/PdfExport_es.ts b/Plugins/PdfExport/PdfExport_es.ts index 924d991..745a227 100644 --- a/Plugins/PdfExport/PdfExport_es.ts +++ b/Plugins/PdfExport/PdfExport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/PdfExport_fr.ts b/Plugins/PdfExport/PdfExport_fr.ts index 576d257..95de2a9 100644 --- a/Plugins/PdfExport/PdfExport_fr.ts +++ b/Plugins/PdfExport/PdfExport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/PdfExport_pl.ts b/Plugins/PdfExport/PdfExport_pl.ts index 5ac637d..e806995 100644 --- a/Plugins/PdfExport/PdfExport_pl.ts +++ b/Plugins/PdfExport/PdfExport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/PdfExport_pt_BR.ts b/Plugins/PdfExport/PdfExport_pt_BR.ts index 76e9fff..59df275 100644 --- a/Plugins/PdfExport/PdfExport_pt_BR.ts +++ b/Plugins/PdfExport/PdfExport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/PdfExport_ru.ts b/Plugins/PdfExport/PdfExport_ru.ts index 9f14f09..715a6ff 100644 --- a/Plugins/PdfExport/PdfExport_ru.ts +++ b/Plugins/PdfExport/PdfExport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/PdfExport_sk.qm b/Plugins/PdfExport/PdfExport_sk.qm Binary files differindex 1776294..63e21f9 100644 --- a/Plugins/PdfExport/PdfExport_sk.qm +++ b/Plugins/PdfExport/PdfExport_sk.qm diff --git a/Plugins/PdfExport/PdfExport_sk.ts b/Plugins/PdfExport/PdfExport_sk.ts index 5b14661..9a8f3e2 100644 --- a/Plugins/PdfExport/PdfExport_sk.ts +++ b/Plugins/PdfExport/PdfExport_sk.ts @@ -6,164 +6,164 @@ <message> <location filename="pdfexport.cpp" line="28"/> <source>SQLiteStudio v%1</source> - <translation type="unfinished"></translation> + <translation>SQLiteStudio v%1</translation> </message> <message> <location filename="pdfexport.cpp" line="60"/> <source>SQL query results</source> - <translation type="unfinished"></translation> + <translation>Výsledky SQL dotazu</translation> </message> <message> <location filename="pdfexport.cpp" line="89"/> <location filename="pdfexport.cpp" line="143"/> <source>Exported table: %1</source> - <translation type="unfinished"></translation> + <translation>Vyexportovaná tabuľka: %1</translation> </message> <message> <location filename="pdfexport.cpp" line="92"/> <location filename="pdfexport.cpp" line="158"/> <source>Table: %1</source> - <translation type="unfinished"></translation> + <translation>Tabuľka: %1</translation> </message> <message> <location filename="pdfexport.cpp" line="94"/> <location filename="pdfexport.cpp" line="230"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation>Stĺpec</translation> </message> <message> <location filename="pdfexport.cpp" line="94"/> <source>Data type</source> - <translation type="unfinished"></translation> + <translation>Dátový typ</translation> </message> <message> <location filename="pdfexport.cpp" line="94"/> <source>Constraints</source> - <translation type="unfinished"></translation> + <translation>Obmedzenia</translation> </message> <message> <location filename="pdfexport.cpp" line="125"/> <source>Global table constraints</source> - <translation type="unfinished"></translation> + <translation>Globálne tabuľkové obmedzenia</translation> </message> <message> <location filename="pdfexport.cpp" line="214"/> <source>Exported database: %1</source> - <translation type="unfinished"></translation> + <translation>Vyexportovaná databáza: %1</translation> </message> <message> <location filename="pdfexport.cpp" line="222"/> <source>Index: %1</source> - <translation type="unfinished"></translation> + <translation>Index: %1</translation> </message> <message> <location filename="pdfexport.cpp" line="224"/> <source>Property</source> <comment>index header</comment> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <location filename="pdfexport.cpp" line="224"/> <source>Value</source> <comment>index header</comment> - <translation type="unfinished"></translation> + <translation>Hodnota</translation> </message> <message> <location filename="pdfexport.cpp" line="227"/> <source>Indexed table</source> - <translation type="unfinished"></translation> + <translation>Indexovaná tabuľka</translation> </message> <message> <location filename="pdfexport.cpp" line="228"/> <source>Unique index</source> - <translation type="unfinished"></translation> + <translation>Jedinečný index</translation> </message> <message> <location filename="pdfexport.cpp" line="228"/> <source>Yes</source> - <translation type="unfinished"></translation> + <translation>Áno</translation> </message> <message> <location filename="pdfexport.cpp" line="228"/> <source>No</source> - <translation type="unfinished"></translation> + <translation>Nie</translation> </message> <message> <location filename="pdfexport.cpp" line="230"/> <source>Collation</source> - <translation type="unfinished"></translation> + <translation>Porovnávanie</translation> </message> <message> <location filename="pdfexport.cpp" line="230"/> <source>Sort order</source> - <translation type="unfinished"></translation> + <translation>Zoradenie</translation> </message> <message> <location filename="pdfexport.cpp" line="246"/> <source>Partial index condition</source> - <translation type="unfinished"></translation> + <translation>Podmienka parciálneho indexu</translation> </message> <message> <location filename="pdfexport.cpp" line="260"/> <source>Trigger: %1</source> - <translation type="unfinished"></translation> + <translation>Spúšťač: %1</translation> </message> <message> <location filename="pdfexport.cpp" line="262"/> <source>Property</source> <comment>trigger header</comment> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <location filename="pdfexport.cpp" line="262"/> <source>Value</source> <comment>trigger header</comment> - <translation type="unfinished"></translation> + <translation>Hodnota</translation> </message> <message> <location filename="pdfexport.cpp" line="264"/> <source>Activation time</source> - <translation type="unfinished"></translation> + <translation>Aktivačný čas</translation> </message> <message> <location filename="pdfexport.cpp" line="267"/> <source>For action</source> - <translation type="unfinished"></translation> + <translation>Pre akciu</translation> </message> <message> <location filename="pdfexport.cpp" line="271"/> <source>On view</source> - <translation type="unfinished"></translation> + <translation>Na pohľade</translation> </message> <message> <location filename="pdfexport.cpp" line="273"/> <source>On table</source> - <translation type="unfinished"></translation> + <translation>Na tabuľke</translation> </message> <message> <location filename="pdfexport.cpp" line="278"/> <source>Activation condition</source> - <translation type="unfinished"></translation> + <translation>Aktivačná podmienka</translation> </message> <message> <location filename="pdfexport.cpp" line="284"/> <source>Code executed</source> - <translation type="unfinished"></translation> + <translation>Vykonaný kód</translation> </message> <message> <location filename="pdfexport.cpp" line="296"/> <source>View: %1</source> - <translation type="unfinished"></translation> + <translation>Pohľad: %1</translation> </message> <message> <location filename="pdfexport.cpp" line="297"/> <source>Query:</source> - <translation type="unfinished"></translation> + <translation>Dotaz:</translation> </message> <message> <location filename="pdfexport.cpp" line="649"/> <source>Document generated with SQLiteStudio v%1</source> - <translation type="unfinished"></translation> + <translation>Dokument vygenerovaný programom SQLiteStudio v%1</translation> </message> </context> <context> @@ -171,32 +171,32 @@ <message> <location filename="pdfexport.ui" line="20"/> <source>Size and layout</source> - <translation type="unfinished"></translation> + <translation>Veľkosť a rozvrhnutie</translation> </message> <message> <location filename="pdfexport.ui" line="36"/> <source>Page size:</source> - <translation type="unfinished"></translation> + <translation>Veľkosť strany:</translation> </message> <message> <location filename="pdfexport.ui" line="63"/> <source>Right margin:</source> - <translation type="unfinished"></translation> + <translation>Pravý okraj:</translation> </message> <message> <location filename="pdfexport.ui" line="70"/> <source>Left margin:</source> - <translation type="unfinished"></translation> + <translation>Ľavý okraj:</translation> </message> <message> <location filename="pdfexport.ui" line="77"/> <source>Cell padding:</source> - <translation type="unfinished"></translation> + <translation>Odsadenie od okrajov bunky:</translation> </message> <message> <location filename="pdfexport.ui" line="84"/> <source>Limit characters in single cell:</source> - <translation type="unfinished"></translation> + <translation>Maximálny počet znakov v jednej bunke:</translation> </message> <message> <location filename="pdfexport.ui" line="91"/> @@ -205,52 +205,52 @@ <location filename="pdfexport.ui" line="132"/> <location filename="pdfexport.ui" line="156"/> <source>mm</source> - <translation type="unfinished"></translation> + <translation>mm</translation> </message> <message> <location filename="pdfexport.ui" line="139"/> <source>Bottom margin:</source> - <translation type="unfinished"></translation> + <translation>Spodný okraj:</translation> </message> <message> <location filename="pdfexport.ui" line="163"/> <source>Top margin:</source> - <translation type="unfinished"></translation> + <translation>Horný okraj:</translation> </message> <message> <location filename="pdfexport.ui" line="183"/> <source>Font</source> - <translation type="unfinished"></translation> + <translation>Písmo</translation> </message> <message> <location filename="pdfexport.ui" line="206"/> <source>Colors</source> - <translation type="unfinished"></translation> + <translation>Farby</translation> </message> <message> <location filename="pdfexport.ui" line="212"/> <source>Headers background:</source> - <translation type="unfinished"></translation> + <translation>Farba pozadia štruktúr:</translation> </message> <message> <location filename="pdfexport.ui" line="235"/> <source>NULL value color:</source> - <translation type="unfinished"></translation> + <translation>Farba NULL hodnoty:</translation> </message> <message> <location filename="pdfexport.ui" line="261"/> <source>Other settings</source> - <translation type="unfinished"></translation> + <translation>Iné nastavenia</translation> </message> <message> <location filename="pdfexport.ui" line="267"/> <source>Print row numbers for data</source> - <translation type="unfinished"></translation> + <translation>Číslovanie dátových riadkov</translation> </message> <message> <location filename="pdfexport.ui" line="277"/> <source>Print page numbers</source> - <translation type="unfinished"></translation> + <translation>Číslovanie strán</translation> </message> </context> </TS> diff --git a/Plugins/PdfExport/PdfExport_zh_CN.ts b/Plugins/PdfExport/PdfExport_zh_CN.ts index ec250b9..b570ede 100644 --- a/Plugins/PdfExport/PdfExport_zh_CN.ts +++ b/Plugins/PdfExport/PdfExport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>PdfExport</name> <message> diff --git a/Plugins/PdfExport/pdfexport.json b/Plugins/PdfExport/pdfexport.json index 5f1e2e4..9f64d2f 100644 --- a/Plugins/PdfExport/pdfexport.json +++ b/Plugins/PdfExport/pdfexport.json @@ -2,7 +2,7 @@ "type": "ExportPlugin", "title": "PDF export", "description": "Provides PDF format for exporting.", - "version": 10000, + "version": 10001, "author": "SalSoft", "gui": true } diff --git a/Plugins/PdfExport/pdfexport.qrc b/Plugins/PdfExport/pdfexport.qrc index 857a310..1e079fd 100644 --- a/Plugins/PdfExport/pdfexport.qrc +++ b/Plugins/PdfExport/pdfexport.qrc @@ -6,5 +6,7 @@ <file>PdfExport_pl.qm</file> <file>PdfExport_ru.qm</file> <file>PdfExport_fr.qm</file> + <file>PdfExport_sk.qm</file> + <file>PdfExport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/Printing/Printing_de.ts b/Plugins/Printing/Printing_de.ts index 9ce2cb4..6a165a2 100644 --- a/Plugins/Printing/Printing_de.ts +++ b/Plugins/Printing/Printing_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_es.ts b/Plugins/Printing/Printing_es.ts index d76730d..cad9a2f 100644 --- a/Plugins/Printing/Printing_es.ts +++ b/Plugins/Printing/Printing_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_fr.ts b/Plugins/Printing/Printing_fr.ts index 9d86ad5..c851a95 100644 --- a/Plugins/Printing/Printing_fr.ts +++ b/Plugins/Printing/Printing_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_pl.ts b/Plugins/Printing/Printing_pl.ts index b372ef9..b56a3ce 100644 --- a/Plugins/Printing/Printing_pl.ts +++ b/Plugins/Printing/Printing_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_pt_BR.ts b/Plugins/Printing/Printing_pt_BR.ts index c003b38..61016f0 100644 --- a/Plugins/Printing/Printing_pt_BR.ts +++ b/Plugins/Printing/Printing_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_ru.ts b/Plugins/Printing/Printing_ru.ts index 6a63c83..642f912 100644 --- a/Plugins/Printing/Printing_ru.ts +++ b/Plugins/Printing/Printing_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_sk.ts b/Plugins/Printing/Printing_sk.ts index 4e35c9d..8dce4a8 100644 --- a/Plugins/Printing/Printing_sk.ts +++ b/Plugins/Printing/Printing_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/Printing_zh_CN.ts b/Plugins/Printing/Printing_zh_CN.ts index 7c6dcfe..0b1b255 100644 --- a/Plugins/Printing/Printing_zh_CN.ts +++ b/Plugins/Printing/Printing_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>Printing</name> <message> diff --git a/Plugins/Printing/printing.json b/Plugins/Printing/printing.json index 101f07b..5313186 100644 --- a/Plugins/Printing/printing.json +++ b/Plugins/Printing/printing.json @@ -2,7 +2,7 @@ "type": "GeneralPurposePlugin", "title": "Printing", "description": "Provides printing support.", - "version": 10001, + "version": 10002, "author": "SalSoft", "gui": true, "dependencies": "PdfExport" diff --git a/Plugins/Printing/printing.qrc b/Plugins/Printing/printing.qrc index dc7f27c..c4be754 100644 --- a/Plugins/Printing/printing.qrc +++ b/Plugins/Printing/printing.qrc @@ -6,5 +6,7 @@ <file>Printing_pl.qm</file> <file>Printing_ru.qm</file> <file>Printing_fr.qm</file> + <file>Printing_sk.qm</file> + <file>Printing_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/RegExpImport/RegExpImport_de.ts b/Plugins/RegExpImport/RegExpImport_de.ts index e73d909..2a30835 100644 --- a/Plugins/RegExpImport/RegExpImport_de.ts +++ b/Plugins/RegExpImport/RegExpImport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_es.ts b/Plugins/RegExpImport/RegExpImport_es.ts index fd5ae74..c58d204 100644 --- a/Plugins/RegExpImport/RegExpImport_es.ts +++ b/Plugins/RegExpImport/RegExpImport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_fr.ts b/Plugins/RegExpImport/RegExpImport_fr.ts index 6ab0b2e..5a6e957 100644 --- a/Plugins/RegExpImport/RegExpImport_fr.ts +++ b/Plugins/RegExpImport/RegExpImport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_pl.ts b/Plugins/RegExpImport/RegExpImport_pl.ts index a5d567c..d55ed25 100644 --- a/Plugins/RegExpImport/RegExpImport_pl.ts +++ b/Plugins/RegExpImport/RegExpImport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_pt_BR.ts b/Plugins/RegExpImport/RegExpImport_pt_BR.ts index b861545..0af41e7 100644 --- a/Plugins/RegExpImport/RegExpImport_pt_BR.ts +++ b/Plugins/RegExpImport/RegExpImport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_ru.ts b/Plugins/RegExpImport/RegExpImport_ru.ts index 09ad9a9..edcd7f4 100644 --- a/Plugins/RegExpImport/RegExpImport_ru.ts +++ b/Plugins/RegExpImport/RegExpImport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_sk.ts b/Plugins/RegExpImport/RegExpImport_sk.ts index 9b34ed7..25068a5 100644 --- a/Plugins/RegExpImport/RegExpImport_sk.ts +++ b/Plugins/RegExpImport/RegExpImport_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/RegExpImport_zh_CN.ts b/Plugins/RegExpImport/RegExpImport_zh_CN.ts index 97a39d5..c361148 100644 --- a/Plugins/RegExpImport/RegExpImport_zh_CN.ts +++ b/Plugins/RegExpImport/RegExpImport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>RegExpImport</name> <message> diff --git a/Plugins/RegExpImport/regexpimport.json b/Plugins/RegExpImport/regexpimport.json index 8a0f746..3e9323e 100644 --- a/Plugins/RegExpImport/regexpimport.json +++ b/Plugins/RegExpImport/regexpimport.json @@ -2,6 +2,6 @@ "type": "ImportPlugin", "title": "RegExp import", "description": "Importing data from text files using regular expression.", - "version": 10000, + "version": 10001, "author": "SalSoft" } diff --git a/Plugins/RegExpImport/regexpimport.qrc b/Plugins/RegExpImport/regexpimport.qrc index e1cb912..2fb1a4f 100644 --- a/Plugins/RegExpImport/regexpimport.qrc +++ b/Plugins/RegExpImport/regexpimport.qrc @@ -6,5 +6,7 @@ <file>RegExpImport_pl.qm</file> <file>RegExpImport_ru.qm</file> <file>RegExpImport_fr.qm</file> + <file>RegExpImport_sk.qm</file> + <file>RegExpImport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_de.ts b/Plugins/ScriptingTcl/ScriptingTcl_de.ts index adb7f21..cbd7c60 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_de.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_es.ts b/Plugins/ScriptingTcl/ScriptingTcl_es.ts index 502c856..f2eaa40 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_es.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_fr.ts b/Plugins/ScriptingTcl/ScriptingTcl_fr.ts index b308973..aab5121 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_fr.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_pl.ts b/Plugins/ScriptingTcl/ScriptingTcl_pl.ts index be6a580..acbf1c9 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_pl.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_pt_BR.ts b/Plugins/ScriptingTcl/ScriptingTcl_pt_BR.ts index a0ffcb8..8eea04b 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_pt_BR.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_ru.ts b/Plugins/ScriptingTcl/ScriptingTcl_ru.ts index 4fd66de..9514a37 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_ru.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_sk.ts b/Plugins/ScriptingTcl/ScriptingTcl_sk.ts index ec050a9..fa64a4a 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_sk.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/ScriptingTcl_zh_CN.ts b/Plugins/ScriptingTcl/ScriptingTcl_zh_CN.ts index 0355116..d213109 100644 --- a/Plugins/ScriptingTcl/ScriptingTcl_zh_CN.ts +++ b/Plugins/ScriptingTcl/ScriptingTcl_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>ScriptingTcl</name> <message> diff --git a/Plugins/ScriptingTcl/scriptingtcl.json b/Plugins/ScriptingTcl/scriptingtcl.json index 108d7c0..1496b50 100644 --- a/Plugins/ScriptingTcl/scriptingtcl.json +++ b/Plugins/ScriptingTcl/scriptingtcl.json @@ -2,6 +2,6 @@ "type": "ScriptingPlugin", "title": "Tcl scripting", "description": "Provides Tcl scripting language support for SQLiteStudio.", - "version": 10001, + "version": 10002, "author": "SalSoft" } diff --git a/Plugins/ScriptingTcl/scriptingtcl.qrc b/Plugins/ScriptingTcl/scriptingtcl.qrc index 5d81a7b..8f29a12 100644 --- a/Plugins/ScriptingTcl/scriptingtcl.qrc +++ b/Plugins/ScriptingTcl/scriptingtcl.qrc @@ -6,5 +6,7 @@ <file>ScriptingTcl_pl.qm</file> <file>ScriptingTcl_ru.qm</file> <file>ScriptingTcl_fr.qm</file> + <file>ScriptingTcl_sk.qm</file> + <file>ScriptingTcl_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts index bd56eba..a83f5df 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts index 15b85f4..4d873e5 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts index 519235f..8a9178b 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts index b73d4ad..5cfbf32 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts index 8921d18..b89804a 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts index 0212e14..a5656d8 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts index 24086e8..407cc6e 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts index a3296eb..3c80603 100644 --- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts +++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>QObject</name> <message> diff --git a/Plugins/SqlEnterpriseFormatter/formataltertable.cpp b/Plugins/SqlEnterpriseFormatter/formataltertable.cpp index d562e1b..0f9a8ac 100644 --- a/Plugins/SqlEnterpriseFormatter/formataltertable.cpp +++ b/Plugins/SqlEnterpriseFormatter/formataltertable.cpp @@ -8,6 +8,7 @@ FormatAlterTable::FormatAlterTable(SqliteAlterTable* alterTable) : void FormatAlterTable::formatInternal() { + handleExplainQuery(alterTable); withKeyword("ALTER").withKeyword("TABLE"); if (!alterTable->database.isNull()) diff --git a/Plugins/SqlEnterpriseFormatter/formatanalyze.cpp b/Plugins/SqlEnterpriseFormatter/formatanalyze.cpp index 1b7a939..887fc52 100644 --- a/Plugins/SqlEnterpriseFormatter/formatanalyze.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatanalyze.cpp @@ -8,6 +8,7 @@ FormatAnalyze::FormatAnalyze(SqliteAnalyze* analyze) : void FormatAnalyze::formatInternal() { + handleExplainQuery(analyze); withKeyword("ANALYZE"); if (!analyze->database.isNull()) diff --git a/Plugins/SqlEnterpriseFormatter/formatattach.cpp b/Plugins/SqlEnterpriseFormatter/formatattach.cpp index e969495..8ba3f3e 100644 --- a/Plugins/SqlEnterpriseFormatter/formatattach.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatattach.cpp @@ -9,6 +9,7 @@ FormatAttach::FormatAttach(SqliteAttach* att) : void FormatAttach::formatInternal() { + handleExplainQuery(att); withKeyword("ATTACH"); if (att->databaseKw) diff --git a/Plugins/SqlEnterpriseFormatter/formatbegintrans.cpp b/Plugins/SqlEnterpriseFormatter/formatbegintrans.cpp index 5a70d61..55144dc 100644 --- a/Plugins/SqlEnterpriseFormatter/formatbegintrans.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatbegintrans.cpp @@ -8,6 +8,7 @@ FormatBeginTrans::FormatBeginTrans(SqliteBeginTrans* bt) : void FormatBeginTrans::formatInternal() { + handleExplainQuery(bt); withKeyword("BEGIN"); if (bt->type != SqliteBeginTrans::Type::null) diff --git a/Plugins/SqlEnterpriseFormatter/formatcommittrans.cpp b/Plugins/SqlEnterpriseFormatter/formatcommittrans.cpp index 7fdafa3..5e69f09 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcommittrans.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcommittrans.cpp @@ -8,6 +8,7 @@ FormatCommitTrans::FormatCommitTrans(SqliteCommitTrans* ct) : void FormatCommitTrans::formatInternal() { + handleExplainQuery(ct); if (ct->endKw) withKeyword("END"); else diff --git a/Plugins/SqlEnterpriseFormatter/formatcopy.cpp b/Plugins/SqlEnterpriseFormatter/formatcopy.cpp index fa07d48..18ce28c 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcopy.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcopy.cpp @@ -8,6 +8,7 @@ FormatCopy::FormatCopy(SqliteCopy* copy) : void FormatCopy::formatInternal() { + handleExplainQuery(copy); withKeyword("COPY"); if (copy->onConflict != SqliteConflictAlgo::null) withKeyword("OR").withKeyword(sqliteConflictAlgo(copy->onConflict)); diff --git a/Plugins/SqlEnterpriseFormatter/formatcreateindex.cpp b/Plugins/SqlEnterpriseFormatter/formatcreateindex.cpp index cc8f3f6..ac5fd7c 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcreateindex.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcreateindex.cpp @@ -9,6 +9,7 @@ FormatCreateIndex::FormatCreateIndex(SqliteCreateIndex* createIndex) : void FormatCreateIndex::formatInternal() { + handleExplainQuery(createIndex); withKeyword("CREATE"); if (createIndex->uniqueKw) withKeyword("UNIQUE"); diff --git a/Plugins/SqlEnterpriseFormatter/formatcreatetable.cpp b/Plugins/SqlEnterpriseFormatter/formatcreatetable.cpp index d37239a..d1f0996 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcreatetable.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcreatetable.cpp @@ -9,6 +9,7 @@ FormatCreateTable::FormatCreateTable(SqliteCreateTable* createTable) : void FormatCreateTable::formatInternal() { + handleExplainQuery(createTable); withKeyword("CREATE"); if (createTable->tempKw) withKeyword("TEMP"); diff --git a/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp b/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp index d05d8cf..01351e6 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcreatetrigger.cpp @@ -8,6 +8,7 @@ FormatCreateTrigger::FormatCreateTrigger(SqliteCreateTrigger* createTrig) : void FormatCreateTrigger::formatInternal() { + handleExplainQuery(createTrig); withKeyword("CREATE"); if (createTrig->tempKw) withKeyword("TEMP"); diff --git a/Plugins/SqlEnterpriseFormatter/formatcreateview.cpp b/Plugins/SqlEnterpriseFormatter/formatcreateview.cpp index 4fe1c27..e8d0351 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcreateview.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcreateview.cpp @@ -9,6 +9,7 @@ FormatCreateView::FormatCreateView(SqliteCreateView* createView) : void FormatCreateView::formatInternal() { + handleExplainQuery(createView); withKeyword("CREATE"); if (createView->tempKw) withKeyword("TEMP"); diff --git a/Plugins/SqlEnterpriseFormatter/formatcreatevirtualtable.cpp b/Plugins/SqlEnterpriseFormatter/formatcreatevirtualtable.cpp index c702846..7525667 100644 --- a/Plugins/SqlEnterpriseFormatter/formatcreatevirtualtable.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatcreatevirtualtable.cpp @@ -9,6 +9,7 @@ FormatCreateVirtualTable::FormatCreateVirtualTable(SqliteCreateVirtualTable* cvt void FormatCreateVirtualTable::formatInternal() { + handleExplainQuery(cvt); withKeyword("CREATE").withKeyword("VIRTUAL").withKeyword("TABLE"); if (cvt->ifNotExistsKw) withKeyword("IF").withKeyword("NOT").withKeyword("EXISTS"); diff --git a/Plugins/SqlEnterpriseFormatter/formatdelete.cpp b/Plugins/SqlEnterpriseFormatter/formatdelete.cpp index ca6ac5b..fc154e2 100644 --- a/Plugins/SqlEnterpriseFormatter/formatdelete.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatdelete.cpp @@ -10,6 +10,7 @@ FormatDelete::FormatDelete(SqliteDelete* del) : void FormatDelete::formatInternal() { + handleExplainQuery(del); if (del->with) withStatement(del->with); diff --git a/Plugins/SqlEnterpriseFormatter/formatdetach.cpp b/Plugins/SqlEnterpriseFormatter/formatdetach.cpp index e788da7..412ecb5 100644 --- a/Plugins/SqlEnterpriseFormatter/formatdetach.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatdetach.cpp @@ -9,6 +9,7 @@ FormatDetach::FormatDetach(SqliteDetach* detach) : void FormatDetach::formatInternal() { + handleExplainQuery(detach); withKeyword("DETACH"); if (detach->databaseKw) diff --git a/Plugins/SqlEnterpriseFormatter/formatdropindex.cpp b/Plugins/SqlEnterpriseFormatter/formatdropindex.cpp index 1e85bb8..9ff6324 100644 --- a/Plugins/SqlEnterpriseFormatter/formatdropindex.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatdropindex.cpp @@ -8,6 +8,7 @@ FormatDropIndex::FormatDropIndex(SqliteDropIndex* dropIndex) : void FormatDropIndex::formatInternal() { + handleExplainQuery(dropIndex); withKeyword("DROP").withKeyword("INDEX"); if (dropIndex->ifExistsKw) diff --git a/Plugins/SqlEnterpriseFormatter/formatdroptable.cpp b/Plugins/SqlEnterpriseFormatter/formatdroptable.cpp index 775adfe..986bee5 100644 --- a/Plugins/SqlEnterpriseFormatter/formatdroptable.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatdroptable.cpp @@ -8,6 +8,7 @@ FormatDropTable::FormatDropTable(SqliteDropTable* dropTable) : void FormatDropTable::formatInternal() { + handleExplainQuery(dropTable); withKeyword("DROP").withKeyword("TABLE"); if (dropTable->ifExistsKw) diff --git a/Plugins/SqlEnterpriseFormatter/formatdroptrigger.cpp b/Plugins/SqlEnterpriseFormatter/formatdroptrigger.cpp index ca8caa8..da75c66 100644 --- a/Plugins/SqlEnterpriseFormatter/formatdroptrigger.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatdroptrigger.cpp @@ -8,6 +8,7 @@ FormatDropTrigger::FormatDropTrigger(SqliteDropTrigger* dropTrig) : void FormatDropTrigger::formatInternal() { + handleExplainQuery(dropTrig); withKeyword("DROP").withKeyword("TRIGGER"); if (dropTrig->ifExistsKw) diff --git a/Plugins/SqlEnterpriseFormatter/formatdropview.cpp b/Plugins/SqlEnterpriseFormatter/formatdropview.cpp index 965d607..a8160e9 100644 --- a/Plugins/SqlEnterpriseFormatter/formatdropview.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatdropview.cpp @@ -8,6 +8,7 @@ FormatDropView::FormatDropView(SqliteDropView* dropView) : void FormatDropView::formatInternal() { + handleExplainQuery(dropView); withKeyword("DROP").withKeyword("VIEW"); if (dropView->ifExistsKw) diff --git a/Plugins/SqlEnterpriseFormatter/formatinsert.cpp b/Plugins/SqlEnterpriseFormatter/formatinsert.cpp index 1ff0535..6c1e763 100644 --- a/Plugins/SqlEnterpriseFormatter/formatinsert.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatinsert.cpp @@ -10,6 +10,7 @@ FormatInsert::FormatInsert(SqliteInsert* insert) : void FormatInsert::formatInternal() { + handleExplainQuery(insert); if (insert->replaceKw) { withStatement(insert->with); diff --git a/Plugins/SqlEnterpriseFormatter/formatpragma.cpp b/Plugins/SqlEnterpriseFormatter/formatpragma.cpp index 0b6491a..ee30aa9 100644 --- a/Plugins/SqlEnterpriseFormatter/formatpragma.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatpragma.cpp @@ -8,6 +8,7 @@ FormatPragma::FormatPragma(SqlitePragma* pragma) : void FormatPragma::formatInternal() { + handleExplainQuery(pragma); withKeyword("PRAGMA"); if (!pragma->database.isNull()) diff --git a/Plugins/SqlEnterpriseFormatter/formatreindex.cpp b/Plugins/SqlEnterpriseFormatter/formatreindex.cpp index 441032e..1361396 100644 --- a/Plugins/SqlEnterpriseFormatter/formatreindex.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatreindex.cpp @@ -8,6 +8,7 @@ FormatReindex::FormatReindex(SqliteReindex* reindex) : void FormatReindex::formatInternal() { + handleExplainQuery(reindex); withKeyword("REINDEX"); if (!reindex->database.isNull()) withId(reindex->database).withIdDot(); diff --git a/Plugins/SqlEnterpriseFormatter/formatrelease.cpp b/Plugins/SqlEnterpriseFormatter/formatrelease.cpp index 52c0b24..da86662 100644 --- a/Plugins/SqlEnterpriseFormatter/formatrelease.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatrelease.cpp @@ -8,6 +8,7 @@ FormatRelease::FormatRelease(SqliteRelease* release) : void FormatRelease::formatInternal() { + handleExplainQuery(release); withKeyword("RELEASE"); if (release->savepointKw) withKeyword("SAVEPOINT"); diff --git a/Plugins/SqlEnterpriseFormatter/formatrollback.cpp b/Plugins/SqlEnterpriseFormatter/formatrollback.cpp index c55f5cc..a7c9aed 100644 --- a/Plugins/SqlEnterpriseFormatter/formatrollback.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatrollback.cpp @@ -8,6 +8,7 @@ FormatRollback::FormatRollback(SqliteRollback* rollback) : void FormatRollback::formatInternal() { + handleExplainQuery(rollback); withKeyword("ROLLBACK"); if (rollback->transactionKw) withKeyword("TRANSACTION"); diff --git a/Plugins/SqlEnterpriseFormatter/formatsavepoint.cpp b/Plugins/SqlEnterpriseFormatter/formatsavepoint.cpp index 3f34679..5ce474f 100644 --- a/Plugins/SqlEnterpriseFormatter/formatsavepoint.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatsavepoint.cpp @@ -8,5 +8,6 @@ FormatSavepoint::FormatSavepoint(SqliteSavepoint* savepoint) : void FormatSavepoint::formatInternal() { + handleExplainQuery(savepoint); withKeyword("SAVEPOINT").withId(savepoint->name).withSemicolon(); } diff --git a/Plugins/SqlEnterpriseFormatter/formatselect.cpp b/Plugins/SqlEnterpriseFormatter/formatselect.cpp index 50aa8c2..4d2a229 100644 --- a/Plugins/SqlEnterpriseFormatter/formatselect.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatselect.cpp @@ -9,6 +9,7 @@ FormatSelect::FormatSelect(SqliteSelect* select) : void FormatSelect::formatInternal() { + handleExplainQuery(select); markKeywordLineUp("SELECT"); if (select->with) diff --git a/Plugins/SqlEnterpriseFormatter/formatstatement.cpp b/Plugins/SqlEnterpriseFormatter/formatstatement.cpp index be5bc49..dfdbb14 100644 --- a/Plugins/SqlEnterpriseFormatter/formatstatement.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatstatement.cpp @@ -453,6 +453,16 @@ FormatStatement&FormatStatement::withSeparator(FormatStatement::ListSeparator se return *this; } +void FormatStatement::handleExplainQuery(SqliteQuery* query) +{ + if (query->explain) + { + withKeyword("EXPLAIN"); + if (query->queryPlan) + withKeyword("QUERY").withKeyword("PLAN"); + } +} + FormatStatement& FormatStatement::withIdList(const QStringList& names, const QString& indentName, ListSeparator sep) { if (!indentName.isNull()) diff --git a/Plugins/SqlEnterpriseFormatter/formatstatement.h b/Plugins/SqlEnterpriseFormatter/formatstatement.h index 1702a3d..6bd0fea 100644 --- a/Plugins/SqlEnterpriseFormatter/formatstatement.h +++ b/Plugins/SqlEnterpriseFormatter/formatstatement.h @@ -103,6 +103,8 @@ class FormatStatement } protected: + void handleExplainQuery(SqliteQuery* query); + virtual void formatInternal() = 0; virtual void resetInternal(); diff --git a/Plugins/SqlEnterpriseFormatter/formatupdate.cpp b/Plugins/SqlEnterpriseFormatter/formatupdate.cpp index ffc3911..54ce927 100644 --- a/Plugins/SqlEnterpriseFormatter/formatupdate.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatupdate.cpp @@ -10,6 +10,7 @@ FormatUpdate::FormatUpdate(SqliteUpdate* upd) : void FormatUpdate::formatInternal() { + handleExplainQuery(upd); if (upd->with) withStatement(upd->with); diff --git a/Plugins/SqlEnterpriseFormatter/formatvacuum.cpp b/Plugins/SqlEnterpriseFormatter/formatvacuum.cpp index 29b95e4..8cbff57 100644 --- a/Plugins/SqlEnterpriseFormatter/formatvacuum.cpp +++ b/Plugins/SqlEnterpriseFormatter/formatvacuum.cpp @@ -1,4 +1,5 @@ #include "formatvacuum.h" +#include "parser/ast/sqlitevacuum.h" FormatVacuum::FormatVacuum(SqliteVacuum* vacuum) : vacuum(vacuum) @@ -7,5 +8,6 @@ FormatVacuum::FormatVacuum(SqliteVacuum* vacuum) : void FormatVacuum::formatInternal() { + handleExplainQuery(vacuum); withKeyword("VACUUM").withSemicolon(); } diff --git a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.json b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.json index 43095c2..85d6414 100644 --- a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.json +++ b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.json @@ -2,6 +2,6 @@ "type": "CodeFormatterPlugin", "title": "SQL Enterprise", "description": "Advanced SQL formatter.", - "version": 10004, + "version": 10005, "author": "SalSoft" } diff --git a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.qrc b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.qrc index 4a62ae6..00b290f 100644 --- a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.qrc +++ b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.qrc @@ -6,5 +6,7 @@ <file>SqlEnterpriseFormatter_pl.qm</file> <file>SqlEnterpriseFormatter_ru.qm</file> <file>SqlEnterpriseFormatter_fr.qm</file> + <file>SqlEnterpriseFormatter_sk.qm</file> + <file>SqlEnterpriseFormatter_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/SqlExport/SqlExport_de.ts b/Plugins/SqlExport/SqlExport_de.ts index 9346fcd..5313de2 100644 --- a/Plugins/SqlExport/SqlExport_de.ts +++ b/Plugins/SqlExport/SqlExport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation type="unfinished"></translation> </message> diff --git a/Plugins/SqlExport/SqlExport_es.ts b/Plugins/SqlExport/SqlExport_es.ts index 87c95b0..2ff1ffa 100644 --- a/Plugins/SqlExport/SqlExport_es.ts +++ b/Plugins/SqlExport/SqlExport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation type="unfinished"></translation> </message> diff --git a/Plugins/SqlExport/SqlExport_fr.ts b/Plugins/SqlExport/SqlExport_fr.ts index 7ffe713..02c2cbc 100644 --- a/Plugins/SqlExport/SqlExport_fr.ts +++ b/Plugins/SqlExport/SqlExport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation>-- Table: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation>-- Indéxe: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation>-- Déclencheur: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation>-- Vue: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation>-- Fichier généré par SQLiteStudio v%1sur %2</translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation>-- Encodage texte utilisé: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation>Nom de table pour la déclaration INSERT est obligatoire.</translation> </message> diff --git a/Plugins/SqlExport/SqlExport_pl.ts b/Plugins/SqlExport/SqlExport_pl.ts index 5fc187b..7c8a3f5 100644 --- a/Plugins/SqlExport/SqlExport_pl.ts +++ b/Plugins/SqlExport/SqlExport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation>-- Tabela: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation>-- Indeks: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation>-- Wyzwalacz: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation>-- Widok: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation>-- Plik wygenerowany przez SQLiteStudio v%1 dnia %2</translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation>-- Użyte kodowanie tekstu: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation>Nazwa tabeli dla zapytania INSERT jest obowiązkowa.</translation> </message> diff --git a/Plugins/SqlExport/SqlExport_pt_BR.ts b/Plugins/SqlExport/SqlExport_pt_BR.ts index 803c9dc..a781f3a 100644 --- a/Plugins/SqlExport/SqlExport_pt_BR.ts +++ b/Plugins/SqlExport/SqlExport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation type="unfinished"></translation> </message> diff --git a/Plugins/SqlExport/SqlExport_ru.ts b/Plugins/SqlExport/SqlExport_ru.ts index 9b03eaf..b6b1cd8 100644 --- a/Plugins/SqlExport/SqlExport_ru.ts +++ b/Plugins/SqlExport/SqlExport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation>-- Таблица: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation>-- Индекс: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation>-- Триггер: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation>-- Представление: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation>-- Файл сгенерирован с помощью SQLiteStudio v%1 в %2</translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation>-- Использованная кодировка текста: %1</translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation>Имя таблицы для конструкций INSERT обязательно.</translation> </message> diff --git a/Plugins/SqlExport/SqlExport_sk.ts b/Plugins/SqlExport/SqlExport_sk.ts index 6494355..ef6a4bc 100644 --- a/Plugins/SqlExport/SqlExport_sk.ts +++ b/Plugins/SqlExport/SqlExport_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation type="unfinished"></translation> </message> diff --git a/Plugins/SqlExport/SqlExport_zh_CN.ts b/Plugins/SqlExport/SqlExport_zh_CN.ts index 1d81d3f..d29cae8 100644 --- a/Plugins/SqlExport/SqlExport_zh_CN.ts +++ b/Plugins/SqlExport/SqlExport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>SqlExport</name> <message> @@ -14,32 +14,32 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="167"/> + <location filename="sqlexport.cpp" line="168"/> <source>-- Index: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="184"/> + <location filename="sqlexport.cpp" line="185"/> <source>-- Trigger: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="201"/> + <location filename="sqlexport.cpp" line="202"/> <source>-- View: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="215"/> + <location filename="sqlexport.cpp" line="216"/> <source>-- File generated with SQLiteStudio v%1 on %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="219"/> + <location filename="sqlexport.cpp" line="220"/> <source>-- Text encoding used: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="sqlexport.cpp" line="303"/> + <location filename="sqlexport.cpp" line="312"/> <source>Table name for INSERT statements is mandatory.</source> <translation type="unfinished"></translation> </message> diff --git a/Plugins/SqlExport/sqlexport.cpp b/Plugins/SqlExport/sqlexport.cpp index 0a379b1..15e47ed 100644 --- a/Plugins/SqlExport/sqlexport.cpp +++ b/Plugins/SqlExport/sqlexport.cpp @@ -145,6 +145,7 @@ bool SqlExport::exportTableRow(SqlResultsRowPtr data) bool SqlExport::afterExport() { writeCommit(); + writeFkEnable(); return true; } @@ -237,12 +238,20 @@ void SqlExport::writeFkDisable() writeln("PRAGMA foreign_keys = off;"); } +void SqlExport::writeFkEnable() +{ + writeln("PRAGMA foreign_keys = on;"); +} + QString SqlExport::formatQuery(const QString& sql) { if (cfg.SqlExport.UseFormatter.get()) return FORMATTER->format("sql", sql, db); - return sql; + if (sql.trimmed().endsWith(";")) + return sql; + + return sql.trimmed() + ";"; } QString SqlExport::getNameForObject(const QString& database, const QString& name, bool wrapped, Dialect dialect) diff --git a/Plugins/SqlExport/sqlexport.h b/Plugins/SqlExport/sqlexport.h index 9e23418..56eb42d 100644 --- a/Plugins/SqlExport/sqlexport.h +++ b/Plugins/SqlExport/sqlexport.h @@ -53,6 +53,7 @@ class SQLEXPORTSHARED_EXPORT SqlExport : public GenericExportPlugin void writeBegin(); void writeCommit(); void writeFkDisable(); + void writeFkEnable(); QString formatQuery(const QString& sql); QString getNameForObject(const QString& database, const QString& name, bool wrapped, Dialect dialect = Dialect::Sqlite3); QStringList rowToArgList(SqlResultsRowPtr row); diff --git a/Plugins/SqlExport/sqlexport.json b/Plugins/SqlExport/sqlexport.json index bd06adf..82ad923 100644 --- a/Plugins/SqlExport/sqlexport.json +++ b/Plugins/SqlExport/sqlexport.json @@ -2,6 +2,6 @@ "type": "ExportPlugin", "title": "SQL export", "description": "Provides SQL format for exporting", - "version": 10100, + "version": 10101, "author": "SalSoft" } diff --git a/Plugins/SqlExport/sqlexport.qrc b/Plugins/SqlExport/sqlexport.qrc index ca38e9c..ed5da11 100644 --- a/Plugins/SqlExport/sqlexport.qrc +++ b/Plugins/SqlExport/sqlexport.qrc @@ -7,5 +7,7 @@ <file>SqlExport_pl.qm</file> <file>SqlExport_ru.qm</file> <file>SqlExport_fr.qm</file> + <file>SqlExport_sk.qm</file> + <file>SqlExport_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_de.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_de.ts index 93812a9..97a671f 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_de.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_es.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_es.ts index 65e7822..e6d4b25 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_es.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_fr.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_fr.ts index af09a0c..ecf68f3 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_fr.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_pl.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_pl.ts index 048a876..a456bdd 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_pl.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_pt_BR.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_pt_BR.ts index 0dca148..246c044 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_pt_BR.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_ru.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_ru.ts index 53a4f8c..cea4179 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_ru.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_sk.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_sk.ts index d55d03c..c07fd9f 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_sk.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts index 796a96d..aaa7f79 100644 --- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts +++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>SqlFormatterSimplePlugin</name> <message> diff --git a/Plugins/SqlFormatterSimple/sqlformattersimple.json b/Plugins/SqlFormatterSimple/sqlformattersimple.json index ff51f13..7db4db6 100644 --- a/Plugins/SqlFormatterSimple/sqlformattersimple.json +++ b/Plugins/SqlFormatterSimple/sqlformattersimple.json @@ -2,6 +2,6 @@ "type": "CodeFormatterPlugin", "title": "SQL Simple", "description": "Basic formatter with very little options.", - "version": 10000, + "version": 10001, "author": "SalSoft" } diff --git a/Plugins/SqlFormatterSimple/sqlformattersimple.qrc b/Plugins/SqlFormatterSimple/sqlformattersimple.qrc index 4cc4a3b..1729b98 100644 --- a/Plugins/SqlFormatterSimple/sqlformattersimple.qrc +++ b/Plugins/SqlFormatterSimple/sqlformattersimple.qrc @@ -6,5 +6,7 @@ <file>SqlFormatterSimple_pl.qm</file> <file>SqlFormatterSimple_ru.qm</file> <file>SqlFormatterSimple_fr.qm</file> + <file>SqlFormatterSimple_sk.qm</file> + <file>SqlFormatterSimple_zh_CN.qm</file> </qresource> </RCC> diff --git a/Plugins/XmlExport/XmlExport_de.ts b/Plugins/XmlExport/XmlExport_de.ts index aa8eb2f..587f54c 100644 --- a/Plugins/XmlExport/XmlExport_de.ts +++ b/Plugins/XmlExport/XmlExport_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_es.ts b/Plugins/XmlExport/XmlExport_es.ts index 532228c..c7c3fdf 100644 --- a/Plugins/XmlExport/XmlExport_es.ts +++ b/Plugins/XmlExport/XmlExport_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_fr.ts b/Plugins/XmlExport/XmlExport_fr.ts index 80c2564..94e10d0 100644 --- a/Plugins/XmlExport/XmlExport_fr.ts +++ b/Plugins/XmlExport/XmlExport_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_pl.ts b/Plugins/XmlExport/XmlExport_pl.ts index fc0cfaa..8f2104e 100644 --- a/Plugins/XmlExport/XmlExport_pl.ts +++ b/Plugins/XmlExport/XmlExport_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_pt_BR.ts b/Plugins/XmlExport/XmlExport_pt_BR.ts index 31a9cf7..f4faf44 100644 --- a/Plugins/XmlExport/XmlExport_pt_BR.ts +++ b/Plugins/XmlExport/XmlExport_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_ru.ts b/Plugins/XmlExport/XmlExport_ru.ts index b7c76e6..28480fe 100644 --- a/Plugins/XmlExport/XmlExport_ru.ts +++ b/Plugins/XmlExport/XmlExport_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_sk.ts b/Plugins/XmlExport/XmlExport_sk.ts index 5c674aa..07d694d 100644 --- a/Plugins/XmlExport/XmlExport_sk.ts +++ b/Plugins/XmlExport/XmlExport_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/XmlExport_zh_CN.ts b/Plugins/XmlExport/XmlExport_zh_CN.ts index 162841d..34023fb 100644 --- a/Plugins/XmlExport/XmlExport_zh_CN.ts +++ b/Plugins/XmlExport/XmlExport_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>XmlExport</name> <message> diff --git a/Plugins/XmlExport/xmlexport.cpp b/Plugins/XmlExport/xmlexport.cpp index e76fe7d..0cea7df 100644 --- a/Plugins/XmlExport/xmlexport.cpp +++ b/Plugins/XmlExport/xmlexport.cpp @@ -103,6 +103,8 @@ bool XmlExport::exportQueryResultsRow(SqlResultsRowPtr row) writeln(nullTpl.arg(i)); else writeln(rowTpl.arg(i).arg(escape(value.toString()))); + + i++; } decrIndent(); @@ -408,7 +410,7 @@ void XmlExport::writeln(const QString& str) QStringList lines = str.split("\n"); QMutableStringListIterator it(lines); while (it.hasNext()) - it.value().prepend(indentStr); + it.next().prepend(indentStr); newStr = lines.join("\n") + newLineStr; } diff --git a/Plugins/XmlExport/xmlexport.json b/Plugins/XmlExport/xmlexport.json index 2432cdd..5780e3e 100644 --- a/Plugins/XmlExport/xmlexport.json +++ b/Plugins/XmlExport/xmlexport.json @@ -2,6 +2,6 @@ "type": "ExportPlugin", "title": "XML export", "description": "Provides XML format for exporting.", - "version": 10000, + "version": 10001, "author": "SalSoft" } diff --git a/Plugins/XmlExport/xmlexport.qrc b/Plugins/XmlExport/xmlexport.qrc index d951458..554f642 100644 --- a/Plugins/XmlExport/xmlexport.qrc +++ b/Plugins/XmlExport/xmlexport.qrc @@ -6,5 +6,7 @@ <file>XmlExport_pl.qm</file> <file>XmlExport_ru.qm</file> <file>XmlExport_fr.qm</file> + <file>XmlExport_sk.qm</file> + <file>XmlExport_zh_CN.qm</file> </qresource> </RCC> diff --git a/SQLiteStudio3/SQLiteStudio3.pro b/SQLiteStudio3/SQLiteStudio3.pro index ee210a1..a535b81 100644 --- a/SQLiteStudio3/SQLiteStudio3.pro +++ b/SQLiteStudio3/SQLiteStudio3.pro @@ -38,7 +38,8 @@ linux: { tgz.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE tgz
pkg.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist
pkg_plugins.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist_plugins
- QMAKE_EXTRA_TARGETS += portable tgz pkg pkg_plugins
+ pkg_full.commands = sh $$PWD/create_linux_portable.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist_full
+ QMAKE_EXTRA_TARGETS += portable tgz pkg pkg_plugins pkg_full
}
macx: {
@@ -46,5 +47,6 @@ macx: { dmg.commands = sh $$PWD/create_macosx_bundle.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dmg
pkg.commands = sh $$PWD/create_macosx_bundle.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist
pkg_plugins.commands = sh $$PWD/create_macosx_bundle.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist_plugins
- QMAKE_EXTRA_TARGETS += bundle dmg pkg pkg_plugins
+ pkg_full.commands = sh $$PWD/create_macosx_bundle.sh $$PWD/../$$OUTPUT_DIR_NAME $$QMAKE_QMAKE dist_full
+ QMAKE_EXTRA_TARGETS += bundle dmg pkg pkg_plugins pkg_full
}
diff --git a/SQLiteStudio3/Tests/DsvFormatsTest/tst_dsvformatstesttest.cpp b/SQLiteStudio3/Tests/DsvFormatsTest/tst_dsvformatstesttest.cpp index 48e7280..be0204c 100644 --- a/SQLiteStudio3/Tests/DsvFormatsTest/tst_dsvformatstesttest.cpp +++ b/SQLiteStudio3/Tests/DsvFormatsTest/tst_dsvformatstesttest.cpp @@ -15,24 +15,38 @@ class DsvFormatsTestTest : public QObject DsvFormatsTestTest(); private: + QString toString(const QList<QStringList>& input); + QList<QStringList> sampleData; + QList<QStringList> sampleDeserializedData; QString sampleTsv; private Q_SLOTS: void initTestCase(); void cleanupTestCase(); void testTsv1(); + void testTsv2(); }; DsvFormatsTestTest::DsvFormatsTestTest() { } +QString DsvFormatsTestTest::toString(const QList<QStringList>& input) +{ + QStringList outputLines; + for (const QStringList& list : input) + outputLines << "QStringList("+list.join(", ")+")"; + + return "QList(\n "+outputLines.join(",\n ")+"\n)"; +} + void DsvFormatsTestTest::initTestCase() { sampleData << QStringList{"a", "b c", "\"d\""}; sampleData << QStringList{"a\"a\"", "\"b\"c\"", "d\"\"e"}; sampleData << QStringList{"a\na", "b\tc", "d\t\"e"}; + sampleData << QStringList{"a", "", "b", ""}; #ifdef Q_OS_MACX QString lineSep = "\r"; @@ -46,6 +60,13 @@ void DsvFormatsTestTest::initTestCase() sampleTsv += "a\"a\"\t\"b\"c\"\td\"\"e"; sampleTsv += lineSep; sampleTsv += "\"a\na\"\t\"b\tc\"\t\"d\t\"\"e\""; + sampleTsv += lineSep; + sampleTsv += "a\t\tb\t"; + + sampleDeserializedData << QStringList{"a", "b c", "\"d\""}; + sampleDeserializedData << QStringList{"a\"a\"", "\"b\"c\"", "d\"\"e"}; + sampleDeserializedData << QStringList{"a\na", "\"b", "c\"", "\"d", "\"\"e\""}; + sampleDeserializedData << QStringList{"a", "", "b", ""}; } void DsvFormatsTestTest::cleanupTestCase() @@ -68,6 +89,13 @@ void DsvFormatsTestTest::testTsv1() QVERIFY2(result == sampleTsv, QString("Mismatch after %1: %2\nSample: %3\nGot : %4").arg(i).arg(common, sampleTsv, result).toLocal8Bit().data()); } +void DsvFormatsTestTest::testTsv2() +{ + QList<QStringList> result = TsvSerializer::deserialize(sampleTsv); + + QVERIFY2(result == sampleDeserializedData, QString("Sample: %1\nGot: %2").arg(toString(sampleDeserializedData), toString(result)).toLocal8Bit().data()); +} + QTEST_APPLESS_MAIN(DsvFormatsTestTest) #include "tst_dsvformatstesttest.moc" diff --git a/SQLiteStudio3/Tests/TestUtils/configmock.cpp b/SQLiteStudio3/Tests/TestUtils/configmock.cpp index 8b62dc2..9bf3863 100644 --- a/SQLiteStudio3/Tests/TestUtils/configmock.cpp +++ b/SQLiteStudio3/Tests/TestUtils/configmock.cpp @@ -204,3 +204,8 @@ void ConfigMock::refreshSqlHistory() void ConfigMock::refreshDdlHistory() { } + +QString ConfigMock::getSqlite3Version() const +{ + return "3.8.8"; +} diff --git a/SQLiteStudio3/Tests/TestUtils/configmock.h b/SQLiteStudio3/Tests/TestUtils/configmock.h index 2115ccf..89c870e 100644 --- a/SQLiteStudio3/Tests/TestUtils/configmock.h +++ b/SQLiteStudio3/Tests/TestUtils/configmock.h @@ -51,6 +51,7 @@ class ConfigMock : public Config QList<ReportHistoryEntryPtr> getReportHistory(); void deleteReport(int); void clearReportHistory(); + QString getSqlite3Version() const; public slots: void refreshSqlHistory(); diff --git a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt index fe7a977..f795356 100644 --- a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt +++ b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt @@ -1,3 +1,38 @@ +[3.0.4] + * [ADDED]: Import dialog has now "Ignore errors" option, to skip rows that causes problems (constraint violation, wrong column count, etc). + * [CHANGE]: Enhanced Copy&Paste capabilities of data grid, so copying and pasting internally in SQLiteStudio will not be limited by TSV format (NULL values will be distinguished, tab characters will be allowed in values), only pasting from outside will be affected by TSV limitations. + * [CHANGE]: "Invalid database" icon changed, so it's no longer confusing with "Connected" database. + * [CHANGE]: "Databases" panel cannot be closed/hidden anymore. + * [CHANGE]: Database dialog reorganized to look a bit nicer, db type moved to top, URL browse button for file is now separated to 2 buttons. + * [BUGFIX]: #2795 XmlExport plugin: Fixed crash that happend in most exports. + * [BUGFIX]: XmlExport plugin: Fixed column number attribute incrementing for data rows. + * [BUGFIX]: #2793 SqlEnterpriseFormatter plugin: Fixed formatting queries starting with EXPLAIN and EXPLAIN QUERY PLAN. + * [BUGFIX]: #2786 Fixed double plugin names in config dialog for built-in plugins. + * [BUGFIX]: Fixed dead-lock when fixing path for a database that pointed to inexisting file. + * [BUGFIX]: Fixed data editing for SQL queries joining the same table several times. + * [BUGFIX]: Fixed "Ctrl+W"/"Cmd+W" shortcut to work every time, not only every second time. + * [BUGFIX]: Fixed order of window focusing when closing with "Ctrl+W"/"Cmd+W" shortcut. + * [BUGFIX]: #2797 Database type is no longer disabled when adding existing database file. + * [BUGFIX]: SqlExport appends Foreign Key (re)enabling pragma at the end. + * [BUGFIX]: "Maximized" MDI window state is no longer lost after closing last MDI window. + * [BUGFIX]: #2812 TableModifier is now much smarter about when to recreate triggers and how to do it. + * [BUGFIX]: TriggerDialog no longer loses "When" field when editing existing trigger. + * [BUGFIX]: Columns of Indexes and Triggers tabs in Table Window don't shring after refresh anymore. + * [BUGFIX]: NumPad Enter key also accepts the Code Assistant choice. + * [BUGFIX]: Fixed drawing items in SQL code assistant, so they no longer are "black on dark blue" when using classic Windows theme. + * [BUGFIX]: #2790 Fixed hexadecimal literals evaluation in SQL queries. + * [BUGFIX]: #2804 Fixed querying SQLite 2 database. + * [BUGFIX]: Fixed executing query like: SELECT * FROM (SELECT * FROM table); - it used to crash. + * [BUGFIX]: #2798 Fixed crash when restoring DbList group for inexisting database. + * [BUGFIX]: #2808 Sorting indicators in data grid fixed to point the right direction and got a little bit larger. + * [BUGFIX]: #2807 Fixed SQL export plugin when exporting whole database without formatting SQL, so the missing semicolons are appended to each DDL. + * [BUGFIX]: #2806 Fixed table sorting in Export Dialog. + * [BUGFIX]: #2809 Fixed crash when trying to paste data into data grid with no rows in it. + * [BUGFIX]: Fixed rolling back of row marked to deletion, if it was previously already marked as edited. + * [BUGFIX]: #2814 Fixed executing custom SQL function with same bind parameter used multiple times. + * [BUGFIX]: #2815 Fixed refreshing data pages after adding/deleting rows in grid view. + * [BUGFIX]: #2820 Fixed parsing 'IN table.column' expression (used to incorrectly assume a 'NOT' keyword to be present, even it wasn't). + [3.0.3] * [ADDED]: Added visual validation indicators to DbDialog, so user is informed why the "Ok" button is disabled at the moment. * [ADDED]: Russian translation. @@ -22,6 +57,7 @@ * [BUGFIX]: Optimized loading huge data sets into data grid. It's faster and the progress bar acts more smoothly. * [BUGFIX]: Shortcut for closing current window is now displayed in the context menu for taskbar. * [BUGFIX]: "Skip first line" option in CSV import renamed to "First line represents CSV columns". Maybe this time it won't confused anyone. + * [BUGFIX]: #2790 Fixed hexadecimal literals evaluation in SQL queries. [3.0.2] * [ADDED]: Full support for the interface translations. diff --git a/SQLiteStudio3/coreSQLiteStudio/TODO.txt b/SQLiteStudio3/coreSQLiteStudio/TODO.txt index 055898c..de84b10 100644 --- a/SQLiteStudio3/coreSQLiteStudio/TODO.txt +++ b/SQLiteStudio3/coreSQLiteStudio/TODO.txt @@ -1,4 +1,5 @@ * Next versions: +- object names (columns, tables, etc) in dialogs should be validated against suffix/prefix whitespaces and if they appear, user should be asked for confirmation - small useful features: generating template queries from context menu for table/view, from data view. - commiting DataView should be async - syntax checkers as services - per language diff --git a/SQLiteStudio3/coreSQLiteStudio/common/global.h b/SQLiteStudio3/coreSQLiteStudio/common/global.h index bc228ca..b1f4b01 100644 --- a/SQLiteStudio3/coreSQLiteStudio/common/global.h +++ b/SQLiteStudio3/coreSQLiteStudio/common/global.h @@ -32,6 +32,13 @@ var = nullptr; \ } +#define qobject_safe_delete(var) \ + if (var) \ + { \ + var->deleteLater(); \ + var = nullptr; \ + } + #define static_char static constexpr const char #define static_qstring(N,V) const static QString N = QStringLiteral(V) diff --git a/SQLiteStudio3/coreSQLiteStudio/common/signalwait.cpp b/SQLiteStudio3/coreSQLiteStudio/common/signalwait.cpp new file mode 100644 index 0000000..90f9075 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/common/signalwait.cpp @@ -0,0 +1,29 @@ +#include "signalwait.h" +#include <QCoreApplication> +#include <QTime> + +SignalWait::SignalWait(QObject* object, const char* signal) : + QObject() +{ + connect(object, signal, this, SLOT(handleSignal())); +} + +bool SignalWait::wait(int msTimeout) +{ + QTime timer(0, 0, 0, msTimeout); + timer.start(); + while (!called && timer.elapsed() < msTimeout) + qApp->processEvents(QEventLoop::ExcludeUserInputEvents); + + return called; +} + +void SignalWait::reset() +{ + called = false; +} + +void SignalWait::handleSignal() +{ + called = true; +} diff --git a/SQLiteStudio3/coreSQLiteStudio/common/signalwait.h b/SQLiteStudio3/coreSQLiteStudio/common/signalwait.h new file mode 100644 index 0000000..7b7b903 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/common/signalwait.h @@ -0,0 +1,23 @@ +#ifndef SIGNALWAIT_H +#define SIGNALWAIT_H + +#include <QObject> + +class SignalWait : public QObject +{ + Q_OBJECT + + public: + SignalWait(QObject *object, const char *signal); + + bool wait(int msTimeout); + void reset(); + + private: + bool called = false; + + private slots: + void handleSignal(); +}; + +#endif // SIGNALWAIT_H diff --git a/SQLiteStudio3/coreSQLiteStudio/common/table.cpp b/SQLiteStudio3/coreSQLiteStudio/common/table.cpp index c590995..a9b0f16 100644 --- a/SQLiteStudio3/coreSQLiteStudio/common/table.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/common/table.cpp @@ -50,3 +50,43 @@ int qHash(Table table) {
return qHash(table.getDatabase() + "." + table.getTable());
}
+
+AliasedTable::AliasedTable()
+{
+}
+
+AliasedTable::AliasedTable(const QString& database, const QString& table, const QString& alias) :
+ Table(database, table)
+{
+ setTableAlias(alias);
+}
+
+AliasedTable::AliasedTable(const AliasedTable& other) :
+ Table(other.database, other.table)
+{
+ tableAlias = other.tableAlias;
+}
+
+AliasedTable::~AliasedTable()
+{
+}
+
+int AliasedTable::operator ==(const AliasedTable& other) const
+{
+ return other.database == this->database && other.table == this->table && other.tableAlias == this->tableAlias;
+}
+
+QString AliasedTable::getTableAlias() const
+{
+ return tableAlias;
+}
+
+void AliasedTable::setTableAlias(const QString& value)
+{
+ tableAlias = value;
+}
+
+int qHash(AliasedTable table)
+{
+ return qHash(table.getDatabase() + "." + table.getTable() + " " + table.getTableAlias());
+}
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/table.h b/SQLiteStudio3/coreSQLiteStudio/common/table.h index d17a729..5cc4570 100644 --- a/SQLiteStudio3/coreSQLiteStudio/common/table.h +++ b/SQLiteStudio3/coreSQLiteStudio/common/table.h @@ -23,10 +23,27 @@ class API_EXPORT Table protected:
QString database;
QString table;
+};
+
+class API_EXPORT AliasedTable : public Table
+{
+ public:
+ AliasedTable();
+ AliasedTable(const QString& database, const QString& table, const QString& alias);
+ AliasedTable(const AliasedTable& other);
+ virtual ~AliasedTable();
+ int operator ==(const AliasedTable& other) const;
+
+ QString getTableAlias() const;
+ void setTableAlias(const QString& value);
+
+ protected:
+ QString tableAlias;
};
int API_EXPORT qHash(Table table);
+int API_EXPORT qHash(AliasedTable table);
#endif // TABLE_H
diff --git a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro index 84cd818..0a7eb60 100644 --- a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro +++ b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro @@ -19,6 +19,7 @@ TEMPLATE = lib win32 { LIBS += -lpsapi $$PWD/../../../lib/libquazip.a + LIBS += -limagehlp THE_FILE = $$PWD/qt.conf THE_DEST = $${DESTDIR} @@ -215,7 +216,8 @@ SOURCES += sqlitestudio.cpp \ rsa/KeyPair.cpp \ rsa/PrimeGenerator.cpp \ rsa/RSA.cpp \ - translations.cpp + translations.cpp \ + common/signalwait.cpp HEADERS += sqlitestudio.h\ coreSQLiteStudio_global.h \ @@ -402,7 +404,8 @@ HEADERS += sqlitestudio.h\ rsa/KeyPair.h \ rsa/PrimeGenerator.h \ rsa/RSA.h \ - translations.h + translations.h \ + common/signalwait.h unix: { target.path = $$LIBDIR diff --git a/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc b/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc index 3ad28a9..7b814ec 100644 --- a/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc +++ b/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc @@ -22,5 +22,7 @@ <file>translations/coreSQLiteStudio_pl.qm</file> <file>translations/coreSQLiteStudio_ru.qm</file> <file>translations/coreSQLiteStudio_fr.qm</file> + <file>translations/coreSQLiteStudio_sk.qm</file> + <file>translations/coreSQLiteStudio_zh_CN.qm</file> </qresource> </RCC> diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp index 4b3165b..68c6ad7 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.cpp @@ -177,22 +177,22 @@ ReadWriteLocker::Mode AbstractDb::getLockingMode(const QString &query, Flags fla return ReadWriteLocker::getMode(query, getDialect(), flags.testFlag(Flag::NO_LOCK)); } -QString AbstractDb::getName() +QString AbstractDb::getName() const { return name; } -QString AbstractDb::getPath() +QString AbstractDb::getPath() const { return path; } -quint8 AbstractDb::getVersion() +quint8 AbstractDb::getVersion() const { return version; } -Dialect AbstractDb::getDialect() +Dialect AbstractDb::getDialect() const { if (version == 2) return Dialect::Sqlite2; diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.h b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.h index 89edf03..3f2b4c0 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb.h @@ -45,10 +45,10 @@ class API_EXPORT AbstractDb : public Db virtual ~AbstractDb(); bool isOpen(); - QString getName(); - QString getPath(); - quint8 getVersion(); - Dialect getDialect(); + QString getName() const; + QString getPath() const; + quint8 getVersion() const; + Dialect getDialect() const; QString getEncoding(); QHash<QString,QVariant>& getConnectionOptions(); void setName(const QString& value); diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h index 7a84ec2..9cb58aa 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb3.h @@ -868,7 +868,8 @@ bool AbstractDb3<T>::Query::execInternal(const QList<QVariant>& args) if (res != T::OK) return false; - for (int paramIdx = 1; paramIdx <= queryWithParams.second; paramIdx++) + + for (int paramIdx = 1, argCount = args.size(); paramIdx <= queryWithParams.second && paramIdx <= argCount; paramIdx++) { res = bindParam(paramIdx, args[paramIdx-1]); if (res != T::OK) @@ -906,16 +907,25 @@ bool AbstractDb3<T>::Query::execInternal(const QHash<QString, QVariant>& args) if (res != T::OK) return false; - int paramIdx = 1; - foreach (const QString& paramName, queryWithParams.second) + int paramIdx = -1; + for (const QString& paramName : queryWithParams.second) { if (!args.contains(paramName)) { + qWarning() << "Could not bind parameter" << paramName << "because it was not found in passed arguments."; + setError(SqlErrorCode::OTHER_EXECUTION_ERROR, "Error while preparing statement: could not bind parameter " + paramName); + return false; + } + + paramIdx = T::bind_parameter_index(stmt, paramName.toUtf8().constData()); + if (paramIdx <= 0) + { + qWarning() << "Could not bind parameter" << paramName << "because it was not found in prepared statement."; setError(SqlErrorCode::OTHER_EXECUTION_ERROR, "Error while preparing statement: could not bind parameter " + paramName); return false; } - res = bindParam(paramIdx++, args[paramName]); + res = bindParam(paramIdx, args[paramName]); if (res != T::OK) { db->extractLastError(); diff --git a/SQLiteStudio3/coreSQLiteStudio/db/db.cpp b/SQLiteStudio3/coreSQLiteStudio/db/db.cpp index c89349c..7676f30 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/db.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/db.cpp @@ -1,5 +1,6 @@ #include "db.h" #include <QMetaEnum> +#include <QDebug> Db::Db() { @@ -55,3 +56,10 @@ void Sqlite2ColumnDataTypeHelper::clearBinaryTypes() { binaryColumns.clear(); } + + +QDebug operator<<(QDebug dbg, const Db* db) +{ + dbg.nospace() << "<DB:" << db->getName() << ">"; + return dbg.space(); +} diff --git a/SQLiteStudio3/coreSQLiteStudio/db/db.h b/SQLiteStudio3/coreSQLiteStudio/db/db.h index e11a844..efadd41 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/db.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/db.h @@ -195,13 +195,13 @@ class API_EXPORT Db : public QObject, public Interruptable * @brief Gets database symbolic name. * @return Database symbolic name (as it was defined in call to DbManager#addDb() or DbManager#updateDb()). */ - virtual QString getName() = 0; + virtual QString getName() const = 0; /** * @brief Gets database file path. * @return Database file path (as it was defined in call to DbManager#addDb() or DbManager#updateDb()). */ - virtual QString getPath() = 0; + virtual QString getPath() const = 0; /** * @brief Gets SQLite version major number for this database. @@ -209,7 +209,7 @@ class API_EXPORT Db : public QObject, public Interruptable * * You don't have to open the database. This information is always available. */ - virtual quint8 getVersion() = 0; + virtual quint8 getVersion() const = 0; /** * @brief Gets database dialect. @@ -217,7 +217,7 @@ class API_EXPORT Db : public QObject, public Interruptable * * You don't have to open the database. This information is always available. */ - virtual Dialect getDialect() = 0; + virtual Dialect getDialect() const = 0; /** * @brief Gets database encoding. @@ -816,6 +816,8 @@ class API_EXPORT Db : public QObject, public Interruptable QDataStream &operator<<(QDataStream &out, const Db* myObj); QDataStream &operator>>(QDataStream &in, Db*& myObj); +QDebug operator<<(QDebug dbg, const Db* db); + Q_DECLARE_METATYPE(Db*) Q_DECLARE_OPERATORS_FOR_FLAGS(Db::Flags) diff --git a/SQLiteStudio3/coreSQLiteStudio/db/dbpluginoption.h b/SQLiteStudio3/coreSQLiteStudio/db/dbpluginoption.h index 7b594ef..e2ed66f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/dbpluginoption.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/dbpluginoption.h @@ -27,6 +27,11 @@ struct DbPluginOption { /** + * @brief Handler for custom path browser implemented by the plugin. + */ + typedef std::function<QString(const QString&)> CustomBrowseHandler; + + /** * @brief Option data type * * Determinates what kind of input widget will be added to DbDialog. @@ -39,7 +44,8 @@ struct DbPluginOption DOUBLE = 3, /**< QDoubleSpinBox will be added */ FILE = 4, /**< QLineEdit will be added */ PASSWORD = 5, /**< QLineEdit with value masking will be added */ - CHOICE = 6 /**< QComboBox will be added */ + CHOICE = 6, /**< QComboBox will be added */ + CUSTOM_PATH_BROWSE = 7 /**< File path browse button will be handled by the plugin. No additional editor will be added. */ }; /** @@ -92,6 +98,11 @@ struct DbPluginOption * @brief Expected data type for the option. */ Type type; + + /** + * @brief Handler for custom path browser implemented by the plugin. + */ + CustomBrowseHandler customBrowseHandler = nullptr; }; #endif // DBPLUGINOPTION_H diff --git a/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.cpp b/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.cpp index e4810a1..bdf3ef6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.cpp @@ -12,22 +12,22 @@ bool InvalidDb::isOpen() return false; } -QString InvalidDb::getName() +QString InvalidDb::getName() const { return name; } -QString InvalidDb::getPath() +QString InvalidDb::getPath() const { return path; } -quint8 InvalidDb::getVersion() +quint8 InvalidDb::getVersion() const { return 0; } -Dialect InvalidDb::getDialect() +Dialect InvalidDb::getDialect() const { return Dialect::Sqlite3; } diff --git a/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.h b/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.h index 759aa4c..a9d58e0 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/invaliddb.h @@ -9,10 +9,10 @@ class API_EXPORT InvalidDb : public Db InvalidDb(const QString& name, const QString& path, const QHash<QString, QVariant>& connOptions); bool isOpen(); - QString getName(); - QString getPath(); - quint8 getVersion(); - Dialect getDialect(); + QString getName() const; + QString getPath() const; + quint8 getVersion() const; + Dialect getDialect() const; QString getEncoding(); QHash<QString, QVariant>& getConnectionOptions(); void setName(const QString& value); diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp index 6acfb6f..287a8ce 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp @@ -40,14 +40,13 @@ bool QueryExecutorColumns::exec() core->resultColumns.clear(); // Count total rowId columns - int rowIdColCount = 0; for (const QueryExecutor::ResultRowIdColumnPtr& rowIdCol : context->rowIdColumns) - rowIdColCount += rowIdCol->queryExecutorAliasToColumn.size(); + rowIdColNames += rowIdCol->queryExecutorAliasToColumn.keys(); // Defining result columns QueryExecutor::ResultColumnPtr resultColumn; SqliteSelect::Core::ResultColumn* resultColumnForSelect = nullptr; - bool isRowIdColumn = false; + bool rowIdColumn = false; int i = 0; for (const SelectResolver::Column& col : columns) { @@ -55,15 +54,18 @@ bool QueryExecutorColumns::exec() resultColumn = getResultColumn(col); // Adding new result column to the query - isRowIdColumn = (i < rowIdColCount); - resultColumnForSelect = getResultColumnForSelect(resultColumn, col, isRowIdColumn); + rowIdColumn = isRowIdColumn(col.alias); + if (rowIdColumn && col.alias.contains(":")) + continue; // duplicate ROWID column provided by SelectResolver. See isRowIdColumn() for details. + + resultColumnForSelect = getResultColumnForSelect(resultColumn, col); if (!resultColumnForSelect) return false; resultColumnForSelect->setParent(core); core->resultColumns << resultColumnForSelect; - if (!isRowIdColumn) + if (!rowIdColumn) context->resultColumns << resultColumn; // store it in context for later usage by any step i++; @@ -89,7 +91,6 @@ QueryExecutor::ResultColumnPtr QueryExecutorColumns::getResultColumn(const Selec resultColumn->column = resolvedColumn.column; resultColumn->alias = resolvedColumn.alias; resultColumn->expression = true; - resultColumn->queryExecutorAlias = getNextColName(); } else { @@ -111,20 +112,20 @@ QueryExecutor::ResultColumnPtr QueryExecutorColumns::getResultColumn(const Selec resultColumn->tableAlias = resolvedColumn.tableAlias; resultColumn->alias = resolvedColumn.alias; resultColumn->displayName = resolvedColumn.displayName; + } - if (isRowIdColumnAlias(resultColumn->alias)) - { - resultColumn->queryExecutorAlias = resultColumn->alias; - } - else - { - resultColumn->queryExecutorAlias = getNextColName(); - } + if (isRowIdColumnAlias(resultColumn->alias)) + { + resultColumn->queryExecutorAlias = resultColumn->alias; + } + else + { + resultColumn->queryExecutorAlias = getNextColName(); } return resultColumn; } -SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col, bool rowIdColumn) +SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col) { SqliteSelect::Core::ResultColumn* selectResultColumn = new SqliteSelect::Core::ResultColumn(); @@ -164,28 +165,6 @@ SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect selectResultColumn->expr->table = resultColumn->table; } - -// // SQLite2 requires special treatment here. It won't allow selecting db.table.col from a subquery - it needs escaped ID that reflects db.table.col. -// if (dialect == Dialect::Sqlite2) -// { -// selectResultColumn->expr->rebuildTokens(); -// colString = wrapObjIfNeeded(selectResultColumn->expr->detokenize(), dialect); -// delete selectResultColumn->expr; -// selectResultColumn->expr = nullptr; - -// expr = parser.parseExpr(colString); -// if (!expr) -// { -// qWarning() << "Could not parse result column expr in SQLite2's second parsing phase:" << colString; -// if (parser.getErrors().size() > 0) -// qWarning() << "The error was:" << parser.getErrors().first()->getFrom() << ":" << parser.getErrors().first()->getMessage(); - -// return nullptr; -// } - -// expr->setParent(selectResultColumn); -// selectResultColumn->expr = expr; -// } } if (!col.alias.isNull()) @@ -193,7 +172,7 @@ SqliteSelect::Core::ResultColumn* QueryExecutorColumns::getResultColumnForSelect selectResultColumn->asKw = true; selectResultColumn->alias = col.alias; } - else if (rowIdColumn || resultColumn->expression) + else { selectResultColumn->asKw = true; selectResultColumn->alias = resultColumn->queryExecutorAlias; @@ -252,12 +231,10 @@ void QueryExecutorColumns::wrapWithAliasedColumns(SqliteSelect* select) // If alias was given, we use it. If it was anything but expression, we also use its display name, // because it's explicit column (no matter if from table, or table alias). baseColName = QString(); - if (!resCol->alias.isNull()) + if (!resCol->queryExecutorAlias.isNull()) baseColName = resCol->alias; - else if (dialect == Dialect::Sqlite3 && !resCol->expression) + else if (!resCol->expression) baseColName = resCol->column; - else if (dialect == Dialect::Sqlite2 && !resCol->expression) - baseColName = getAliasedColumnNameForSqlite2(resCol); if (!baseColName.isNull()) { @@ -279,20 +256,17 @@ void QueryExecutorColumns::wrapWithAliasedColumns(SqliteSelect* select) select->tokens = wrapSelect(select->tokens, outerColumns); } -QString QueryExecutorColumns::getAliasedColumnNameForSqlite2(const QueryExecutor::ResultColumnPtr& resCol) +bool QueryExecutorColumns::isRowIdColumn(const QString& columnAlias) { - QStringList colNameParts; - if (!resCol->table.isNull()) - { - if (!resCol->database.isNull()) - { - if (context->dbNameToAttach.containsLeft(resCol->database, Qt::CaseInsensitive)) - colNameParts << context->dbNameToAttach.valueByLeft(resCol->database, Qt::CaseInsensitive); - else - colNameParts << wrapObjIfNeeded(resCol->database, dialect); - } - colNameParts << wrapObjIfNeeded(resCol->table, dialect); - } - colNameParts << wrapObjIfNeeded(resCol->column, dialect); - return colNameParts.join("."); + // In case of "SELECT * FROM (SELECT * FROM test);" the SelectResolver will return ROWID columns twice for each table listed, + // because ROWID columns are recurrently handled by QueryExecutorAddRowIds step. We need to identify such columns and make them unique + // in the final query. + // Currently all columns have QueryExecutor aliased names, so we can assume they have unified alias name in form ResCol_N. + // If SelectResolver returns any column like ResCol_N:X, then it means that the column is result of the query like above. + // Note, that this assumption is correct for RowId columns. There can be columns aliased by user and those aliases won't be unified. + QString aliasOnly = columnAlias; + if (aliasOnly.contains(":")) + aliasOnly = aliasOnly.left(aliasOnly.indexOf(":")); + + return rowIdColNames.contains(aliasOnly); } diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h index fd85651..e23b9f6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.h @@ -50,7 +50,7 @@ class QueryExecutorColumns : public QueryExecutorStep * @param rowIdColumn Indicates if this is a call for ROWID column added by QueryExecutorRowId step. * @return Result column object ready for rebuilding tokens and detokenizing. */ - SqliteSelect::Core::ResultColumn* getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col, bool rowIdColumn); + SqliteSelect::Core::ResultColumn* getResultColumnForSelect(const QueryExecutor::ResultColumnPtr& resultColumn, const SelectResolver::Column& col); /** * @brief Translates attach name into database name. @@ -67,8 +67,8 @@ class QueryExecutorColumns : public QueryExecutorStep bool isRowIdColumnAlias(const QString& alias); void wrapWithAliasedColumns(SqliteSelect* select); - - QString getAliasedColumnNameForSqlite2(const QueryExecutor::ResultColumnPtr& resCol); + bool isRowIdColumn(const QString& columnAlias); + QStringList rowIdColNames; }; #endif // QUERYEXECUTORCOLUMNS_H diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp index f42f647..df2ed68 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorexecute.cpp @@ -8,6 +8,7 @@ #include <QDateTime> #include <QDebug> #include <schemaresolver.h> +#include <common/table.h> bool QueryExecutorExecute::exec() { @@ -120,17 +121,17 @@ void QueryExecutorExecute::setupSqlite2ColumnDataTypes(SqlQueryPtr results) if (!sqlite2Helper) return; - QPair<QString,QString> key; + Table key; SqliteCreateTablePtr createTable; SchemaResolver resolver(db); - QHash<QPair<QString,QString>,SqliteCreateTablePtr> tables; + QHash<Table,SqliteCreateTablePtr> tables; for (QueryExecutor::SourceTablePtr tab : context->sourceTables) { if (tab->table.isNull()) continue; - key = QPair<QString,QString>(tab->database, tab->table); + key = Table(tab->database, tab->table); createTable = resolver.getParsedObject(tab->database, tab->table, SchemaResolver::TABLE).dynamicCast<SqliteCreateTable>(); tables[key] = createTable; } @@ -142,7 +143,7 @@ void QueryExecutorExecute::setupSqlite2ColumnDataTypes(SqlQueryPtr results) for (QueryExecutor::ResultColumnPtr resCol : context->resultColumns) { idx++; - key = QPair<QString,QString>(resCol->database, resCol->table); + key = Table(resCol->database, resCol->table); if (!tables.contains(key)) continue; diff --git a/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h b/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h index eff3621..2f26aaf 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/stdsqlite3driver.h @@ -41,6 +41,7 @@ static int bind_int(stmt* a1, int a2, int a3) {return Prefix##sqlite3_bind_int(a1, a2, a3);} \ static int bind_int64(stmt* a1, int a2, int64 a3) {return Prefix##sqlite3_bind_int64(a1, a2, a3);} \ static int bind_null(stmt* a1, int a2) {return Prefix##sqlite3_bind_null(a1, a2);} \ + static int bind_parameter_index(stmt* a1, const char* a2) {return Prefix##sqlite3_bind_parameter_index(a1, a2);} \ static int bind_text16(stmt* a1, int a2, const void* a3, int a4, void(*a5)(void*)) {return Prefix##sqlite3_bind_text16(a1, a2, a3, a4, a5);} \ static void result_blob(context* a1, const void* a2, int a3, void(*a4)(void*)) {Prefix##sqlite3_result_blob(a1, a2, a3, a4);} \ static void result_double(context* a1, double a2) {Prefix##sqlite3_result_double(a1, a2);} \ diff --git a/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp b/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp index b14bbf1..ffecd4d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/exportworker.cpp @@ -23,6 +23,7 @@ ExportWorker::~ExportWorker() void ExportWorker::run() { + qDebug() << "ExportWorker thread started. Export mode: " << static_cast<int>(exportMode); bool res = false; switch (exportMode) { @@ -109,39 +110,64 @@ bool ExportWorker::exportQueryResults() QHash<ExportManager::ExportProviderFlag,QVariant> providerData = getProviderDataForQueryResults(); if (results->isInterrupted()) + { + logExportFail("exportQueryResults() -> interrupted(1)"); return false; + } if (results->isError()) { + logExportFail("exportQueryResults() -> error"); notifyError(tr("Error while exporting query results: %1").arg(results->getErrorText())); return false; } if (!plugin->initBeforeExport(db, output, *config)) + { + logExportFail("initBeforeExport()"); return false; + } if (!plugin->beforeExportQueryResults(query, resultColumns, providerData)) + { + logExportFail("beforeExportQueryResults()"); return false; + } if (isInterrupted()) + { + logExportFail("exportQueryResults() -> interrupted(2)"); return false; + } SqlResultsRowPtr row; while (results->hasNext()) { row = results->next(); if (!plugin->exportQueryResultsRow(row)) + { + logExportFail("exportQueryResultsRow()"); return false; + } if (isInterrupted()) + { + logExportFail("exportQueryResults() -> interrupted(3)"); return false; + } } if (!plugin->afterExportQueryResults()) + { + logExportFail("afterExportQueryResults()"); return false; + } if (!plugin->afterExport()) + { + logExportFail("afterExport()"); return false; + } return true; } @@ -192,18 +218,28 @@ bool ExportWorker::exportDatabase() QList<ExportManager::ExportObjectPtr> dbObjects = collectDbObjects(&err); if (!err.isNull()) { + logExportFail("exportDatabase() -> dbObjects"); notifyError(err); return false; } if (!plugin->initBeforeExport(db, output, *config)) + { + logExportFail("initBeforeExport()"); return false; + } if (!plugin->beforeExportDatabase(db->getName())) + { + logExportFail("beforeExportDatabase()"); return false; + } if (isInterrupted()) + { + logExportFail("exportDatabase() -> interrupted(1)"); return false; + } QList<ExportManager::ExportObject::Type> order = { ExportManager::ExportObject::TABLE, ExportManager::ExportObject::INDEX, ExportManager::ExportObject::TRIGGER, ExportManager::ExportObject::VIEW @@ -215,46 +251,88 @@ bool ExportWorker::exportDatabase() }); if (!plugin->beforeExportTables()) + { + logExportFail("beforeExportTables()"); return false; + } if (!exportDatabaseObjects(dbObjects, ExportManager::ExportObject::TABLE)) + { + logExportFail("exportDatabaseObjects()"); return false; + } if (!plugin->afterExportTables()) + { + logExportFail("afterExportTables()"); return false; + } if (!plugin->beforeExportIndexes()) + { + logExportFail("beforeExportIndexes()"); return false; + } if (!exportDatabaseObjects(dbObjects, ExportManager::ExportObject::INDEX)) + { + logExportFail("exportDatabaseObjects()"); return false; + } if (!plugin->afterExportIndexes()) + { + logExportFail("afterExportIndexes()"); return false; + } if (!plugin->beforeExportTriggers()) + { + logExportFail("beforeExportTriggers()"); return false; + } if (!exportDatabaseObjects(dbObjects, ExportManager::ExportObject::TRIGGER)) + { + logExportFail("exportDatabaseObjects()"); return false; + } if (!plugin->afterExportTriggers()) + { + logExportFail("afterExportTriggers()"); return false; + } if (!plugin->beforeExportViews()) + { + logExportFail("beforeExportViews()"); return false; + } if (!exportDatabaseObjects(dbObjects, ExportManager::ExportObject::VIEW)) + { + logExportFail("exportDatabaseObjects()"); return false; + } if (!plugin->afterExportViews()) + { + logExportFail("afterExportViews()"); return false; + } if (!plugin->afterExportDatabase()) + { + logExportFail("afterExportDatabase()"); return false; + } if (!plugin->afterExport()) + { + logExportFail("afterExport()"); return false; + } return true; } @@ -297,10 +375,16 @@ bool ExportWorker::exportDatabaseObjects(const QList<ExportManager::ExportObject } if (!res) + { + logExportFail("database objects export " + obj->name); return false; + } if (isInterrupted()) + { + logExportFail("database objects export (interrupted)"); return false; + } } return true; } @@ -313,6 +397,7 @@ bool ExportWorker::exportTable() queryTableDataToExport(db, table, results, providerData, &errorMessage); if (!errorMessage.isNull()) { + logExportFail("fetching table data"); notifyError(errorMessage); return false; } @@ -329,45 +414,72 @@ bool ExportWorker::exportTable() SqliteQueryPtr createTable = parser->getQueries().first(); if (!plugin->initBeforeExport(db, output, *config)) + { + logExportFail("initBeforeExport()"); return false; + } if (!exportTableInternal(database, table, ddl, createTable, results, providerData)) + { + logExportFail("exportTableInternal()"); return false; + } if (config->exportTableIndexes) { if (!plugin->beforeExportIndexes()) + { + logExportFail("beforeExportIndexes()"); return false; + } QList<SqliteCreateIndexPtr> parsedIndexesForTable = resolver.getParsedIndexesForTable(database, table); for (const SqliteCreateIndexPtr& idx : parsedIndexesForTable) { if (!plugin->exportIndex(database, idx->index, idx->detokenize(), idx)) + { + logExportFail("exportIndex()"); return false; + } } if (!plugin->afterExportIndexes()) + { + logExportFail("afterExportIndexes()"); return false; + } } if (config->exportTableTriggers) { if (!plugin->beforeExportTriggers()) + { + logExportFail("beforeExportTriggers()"); return false; + } QList<SqliteCreateTriggerPtr> parsedTriggersForTable = resolver.getParsedTriggersForTable(database, table); for (const SqliteCreateTriggerPtr& trig : parsedTriggersForTable) { if (!plugin->exportTrigger(database, trig->trigger, trig->detokenize(), trig)) + { + logExportFail("exportTrigger()"); return false; + } } if (!plugin->afterExportTriggers()) + { + logExportFail("afterExportTriggers()"); return false; + } } if (!plugin->afterExport()) + { + logExportFail("afterExport()"); return false; + } return true; } @@ -388,16 +500,25 @@ bool ExportWorker::exportTableInternal(const QString& database, const QString& t colNames = createTable->getColumnNames(); if (!plugin->exportTable(database, table, colNames, ddl, createTable, providerData)) + { + logExportFail("exportTable()"); return false; + } } else { if (!plugin->exportVirtualTable(database, table, colNames, ddl, createVirtualTable, providerData)) + { + logExportFail("exportVirtualTable()"); return false; + } } if (isInterrupted()) + { + logExportFail("internal table export interruption"); return false; + } SqlResultsRowPtr row; if (results) @@ -406,15 +527,24 @@ bool ExportWorker::exportTableInternal(const QString& database, const QString& t { row = results->next(); if (!plugin->exportTableRow(row)) + { + logExportFail("exportTableRow()"); return false; + } if (isInterrupted()) + { + logExportFail("internal table export interruption (2)"); return false; + } } } if (!plugin->afterExportTable()) + { + logExportFail("afterExportTable()"); return false; + } return true; } @@ -478,7 +608,7 @@ void ExportWorker::queryTableDataToExport(Db* db, const QString& table, SqlQuery { QString wrappedTable = wrapObjIfNeeded(table, db->getDialect()); dataPtr = db->exec(sql.arg(wrappedTable)); - if (dataPtr->isError()) + if (dataPtr->isError() && !errorMessage->isNull()) *errorMessage = tr("Error while reading data to export from table %1: %2").arg(table, dataPtr->getErrorText()); if (plugin->getProviderFlags().testFlag(ExportManager::ROW_COUNT)) @@ -486,8 +616,8 @@ void ExportWorker::queryTableDataToExport(Db* db, const QString& table, SqlQuery SqlQueryPtr countQuery = db->exec(countSql.arg(wrappedTable)); if (countQuery->isError()) { - if (errorMessage->isNull()) - *errorMessage = tr("Error while counting data to export from table %1: %2").arg(table, dataPtr->getErrorText()); + if (!errorMessage->isNull()) + *errorMessage = tr("Error while counting data to export from table %1: %2").arg(table, countQuery->getErrorText()); } else providerData[ExportManager::ROW_COUNT] = countQuery->getSingleCell().toInt(); @@ -502,8 +632,8 @@ void ExportWorker::queryTableDataToExport(Db* db, const QString& table, SqlQuery SqlQueryPtr colLengthQuery = db->exec(colLengthSql.arg(wrappedCols.join(", "), wrappedTable)); if (colLengthQuery->isError()) { - if (errorMessage->isNull()) - *errorMessage = tr("Error while counting data column width to export from table %1: %2").arg(table, dataPtr->getErrorText()); + if (!errorMessage->isNull()) + *errorMessage = tr("Error while counting data column width to export from table %1: %2").arg(table, colLengthQuery->getErrorText()); } else { @@ -523,3 +653,8 @@ bool ExportWorker::isInterrupted() return interrupted; } +void ExportWorker::logExportFail(const QString &stageName) +{ + qWarning() << "Export has faild at" << stageName << "stage."; +} + diff --git a/SQLiteStudio3/coreSQLiteStudio/exportworker.h b/SQLiteStudio3/coreSQLiteStudio/exportworker.h index 27620a4..5e8bef3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/exportworker.h +++ b/SQLiteStudio3/coreSQLiteStudio/exportworker.h @@ -35,6 +35,7 @@ class API_EXPORT ExportWorker : public QObject, public QRunnable void queryTableDataToExport(Db* db, const QString& table, SqlQueryPtr& dataPtr, QHash<ExportManager::ExportProviderFlag, QVariant>& providerData, QString* errorMessage) const; bool isInterrupted(); + void logExportFail(const QString& stageName); ExportPlugin* plugin = nullptr; ExportManager::StandardExportConfig* config = nullptr; diff --git a/SQLiteStudio3/coreSQLiteStudio/importworker.cpp b/SQLiteStudio3/coreSQLiteStudio/importworker.cpp index af4a66d..2cdeeb0 100644 --- a/SQLiteStudio3/coreSQLiteStudio/importworker.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/importworker.cpp @@ -149,8 +149,19 @@ bool ImportWorker::importData() query->setArgs(row.mid(0, colCount)); if (!query->execute()) { - error(tr("Error while importing data: %1").arg(query->getErrorText())); - return false; + if (config->ignoreErrors) + { + qDebug() << "Could not import data row number" << (rowCnt+1) << ". The row was ignored. Problem details:" + << query->getErrorText(); + + notifyWarn(tr("Could not import data row number %1. The row was ignored. Problem details: %2") + .arg(QString::number(rowCnt + 1), query->getErrorText())); + } + else + { + error(tr("Error while importing data: %1").arg(query->getErrorText())); + return false; + } } if ((rowCnt % 100) == 0 && isInterrupted()) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp index 6c840e7..49763a5 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitealtertable.cpp @@ -102,7 +102,7 @@ void SqliteAlterTable::initName(const QString &name1, const QString &name2) TokenList SqliteAlterTable::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("ALTER").withSpace().withKeyword("TABLE").withSpace(); if (!database.isNull()) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteanalyze.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteanalyze.cpp index d4e5778..30396c1 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteanalyze.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteanalyze.cpp @@ -69,7 +69,7 @@ QList<SqliteStatement::FullObject> SqliteAnalyze::getFullObjectsInStatement() TokenList SqliteAnalyze::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("ANALYZE").withSpace(); if (!database.isNull()) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteattach.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteattach.cpp index 7d0b8a5..359396b 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteattach.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteattach.cpp @@ -47,7 +47,7 @@ SqliteStatement* SqliteAttach::clone() TokenList SqliteAttach::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("ATTACH").withSpace(); if (databaseKw) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitebegintrans.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitebegintrans.cpp index dcd9740..00ec9ac 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitebegintrans.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitebegintrans.cpp @@ -52,7 +52,7 @@ QString SqliteBeginTrans::typeToString(SqliteBeginTrans::Type type) TokenList SqliteBeginTrans::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("BEGIN"); if (type != Type::null) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecommittrans.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecommittrans.cpp index 97be8a9..2b1b707 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecommittrans.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecommittrans.cpp @@ -29,7 +29,7 @@ SqliteStatement* SqliteCommitTrans::clone() TokenList SqliteCommitTrans::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); if (endKw) builder.withKeyword("END"); else diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp index 009f836..0d9ed9f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecopy.cpp @@ -73,7 +73,7 @@ QList<SqliteStatement::FullObject> SqliteCopy::getFullObjectsInStatement() TokenList SqliteCopy::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("COPY").withSpace(); if (onConflict != SqliteConflictAlgo::null) builder.withKeyword("OR").withSpace().withKeyword(sqliteConflictAlgo(onConflict)).withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp index 36f7aa9..16cec8f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateindex.cpp @@ -149,6 +149,7 @@ QList<SqliteStatement::FullObject> SqliteCreateIndex::getFullObjectsInStatement( TokenList SqliteCreateIndex::rebuildTokensFromContents() { StatementTokenBuilder builder; + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("CREATE").withSpace(); if (uniqueKw) builder.withKeyword("UNIQUE").withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp index e31e512..454c0e3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetable.cpp @@ -208,7 +208,7 @@ QList<SqliteStatement::FullObject> SqliteCreateTable::getFullObjectsInStatement( TokenList SqliteCreateTable::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("CREATE"); if (tempKw) builder.withSpace().withKeyword("TEMP"); @@ -706,7 +706,6 @@ TokenList SqliteCreateTable::Column::rebuildTokensFromContents() TokenList SqliteCreateTable::Column::Constraint::rebuildTokensFromContents() { StatementTokenBuilder builder; - if (!name.isNull()) builder.withKeyword("CONSTRAINT").withSpace().withOther(name, dialect).withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp index 3b7b0ea..8f67aea 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatetrigger.cpp @@ -322,7 +322,7 @@ SqliteCreateTrigger::Event::Type SqliteCreateTrigger::Event::stringToType(const TokenList SqliteCreateTrigger::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("CREATE").withSpace(); if (tempKw) builder.withKeyword("TEMP").withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp index 6b11c3c..d1a8961 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreateview.cpp @@ -98,7 +98,7 @@ QList<SqliteStatement::FullObject> SqliteCreateView::getFullObjectsInStatement() TokenList SqliteCreateView::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("CREATE").withSpace(); if (tempKw) builder.withKeyword("TEMP").withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatevirtualtable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatevirtualtable.cpp index bc38dc9..1d98c8d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatevirtualtable.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitecreatevirtualtable.cpp @@ -91,7 +91,7 @@ void SqliteCreateVirtualTable::initName(const QString &name1, const QString &nam TokenList SqliteCreateVirtualTable::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("CREATE").withSpace().withKeyword("VIRTUAL").withSpace().withKeyword("TABLE"); if (ifNotExistsKw) builder.withKeyword("IF").withSpace().withKeyword("NOT").withSpace().withKeyword("EXISTS").withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp index 60e5878..6026de3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedelete.cpp @@ -113,7 +113,7 @@ void SqliteDelete::init(const QString &name1, const QString &name2, SqliteExpr * TokenList SqliteDelete::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); if (with) builder.withStatement(with); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedetach.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedetach.cpp index 1f874d3..e5b59e3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedetach.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedetach.cpp @@ -36,7 +36,7 @@ SqliteStatement*SqliteDetach::clone() TokenList SqliteDetach::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("DETACH").withSpace(); if (databaseKw) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropindex.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropindex.cpp index df924fe..2e39312 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropindex.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropindex.cpp @@ -63,7 +63,7 @@ QList<SqliteStatement::FullObject> SqliteDropIndex::getFullObjectsInStatement() TokenList SqliteDropIndex::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("DROP").withSpace().withKeyword("INDEX").withSpace(); if (ifExistsKw) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptable.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptable.cpp index 9c4aa37..c4fc02d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptable.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptable.cpp @@ -71,7 +71,7 @@ QList<SqliteStatement::FullObject> SqliteDropTable::getFullObjectsInStatement() TokenList SqliteDropTable::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("DROP").withSpace().withKeyword("TABLE").withSpace(); if (ifExistsKw) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptrigger.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptrigger.cpp index 471d558..8921af3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptrigger.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedroptrigger.cpp @@ -64,7 +64,7 @@ QList<SqliteStatement::FullObject> SqliteDropTrigger::getFullObjectsInStatement( TokenList SqliteDropTrigger::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("DROP").withSpace().withKeyword("TRIGGER").withSpace(); if (ifExistsKw) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropview.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropview.cpp index 06d70db..b992e98 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropview.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitedropview.cpp @@ -70,7 +70,7 @@ QList<SqliteStatement::FullObject> SqliteDropView::getFullObjectsInStatement() TokenList SqliteDropView::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("DROP").withSpace().withKeyword("VIEW").withSpace(); if (ifExistsKw) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp index 6c26e8d..cb85377 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteinsert.cpp @@ -167,7 +167,7 @@ void SqliteInsert::initMode(bool replace, SqliteConflictAlgo onConflict) TokenList SqliteInsert::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); if (with) builder.withStatement(with); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitepragma.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitepragma.cpp index 0e4f056..4660e4f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitepragma.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitepragma.cpp @@ -90,7 +90,7 @@ void SqlitePragma::initName(const QString &name1, const QString &name2) TokenList SqlitePragma::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("PRAGMA").withSpace(); if (!database.isNull()) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.cpp index 19c3c40..02eff1d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.cpp @@ -1,4 +1,5 @@ #include "sqlitequery.h" +#include "parser/statementtokenbuilder.h" SqliteQuery::SqliteQuery() { @@ -49,3 +50,15 @@ bool SqliteQuery::isReadOnly() } return readOnly; } + +TokenList SqliteQuery::rebuildTokensFromContents() +{ + StatementTokenBuilder builder; + if (explain) + { + builder.withKeyword("EXPLAIN").withSpace(); + if (queryPlan) + builder.withKeyword("QUERY").withSpace().withKeyword("PLAN").withSpace(); + } + return builder.build(); +} diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.h b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.h index 1667dc9..787ccb9 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitequery.h @@ -20,6 +20,9 @@ class API_EXPORT SqliteQuery : public SqliteStatement bool explain = false; bool queryPlan = false; + + protected: + TokenList rebuildTokensFromContents(); }; /** diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitereindex.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitereindex.cpp index 7584a37..6f863f9 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitereindex.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitereindex.cpp @@ -71,7 +71,7 @@ QList<SqliteStatement::FullObject> SqliteReindex::getFullObjectsInStatement() TokenList SqliteReindex::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("REINDEX"); if (!database.isNull()) builder.withOther(database, dialect).withOperator("."); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterelease.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterelease.cpp index 8510524..f71d61c 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterelease.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterelease.cpp @@ -28,7 +28,7 @@ SqliteStatement*SqliteRelease::clone() TokenList SqliteRelease::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("RELEASE").withSpace(); if (savepointKw) builder.withKeyword("SAVEPOINT").withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp index a13fd4c..01284b4 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliterollback.cpp @@ -38,7 +38,7 @@ SqliteStatement*SqliteRollback::clone() TokenList SqliteRollback::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("ROLLBACK").withSpace(); if (transactionKw) builder.withKeyword("TRANSACTION").withSpace(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitesavepoint.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitesavepoint.cpp index 9003086..1ac50cd 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitesavepoint.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitesavepoint.cpp @@ -27,6 +27,7 @@ SqliteStatement*SqliteSavepoint::clone() TokenList SqliteSavepoint::rebuildTokensFromContents() { StatementTokenBuilder builder; + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("SAVEPOINT").withSpace().withOther(name, dialect).withOperator(";"); return builder.build(); } diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp index 5452795..f1b1929 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteselect.cpp @@ -759,6 +759,7 @@ TokenList SqliteSelect::Core::rebuildTokensFromContents() TokenList SqliteSelect::rebuildTokensFromContents() { StatementTokenBuilder builder; + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); if (with) builder.withStatement(with); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp index 88ac28b..df892fb 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqliteupdate.cpp @@ -168,7 +168,7 @@ QList<SqliteStatement::FullObject> SqliteUpdate::getFullObjectsInStatement() TokenList SqliteUpdate::rebuildTokensFromContents() { StatementTokenBuilder builder; - + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); if (with) builder.withStatement(with); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp index ab7d00e..96ff7a4 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/ast/sqlitevacuum.cpp @@ -51,6 +51,7 @@ QList<SqliteStatement::FullObject> SqliteVacuum::getFullObjectsInStatement() TokenList SqliteVacuum::rebuildTokensFromContents() { StatementTokenBuilder builder; + builder.withTokens(SqliteQuery::rebuildTokensFromContents()); builder.withKeyword("VACUUM").withOperator(";"); return builder.build(); } diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp index e9444e5..7f8ad7a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.cpp @@ -164,6 +164,36 @@ const QList<ParserError *> &ParserContext::getErrors() return errors; } +QVariant *ParserContext::handleNumberToken(const QString &tokenValue) +{ + recentNumberIsCandidateForMaxNegative = false; + if (tokenValue.startsWith("0x", Qt::CaseInsensitive)) + { + bool ok; + qint64 i64 = tokenValue.toLongLong(&ok, 16); + if (!ok) + { + quint64 ui64 = tokenValue.toULongLong(&ok, 16); + i64 = static_cast<qint64>(ui64); + } + return new QVariant(i64); + } + else if (tokenValue == "9223372036854775808") // max negative longlong value, but without a sign + { + recentNumberIsCandidateForMaxNegative = true; + return new QVariant(static_cast<qint64>(0L)); + } + else + { + return new QVariant(QVariant(tokenValue).toLongLong()); + } +} + +bool ParserContext::isCandidateForMaxNegativeNumber() const +{ + return recentNumberIsCandidateForMaxNegative; +} + void ParserContext::cleanUp() { foreach (ParserError* err, errors) diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.h b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.h index d52c021..64ce3a3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/parsercontext.h @@ -187,6 +187,9 @@ class ParserContext */ const QList<ParserError*>& getErrors(); + QVariant* handleNumberToken(const QString& tokenValue); + bool isCandidateForMaxNegativeNumber() const; + /** * @brief Flag indicating if the Lemon parser should setup token collections. * @@ -284,6 +287,18 @@ class ParserContext * Defined by errorBeforeNextToken() and minorErrorBeforeNextToken(). */ QString nextTokenError; + + /** + * @brief Indicates that the number value is 1 over the max longlong value. + * + * Then the positive number is over max longlong by 1, then this is a candidate + * for max negative longlong value, but this is to be identified in the next parser reduce level. + * + * Because of that this flag is set to false by default each time the number is parsed and is set afterwards + * to true each timethe value is 1 over max longlong. This way if the 'term' rule includes 'minus' token, + * then it will be properly converted to max negative longlong. + */ + bool recentNumberIsCandidateForMaxNegative = false; }; #endif // PARSERCONTEXT_H diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp index 5b65904..ffc1fab 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp @@ -3832,7 +3832,7 @@ static void yy_reduce( case 250: /* exprx ::= expr not_opt IN nm dbnm */ { yygotominor.yy192 = new SqliteExpr(); - yygotominor.yy192->initIn(yymsp[-4].minor.yy192, yymsp[-3].minor.yy291, *(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319)); + yygotominor.yy192->initIn(yymsp[-4].minor.yy192, *(yymsp[-3].minor.yy291), *(yymsp[-1].minor.yy319), *(yymsp[0].minor.yy319)); delete yymsp[-3].minor.yy291; delete yymsp[-1].minor.yy319; objectForTokens = yygotominor.yy192; diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y index d6ee4f7..472725e 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y @@ -1513,7 +1513,7 @@ exprx(X) ::= expr(E) not_opt(N) IN LP exprx(X) ::= expr(E) not_opt(N) IN nm(N1) dbnm(N2). [IN] { X = new SqliteExpr(); - X->initIn(E, N, *(N1), *(N2)); + X->initIn(E, *(N), *(N1), *(N2)); delete N; delete N1; objectForTokens = X; diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp index 646c533..fa8a9d1 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp @@ -51,6 +51,7 @@ #include "parser/ast/sqlitewith.h" #include <QObject> #include <QDebug> +#include <limits.h> #define assert(X) Q_ASSERT(X) #define UNUSED_PARAMETER(X) (void)(X) @@ -242,7 +243,7 @@ static const YYMINORTYPE yyzerominor = { 0 }; ** shifting non-terminals after a reduce. ** yy_default[] Default action for each state. */ -#define YY_ACTTAB_COUNT (2282) +#define YY_ACTTAB_COUNT (2263) static const YYACTIONTYPE yy_action[] = { /* 0 */ 431, 48, 48, 47, 47, 47, 46, 216, 716, 339, /* 10 */ 643, 425, 51, 51, 51, 51, 44, 49, 49, 49, @@ -413,66 +414,64 @@ static const YYACTIONTYPE yy_action[] = { /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1037, 425, /* 1670 */ 714, 713, 642, 416, 422, 715, 430, 687, 429, 641, /* 1680 */ 428, 350, 690, 619, 686, 172, 641, 494, 454, 642, - /* 1690 */ 689, 688, 687, 430, 111, 428, 411, 286, 337, 714, - /* 1700 */ 713, 686, 190, 714, 713, 621, 287, 72, 430, 428, - /* 1710 */ 715, 428, 436, 685, 209, 558, 686, 188, 41, 715, - /* 1720 */ 567, 287, 430, 642, 430, 676, 9, 642, 716, 96, - /* 1730 */ 686, 196, 686, 195, 715, 38, 39, 641, 716, 283, - /* 1740 */ 431, 327, 40, 716, 207, 428, 203, 319, 150, 428, - /* 1750 */ 4, 425, 715, 318, 641, 642, 325, 422, 430, 716, - /* 1760 */ 687, 429, 430, 719, 716, 690, 686, 197, 709, 641, - /* 1770 */ 686, 201, 642, 689, 688, 687, 428, 224, 411, 716, - /* 1780 */ 261, 716, 86, 641, 221, 641, 708, 651, 258, 430, - /* 1790 */ 428, 695, 220, 715, 428, 685, 420, 686, 232, 227, - /* 1800 */ 41, 715, 651, 430, 715, 433, 642, 430, 676, 9, - /* 1810 */ 642, 686, 290, 428, 707, 686, 191, 38, 39, 641, - /* 1820 */ 149, 147, 431, 641, 40, 257, 430, 82, 432, 256, - /* 1830 */ 714, 713, 4, 425, 686, 194, 679, 642, 715, 422, - /* 1840 */ 714, 713, 714, 429, 716, 714, 713, 690, 716, 715, - /* 1850 */ 641, 367, 428, 15, 642, 689, 688, 687, 428, 684, - /* 1860 */ 411, 714, 713, 700, 641, 430, 714, 713, 641, 145, - /* 1870 */ 17, 430, 476, 686, 193, 234, 521, 685, 294, 686, - /* 1880 */ 185, 714, 713, 714, 713, 293, 400, 641, 642, 428, - /* 1890 */ 676, 9, 642, 541, 428, 502, 292, 28, 529, 38, - /* 1900 */ 39, 474, 430, 291, 248, 408, 40, 430, 481, 428, - /* 1910 */ 686, 189, 55, 683, 4, 686, 314, 715, 715, 642, - /* 1920 */ 428, 422, 430, 463, 687, 429, 641, 428, 716, 690, - /* 1930 */ 686, 313, 641, 430, 402, 216, 642, 689, 688, 687, - /* 1940 */ 430, 686, 312, 428, 536, 428, 714, 713, 686, 184, - /* 1950 */ 714, 713, 43, 640, 419, 66, 430, 229, 430, 214, - /* 1960 */ 415, 228, 34, 641, 686, 171, 686, 170, 641, 637, - /* 1970 */ 642, 635, 676, 9, 642, 428, 141, 626, 428, 622, - /* 1980 */ 246, 139, 715, 641, 477, 428, 108, 389, 430, 428, - /* 1990 */ 715, 430, 715, 715, 641, 386, 686, 183, 430, 686, - /* 2000 */ 169, 641, 430, 380, 577, 471, 686, 186, 617, 244, - /* 2010 */ 686, 168, 428, 473, 133, 428, 242, 641, 330, 641, - /* 2020 */ 470, 715, 715, 583, 578, 430, 277, 715, 430, 715, - /* 2030 */ 714, 713, 428, 686, 167, 428, 686, 93, 574, 716, - /* 2040 */ 535, 573, 443, 572, 716, 430, 547, 128, 430, 641, - /* 2050 */ 310, 428, 641, 686, 166, 428, 686, 164, 428, 641, - /* 2060 */ 716, 236, 716, 641, 430, 322, 546, 716, 430, 428, - /* 2070 */ 393, 430, 686, 174, 715, 554, 686, 173, 309, 686, - /* 2080 */ 175, 716, 430, 715, 716, 275, 641, 716, 545, 641, - /* 2090 */ 686, 178, 428, 80, 428, 568, 716, 428, 715, 428, - /* 2100 */ 544, 716, 127, 106, 716, 430, 641, 430, 715, 641, - /* 2110 */ 430, 549, 430, 686, 94, 686, 177, 428, 686, 176, - /* 2120 */ 686, 180, 269, 428, 715, 641, 212, 392, 126, 641, - /* 2130 */ 430, 354, 641, 262, 24, 715, 430, 526, 686, 179, - /* 2140 */ 430, 714, 713, 641, 686, 165, 714, 713, 686, 70, - /* 2150 */ 124, 363, 78, 527, 123, 105, 121, 155, 523, 513, - /* 2160 */ 84, 104, 714, 713, 714, 713, 641, 348, 641, 714, - /* 2170 */ 713, 641, 263, 641, 518, 360, 492, 489, 120, 493, - /* 2180 */ 441, 480, 103, 714, 713, 715, 714, 713, 715, 714, - /* 2190 */ 713, 641, 648, 118, 345, 347, 76, 641, 714, 713, - /* 2200 */ 442, 641, 343, 714, 713, 427, 714, 713, 715, 284, - /* 2210 */ 264, 253, 117, 715, 250, 241, 75, 116, 715, 115, - /* 2220 */ 237, 74, 715, 715, 715, 73, 238, 715, 715, 114, - /* 2230 */ 323, 113, 23, 715, 451, 652, 20, 449, 101, 715, - /* 2240 */ 100, 445, 112, 61, 439, 162, 295, 669, 655, 623, - /* 2250 */ 412, 665, 520, 628, 618, 278, 569, 260, 198, 361, - /* 2260 */ 305, 374, 681, 522, 664, 6, 654, 556, 211, 45, - /* 2270 */ 364, 487, 566, 560, 296, 559, 409, 81, 71, 587, - /* 2280 */ 586, 550, + /* 1690 */ 689, 688, 687, 430, 111, 428, 411, 716, 72, 714, + /* 1700 */ 713, 686, 190, 714, 713, 621, 287, 337, 430, 428, + /* 1710 */ 436, 428, 96, 685, 209, 558, 686, 188, 41, 715, + /* 1720 */ 567, 287, 430, 642, 430, 676, 9, 642, 716, 207, + /* 1730 */ 686, 196, 686, 195, 715, 38, 39, 641, 716, 286, + /* 1740 */ 431, 327, 40, 224, 86, 428, 695, 319, 203, 428, + /* 1750 */ 4, 425, 715, 318, 641, 642, 325, 422, 430, 715, + /* 1760 */ 687, 429, 430, 150, 261, 690, 686, 197, 221, 641, + /* 1770 */ 686, 201, 642, 689, 688, 687, 428, 715, 411, 716, + /* 1780 */ 719, 709, 708, 641, 433, 641, 707, 651, 258, 430, + /* 1790 */ 428, 283, 220, 536, 428, 685, 149, 686, 232, 714, + /* 1800 */ 713, 715, 651, 430, 715, 147, 642, 430, 676, 9, + /* 1810 */ 642, 686, 290, 428, 82, 686, 191, 38, 39, 641, + /* 1820 */ 679, 367, 432, 641, 40, 15, 430, 145, 700, 234, + /* 1830 */ 714, 713, 4, 715, 686, 194, 408, 642, 420, 422, + /* 1840 */ 714, 713, 687, 429, 716, 428, 684, 690, 637, 715, + /* 1850 */ 641, 227, 428, 294, 642, 689, 688, 687, 430, 716, + /* 1860 */ 293, 715, 428, 17, 641, 430, 686, 193, 641, 292, + /* 1870 */ 400, 291, 402, 686, 185, 430, 521, 28, 683, 55, + /* 1880 */ 428, 714, 713, 686, 189, 43, 428, 641, 642, 640, + /* 1890 */ 676, 9, 642, 430, 216, 419, 428, 66, 529, 430, + /* 1900 */ 428, 686, 314, 428, 229, 214, 228, 686, 313, 430, + /* 1910 */ 428, 415, 34, 430, 141, 626, 430, 686, 312, 641, + /* 1920 */ 428, 686, 184, 430, 686, 171, 641, 428, 715, 635, + /* 1930 */ 139, 686, 170, 430, 108, 386, 641, 716, 463, 622, + /* 1940 */ 430, 686, 183, 428, 617, 428, 714, 713, 686, 169, + /* 1950 */ 428, 716, 715, 389, 641, 583, 430, 715, 430, 380, + /* 1960 */ 641, 714, 713, 430, 686, 186, 686, 168, 428, 716, + /* 1970 */ 641, 686, 167, 541, 641, 428, 578, 641, 716, 257, + /* 1980 */ 133, 430, 577, 256, 641, 428, 474, 428, 430, 686, + /* 1990 */ 93, 428, 715, 715, 641, 716, 686, 166, 430, 716, + /* 2000 */ 430, 641, 330, 716, 430, 716, 686, 164, 686, 174, + /* 2010 */ 428, 277, 686, 173, 393, 428, 275, 641, 716, 641, + /* 2020 */ 716, 568, 574, 430, 641, 428, 573, 715, 430, 715, + /* 2030 */ 428, 686, 175, 489, 715, 428, 686, 178, 430, 714, + /* 2040 */ 713, 572, 641, 430, 716, 428, 686, 94, 430, 641, + /* 2050 */ 310, 686, 177, 714, 713, 128, 686, 176, 430, 641, + /* 2060 */ 554, 641, 549, 716, 428, 641, 686, 180, 716, 428, + /* 2070 */ 716, 714, 713, 716, 392, 715, 547, 430, 546, 545, + /* 2080 */ 714, 713, 430, 502, 641, 686, 179, 430, 544, 641, + /* 2090 */ 686, 165, 527, 309, 80, 686, 70, 714, 713, 641, + /* 2100 */ 535, 714, 713, 269, 641, 714, 713, 714, 713, 641, + /* 2110 */ 127, 106, 471, 523, 248, 263, 715, 518, 481, 641, + /* 2120 */ 714, 713, 714, 713, 476, 212, 246, 715, 715, 244, + /* 2130 */ 477, 126, 492, 473, 480, 262, 242, 354, 641, 715, + /* 2140 */ 470, 236, 715, 641, 360, 322, 714, 713, 641, 715, + /* 2150 */ 347, 363, 24, 652, 715, 442, 427, 715, 443, 441, + /* 2160 */ 124, 284, 526, 715, 648, 714, 713, 264, 715, 715, + /* 2170 */ 714, 713, 714, 713, 715, 714, 713, 253, 78, 250, + /* 2180 */ 715, 241, 237, 238, 105, 123, 121, 84, 104, 155, + /* 2190 */ 715, 513, 715, 120, 715, 715, 715, 493, 348, 103, + /* 2200 */ 118, 345, 76, 343, 117, 75, 116, 115, 114, 74, + /* 2210 */ 73, 113, 23, 323, 451, 101, 20, 100, 623, 112, + /* 2220 */ 61, 520, 449, 445, 439, 655, 628, 162, 278, 669, + /* 2230 */ 665, 412, 569, 295, 681, 198, 374, 522, 618, 260, + /* 2240 */ 361, 6, 305, 664, 654, 556, 364, 409, 566, 211, + /* 2250 */ 296, 71, 560, 559, 487, 587, 586, 81, 550, 1150, + /* 2260 */ 1150, 1150, 45, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 4, 81, 82, 83, 84, 85, 86, 87, 4, 58, @@ -644,107 +643,105 @@ static const YYCODETYPE yy_lookahead[] = { /* 1660 */ 11, 103, 177, 177, 190, 106, 107, 96, 97, 15, /* 1670 */ 106, 107, 101, 276, 103, 190, 190, 106, 107, 251, /* 1680 */ 177, 32, 111, 141, 198, 199, 251, 162, 97, 118, - /* 1690 */ 119, 120, 121, 190, 93, 177, 42, 177, 37, 106, - /* 1700 */ 107, 198, 199, 106, 107, 141, 177, 95, 190, 177, - /* 1710 */ 190, 177, 36, 59, 252, 118, 198, 199, 64, 190, - /* 1720 */ 127, 177, 190, 152, 190, 154, 155, 156, 4, 189, + /* 1690 */ 119, 120, 121, 190, 93, 177, 42, 4, 95, 106, + /* 1700 */ 107, 198, 199, 106, 107, 141, 177, 37, 190, 177, + /* 1710 */ 36, 177, 189, 59, 252, 118, 198, 199, 64, 190, + /* 1720 */ 127, 177, 190, 152, 190, 154, 155, 156, 4, 238, /* 1730 */ 198, 199, 198, 199, 190, 81, 82, 251, 4, 177, - /* 1740 */ 4, 212, 88, 4, 238, 177, 273, 275, 90, 177, - /* 1750 */ 96, 15, 190, 275, 251, 101, 212, 103, 190, 4, - /* 1760 */ 106, 107, 190, 176, 4, 111, 198, 199, 176, 251, - /* 1770 */ 198, 199, 118, 119, 120, 121, 177, 204, 42, 4, - /* 1780 */ 177, 4, 204, 251, 181, 251, 176, 258, 177, 190, - /* 1790 */ 177, 177, 181, 190, 177, 59, 276, 198, 199, 237, - /* 1800 */ 64, 190, 258, 190, 190, 176, 152, 190, 154, 155, - /* 1810 */ 156, 198, 199, 177, 49, 198, 199, 81, 82, 251, - /* 1820 */ 178, 178, 4, 251, 88, 177, 190, 180, 183, 181, - /* 1830 */ 106, 107, 96, 15, 198, 199, 177, 101, 190, 103, - /* 1840 */ 106, 107, 106, 107, 4, 106, 107, 111, 4, 190, - /* 1850 */ 251, 60, 177, 104, 118, 119, 120, 121, 177, 221, - /* 1860 */ 42, 106, 107, 184, 251, 190, 106, 107, 251, 56, - /* 1870 */ 151, 190, 133, 198, 199, 138, 152, 59, 227, 198, - /* 1880 */ 199, 106, 107, 106, 107, 228, 148, 251, 152, 177, - /* 1890 */ 154, 155, 156, 118, 177, 118, 229, 149, 164, 81, - /* 1900 */ 82, 146, 190, 230, 177, 177, 88, 190, 181, 177, - /* 1910 */ 198, 199, 150, 231, 96, 198, 199, 190, 190, 101, - /* 1920 */ 177, 103, 190, 163, 106, 107, 251, 177, 4, 111, - /* 1930 */ 198, 199, 251, 190, 147, 87, 118, 119, 120, 121, - /* 1940 */ 190, 198, 199, 177, 100, 177, 106, 107, 198, 199, - /* 1950 */ 106, 107, 252, 64, 203, 96, 190, 259, 190, 87, - /* 1960 */ 203, 255, 158, 251, 198, 199, 198, 199, 251, 177, - /* 1970 */ 152, 241, 154, 155, 156, 177, 99, 177, 177, 177, - /* 1980 */ 177, 241, 190, 251, 181, 177, 99, 223, 190, 177, - /* 1990 */ 190, 190, 190, 190, 251, 139, 198, 199, 190, 198, - /* 2000 */ 199, 251, 190, 123, 208, 165, 198, 199, 177, 177, - /* 2010 */ 198, 199, 177, 181, 177, 177, 177, 251, 31, 251, - /* 2020 */ 181, 190, 190, 200, 200, 190, 200, 190, 190, 190, - /* 2030 */ 106, 107, 177, 198, 199, 177, 198, 199, 202, 4, - /* 2040 */ 241, 122, 118, 200, 4, 190, 200, 99, 190, 251, - /* 2050 */ 203, 177, 251, 198, 199, 177, 198, 199, 177, 251, - /* 2060 */ 4, 177, 4, 251, 190, 181, 200, 4, 190, 177, - /* 2070 */ 177, 190, 198, 199, 190, 208, 198, 199, 203, 198, - /* 2080 */ 199, 4, 190, 190, 4, 177, 251, 4, 200, 251, - /* 2090 */ 198, 199, 177, 180, 177, 177, 4, 177, 190, 177, - /* 2100 */ 200, 4, 99, 180, 4, 190, 251, 190, 190, 251, - /* 2110 */ 190, 177, 190, 198, 199, 198, 199, 177, 198, 199, - /* 2120 */ 198, 199, 177, 177, 190, 251, 241, 177, 99, 251, - /* 2130 */ 190, 27, 251, 264, 158, 190, 190, 227, 198, 199, - /* 2140 */ 190, 106, 107, 251, 198, 199, 106, 107, 198, 199, - /* 2150 */ 99, 265, 215, 118, 99, 62, 99, 250, 118, 215, - /* 2160 */ 96, 180, 106, 107, 106, 107, 251, 241, 251, 106, - /* 2170 */ 107, 251, 177, 251, 118, 177, 118, 100, 99, 227, - /* 2180 */ 100, 118, 180, 106, 107, 190, 106, 107, 190, 106, - /* 2190 */ 107, 251, 100, 99, 241, 177, 217, 251, 106, 107, - /* 2200 */ 177, 251, 60, 106, 107, 177, 106, 107, 190, 177, - /* 2210 */ 177, 177, 99, 190, 177, 177, 217, 99, 190, 99, - /* 2220 */ 177, 217, 190, 190, 190, 217, 177, 190, 190, 99, - /* 2230 */ 241, 99, 268, 190, 18, 152, 268, 241, 99, 190, - /* 2240 */ 99, 241, 99, 270, 16, 224, 226, 261, 201, 152, - /* 2250 */ 256, 261, 152, 240, 242, 201, 206, 242, 210, 242, - /* 2260 */ 175, 202, 191, 227, 191, 224, 191, 191, 262, 253, - /* 2270 */ 263, 274, 207, 207, 222, 207, 216, 55, 239, 198, - /* 2280 */ 198, 211, + /* 1740 */ 4, 212, 88, 204, 204, 177, 177, 275, 273, 177, + /* 1750 */ 96, 15, 190, 275, 251, 101, 212, 103, 190, 190, + /* 1760 */ 106, 107, 190, 90, 177, 111, 198, 199, 181, 251, + /* 1770 */ 198, 199, 118, 119, 120, 121, 177, 190, 42, 4, + /* 1780 */ 176, 176, 176, 251, 176, 251, 49, 258, 177, 190, + /* 1790 */ 177, 177, 181, 100, 177, 59, 178, 198, 199, 106, + /* 1800 */ 107, 190, 258, 190, 190, 178, 152, 190, 154, 155, + /* 1810 */ 156, 198, 199, 177, 180, 198, 199, 81, 82, 251, + /* 1820 */ 177, 60, 183, 251, 88, 104, 190, 56, 184, 138, + /* 1830 */ 106, 107, 96, 190, 198, 199, 177, 101, 276, 103, + /* 1840 */ 106, 107, 106, 107, 4, 177, 221, 111, 177, 190, + /* 1850 */ 251, 237, 177, 227, 118, 119, 120, 121, 190, 4, + /* 1860 */ 228, 190, 177, 151, 251, 190, 198, 199, 251, 229, + /* 1870 */ 148, 230, 147, 198, 199, 190, 152, 149, 231, 150, + /* 1880 */ 177, 106, 107, 198, 199, 252, 177, 251, 152, 64, + /* 1890 */ 154, 155, 156, 190, 87, 203, 177, 96, 164, 190, + /* 1900 */ 177, 198, 199, 177, 259, 87, 255, 198, 199, 190, + /* 1910 */ 177, 203, 158, 190, 99, 177, 190, 198, 199, 251, + /* 1920 */ 177, 198, 199, 190, 198, 199, 251, 177, 190, 241, + /* 1930 */ 241, 198, 199, 190, 99, 139, 251, 4, 163, 177, + /* 1940 */ 190, 198, 199, 177, 177, 177, 106, 107, 198, 199, + /* 1950 */ 177, 4, 190, 223, 251, 200, 190, 190, 190, 123, + /* 1960 */ 251, 106, 107, 190, 198, 199, 198, 199, 177, 4, + /* 1970 */ 251, 198, 199, 118, 251, 177, 200, 251, 4, 177, + /* 1980 */ 177, 190, 208, 181, 251, 177, 146, 177, 190, 198, + /* 1990 */ 199, 177, 190, 190, 251, 4, 198, 199, 190, 4, + /* 2000 */ 190, 251, 31, 4, 190, 4, 198, 199, 198, 199, + /* 2010 */ 177, 200, 198, 199, 177, 177, 177, 251, 4, 251, + /* 2020 */ 4, 177, 202, 190, 251, 177, 122, 190, 190, 190, + /* 2030 */ 177, 198, 199, 100, 190, 177, 198, 199, 190, 106, + /* 2040 */ 107, 200, 251, 190, 4, 177, 198, 199, 190, 251, + /* 2050 */ 203, 198, 199, 106, 107, 99, 198, 199, 190, 251, + /* 2060 */ 208, 251, 177, 4, 177, 251, 198, 199, 4, 177, + /* 2070 */ 4, 106, 107, 4, 177, 190, 200, 190, 200, 200, + /* 2080 */ 106, 107, 190, 118, 251, 198, 199, 190, 200, 251, + /* 2090 */ 198, 199, 118, 203, 180, 198, 199, 106, 107, 251, + /* 2100 */ 241, 106, 107, 177, 251, 106, 107, 106, 107, 251, + /* 2110 */ 99, 180, 165, 118, 177, 177, 190, 118, 181, 251, + /* 2120 */ 106, 107, 106, 107, 133, 241, 177, 190, 190, 177, + /* 2130 */ 181, 99, 118, 181, 118, 264, 177, 27, 251, 190, + /* 2140 */ 181, 177, 190, 251, 177, 181, 106, 107, 251, 190, + /* 2150 */ 177, 265, 158, 152, 190, 177, 177, 190, 118, 100, + /* 2160 */ 99, 177, 227, 190, 100, 106, 107, 177, 190, 190, + /* 2170 */ 106, 107, 106, 107, 190, 106, 107, 177, 215, 177, + /* 2180 */ 190, 177, 177, 177, 62, 99, 99, 96, 180, 250, + /* 2190 */ 190, 215, 190, 99, 190, 190, 190, 227, 241, 180, + /* 2200 */ 99, 241, 217, 60, 99, 217, 99, 99, 99, 217, + /* 2210 */ 217, 99, 268, 241, 18, 99, 268, 99, 152, 99, + /* 2220 */ 270, 152, 241, 241, 16, 201, 240, 224, 201, 261, + /* 2230 */ 261, 256, 206, 226, 191, 210, 202, 227, 242, 242, + /* 2240 */ 242, 224, 175, 191, 191, 191, 263, 216, 207, 262, + /* 2250 */ 222, 239, 207, 207, 274, 198, 198, 55, 211, 277, + /* 2260 */ 277, 277, 253, }; #define YY_SHIFT_USE_DFLT (-81) #define YY_SHIFT_COUNT (434) #define YY_SHIFT_MIN (-80) -#define YY_SHIFT_MAX (2228) +#define YY_SHIFT_MAX (2208) static const short yy_shift_ofst[] = { /* 0 */ 1158, -4, 201, 1182, 819, 1571, 1571, 689, 361, 1489, /* 10 */ 1654, 1654, 770, 364, 364, 157, 81, 179, 1406, 1323, /* 20 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, /* 30 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, /* 40 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1654, - /* 50 */ 1654, 1654, 1654, 1654, 1654, 1736, 1654, 1818, 370, 798, - /* 60 */ 181, 370, 2083, 2083, 2083, 2083, 2083, 887, 887, 565, + /* 50 */ 1654, 1654, 1654, 1654, 1654, 1654, 1654, 1736, 370, 798, + /* 60 */ 181, 370, 2001, 2001, 2001, 2001, 2001, 887, 887, 565, /* 70 */ 277, 4, 1510, 1492, 1458, 1375, 1449, 1434, 1431, 1427, - /* 80 */ 1379, 448, 1399, 2097, 2097, 2100, 439, 2097, 2092, 2083, + /* 80 */ 1379, 448, 1399, 2066, 2066, 2069, 439, 2066, 2064, 2001, /* 90 */ 565, 1039, 538, 538, 735, 84, 44, 171, 859, 775, /* 100 */ 906, 773, 910, 636, 1172, 5, 450, 5, 443, 413, - /* 110 */ 185, 2080, 1924, 1760, 1840, 1755, 1739, 2063, 2077, 2058, - /* 120 */ 1525, 2056, 1724, 2040, 2035, 1777, 1734, 1517, 1844, 1775, + /* 110 */ 185, 2059, 2040, 1775, 1947, 1840, 1991, 2016, 1933, 2014, + /* 120 */ 1525, 1999, 1724, 1995, 1974, 1965, 1734, 1517, 1693, 1855, /* 130 */ 1047, 1593, 1597, 902, 140, 1542, 1542, 1436, 1564, 1542, /* 140 */ 1236, 780, 1409, 349, 562, 216, 620, 1559, 1515, 1348, - /* 150 */ 90, 829, 829, 829, 872, 544, 2222, 2222, 2222, 2222, - /* 160 */ 2222, -81, -81, 459, 619, 619, 619, 619, 619, 619, + /* 150 */ 90, 829, 829, 829, 872, 544, 2202, 2202, 2202, 2202, + /* 160 */ 2202, -81, -81, 459, 619, 619, 619, 619, 619, 619, /* 170 */ 619, 619, 619, 645, 327, 683, 1180, 1149, 1117, 1087, /* 180 */ 1051, 1021, 985, 958, 916, 767, 1239, 1212, 1276, 509, /* 190 */ 509, -60, -38, -38, -38, -38, 578, -80, 314, 87, /* 200 */ 87, 41, 155, 75, 58, 58, 58, -6, 186, 862, /* 210 */ -47, 808, 1649, 1463, 1284, 206, 908, 424, 400, 25, /* 220 */ 729, 729, 679, 1364, -2, 855, 729, 442, 346, 855, - /* 230 */ 750, 750, 187, -9, 169, 2228, 2143, 2141, 2139, 2216, - /* 240 */ 2216, 2132, 2130, 2142, 2120, 2142, 2118, 2142, 2113, 2142, - /* 250 */ 2094, 1791, 1719, 2079, 1791, 2093, 2064, 2057, 2055, 2093, - /* 260 */ 1719, 2051, 1976, 2104, 2029, 1791, 2003, 1791, 1948, 1859, - /* 270 */ 1880, 1880, 1880, 1880, 1987, 1859, 1880, 1919, 1880, 1987, - /* 280 */ 1880, 1880, 1856, 1887, 1877, 1804, 1859, 1872, 1859, 1889, - /* 290 */ 1848, 1762, 1787, 1748, 1738, 1719, 1737, 1813, 1749, 1791, - /* 300 */ 1765, 1765, 1658, 1658, 1658, 1658, -81, -81, -81, -81, + /* 230 */ 750, 750, 187, -9, 169, 2208, 2120, 2118, 2116, 2196, + /* 240 */ 2196, 2112, 2109, 2143, 2108, 2143, 2107, 2143, 2105, 2143, + /* 250 */ 2101, 1761, 1712, 2094, 1761, 2122, 2091, 2087, 2086, 2122, + /* 260 */ 1712, 2061, 1994, 2110, 2032, 1761, 2011, 1761, 1956, 1801, + /* 270 */ 1836, 1836, 1836, 1836, 1971, 1801, 1836, 1904, 1836, 1971, + /* 280 */ 1836, 1836, 1796, 1835, 1815, 1754, 1801, 1818, 1801, 1825, + /* 290 */ 1807, 1729, 1725, 1728, 1722, 1712, 1691, 1771, 1721, 1761, + /* 300 */ 1737, 1737, 1673, 1673, 1673, 1673, -81, -81, -81, -81, /* 310 */ -81, -81, -81, -81, -81, -81, 564, 79, 158, 45, /* 320 */ 702, 243, -49, 398, 1362, 1321, 1042, 984, 788, 2, - /* 330 */ 471, -20, 758, 678, 344, 144, -44, 1676, 1661, 1601, - /* 340 */ 1612, 1591, 1549, 1558, 1543, 1511, 1541, 1519, 1496, 1459, + /* 330 */ 471, -20, 758, 678, 344, 144, -44, 1674, 1670, 1601, + /* 340 */ 1603, 1591, 1549, 1558, 1543, 1511, 1541, 1519, 1496, 1459, /* 350 */ 1575, 1484, 1545, 1536, 1550, 1490, 1487, 1418, 1420, 1483, /* 360 */ 1480, 1419, 1402, 1527, 1407, 1424, 1417, 1433, 1389, 1380, /* 370 */ 1405, 1454, 1394, 1393, 1377, 1368, 1425, 1444, 1327, 1369, @@ -758,40 +755,40 @@ static const short yy_shift_ofst[] = { #define YY_REDUCE_USE_DFLT (-100) #define YY_REDUCE_COUNT (315) #define YY_REDUCE_MIN (-99) -#define YY_REDUCE_MAX (2085) +#define YY_REDUCE_MAX (2067) static const short yy_reduce_ofst[] = { /* 0 */ 615, 1195, 699, -99, 764, 1138, 189, 705, 1259, 1218, - /* 10 */ 1201, 261, 196, 884, 599, 1187, 1950, 1946, 1940, 1922, - /* 20 */ 1920, 1917, 1915, 1892, 1881, 1878, 1874, 1858, 1855, 1838, - /* 30 */ 1835, 1812, 1808, 1801, 1798, 1768, 1766, 1750, 1743, 1732, - /* 40 */ 1717, 1712, 1681, 1675, 1636, 1617, 1613, 1599, 1572, 1568, + /* 10 */ 1201, 261, 196, 884, 599, 1187, 1897, 1892, 1887, 1868, + /* 20 */ 1858, 1853, 1848, 1838, 1833, 1814, 1810, 1808, 1798, 1791, + /* 30 */ 1773, 1768, 1766, 1750, 1743, 1733, 1726, 1723, 1719, 1709, + /* 40 */ 1703, 1685, 1675, 1668, 1636, 1617, 1613, 1599, 1572, 1568, /* 50 */ 1534, 1532, 1518, 1503, 1486, 1435, 1428, 1404, 490, 1401, /* 60 */ 214, 769, 1544, 1529, 1225, 124, 67, 596, 175, 547, - /* 70 */ 1221, 1562, 1884, 1839, 1832, 1803, 1727, 1648, 1611, 1603, - /* 80 */ 1270, 1520, 203, 1346, 1255, 131, 347, 950, 1397, 195, - /* 90 */ 885, 265, 1134, 1132, 125, 377, 1011, 2049, 2043, 2028, - /* 100 */ 1792, 1792, 2038, 2037, 2034, 697, 2033, 11, 1792, 2032, - /* 110 */ 2028, 2023, 1792, 1792, 1792, 1792, 1792, 1792, 1792, 2018, - /* 120 */ 1792, 1792, 1998, 1792, 1792, 1995, 1792, 1792, 1792, 1945, - /* 130 */ 1934, 1918, 1908, 1893, 1837, 1141, 1140, 1831, 1802, 1065, - /* 140 */ 1800, 1792, 1728, 1659, 1614, 1485, 632, 1474, 1452, 1294, + /* 70 */ 1221, 1614, 1964, 1959, 1952, 1949, 1937, 1802, 1611, 1587, + /* 80 */ 1270, 1562, 203, 1346, 1255, 131, 347, 950, 1397, 195, + /* 90 */ 885, 265, 1134, 1132, 125, 377, 1011, 2006, 2005, 1979, + /* 100 */ 1671, 1671, 2004, 2002, 2000, 697, 1990, 11, 1671, 1984, + /* 110 */ 1979, 1978, 1671, 1671, 1671, 1671, 1671, 1671, 1671, 1973, + /* 120 */ 1671, 1671, 1967, 1671, 1671, 1938, 1671, 1671, 1671, 1926, + /* 130 */ 1885, 1844, 1839, 1837, 1803, 1141, 1140, 1767, 1762, 1065, + /* 140 */ 1738, 1671, 1659, 1643, 1569, 1485, 632, 1474, 1452, 1294, /* 150 */ 1232, 1191, 666, 489, 938, 1022, 1020, 956, 924, 791, /* 160 */ 763, 746, 205, 1462, 1462, 1462, 1462, 1462, 1462, 1462, /* 170 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, /* 180 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, - /* 190 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 2070, 2082, - /* 200 */ 2081, 1462, 1997, 1997, 2068, 2066, 2065, 2039, 2060, 2016, - /* 210 */ 2052, 2007, 2006, 2076, 2075, 2073, 2071, 2041, 2085, 2036, - /* 220 */ 2017, 2015, 2059, 2048, 2050, 2054, 2012, 2013, 1994, 2047, - /* 230 */ 1990, 1986, 1462, 2020, 2021, 1973, 1799, 2000, 1996, 1968, - /* 240 */ 1964, 1989, 1799, 2008, 1799, 2004, 1799, 1999, 1799, 1979, - /* 250 */ 1953, 2002, 1952, 1926, 1981, 1944, 1907, 1799, 1799, 1937, - /* 260 */ 1910, 1799, 1886, 1869, 1885, 1923, 1799, 1913, 1799, 1875, - /* 270 */ 1900, 1888, 1866, 1846, 1867, 1847, 1843, 1836, 1826, 1796, - /* 280 */ 1824, 1823, 1764, 1740, 1730, 1706, 1757, 1698, 1751, 1700, - /* 290 */ 1462, 1682, 1673, 1667, 1657, 1651, 1638, 1679, 1645, 1647, - /* 300 */ 1643, 1642, 1629, 1610, 1592, 1587, 1478, 1472, 1473, 1578, - /* 310 */ 1573, 1506, 1462, 1462, 1462, 1540, + /* 190 */ 1462, 1462, 1462, 1462, 1462, 1462, 1462, 1462, 2047, 2058, + /* 200 */ 2057, 1462, 1980, 1980, 2046, 2045, 2041, 2012, 2031, 2009, + /* 210 */ 2028, 1983, 1987, 2054, 2053, 2052, 2043, 2017, 2067, 2010, + /* 220 */ 1998, 1997, 2034, 2025, 2026, 2027, 1996, 1986, 1975, 2024, + /* 230 */ 1969, 1968, 1462, 2007, 2003, 1950, 1859, 1982, 1981, 1948, + /* 240 */ 1944, 1972, 1859, 1993, 1859, 1992, 1859, 1988, 1859, 1985, + /* 250 */ 1960, 2019, 1970, 1957, 2008, 1976, 1939, 1859, 1859, 1963, + /* 260 */ 1935, 1859, 1886, 1871, 1884, 1931, 1859, 1914, 1859, 1890, + /* 270 */ 1888, 1879, 1878, 1876, 1852, 1847, 1841, 1820, 1811, 1774, + /* 280 */ 1776, 1755, 1730, 1689, 1688, 1651, 1708, 1645, 1692, 1633, + /* 290 */ 1462, 1647, 1641, 1640, 1632, 1626, 1625, 1644, 1639, 1634, + /* 300 */ 1627, 1618, 1608, 1606, 1605, 1604, 1478, 1472, 1475, 1540, + /* 310 */ 1539, 1491, 1462, 1462, 1462, 1523, }; static const YYACTIONTYPE yy_default[] = { /* 0 */ 729, 1037, 1142, 1142, 1026, 1026, 1026, 1142, 1026, 1026, @@ -3183,23 +3180,15 @@ static void yy_reduce( } break; case 81: /* term ::= NULL */ -{ - yygotominor.yy21 = new QVariant(); - } +{yygotominor.yy21 = new QVariant();} break; case 82: /* term ::= INTEGER */ -{ - int base = 10; - if (yymsp[0].minor.yy0->value.startsWith("0x", Qt::CaseInsensitive)) - base = 16; - - yygotominor.yy21 = new QVariant(yymsp[0].minor.yy0->value.toLongLong(nullptr, base)); - } + case 351: /* number ::= INTEGER */ yytestcase(yyruleno==351); +{yygotominor.yy21 = parserContext->handleNumberToken(yymsp[0].minor.yy0->value);} break; case 83: /* term ::= FLOAT */ -{ - yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble()); - } + case 352: /* number ::= FLOAT */ yytestcase(yyruleno==352); +{yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());} break; case 84: /* term ::= STRING|BLOB */ case 345: /* nmnum ::= ON */ yytestcase(yyruleno==345); @@ -4273,7 +4262,6 @@ static void yy_reduce( } break; case 277: /* exprx ::= BITNOT expr */ - case 278: /* exprx ::= MINUS expr */ yytestcase(yyruleno==278); case 279: /* exprx ::= PLUS expr */ yytestcase(yyruleno==279); { yygotominor.yy490 = new SqliteExpr(); @@ -4281,6 +4269,23 @@ static void yy_reduce( objectForTokens = yygotominor.yy490; } break; + case 278: /* exprx ::= MINUS expr */ +{ + yygotominor.yy490 = new SqliteExpr(); + if (yymsp[0].minor.yy490->mode == SqliteExpr::Mode::LITERAL_VALUE && + parserContext->isCandidateForMaxNegativeNumber() && + yymsp[0].minor.yy490->literalValue == static_cast<qint64>(0L)) + { + yygotominor.yy490->initLiteral(std::numeric_limits<qint64>::min()); + delete yymsp[0].minor.yy490; + } + else + { + yygotominor.yy490->initUnaryOp(yymsp[0].minor.yy490, yymsp[-1].minor.yy0->value); + } + objectForTokens = yygotominor.yy490; + } + break; case 280: /* exprx ::= expr not_opt BETWEEN expr AND expr */ { yygotominor.yy490 = new SqliteExpr(); @@ -4316,7 +4321,7 @@ static void yy_reduce( case 284: /* exprx ::= expr not_opt IN nm dbnm */ { yygotominor.yy490 = new SqliteExpr(); - yygotominor.yy490->initIn(yymsp[-4].minor.yy490, yymsp[-3].minor.yy237, *(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); + yygotominor.yy490->initIn(yymsp[-4].minor.yy490, *(yymsp[-3].minor.yy237), *(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-3].minor.yy237; delete yymsp[-1].minor.yy211; objectForTokens = yygotominor.yy490; @@ -4577,19 +4582,18 @@ static void yy_reduce( if (yymsp[0].minor.yy21->type() == QVariant::Double) *(yymsp[0].minor.yy21) = -(yymsp[0].minor.yy21->toDouble()); else if (yymsp[0].minor.yy21->type() == QVariant::LongLong) - *(yymsp[0].minor.yy21) = -(yymsp[0].minor.yy21->toLongLong()); + { + if (parserContext->isCandidateForMaxNegativeNumber()) + *(yymsp[0].minor.yy21) = std::numeric_limits<qint64>::min(); + else + *(yymsp[0].minor.yy21) = -(yymsp[0].minor.yy21->toLongLong()); + } else Q_ASSERT_X(true, "producing minus number", "QVariant is neither of Double or LongLong."); yygotominor.yy21 = yymsp[0].minor.yy21; } break; - case 351: /* number ::= INTEGER */ -{yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());} - break; - case 352: /* number ::= FLOAT */ -{yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());} - break; case 353: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */ { yygotominor.yy399 = new SqliteCreateTrigger( diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y index 0353e2c..0bab877 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y @@ -57,6 +57,7 @@ #include "parser/ast/sqlitewith.h" #include <QObject> #include <QDebug> +#include <limits.h> #define assert(X) Q_ASSERT(X) #define UNUSED_PARAMETER(X) (void)(X) @@ -539,19 +540,9 @@ ccons(X) ::= CHECK LP RP. { %type term {QVariant*} %destructor term {delete $$;} -term(X) ::= NULL. { - X = new QVariant(); - } -term(X) ::= INTEGER(N). { - int base = 10; - if (N->value.startsWith("0x", Qt::CaseInsensitive)) - base = 16; - - X = new QVariant(N->value.toLongLong(nullptr, base)); - } -term(X) ::= FLOAT(N). { - X = new QVariant(QVariant(N->value).toDouble()); - } +term(X) ::= NULL. {X = new QVariant();} +term(X) ::= INTEGER(N). {X = parserContext->handleNumberToken(N->value);} +term(X) ::= FLOAT(N). {X = new QVariant(QVariant(N->value).toDouble());} term(X) ::= STRING|BLOB(S). {X = new QVariant(S->value);} // The optional AUTOINCREMENT keyword @@ -1625,7 +1616,17 @@ exprx(X) ::= BITNOT(O) expr(E). { } exprx(X) ::= MINUS(O) expr(E). [BITNOT] { X = new SqliteExpr(); - X->initUnaryOp(E, O->value); + if (E->mode == SqliteExpr::Mode::LITERAL_VALUE && + parserContext->isCandidateForMaxNegativeNumber() && + E->literalValue == static_cast<qint64>(0L)) + { + X->initLiteral(std::numeric_limits<qint64>::min()); + delete E; + } + else + { + X->initUnaryOp(E, O->value); + } objectForTokens = X; } exprx(X) ::= PLUS(O) expr(E). [BITNOT] { @@ -1664,7 +1665,7 @@ exprx(X) ::= expr(E) not_opt(N) IN LP exprx(X) ::= expr(E) not_opt(N) IN nm(N1) dbnm(N2). [IN] { X = new SqliteExpr(); - X->initIn(E, N, *(N1), *(N2)); + X->initIn(E, *(N), *(N1), *(N2)); delete N; delete N1; objectForTokens = X; @@ -1991,7 +1992,12 @@ minus_num(X) ::= MINUS number(N). { if (N->type() == QVariant::Double) *(N) = -(N->toDouble()); else if (N->type() == QVariant::LongLong) - *(N) = -(N->toLongLong()); + { + if (parserContext->isCandidateForMaxNegativeNumber()) + *(N) = std::numeric_limits<qint64>::min(); + else + *(N) = -(N->toLongLong()); + } else Q_ASSERT_X(true, "producing minus number", "QVariant is neither of Double or LongLong."); @@ -2000,7 +2006,7 @@ minus_num(X) ::= MINUS number(N). { %type number {QVariant*} %destructor number {delete $$;} -number(X) ::= INTEGER(N). {X = new QVariant(QVariant(N->value).toLongLong());} +number(X) ::= INTEGER(N). {X = parserContext->handleNumberToken(N->value);} number(X) ::= FLOAT(N). {X = new QVariant(QVariant(N->value).toDouble());} //////////////////////////// The CREATE TRIGGER command ///////////////////// diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp index 70aa568..e96e181 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp @@ -107,9 +107,14 @@ bool DbManagerImpl::updateDb(Db* db, const QString &name, const QString &path, c result = CFG->removeDb(name); InvalidDb* invalidDb = dynamic_cast<InvalidDb*>(db); + bool wasReloaded = false; Db* reloadedDb = db; if (pathDifferent && invalidDb) - reloadedDb = tryToLoadDb(invalidDb); + { + reloadedDb = tryToLoadDb(invalidDb, false); + if (reloadedDb) // we need to know that, so we can emit dbLoaded() signal later, out of the listLock + wasReloaded = true; + } if (reloadedDb) // reloading was not necessary (was not invalid) or it was successful db = reloadedDb; @@ -119,6 +124,10 @@ bool DbManagerImpl::updateDb(Db* db, const QString &name, const QString &path, c listLock.unlock(); + // If we did reload the db, we need to emit proper signal, because it was suppressed in tryToLoadDb(), because of the listLock + if (wasReloaded) + emit dbLoaded(db); + if (result && reloadedDb) emit dbUpdated(oldName, db); else if (reloadedDb) // database reloaded correctly, but update failed @@ -355,7 +364,7 @@ QList<Db*> DbManagerImpl::getInvalidDatabases() const }); } -Db* DbManagerImpl::tryToLoadDb(InvalidDb* invalidDb) +Db* DbManagerImpl::tryToLoadDb(InvalidDb* invalidDb, bool emitNotifySignal) { QUrl url = QUrl::fromUserInput(invalidDb->getPath()); if (url.isLocalFile() && !QFile::exists(invalidDb->getPath())) @@ -373,7 +382,9 @@ Db* DbManagerImpl::tryToLoadDb(InvalidDb* invalidDb) if (CFG->getDbGroup(db->getName())->open) db->open(); - emit dbLoaded(db); + if (emitNotifySignal) + emit dbLoaded(db); + return db; } diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.h b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.h index 8e28080..5797ac6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.h @@ -94,7 +94,7 @@ class API_EXPORT DbManagerImpl : public DbManager */ QList<Db*> getInvalidDatabases() const; - Db* tryToLoadDb(InvalidDb* invalidDb); + Db* tryToLoadDb(InvalidDb* invalidDb, bool emitNotifySignal = true); /** * @brief Creates database object. diff --git a/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h b/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h index 6f13826..2401e78 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/importmanager.h @@ -36,6 +36,8 @@ class API_EXPORT ImportManager : public PluginServiceBase * (for example from a clipboard). */ QString inputFileName; + + bool ignoreErrors = false; }; enum StandardConfigFlag diff --git a/SQLiteStudio3/coreSQLiteStudio/services/notifymanager.cpp b/SQLiteStudio3/coreSQLiteStudio/services/notifymanager.cpp index 0980399..f8b7f25 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/notifymanager.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/notifymanager.cpp @@ -1,4 +1,5 @@ #include "services/notifymanager.h"
+#include <QDebug>
DEFINE_SINGLETON(NotifyManager)
@@ -71,11 +72,13 @@ QList<QString> NotifyManager::getRecentErrors() const void notifyError(const QString &msg)
{
+ qDebug() << "Error from notify manager:" << msg;
NotifyManager::getInstance()->error(msg);
}
void notifyWarn(const QString &msg)
{
+ qDebug() << "Warning from notify manager:" << msg;
NotifyManager::getInstance()->warn(msg);
}
diff --git a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp index 2d2bbd3..361b2e4 100644 --- a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp @@ -39,7 +39,7 @@ DEFINE_SINGLETON(SQLiteStudio) -static const int sqlitestudioVersion = 30003; +static const int sqlitestudioVersion = 30004; SQLiteStudio::SQLiteStudio() { diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp index 8dc36ee..973402a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp @@ -10,6 +10,7 @@ #include "parser/ast/sqliteupdate.h" #include "parser/ast/sqliteinsert.h" #include "parser/ast/sqlitedelete.h" +#include "common/unused.h" #include <QDebug> // TODO no attach/temp db name support in this entire class @@ -458,7 +459,7 @@ void TableModifier::handleTriggerQueries(SqliteCreateTriggerPtr trigger) foreach (SqliteQuery* query, trigger->queries) { // The handleTriggerQuery() may delete the input query object. Don't refer to it later. - newQuery = handleTriggerQuery(query, trigger->trigger); + newQuery = handleTriggerQuery(query, trigger->trigger, trigger->table); if (newQuery) newQueries << newQuery; else @@ -497,28 +498,28 @@ void TableModifier::handleView(SqliteCreateViewPtr view) modifiedViews << view->view; } -SqliteQuery* TableModifier::handleTriggerQuery(SqliteQuery* query, const QString& trigName) +SqliteQuery* TableModifier::handleTriggerQuery(SqliteQuery* query, const QString& trigName, const QString& trigTable) { SqliteSelect* select = dynamic_cast<SqliteSelect*>(query); if (select) - return handleSelect(select); + return handleSelect(select, trigTable); SqliteUpdate* update = dynamic_cast<SqliteUpdate*>(query); if (update) - return handleTriggerUpdate(update, trigName); + return handleTriggerUpdate(update, trigName, trigTable); SqliteInsert* insert = dynamic_cast<SqliteInsert*>(query); if (insert) - return handleTriggerInsert(insert, trigName); + return handleTriggerInsert(insert, trigName, trigTable); SqliteDelete* del = dynamic_cast<SqliteDelete*>(query); if (del) - return handleTriggerDelete(del, trigName); + return handleTriggerDelete(del, trigName, trigTable); return nullptr; } -SqliteSelect* TableModifier::handleSelect(SqliteSelect* select) +SqliteSelect* TableModifier::handleSelect(SqliteSelect* select, const QString& trigTable) { // Table name TokenList tableTokens = select->getContextTableTokens(false); @@ -561,76 +562,92 @@ SqliteSelect* TableModifier::handleSelect(SqliteSelect* select) return nullptr; } + if (!trigTable.isNull() && !handleAllExprWithTrigTable(selectPtr.data(), trigTable)) + return nullptr; + return new SqliteSelect(*selectPtr.data()); } -SqliteUpdate* TableModifier::handleTriggerUpdate(SqliteUpdate* update, const QString& trigName) +SqliteUpdate* TableModifier::handleTriggerUpdate(SqliteUpdate* update, const QString& trigName, const QString& trigTable) { - // Table name if (update->table.compare(originalTable, Qt::CaseInsensitive) == 0) + { + // Table name update->table = newName; - // Column names - handleUpdateColumns(update); + // Column names + handleUpdateColumns(update); + } // Any embedded selects - bool embedSelectsOk = handleSubSelects(update); - if (!embedSelectsOk) + bool embedSelectsOk = handleSubSelects(update, trigTable); + bool embedExprOk = handleAllExprWithTrigTable(update, trigTable); + if (!embedSelectsOk || !embedExprOk) { warnings << QObject::tr("There is a problem with updating an %1 statement within %2 trigger. " - "One of the SELECT substatements which might be referring to table %3 cannot be properly modified. " - "Manual update of the trigger may be necessary.").arg("UPDATE").arg(trigName).arg(originalTable); + "One of the %1 substatements which might be referring to table %3 cannot be properly modified. " + "Manual update of the trigger may be necessary.").arg("UPDATE", trigName, originalTable); } return update; } -SqliteInsert* TableModifier::handleTriggerInsert(SqliteInsert* insert, const QString& trigName) +SqliteInsert* TableModifier::handleTriggerInsert(SqliteInsert* insert, const QString& trigName, const QString& trigTable) { - // Table name if (insert->table.compare(originalTable, Qt::CaseInsensitive) == 0) + { + // Table name insert->table = newName; - // Column names - handleColumnNames(insert->columnNames); + // Column names + handleColumnNames(insert->columnNames); + } // Any embedded selects - bool embedSelectsOk = handleSubSelects(insert); - if (!embedSelectsOk) + bool embedSelectsOk = handleSubSelects(insert, trigTable); + bool embedExprOk = handleAllExprWithTrigTable(insert, trigTable); + if (!embedSelectsOk || !embedExprOk) { warnings << QObject::tr("There is a problem with updating an %1 statement within %2 trigger. " - "One of the SELECT substatements which might be referring to table %3 cannot be properly modified. " + "One of the %1 substatements which might be referring to table %3 cannot be properly modified. " "Manual update of the trigger may be necessary.").arg("INSERT", trigName, originalTable); } return insert; } -SqliteDelete* TableModifier::handleTriggerDelete(SqliteDelete* del, const QString& trigName) +SqliteDelete* TableModifier::handleTriggerDelete(SqliteDelete* del, const QString& trigName, const QString& trigTable) { // Table name if (del->table.compare(originalTable, Qt::CaseInsensitive) == 0) del->table = newName; // Any embedded selects - bool embedSelectsOk = handleSubSelects(del); - if (!embedSelectsOk) + bool embedSelectsOk = handleSubSelects(del, trigTable); + bool embedExprOk = handleAllExprWithTrigTable(del, trigTable); + if (!embedSelectsOk || !embedExprOk) { warnings << QObject::tr("There is a problem with updating an %1 statement within %2 trigger. " - "One of the SELECT substatements which might be referring to table %3 cannot be properly modified. " + "One of the %1 substatements which might be referring to table %3 cannot be properly modified. " "Manual update of the trigger may be necessary.").arg("DELETE", trigName, originalTable); } return del; } -bool TableModifier::handleSubSelects(SqliteStatement* stmt) +bool TableModifier::handleSubSelects(SqliteStatement* stmt, const QString& trigTable) { bool embedSelectsOk = true; QList<SqliteSelect*> selects = stmt->getAllTypedStatements<SqliteSelect>(); SqliteExpr* expr = nullptr; foreach (SqliteSelect* select, selects) { + if (select->coreSelects.size() >= 1 && select->coreSelects.first()->valuesMode) + { + // INSERT with VALUES() as subselect + continue; + } + expr = dynamic_cast<SqliteExpr*>(select->parentStatement()); if (!expr) { @@ -638,13 +655,13 @@ bool TableModifier::handleSubSelects(SqliteStatement* stmt) continue; } - if (!handleExprWithSelect(expr)) + if (!handleExprWithSelect(expr, trigTable)) embedSelectsOk = false; } return embedSelectsOk; } -bool TableModifier::handleExprWithSelect(SqliteExpr* expr) +bool TableModifier::handleExprWithSelect(SqliteExpr* expr, const QString& trigTable) { if (!expr->select) { @@ -652,7 +669,7 @@ bool TableModifier::handleExprWithSelect(SqliteExpr* expr) return false; } - SqliteSelect* newSelect = handleSelect(expr->select); + SqliteSelect* newSelect = handleSelect(expr->select, trigTable); if (!newSelect) { qCritical() << "Could not generate new SELECT in TableModifier::handleExprWithSelect()"; @@ -665,6 +682,49 @@ bool TableModifier::handleExprWithSelect(SqliteExpr* expr) return true; } +bool TableModifier::handleAllExprWithTrigTable(SqliteStatement* stmt, const QString& contextTable) +{ + if (contextTable != originalTable) + return true; + + return handleExprListWithTrigTable(stmt->getAllTypedStatements<SqliteExpr>()); +} + +bool TableModifier::handleExprListWithTrigTable(const QList<SqliteExpr*>& exprList) +{ + for (SqliteExpr* expr : exprList) + { + if (!handleExprWithTrigTable(expr)) + return false; + } + return true; +} + +bool TableModifier::handleExprWithTrigTable(SqliteExpr* expr) +{ + if (expr->mode != SqliteExpr::Mode::ID) + return true; + + if (!expr->database.isNull()) + return true; + + if (expr->table.compare("old", Qt::CaseInsensitive) != 0 && expr->table.compare("new", Qt::CaseInsensitive) != 0) + return true; + + QStringList columns = QStringList({expr->column}); + if (!handleColumnNames(columns)) + return true; + + if (columns.isEmpty()) + { + qDebug() << "Column in the expression is no longer present in the table. Cannot update the expression automatically."; + return false; + } + + expr->column = columns.first(); + return true; +} + void TableModifier::simpleHandleIndexes() { SchemaResolver resolver(db); diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h index d3977ee..f063693 100644 --- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h +++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h @@ -45,13 +45,16 @@ class API_EXPORT TableModifier void handleTriggerQueries(SqliteCreateTriggerPtr trigger); void handleViews(); void handleView(SqliteCreateViewPtr view); - SqliteQuery* handleTriggerQuery(SqliteQuery* query, const QString& trigName); - SqliteSelect* handleSelect(SqliteSelect* select); - SqliteUpdate* handleTriggerUpdate(SqliteUpdate* update, const QString& trigName); - SqliteInsert* handleTriggerInsert(SqliteInsert* insert, const QString& trigName); - SqliteDelete* handleTriggerDelete(SqliteDelete* del, const QString& trigName); - bool handleSubSelects(SqliteStatement* stmt); - bool handleExprWithSelect(SqliteExpr* expr); + SqliteQuery* handleTriggerQuery(SqliteQuery* query, const QString& trigName, const QString& trigTable); + SqliteSelect* handleSelect(SqliteSelect* select, const QString& trigTable = QString()); + SqliteUpdate* handleTriggerUpdate(SqliteUpdate* update, const QString& trigName, const QString& trigTable); + SqliteInsert* handleTriggerInsert(SqliteInsert* insert, const QString& trigName, const QString& trigTable); + SqliteDelete* handleTriggerDelete(SqliteDelete* del, const QString& trigName, const QString& trigTable); + bool handleSubSelects(SqliteStatement* stmt, const QString& trigTable); + bool handleExprWithSelect(SqliteExpr* expr, const QString& trigTable); + bool handleAllExprWithTrigTable(SqliteStatement* stmt, const QString& contextTable); + bool handleExprListWithTrigTable(const QList<SqliteExpr*>& exprList); + bool handleExprWithTrigTable(SqliteExpr* expr); void simpleHandleIndexes(); void simpleHandleTriggers(const QString& view = QString::null); SqliteQueryPtr parseQuery(const QString& ddl); diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts index 7656d3b..46425fc 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>AbstractDb</name> <message> @@ -147,30 +147,30 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation type="unfinished"></translation> </message> @@ -318,33 +318,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation type="unfinished"></translation> </message> @@ -443,18 +443,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation type="unfinished"></translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -765,7 +770,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation type="unfinished"></translation> </message> @@ -834,13 +839,13 @@ Error details: %2</source> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation type="unfinished"></translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation type="unfinished"></translation> </message> @@ -947,41 +952,41 @@ Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> - <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> - <source>Cannot not update view %1 according to table %2 modifications. -The view will remain as it is.</source> + <location filename="../tablemodifier.cpp" line="434"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> - <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <location filename="../tablemodifier.cpp" line="484"/> + <source>Cannot not update view %1 according to table %2 modifications. +The view will remain as it is.</source> <translation type="unfinished"></translation> </message> <message> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts index 420d0bb..9545030 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>AbstractDb</name> <message> @@ -147,30 +147,30 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation type="unfinished"></translation> </message> @@ -318,33 +318,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation type="unfinished"></translation> </message> @@ -443,18 +443,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation type="unfinished"></translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -765,7 +770,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation type="unfinished"></translation> </message> @@ -834,13 +839,13 @@ Error details: %2</source> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation type="unfinished"></translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation type="unfinished"></translation> </message> @@ -947,41 +952,41 @@ Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> - <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> - <source>Cannot not update view %1 according to table %2 modifications. -The view will remain as it is.</source> + <location filename="../tablemodifier.cpp" line="434"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> - <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <location filename="../tablemodifier.cpp" line="484"/> + <source>Cannot not update view %1 according to table %2 modifications. +The view will remain as it is.</source> <translation type="unfinished"></translation> </message> <message> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm Binary files differindex a0b0a53..668a42a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts index 46e3abc..6e53771 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>AbstractDb</name> <message> @@ -147,30 +147,30 @@ <translation>Impossible d'ajouter une base de données %1: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation>La base de données %1 ne peut ëtre mise à jour à cause de l'erreur: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation>Le fichier de la base de données n'existe pas.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation>Aucun plugin supporté chargé.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation>La base de données ne peut être initialisée.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation>Aucun pilote de base de données approprié trouvé.</translation> </message> @@ -319,33 +319,33 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation>Erreur lors de l'exportation des résultats de la requête:%1</translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation>Erreur lors de la totalisation des données de colonne issu de la requête: %1</translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation>Impossible d'analyser %1 afin de l'exporter. Celle-ci sera excluse de l'exportation.</translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation>Erreur lors de la lecture des données à exporter de la table %1: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation>Erreur lors du comptage des données à exporter de la table %1: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation>Erreur lors de la totalisation des données à exporter de la table %1: %2</translation> </message> @@ -444,18 +444,23 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation>Erreur lors de l'import des données: %1</translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation>Transaction interrompue.</translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -766,7 +771,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation>Terminé ou aucune ligne valide.</translation> </message> @@ -836,13 +841,13 @@ Détails erreur: %2</translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation>Analyse dépassement pile</translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation>Erreur de syntaxe </translation> </message> @@ -949,43 +954,47 @@ Détails erreur: %2</translation> <translation>Peuplement de la table</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation>La table %1 référence la table %2, mais la clé étrangère ne pourra être mise à jour pour la nouvelle table à cause de problèmes lors de l'analyse DDL de la table %3.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation>Toutes les colonnes indéxées par l'indexe %1 sont faites. L'indexe ne sera pas recréé après la modification de la table.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation>Impossible de mettre à jour le déclencheur%1 selon la modification de la table %2.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="434"/> <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation>Toutes les colonnes couvertes par le déclencheur %1 sont faites. Le déclencheur ne sera pas recréé après la modification de la table.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> + <location filename="../tablemodifier.cpp" line="484"/> <source>Cannot not update view %1 according to table %2 modifications. The view will remain as it is.</source> <translation>Impossible de mettre à jour les modifications de la vue %1 issue de la table %2 La vue restera telque.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> - <translation>Il y a un problème à la mise à jour l'instruction %1 avec le déclencheur %2. Une partie de l'instruction SELECT référençant la table %3 ne ppermet pas sa modification. La mise à jour manuelle du déclencheur est nécessaire.</translation> + <translation type="obsolete">Il y a un problème à la mise à jour l'instruction %1 avec le déclencheur %2. Une partie de l'instruction SELECT référençant la table %3 ne ppermet pas sa modification. La mise à jour manuelle du déclencheur est nécessaire.</translation> </message> <message> <location filename="../viewmodifier.cpp" line="25"/> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm Binary files differindex 8d09cfa..6859097 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts index 9ca5ff5..7c061e5 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>AbstractDb</name> <message> @@ -147,30 +147,30 @@ <translation>Nie udało się dodać bazę danych %1: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation>Nie udało się zaktualizować baza danych %1 z powodu błędu: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation>Plik bazy danych nie istnieje.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation>Nie załadowano obsługującej wtyczki.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation>Nie udało się zainicjalizować bazy danych.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation>Nie znaleziono odpowiedniej wtyczki sterownika.</translation> </message> @@ -323,7 +323,7 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation>Błąd podczas eksportowania wyników zapytania: %1</translation> </message> @@ -332,28 +332,28 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na <translation type="obsolete">Błąd podczas liczenia szerokości kolumn danych do eksportu wyników zapytania: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation>Błąd podczas liczenia szerokości kolumn danych do eksportu wyników zapytania: %1</translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation>Nie udało się przeanalizować %1 w celu wyeksportowania. Element ten zostanie pominięty w wynikach eksportu.</translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation>Błąd podczas odczytu danych do eksportu z tabeli %1: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation>Błąd podczas liczenia danych do eksportu z tabeli %1: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation>Błąd podczas obliczania szerokości kolumn danych do eksportu z tabeli %1: %2</translation> </message> @@ -452,18 +452,23 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation>Błąd podczas importowania danych: %1</translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation>Przerwano.</translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation>Nie udało się zaimportować wiersza danych numer %1. Wiersz ten został zignorowany. Szczegóły problemu: %2</translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -831,13 +836,13 @@ Szczegóły błędu: %2</translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation>Przeciążenie stosu analizatora.</translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation>Błąd składni</translation> </message> @@ -944,43 +949,47 @@ Szczegóły błędu: %2</translation> <translation>Zaludnianie tabel</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation>Tabela %1 odwołuje się do tabeli %2, ale definicja klucza obcego nie zostanie zaktualizowane dla definicji nowej tabeli w związku z problemami przy analizowaniu DDL tabeli %3.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation>Wszystkie kolumny indeksowane przez indeks %1 już nie istnieją. Indeks ten nie będzie odtworzony po modyfikacji tabeli.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation>Wystąpił problem z poprawnym przetworzeniem wyzwalacza %1. Może on zostać zaktualizowany tylko częściowo i będzie wymagał twojej uwagi.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation>Nie można zaktualizować wyzwalacza %1 zgodnie z modyfikacjami tabeli %2.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation>Jest problem ze zaktualizowaniem zapytania %1 w wyzwalaczu %2. Jedeno z podzapytań %1, które może odwoływać się do tabeli %3 nie może być poprawnie zmodyfikowane. Ręczna aktualizacja tego wyzwalacza może być niezbędna.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="434"/> <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation>Wszystkie kolumny obsługiwane przez wyzwalacz %1 już nie istnieją. Wyzwalacz ten nie będzie odtworzony po modyfikacji tabeli.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> + <location filename="../tablemodifier.cpp" line="484"/> <source>Cannot not update view %1 according to table %2 modifications. The view will remain as it is.</source> <translation>Nie można zaktualizować widoku %1 w związku z modyfikacjami tabeli %2. Widok pozostanie nienaruszony.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> - <translation>Jest problem ze zaktualizowaniem zapytania %1 w wyzwalaczu %2. Jedeno z podzapytań SELECT, które może odwoływać się do tabeli %2 nie może być poprawnie zmodyfikowane. Ręczna aktualizacja tego wyzwalacza może być niezbędna.</translation> + <translation type="obsolete">Jest problem ze zaktualizowaniem zapytania %1 w wyzwalaczu %2. Jedeno z podzapytań SELECT, które może odwoływać się do tabeli %3 nie może być poprawnie zmodyfikowane. Ręczna aktualizacja tego wyzwalacza może być niezbędna.</translation> </message> <message> <location filename="../viewmodifier.cpp" line="25"/> @@ -1010,7 +1019,7 @@ Widok pozostanie nienaruszony.</translation> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation>Wyniki zapytania są nieaktualne, lub nie ma dostępnych wierszy.</translation> </message> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts index 5c08361..d22af44 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>AbstractDb</name> <message> @@ -147,30 +147,30 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation type="unfinished"></translation> </message> @@ -318,33 +318,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation type="unfinished"></translation> </message> @@ -443,18 +443,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation type="unfinished"></translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -765,7 +770,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation type="unfinished"></translation> </message> @@ -834,13 +839,13 @@ Error details: %2</source> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation type="unfinished"></translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation type="unfinished"></translation> </message> @@ -947,41 +952,41 @@ Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> - <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> - <source>Cannot not update view %1 according to table %2 modifications. -The view will remain as it is.</source> + <location filename="../tablemodifier.cpp" line="434"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> - <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <location filename="../tablemodifier.cpp" line="484"/> + <source>Cannot not update view %1 according to table %2 modifications. +The view will remain as it is.</source> <translation type="unfinished"></translation> </message> <message> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm Binary files differindex 0b3d737..24f5549 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts index 6890ba9..ca7fc68 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts @@ -147,31 +147,31 @@ <translation>Не удалось добавить базу данных %1: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation>Невозможно обновить базу данных %1 из-за ошибки: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation>Файл базы данных не существует.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translatorcomment>Unclear error string. Checking the source didn't help.</translatorcomment> <translation>Модуль поддержки не загружен.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation>Невозможно инициализировать базу данных.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation>Не найден подходящий драйвер базы данных.</translation> </message> @@ -320,33 +320,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation>Ошибка при экспорте результатов запроса: %1</translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation>Ошибка при подсчёте ширины столбца данных для экспорта результатов запроса: %1</translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation>Невозможно проанализировать структуру %1. Данный объект будет исключён при выполнении экспорта.</translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation>Ошибка при считывании данных для экспорта из таблицы %1: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation>Ошибка при подсчёте количества данных для экспорта из таблицы %1: %2</translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation>Ошибка при подсчёте ширины столбца данных для экспорта из таблицы %1: %2</translation> </message> @@ -445,18 +445,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation>Ошибка при импорте данных: %1</translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation>Прервано.</translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation>Невозможно импортировать строку данных № %1. Строка пропущена. Подробности проблемы: %2</translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -767,7 +772,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation>Результирующая выборка устарела или ни одна строка не доступна.</translation> </message> @@ -836,13 +841,13 @@ Error details: %2</source> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation>Переполнение стека анализатора</translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation>Синтаксическая ошибка</translation> </message> @@ -949,43 +954,47 @@ Error details: %2</source> <translation>Заполнение таблиц</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation>Таблица %1 ссылается на таблицу %2, но описание внешнего ключа не будет обновлено для описания новой таблицы из-за проблем с анализом DDL таблицы %3.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation>Все столбцы, проиндексированные индексом %1, удалены. Индекс не будет воссоздан после модификации таблицы.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> - <translation type="unfinished"></translation> + <translation>Возникла проблема при обработке триггера %1. Впоследствии он не будет полностью обновлён и потребует вашего внимания.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation>Невозможно обновить триггер %1 в соответствии с модификацией таблицы %2.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation>Возникла проблема при обновлении конструкции %1 внутри триггера %2. Одна из вложенных конструкций %1, которая возможно ссылается на таблицу %3, не может быть корректно модифицирована. Возможно необходима ручная правка триггера.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="434"/> <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation>Все столбцы, затронутые в триггере %1, удалены. Триггер не будет воссоздан после модификации таблицы.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> + <location filename="../tablemodifier.cpp" line="484"/> <source>Cannot not update view %1 according to table %2 modifications. The view will remain as it is.</source> <translation>Невозможно обновить представление %1 в соответствии с модификациями таблицы %2. Представление останется как есть.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> - <translation>Возникла проблема при обновлении конструкции %1 внутри триггера %2. Одна из вложенных конструкций SELECT, которая возможно ссылается на таблицу %3, не может быть корректно модифицирована. Возможно необходима ручная правка триггера.</translation> + <translation type="obsolete">Возникла проблема при обновлении конструкции %1 внутри триггера %2. Одна из вложенных конструкций SELECT, которая возможно ссылается на таблицу %3, не может быть корректно модифицирована. Возможно необходима ручная правка триггера.</translation> </message> <message> <location filename="../viewmodifier.cpp" line="25"/> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm Binary files differindex 1776294..e857185 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts index 497b7fe..24da18a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts @@ -12,7 +12,7 @@ <message> <location filename="../db/abstractdb.cpp" line="603"/> <source>Error attaching database %1: %2</source> - <translation type="unfinished"></translation> + <translation>Chyba pri pripájaní databázy %1: %2</translation> </message> </context> <context> @@ -20,7 +20,7 @@ <message> <location filename="../services/bugreporter.cpp" line="46"/> <source>Invalid login or password</source> - <translation type="unfinished"></translation> + <translation>Neplatné meno alebo heslo</translation> </message> </context> <context> @@ -144,33 +144,33 @@ <message> <location filename="../services/impl/dbmanagerimpl.cpp" line="63"/> <source>Could not add database %1: %2</source> - <translation type="unfinished"></translation> + <translation>Nemôžem pridať databázu %1: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> - <translation type="unfinished"></translation> + <translation>Databázový súbor neexistuje.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation type="unfinished"></translation> </message> @@ -181,7 +181,7 @@ <location filename="../dbobjectorganizer.cpp" line="380"/> <location filename="../dbobjectorganizer.cpp" line="412"/> <source>Error while creating table in target database: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas vytvárania tabuľky v cieľovej databáze: %1</translation> </message> <message> <location filename="../dbobjectorganizer.cpp" line="380"/> @@ -232,17 +232,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../dbversionconverter.cpp" line="923"/> <source>Target file exists, but could not be overwritten.</source> - <translation type="unfinished"></translation> + <translation>Cieľový súbor existuje ale nemôže byť prepísaný.</translation> </message> <message> <location filename="../dbversionconverter.cpp" line="942"/> <source>Could not find proper database plugin to create target database.</source> - <translation type="unfinished"></translation> + <translation>Nieje možné nájsť správny databázový plugin pre vytvorenie cieľovej databázy.</translation> </message> <message> <location filename="../dbversionconverter.cpp" line="1176"/> <source>Error while converting database: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas konvertovania databázy: %1</translation> </message> </context> <context> @@ -297,54 +297,54 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../services/exportmanager.cpp" line="218"/> <source>Export to the clipboard was successful.</source> - <translation type="unfinished"></translation> + <translation>Export do schránky bol úspešný.</translation> </message> <message> <location filename="../services/exportmanager.cpp" line="222"/> <source>Export to the file '%1' was successful.</source> - <translation type="unfinished"></translation> + <translation>Export do súboru '%1' bol úspešný.</translation> </message> <message> <location filename="../services/exportmanager.cpp" line="224"/> <source>Export was successful.</source> - <translation type="unfinished"></translation> + <translation>Export bol úspešný.</translation> </message> <message> <location filename="../services/exportmanager.cpp" line="266"/> <source>Could not export to file %1. File cannot be open for writting.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem exportovať do súboru %1.Súbor nieje možné otvoriť pre zápis.</translation> </message> </context> <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation type="unfinished"></translation> </message> @@ -443,18 +443,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation type="unfinished"></translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -497,7 +502,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <location filename="../plugins/populateconstant.cpp" line="10"/> <source>Constant</source> <comment>populate constant plugin name</comment> - <translation type="unfinished"></translation> + <translation>Konštanta</translation> </message> </context> <context> @@ -505,7 +510,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../plugins/populateconstant.ui" line="20"/> <source>Constant value:</source> - <translation type="unfinished"></translation> + <translation>Hodnota konštanty:</translation> </message> </context> <context> @@ -514,7 +519,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <location filename="../plugins/populatedictionary.cpp" line="15"/> <source>Dictionary</source> <comment>dictionary populating plugin name</comment> - <translation type="unfinished"></translation> + <translation>Slovník</translation> </message> </context> <context> @@ -565,7 +570,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../services/populatemanager.cpp" line="88"/> <source>Table '%1' populated successfully.</source> - <translation type="unfinished"></translation> + <translation>Tabuľka %1 úspešne naplnená.</translation> </message> </context> <context> @@ -573,7 +578,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../plugins/populaterandom.cpp" line="12"/> <source>Random number</source> - <translation type="unfinished"></translation> + <translation>Náhodné číslo</translation> </message> </context> <context> @@ -614,7 +619,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../plugins/populaterandomtext.cpp" line="12"/> <source>Random text</source> - <translation type="unfinished"></translation> + <translation>Náhodný text</translation> </message> </context> <context> @@ -690,7 +695,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../plugins/populatescript.cpp" line="13"/> <source>Script</source> - <translation type="unfinished"></translation> + <translation>Skript</translation> </message> </context> <context> @@ -721,7 +726,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <message> <location filename="../plugins/populatesequence.cpp" line="13"/> <source>Sequence</source> - <translation type="unfinished"></translation> + <translation>Sekvencia</translation> </message> </context> <context> @@ -765,7 +770,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation type="unfinished"></translation> </message> @@ -834,15 +839,15 @@ Error details: %2</source> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation type="unfinished"></translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> - <translation type="unfinished"></translation> + <translation>Chyba syntaxe</translation> </message> <message> <location filename="../plugins/populatedictionary.cpp" line="30"/> @@ -926,7 +931,7 @@ Error details: %2</source> <location filename="../sqlitestudio.cpp" line="291"/> <source>Scripting languages</source> <comment>plugin category name</comment> - <translation type="unfinished"></translation> + <translation>Skriptovacie jazyky</translation> </message> <message> <location filename="../sqlitestudio.cpp" line="292"/> @@ -947,41 +952,41 @@ Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> - <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> - <source>Cannot not update view %1 according to table %2 modifications. -The view will remain as it is.</source> + <location filename="../tablemodifier.cpp" line="434"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> - <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <location filename="../tablemodifier.cpp" line="484"/> + <source>Cannot not update view %1 according to table %2 modifications. +The view will remain as it is.</source> <translation type="unfinished"></translation> </message> <message> @@ -1048,31 +1053,32 @@ The view will remain as it is.</source> <location filename="../sqlhistorymodel.cpp" line="30"/> <source>Database</source> <comment>sql history header</comment> - <translation type="unfinished"></translation> + <translatorcomment>Dátum spustenia</translatorcomment> + <translation>Databáza</translation> </message> <message> <location filename="../sqlhistorymodel.cpp" line="32"/> <source>Execution date</source> <comment>sql history header</comment> - <translation type="unfinished"></translation> + <translation>Dátum spustenia</translation> </message> <message> <location filename="../sqlhistorymodel.cpp" line="34"/> <source>Time spent</source> <comment>sql history header</comment> - <translation type="unfinished"></translation> + <translation>Trvanie dotazu</translation> </message> <message> <location filename="../sqlhistorymodel.cpp" line="36"/> <source>Rows affected</source> <comment>sql history header</comment> - <translation type="unfinished"></translation> + <translation>Počet riadkov</translation> </message> <message> <location filename="../sqlhistorymodel.cpp" line="38"/> <source>SQL</source> <comment>sql history header</comment> - <translation type="unfinished"></translation> + <translation>SQL</translation> </message> </context> <context> @@ -1256,12 +1262,12 @@ Details: %3</source> <location filename="../services/updatemanager.cpp" line="921"/> <location filename="../services/updatemanager.cpp" line="930"/> <source>Could not rename directory %1 to %2.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem premenovať adresár %1na %2.</translation> </message> <message> <location filename="../services/updatemanager.cpp" line="943"/> <source>Could not delete directory %1.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem vymazať adresár %1.</translation> </message> <message> <location filename="../services/updatemanager.cpp" line="959"/> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts index 0cfd10d..1c95d67 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>AbstractDb</name> <message> @@ -147,30 +147,30 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="134"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="308"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="337"/> <source>Database file doesn't exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="310"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="339"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/> <source>No supporting plugin loaded.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="413"/> <source>Database could not be initialized.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="423"/> <source>No suitable database driver plugin found.</source> <translation type="unfinished"></translation> </message> @@ -318,33 +318,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> <context> <name>ExportWorker</name> <message> - <location filename="../exportworker.cpp" line="116"/> + <location filename="../exportworker.cpp" line="121"/> <source>Error while exporting query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="175"/> + <location filename="../exportworker.cpp" line="201"/> <source>Error while counting data column width to export from query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="275"/> - <location filename="../exportworker.cpp" line="326"/> + <location filename="../exportworker.cpp" line="353"/> + <location filename="../exportworker.cpp" line="411"/> <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="482"/> + <location filename="../exportworker.cpp" line="612"/> <source>Error while reading data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="490"/> + <location filename="../exportworker.cpp" line="620"/> <source>Error while counting data to export from table %1: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../exportworker.cpp" line="506"/> + <location filename="../exportworker.cpp" line="636"/> <source>Error while counting data column width to export from table %1: %2</source> <translation type="unfinished"></translation> </message> @@ -443,18 +443,23 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="152"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="162"/> + <location filename="../importworker.cpp" line="169"/> <source>Error while importing data: %1</source> <translation type="unfinished"></translation> </message> <message> <location filename="../importworker.cpp" line="125"/> - <location filename="../importworker.cpp" line="158"/> + <location filename="../importworker.cpp" line="169"/> <source>Interrupted.</source> <comment>import process status update</comment> <translation type="unfinished"></translation> </message> + <message> + <location filename="../importworker.cpp" line="157"/> + <source>Could not import data row number %1. The row was ignored. Problem details: %2</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>PluginManagerImpl</name> @@ -765,7 +770,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source> </message> <message> <location filename="../db/abstractdb2.h" line="796"/> - <location filename="../db/abstractdb3.h" line="1082"/> + <location filename="../db/abstractdb3.h" line="1092"/> <source>Result set expired or no row available.</source> <translation type="unfinished"></translation> </message> @@ -834,13 +839,13 @@ Error details: %2</source> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="1904"/> - <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <location filename="../parser/sqlite3_parse.cpp" line="2167"/> <source>Parser stack overflow</source> <translation type="unfinished"></translation> </message> <message> <location filename="../parser/sqlite2_parse.cpp" line="4461"/> - <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <location filename="../parser/sqlite3_parse.cpp" line="5080"/> <source>Syntax error</source> <translation type="unfinished"></translation> </message> @@ -947,41 +952,41 @@ Error details: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="107"/> + <location filename="../tablemodifier.cpp" line="108"/> <source>Table %1 is referencing table %2, but the foreign key definition will not be updated for new table definition due to problems while parsing DDL of the table %3.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="379"/> + <location filename="../tablemodifier.cpp" line="380"/> <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="418"/> + <location filename="../tablemodifier.cpp" line="419"/> <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="465"/> + <location filename="../tablemodifier.cpp" line="466"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="433"/> - <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <location filename="../tablemodifier.cpp" line="587"/> + <location filename="../tablemodifier.cpp" line="611"/> + <location filename="../tablemodifier.cpp" line="630"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the %1 substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="483"/> - <source>Cannot not update view %1 according to table %2 modifications. -The view will remain as it is.</source> + <location filename="../tablemodifier.cpp" line="434"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../tablemodifier.cpp" line="580"/> - <location filename="../tablemodifier.cpp" line="601"/> - <location filename="../tablemodifier.cpp" line="619"/> - <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <location filename="../tablemodifier.cpp" line="484"/> + <source>Cannot not update view %1 according to table %2 modifications. +The view will remain as it is.</source> <translation type="unfinished"></translation> </message> <message> diff --git a/SQLiteStudio3/coreSQLiteStudio/tsvserializer.cpp b/SQLiteStudio3/coreSQLiteStudio/tsvserializer.cpp index 486763b..a42c76d 100644 --- a/SQLiteStudio3/coreSQLiteStudio/tsvserializer.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/tsvserializer.cpp @@ -45,7 +45,39 @@ QList<QStringList> TsvSerializer::deserialize(const QString& data) { QList<QStringList> rows; QStringList cells; + QStringList tokens; + QStringList parts = data.split(columnSeparator); + for (const QString& part : parts) + { + if (!part.contains(rowSeparator)) + { + cells << part; + continue; + } + + tokens = tokenizeStrWithRowSeparator(part); + for (const QString& token : tokens) + { + if (token != rowSeparator) + { + cells << token; + continue; + } + + rows << cells; + cells.clear(); + } + } + + if ((cells.size() > 0 && !cells.first().isEmpty()) || cells.size() > 1) + rows << cells; + return rows; +} + +QStringList TsvSerializer::tokenizeStrWithRowSeparator(const QString& data) +{ + QStringList tokens; int pos = 0; int lgt = data.length(); bool quotes = false; @@ -59,32 +91,27 @@ QList<QStringList> TsvSerializer::deserialize(const QString& data) { if (field.isEmpty()) quotes = true; - else - field += c; + + field += c; } else if (quotes && c == '"' ) { + field += c; if (pos + 1 < data.length() && data[pos+1] == '"' ) { - field += c; - pos++; + field += c; + pos++; } else { - quotes = false; + quotes = false; } } - else if (!quotes && c == columnSeparator) - { - cells << field; - field.clear(); - } else if (!quotes && c == rowSeparator) { - cells << field; - rows << cells; - cells.clear(); + tokens << flushToken(field); field.clear(); + tokens << QString(c); } else { @@ -94,10 +121,19 @@ QList<QStringList> TsvSerializer::deserialize(const QString& data) } if (field.size() > 0) - cells << field; + tokens << flushToken(field); - if (cells.size() > 0) - rows << cells; + return tokens; +} - return rows; +QString TsvSerializer::flushToken(const QString& token) +{ + if (!token.startsWith('"') || !token.contains(rowSeparator)) + return token; + + int decr = 1; + if (token.endsWith('"')) + decr++; + + return token.mid(1, token.length() - decr).replace("\"\"", "\""); } diff --git a/SQLiteStudio3/coreSQLiteStudio/tsvserializer.h b/SQLiteStudio3/coreSQLiteStudio/tsvserializer.h index efb3934..27d1da6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/tsvserializer.h +++ b/SQLiteStudio3/coreSQLiteStudio/tsvserializer.h @@ -13,6 +13,8 @@ class API_EXPORT TsvSerializer static QList<QStringList> deserialize(const QString& data); private: + static QStringList tokenizeStrWithRowSeparator(const QString& data); + static QString flushToken(const QString& token); static QString rowSeparator; static QString columnSeparator; }; diff --git a/SQLiteStudio3/create_linux_portable.sh b/SQLiteStudio3/create_linux_portable.sh index 3bcb87d..55d4813 100644 --- a/SQLiteStudio3/create_linux_portable.sh +++ b/SQLiteStudio3/create_linux_portable.sh @@ -1,7 +1,7 @@ #!/bin/sh printUsage() { - echo "$0 <sqlitestudio build output directory> <qmake path> [tgz|dist]" + echo "$0 <sqlitestudio build output directory> <qmake path> [tgz|dist|dist_full]" } if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then @@ -9,7 +9,7 @@ if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then exit 1 fi -if [ "$#" -eq 3 ] && [ "$3" != "tgz" ] && [ "$3" != "dist" ] && [ "$3" != "dist_plugins" ]; then +if [ "$#" -eq 3 ] && [ "$3" != "tgz" ] && [ "$3" != "dist" ] && [ "$3" != "dist_plugins" ] && [ "$3" != "dist_full" ]; then printUsage exit 1 fi @@ -106,8 +106,8 @@ VERSION=`SQLiteStudio/sqlitestudiocli -v | awk '{print $2}'` if [ "$3" == "tgz" ]; then tar cf sqlitestudio-$VERSION.tar SQLiteStudio xz -z sqlitestudio-$VERSION.tar -elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ]; then - if [ "$3" == "dist" ]; then +elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]; then + if [ "$3" == "dist" ] || [ "$3" == "dist_full" ]; then # Complete echo "Building complete package: sqlitestudio-$VERSION.tar.xz" tar cf sqlitestudio-$VERSION.tar SQLiteStudio @@ -117,16 +117,18 @@ elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ]; then echo "Building incremental update package: sqlitestudio-$VERSION.tar.gz" cp -R SQLiteStudio app cd app - rm -rf plugins - rm -f lib/libQ* - rm -rf iconengines - rm -rf imageformats - rm -rf platforms - rm -rf platformthemes - rm -rf printsupport + if [ "$3" == "dist" ]; then + rm -rf plugins + rm -f lib/libQ* + rm -rf iconengines + rm -rf imageformats + rm -rf platforms + rm -rf platformthemes + rm -rf printsupport + find . -type l -exec rm -f {} \; + fi rm -f lib/libicu* rm -f lib/libsqlite.so.0 ;# this is for SQLite 2 - find . -type l -exec rm -f {} \; tar cf sqlitestudio-$VERSION.tar * gzip -9 sqlitestudio-$VERSION.tar mv sqlitestudio-$VERSION.tar.gz .. diff --git a/SQLiteStudio3/create_macosx_bundle.sh b/SQLiteStudio3/create_macosx_bundle.sh index bdad545..d3ce15b 100755 --- a/SQLiteStudio3/create_macosx_bundle.sh +++ b/SQLiteStudio3/create_macosx_bundle.sh @@ -1,7 +1,7 @@ #!/bin/sh printUsage() { - echo "$0 <sqlitestudio build output directory> <qmake path> [dmg|dist]" + echo "$0 <sqlitestudio build output directory> <qmake path> [dmg|dist|dist_full]" } if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then @@ -9,7 +9,7 @@ if [ "$#" -lt 2 ] || [ "$#" -gt 3 ]; then exit 1 fi -if [ "$#" -eq 3 ] && [ "$3" != "dmg" ] && [ "$3" != "dist" ] && [ "$3" != "dist_plugins" ]; then +if [ "$#" -eq 3 ] && [ "$3" != "dmg" ] && [ "$3" != "dist" ] && [ "$3" != "dist_plugins" ] && [ "$3" != "dist_full" ]; then printUsage exit 1 fi @@ -46,8 +46,8 @@ cp -RP ../../../lib/*.dylib SQLiteStudio.app/Contents/Frameworks if [ "$3" == "dmg" ]; then $qt_deploy_bin SQLiteStudio.app -dmg -elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ]; then - if [ "$3" == "dist" ]; then +elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ] || [ "$3" == "dist_full" ]; then + if [ "$3" == "dist" ] || [ "$3" == "dist_full" ]; then $qt_deploy_bin SQLiteStudio.app -dmg cd $1/SQLiteStudio @@ -59,8 +59,10 @@ elif [ "$3" == "dist" ] || [ "$3" == "dist_plugins" ]; then echo "Building incremental update package: sqlitestudio-$VERSION.zip" cp -R SQLiteStudio.app app cd app/Contents - rm -rf PlugIns - rm -rf Frameworks/Qt*.framework + if [ "$3" == "dist" ]; then + rm -rf PlugIns + rm -rf Frameworks/Qt*.framework + fi find Frameworks -type l -exec rm -f {} \; cd .. zip -r sqlitestudio-$VERSION.zip * diff --git a/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp b/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp new file mode 100644 index 0000000..35c8b75 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.cpp @@ -0,0 +1,95 @@ +#include "ipvalidator.h" +#include <QDebug> + +QString IpValidator::reStr = "^%1(\\d%2)%1\\.%1(\\d%2)%1\\.%1(\\d%2)%1\\.%1(\\d%2)%1$"; + +IpValidator::IpValidator(QObject* parent) : + QValidator(parent) +{ +} + +IpValidator::~IpValidator() +{ +} + +QValidator::State IpValidator::validate(QString& input, int&) const +{ + QString regexp = getPattern(acceptWhiteSpaces, false, whitespaceCharacter); + QRegularExpression re(regexp); + QRegularExpressionMatch match = re.match(input); + if (!match.hasMatch()) + return Invalid; + + QString part; + int value; + bool ok; + for (int i = 1; i <= 4; i++) + { + part = match.captured(i); + if (part.isEmpty()) + { + if (acceptEmptyParts) + continue; + else + return Invalid; + } + + value = part.toInt(&ok); + if (!ok) + return Invalid; + + if (value > 255 || value < 0) + return Invalid; + } + + return Acceptable; +} + +bool IpValidator::getAcceptWhiteSpaces() const +{ + return acceptWhiteSpaces; +} + +void IpValidator::setAcceptWhiteSpaces(bool value) +{ + acceptWhiteSpaces = value; +} +bool IpValidator::getAcceptEmptyParts() const +{ + return acceptEmptyParts; +} + +void IpValidator::setAcceptEmptyParts(bool value) +{ + acceptEmptyParts = value; +} +QChar IpValidator::getWhitespaceCharacter() const +{ + return whitespaceCharacter; +} + +void IpValidator::setWhitespaceCharacter(const QChar& value) +{ + whitespaceCharacter = value; +} + +bool IpValidator::check(const QString& input, bool acceptWhiteSpaces) +{ + QString regexp = getPattern(acceptWhiteSpaces, true, ' '); + QRegularExpression re(regexp); + return re.match(input).hasMatch(); +} + +QString IpValidator::getPattern(bool acceptWhiteSpaces, bool requireFull, QChar whitespaceCharacter) +{ + QString countChar = requireFull ? "+" : "*"; + if (acceptWhiteSpaces) + { + if (whitespaceCharacter == ' ') + return reStr.arg("\\s*", countChar); + else + return reStr.arg(whitespaceCharacter + QString("*"), countChar); + } + else + return reStr.arg("", countChar); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.h b/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.h new file mode 100644 index 0000000..1c9ca4d --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/common/ipvalidator.h @@ -0,0 +1,35 @@ +#ifndef IPVALIDATOR_H +#define IPVALIDATOR_H + +#include <QValidator> + +class IpValidator : public QValidator +{ + public: + IpValidator(QObject* parent = 0); + ~IpValidator(); + + State validate(QString& input, int&) const; + + bool getAcceptWhiteSpaces() const; + void setAcceptWhiteSpaces(bool value); + + bool getAcceptEmptyParts() const; + void setAcceptEmptyParts(bool value); + + QChar getWhitespaceCharacter() const; + void setWhitespaceCharacter(const QChar& value); + + static bool check(const QString& input, bool acceptWhiteSpaces = false); + + private: + static QString getPattern(bool acceptWhiteSpaces, bool requireFull, QChar whitespaceCharacter); + + bool acceptWhiteSpaces = false; + bool acceptEmptyParts = false; + QChar whitespaceCharacter = ' '; + + static QString reStr; +}; + +#endif // IPVALIDATOR_H diff --git a/SQLiteStudio3/guiSQLiteStudio/completer/completeritemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/completer/completeritemdelegate.cpp index a0da399..3268960 100644 --- a/SQLiteStudio3/guiSQLiteStudio/completer/completeritemdelegate.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/completer/completeritemdelegate.cpp @@ -1,5 +1,6 @@ #include "completeritemdelegate.h" #include "completermodel.h" +#include "common/unused.h" #include <QPainter> #include <QIcon> #include <QApplication> @@ -21,8 +22,7 @@ void CompleterItemDelegate::paint(QPainter* painter, const QStyleOptionViewItem& QStyleOptionViewItem opt = option; initStyleOption(&opt, index); - QApplication::style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &opt, painter, opt.widget); - + paintBackground(painter, opt, index); paintIcon(painter, opt, index); paintText(painter, opt, index); } @@ -36,6 +36,25 @@ QSize CompleterItemDelegate::sizeHint(const QStyleOptionViewItem& option, const return size; } +void CompleterItemDelegate::paintBackground(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const +{ + UNUSED(index); + + painter->save(); + QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; + if (cg == QPalette::Normal && !(option.state & QStyle::State_Active)) + cg = QPalette::Inactive; + + QColor bg = option.palette.color(cg, QPalette::Base); + if (option.state & QStyle::State_Selected) + bg = option.palette.color(cg, QPalette::Highlight); + + painter->setPen(Qt::NoPen); + painter->setBrush(bg); + painter->drawRect(option.rect); + painter->restore(); +} + void CompleterItemDelegate::paintIcon(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const { QIcon icon = index.data(Qt::DecorationRole).value<QIcon>(); @@ -69,15 +88,9 @@ void CompleterItemDelegate::paintText(QPainter* painter, const QStyleOptionViewI QColor labelColor = option.palette.color(cg, QPalette::Link); if (option.state & QStyle::State_Selected) { -#ifdef Q_OS_WIN32 - prefixColor = option.palette.color(cg, QPalette::Text); - valueColor = option.palette.color(cg, QPalette::Text); - labelColor = option.palette.color(cg, QPalette::Text); -#else prefixColor = option.palette.color(cg, QPalette::HighlightedText); valueColor = option.palette.color(cg, QPalette::HighlightedText); labelColor = option.palette.color(cg, QPalette::HighlightedText); -#endif } // Using ascent() to measure usual height of the font, excluding anything below baseline. diff --git a/SQLiteStudio3/guiSQLiteStudio/completer/completerwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/completer/completerwindow.cpp index 34ae30b..544adca 100644 --- a/SQLiteStudio3/guiSQLiteStudio/completer/completerwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/completer/completerwindow.cpp @@ -138,7 +138,7 @@ void CompleterWindow::changeEvent(QEvent *e) void CompleterWindow::keyPressEvent(QKeyEvent* e) { - if (e->key() == Qt::Key_Return) + if (e->key() == Qt::Key_Return || e->key() == Qt::Key_Enter) { accept(); return; diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp index 53227fd..9b8dd03 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitem.cpp @@ -94,7 +94,7 @@ bool SqlQueryItem::isDeletedRow() const void SqlQueryItem::setDeletedRow(bool isDeleted) { - if (isDeleted) + if (isDeleted && !getOldValue().isValid()) setOldValue(getValue()); QStandardItem::setData(QVariant(isDeleted), DataRole::DELETED); diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp index 7fe3a68..8024abf 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp @@ -17,6 +17,7 @@ #include <QMutableListIterator> #include <QInputDialog> #include <QTime> +#include <QtMath> #include <QMessageBox> SqlQueryModel::SqlQueryModel(QObject *parent) : @@ -224,20 +225,21 @@ QList<QList<SqlQueryItem*> > SqlQueryModel::groupItemsByRows(const QList<SqlQuer return itemsByRow.values(); } -QHash<Table,QList<SqlQueryItem*>> SqlQueryModel::groupItemsByTable(const QList<SqlQueryItem*>& items) +QHash<AliasedTable, QList<SqlQueryItem*> > SqlQueryModel::groupItemsByTable(const QList<SqlQueryItem*>& items) { - QHash<Table,QList<SqlQueryItem*>> itemsByTable; - Table table; + QHash<AliasedTable,QList<SqlQueryItem*>> itemsByTable; + AliasedTable table; foreach (SqlQueryItem* item, items) { if (item->getColumn()) { table.setDatabase(item->getColumn()->database.toLower()); table.setTable(item->getColumn()->table.toLower()); + table.setTableAlias(item->getColumn()->tableAlias.toLower()); itemsByTable[table] << item; } else - itemsByTable[Table()] << item; + itemsByTable[AliasedTable()] << item; } return itemsByTable; @@ -373,12 +375,16 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items) return; } + // Getting number of rows to be added and deleted, so we can update totalPages at the end + int numberOfItemsAdded = groupItemsByRows(findItems(SqlQueryItem::DataRole::NEW_ROW, true)).size(); + int numberOfItemsDeleted = groupItemsByRows(findItems(SqlQueryItem::DataRole::DELETED, true)).size(); + // Removing "commit error" mark from items that are going to be commited now for (SqlQueryItem* item : items) item->setCommitingError(false); // Grouping by row and commiting - QList<QList<SqlQueryItem*> > groupedItems = groupItemsByRows(items); + QList<QList<SqlQueryItem*>> groupedItems = groupItemsByRows(items); bool ok = true; foreach (const QList<SqlQueryItem*>& itemsInRow, groupedItems) { @@ -433,6 +439,14 @@ void SqlQueryModel::commitInternal(const QList<SqlQueryItem*>& items) dbNameToAttachNameMapForCommit.clear(); for (Db* dbToDetach : dbListToDetach) db->detach(dbToDetach); + + + // Updating added/deleted counts, to honor rows not deleted because of some errors + numberOfItemsAdded -= groupItemsByRows(findItems(SqlQueryItem::DataRole::NEW_ROW, true)).size(); + numberOfItemsDeleted -= groupItemsByRows(findItems(SqlQueryItem::DataRole::DELETED, true)).size(); + int itemsAddedDeletedDelta = numberOfItemsAdded - numberOfItemsDeleted; + + recalculateRowsAndPages(itemsAddedDeletedDelta); } void SqlQueryModel::rollbackInternal(const QList<SqlQueryItem*>& items) @@ -497,7 +511,7 @@ bool SqlQueryModel::commitEditedRow(const QList<SqlQueryItem*>& itemsInRow) Dialect dialect = db->getDialect(); - QHash<Table,QList<SqlQueryItem*>> itemsByTable = groupItemsByTable(itemsInRow); + QHash<AliasedTable,QList<SqlQueryItem*>> itemsByTable = groupItemsByTable(itemsInRow); // Values QString query; @@ -507,9 +521,9 @@ bool SqlQueryModel::commitEditedRow(const QList<SqlQueryItem*>& itemsInRow) RowId rowId; RowId newRowId; CommitUpdateQueryBuilder queryBuilder; - QHashIterator<Table,QList<SqlQueryItem*>> it(itemsByTable); + QHashIterator<AliasedTable,QList<SqlQueryItem*>> it(itemsByTable); QList<SqlQueryItem*> items; - Table table; + AliasedTable table; while (it.hasNext()) { it.next(); @@ -713,7 +727,7 @@ QList<QStandardItem*> SqlQueryModel::loadRow(SqlResultsRowPtr row) RowId SqlQueryModel::getRowIdValue(SqlResultsRowPtr row, int columnIdx) { RowId rowId; - Table table = tablesForColumns[columnIdx]; + AliasedTable table = tablesForColumns[columnIdx]; QHash<QString,QString> rowIdColumns = tableToRowIdColumn[table]; QHashIterator<QString,QString> it(rowIdColumns); QString col; @@ -795,7 +809,7 @@ RowId SqlQueryModel::getNewRowId(const RowId& currentRowId, const QList<SqlQuery return currentRowId; } -void SqlQueryModel::updateRowIdForAllItems(const Table& table, const RowId& rowId, const RowId& newRowId) +void SqlQueryModel::updateRowIdForAllItems(const AliasedTable& table, const RowId& rowId, const RowId& newRowId) { SqlQueryItem* item = nullptr; for (int row = 0; row < rowCount(); row++) @@ -824,11 +838,12 @@ void SqlQueryModel::readColumns() // Reading column mapping for ROWID columns int totalRowIdCols = 0; - Table table; + AliasedTable table; foreach (const QueryExecutor::ResultRowIdColumnPtr& resCol, queryExecutor->getRowIdResultColumns()) { table.setDatabase(resCol->dbName); table.setTable(resCol->table); + table.setTableAlias(resCol->tableAlias); tableToRowIdColumn[table] = resCol->queryExecutorAliasToColumn; totalRowIdCols += resCol->queryExecutorAliasToColumn.size(); } @@ -850,10 +865,10 @@ void SqlQueryModel::readColumnDetails() editionForbiddenGlobalReasons << SqlQueryModelColumn::convert(reason); // Reading all the details from query executor source tables - QHash<Table, TableDetails> tableDetails = readTableDetails(); + QHash<AliasedTable, TableDetails> tableDetails = readTableDetails(); // Preparing for processing - Table table; + AliasedTable table; Column column; TableDetails details; TableDetails::ColumnDetails colDetails; @@ -871,7 +886,7 @@ void SqlQueryModel::readColumnDetails() modelColumn->editionForbiddenReason += editionForbiddenGlobalReasons; // Getting details of given table and column - table = Table(modelColumn->database, modelColumn->table); + table = AliasedTable(modelColumn->database, modelColumn->table, modelColumn->tableAlias); column = Column(modelColumn->database, modelColumn->table, modelColumn->column); details = tableDetails[table]; @@ -906,15 +921,15 @@ void SqlQueryModel::readColumnDetails() } } -QHash<Table, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails() +QHash<AliasedTable, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails() { - QHash<Table, TableDetails> results; + QHash<AliasedTable, TableDetails> results; SqliteQueryPtr query; SqliteCreateTablePtr createTable; Dialect dialect = db->getDialect(); SchemaResolver resolver(getDb()); QString database; - Table table; + AliasedTable table; QString columnName; foreach (const QueryExecutor::SourceTablePtr& srcTable, queryExecutor->getSourceTables()) @@ -932,7 +947,7 @@ QHash<Table, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails() // Table details TableDetails tableDetails; - table = {database, srcTable->table}; + table = {database, srcTable->table, srcTable->alias}; // Table constraints foreach (SqliteCreateTable::Constraint* tableConstr, createTable->constraints) @@ -965,18 +980,18 @@ QHash<Table, SqlQueryModel::TableDetails> SqlQueryModel::readTableDetails() } -QList<Table> SqlQueryModel::getTablesForColumns() +QList<AliasedTable> SqlQueryModel::getTablesForColumns() { - QList<Table> columnTables; - Table table; + QList<AliasedTable> columnTables; + AliasedTable table; foreach (SqlQueryModelColumnPtr column, columns) { if (column->editionForbiddenReason.size() > 0) { - columnTables << Table(); + columnTables << AliasedTable(); continue; } - table = Table(column->database, column->table); + table = AliasedTable(column->database, column->table, column->tableAlias); columnTables << table; } return columnTables; @@ -1034,7 +1049,10 @@ void SqlQueryModel::handleExecFinished(SqlQueryPtr results) bool rowsCountedManually = queryExecutor->isRowCountingRequired() || rowCount() < CFG_UI.General.NumberOfRowsPerPage.get(); bool countRes = false; if (rowsCountedManually) + { emit totalRowsAndPagesAvailable(); + emit storeExecutionInHistory(); + } else countRes = queryExecutor->countResults(); @@ -1080,6 +1098,7 @@ void SqlQueryModel::resultsCountingFinished(quint64 rowsAffected, quint64 rowsRe this->totalPages = totalPages; detachDatabases(); emit totalRowsAndPagesAvailable(); + emit storeExecutionInHistory(); } void SqlQueryModel::itemValueEdited(SqlQueryItem* item) @@ -1375,6 +1394,18 @@ QString SqlQueryModel::getDatabaseForCommit(const QString& database) return database; } +void SqlQueryModel::recalculateRowsAndPages(int rowsDelta) +{ + totalRowsReturned += rowsDelta; + + int rowsPerPage = CFG_UI.General.NumberOfRowsPerPage.get(); + totalPages = (int)qCeil(((double)totalRowsReturned) / ((double)rowsPerPage)); + emit totalRowsAndPagesAvailable(); + + if (rowCount() == 0) + reload(); +} + void SqlQueryModel::addNewRow() { int row = rowCount(); diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h index bdba29b..3e92bb2 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h @@ -120,7 +120,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel void setView(SqlQueryView* value); static QList<QList<SqlQueryItem*>> groupItemsByRows(const QList<SqlQueryItem*>& items); - static QHash<Table, QList<SqlQueryItem*> > groupItemsByTable(const QList<SqlQueryItem*>& items); + static QHash<AliasedTable, QList<SqlQueryItem*> > groupItemsByTable(const QList<SqlQueryItem*>& items); protected: class CommitUpdateQueryBuilder : public RowIdConditionBuilder @@ -204,7 +204,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel QList<SqlQueryModelColumnPtr> getTableColumnModels(const QString& table); void updateItem(SqlQueryItem* item, const QVariant& value, int columnIndex, const RowId& rowId); RowId getNewRowId(const RowId& currentRowId, const QList<SqlQueryItem*> items); - void updateRowIdForAllItems(const Table& table, const RowId& rowId, const RowId& newRowId); + void updateRowIdForAllItems(const AliasedTable& table, const RowId& rowId, const RowId& newRowId); QueryExecutor* queryExecutor = nullptr; Db* db = nullptr; @@ -241,8 +241,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel void updateColumnHeaderLabels(); void executeQueryInternal(); void internalExecutionStopped(); - QHash<Table,TableDetails> readTableDetails(); - QList<Table> getTablesForColumns(); + QHash<AliasedTable,TableDetails> readTableDetails(); + QList<AliasedTable> getTablesForColumns(); QList<bool> getColumnEditionEnabledList(); QList<SqlQueryItem*> toItemList(const QModelIndexList& indexes) const; bool commitRow(const QList<SqlQueryItem*>& itemsInRow); @@ -258,6 +258,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel Icon& getIconForIdx(int idx) const; void detachDatabases(); QString getDatabaseForCommit(const QString& database); + void recalculateRowsAndPages(int rowsDelta); QString query; bool explain = false; @@ -323,7 +324,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel QueryExecutor::SortList sortOrder; QHash<Column,SqlQueryModelColumnPtr> columnMap; - QHash<Table,QHash<QString,QString>> tableToRowIdColumn; + QHash<AliasedTable,QHash<QString,QString>> tableToRowIdColumn; QStringList headerColumns; int rowNumBase = 0; SqlQueryView* view = nullptr; @@ -342,7 +343,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel * @brief tablesForColumns * List of tables associated to \link #columns by order index. */ - QList<Table> tablesForColumns; + QList<AliasedTable> tablesForColumns; /** * @brief columnEditionStatus @@ -418,6 +419,8 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel */ void totalRowsAndPagesAvailable(); + void storeExecutionInHistory(); + /** * @brief commitStatusChanged * @param commitAvailable Tells if there's anything to commit/rollback or not. diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp index 0966ede..3a2457c 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.cpp @@ -7,6 +7,7 @@ SqlQueryModelColumn::SqlQueryModelColumn(const QueryExecutor::ResultColumnPtr& r displayName = resultColumn->displayName; column = resultColumn->column; table = resultColumn->table; + tableAlias = resultColumn->tableAlias; database = resultColumn->database.isEmpty() ? "main": resultColumn->database; foreach (QueryExecutor::ColumnEditionForbiddenReason reason, resultColumn->editionForbiddenReasons) editionForbiddenReason << SqlQueryModelColumn::convert(reason); @@ -223,7 +224,10 @@ SqlQueryModelColumn::Constraint* SqlQueryModelColumn::Constraint::create(const Q int idx = tableConstraint->getAffectedColumnIdx(column); if (idx < 0 || tableConstraint->foreignKey->indexedColumns.size() <= idx) { - qWarning() << "Could not find FK column for definition:" << tableConstraint->detokenize(); + // This case is perfectly fine if there are for example 2 foreign keys on the table, + // for 2 different columns. For each of those columns there will be 1 FK + // that enters here. + //qWarning() << "Could not find FK column for definition:" << tableConstraint->detokenize(); return nullptr; } diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.h index fb55fe5..e0f11e0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.h +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodelcolumn.h @@ -156,6 +156,7 @@ class GUI_API_EXPORT SqlQueryModelColumn QString column; QString table; QString database; + QString tableAlias; DataType dataType; QSet<EditionForbiddenReason> editionForbiddenReason; QList<Constraint*> constraints; diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp index 1f08b30..23a4991 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp @@ -11,6 +11,7 @@ #include "multieditor/multieditordialog.h" #include "uiconfig.h" #include "dialogs/sortdialog.h" +#include "services/notifymanager.h" #include <QHeaderView> #include <QPushButton> #include <QProgressBar> @@ -21,6 +22,8 @@ #include <QClipboard> #include <QAction> #include <QMenu> +#include <QMimeData> +#include <QCryptographicHash> CFG_KEYS_DEFINE(SqlQueryView) @@ -245,6 +248,59 @@ bool SqlQueryView::editInEditorIfNecessary(SqlQueryItem* item) return true; } +void SqlQueryView::paste(const QList<QList<QVariant> >& data) +{ + QList<SqlQueryItem*> selectedItems = getSelectedItems(); + if (selectedItems.isEmpty()) + { + notifyWarn(tr("No items selected to paste clipboard contents to.")); + return; + } + + qSort(selectedItems); + SqlQueryItem* topLeft = selectedItems.first(); + + int columnCount = getModel()->columnCount(); + int rowCount = getModel()->rowCount(); + int rowIdx = topLeft->row(); + int colIdx = topLeft->column(); + + SqlQueryItem* item = nullptr; + + foreach (const QList<QVariant>& cells, data) + { + // Check if we're out of rows range + if (rowIdx >= rowCount) + { + // No more rows available. + qDebug() << "Tried to paste more rows than available in the grid."; + break; + } + + foreach (const QVariant& cell, cells) + { + // Get current cell + if (colIdx >= columnCount) + { + // No more columns available. + qDebug() << "Tried to paste more columns than available in the grid."; + break; + } + item = getModel()->itemFromIndex(rowIdx, colIdx); + + // Set value to the cell + item->setValue(cell, false, false); + + // Go to next cell + colIdx++; + } + + // Go to next row, first cell + rowIdx++; + colIdx = topLeft->column(); + } +} + void SqlQueryView::updateCommitRollbackActions(bool enabled) { actionMap[COMMIT]->setEnabled(enabled); @@ -324,69 +380,80 @@ void SqlQueryView::copy() QList<SqlQueryItem*> selectedItems = getSelectedItems(); QList<QList<SqlQueryItem*> > groupedItems = SqlQueryModel::groupItemsByRows(selectedItems); + QVariant itemValue; QStringList cells; QList<QStringList> rows; + QPair<QString,QList<QList<QVariant>>> theDataPair; + QList<QList<QVariant>> theData; + QList<QVariant> theDataRow; + foreach (const QList<SqlQueryItem*>& itemsInRows, groupedItems) { foreach (SqlQueryItem* item, itemsInRows) - cells << item->getFullValue().toString(); + { + itemValue = item->getFullValue(); + cells << itemValue.toString(); + theDataRow << itemValue; + } rows << cells; cells.clear(); + + theData << theDataRow; + theDataRow.clear(); } + QMimeData* mimeData = new QMimeData(); QString tsv = TsvSerializer::serialize(rows); - qApp->clipboard()->setText(tsv); + mimeData->setText(tsv); + + QString md5 = QCryptographicHash::hash(tsv.toUtf8(), QCryptographicHash::Md5); + theDataPair.first = md5; + theDataPair.second = theData; + + QByteArray serializedData; + QDataStream stream(&serializedData, QIODevice::WriteOnly); + stream << theDataPair; + mimeData->setData(mimeDataId, serializedData); + + qApp->clipboard()->setMimeData(mimeData); } void SqlQueryView::paste() { - QList<QStringList> deserializedRows = TsvSerializer::deserialize(qApp->clipboard()->text()); - - QList<SqlQueryItem*> selectedItems = getSelectedItems(); - qSort(selectedItems); - SqlQueryItem* topLeft = selectedItems.first(); + const QMimeData* mimeData = qApp->clipboard()->mimeData(); + if (mimeData->hasFormat(mimeDataId)) + { + QString tsv = mimeData->text(); + QString md5 = QCryptographicHash::hash(tsv.toUtf8(), QCryptographicHash::Md5); - int columnCount = getModel()->columnCount(); - int rowCount = getModel()->rowCount(); - int rowIdx = topLeft->row(); - int colIdx = topLeft->column(); + QPair<QString,QList<QList<QVariant>>> theDataPair; + QByteArray serializedData = mimeData->data(mimeDataId); + QDataStream stream(&serializedData, QIODevice::ReadOnly); + stream >> theDataPair; - SqlQueryItem* item = nullptr; - - foreach (const QStringList& cells, deserializedRows) - { - // Check if we're out of rows range - if (rowIdx >= rowCount) + if (md5 == theDataPair.first) { - // No more rows available. - qDebug() << "Tried to paste more rows than available in the grid."; - break; + paste(theDataPair.second); + return; } + } - foreach (const QString& cell, cells) - { - // Get current cell - if (colIdx >= columnCount) - { - // No more columns available. - qDebug() << "Tried to paste more columns than available in the grid."; - break; - } - item = getModel()->itemFromIndex(rowIdx, colIdx); - - // Set value to the cell - item->setValue(cell, false, false); + QList<QStringList> deserializedRows = TsvSerializer::deserialize(mimeData->text()); - // Go to next cell - colIdx++; - } + QList<QVariant> dataRow; + QList<QList<QVariant>> dataToPaste; + for (const QStringList& cells : deserializedRows) + { + for (const QString& cell : cells) + dataRow << cell; - // Go to next row, first cell - rowIdx++; - colIdx = topLeft->column(); + dataToPaste << dataRow; + dataRow.clear(); } + + paste(dataToPaste); } void SqlQueryView::copyAs() diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h index a523200..f409559 100644 --- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h +++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h @@ -80,6 +80,9 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer void setupActionsForMenu(SqlQueryItem* currentItem, const QList<SqlQueryItem*>& selectedItems); void setupHeaderMenu(); bool editInEditorIfNecessary(SqlQueryItem* item); + void paste(const QList<QList<QVariant>>& data); + + constexpr static const char* mimeDataId = "application/x-sqlitestudio-data-view-data"; SqlQueryItemDelegate* itemDelegate = nullptr; QMenu* contextMenu = nullptr; diff --git a/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp index af9da8f..8153fed 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dblistmodel.cpp @@ -77,6 +77,8 @@ void DbListModel::setSortMode(const QString& sortMode) this->sortMode = SortMode::LikeDbTree; else if (sortMode == "Alphabetical") this->sortMode = SortMode::Alphabetical; + else if (sortMode == "AlphabeticalCaseInsensitive") + this->sortMode = SortMode::AlphabeticalCaseInsensitive; else this->sortMode = SortMode::ConnectionOrder; @@ -91,6 +93,8 @@ QString DbListModel::getSortModeString() const return "LikeDbTree"; case DbListModel::SortMode::Alphabetical: return "Alphabetical"; + case DbListModel::SortMode::AlphabeticalCaseInsensitive: + return "AlphabeticalCaseInsensitive"; case DbListModel::SortMode::ConnectionOrder: break; } @@ -119,6 +123,12 @@ void DbListModel::sort() qSort(dbList.begin(), dbList.end(), comparer); break; } + case DbListModel::SortMode::AlphabeticalCaseInsensitive: + { + AlphaComparer comparer(Qt::CaseInsensitive); + qSort(dbList.begin(), dbList.end(), comparer); + break; + } case DbListModel::SortMode::ConnectionOrder: break; } @@ -183,7 +193,12 @@ bool DbListModel::DbTreeComparer::operator()(Db* db1, Db* db2) return dbTreeOrder.indexOf(db1->getName()) < dbTreeOrder.indexOf(db2->getName()); } +DbListModel::AlphaComparer::AlphaComparer(Qt::CaseSensitivity cs) : + cs(cs) +{ +} + bool DbListModel::AlphaComparer::operator()(Db* db1, Db* db2) { - return db1->getName().compare(db2->getName()) < 0; + return db1->getName().compare(db2->getName(), cs) < 0; } diff --git a/SQLiteStudio3/guiSQLiteStudio/dblistmodel.h b/SQLiteStudio3/guiSQLiteStudio/dblistmodel.h index 57928df..c375674 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dblistmodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/dblistmodel.h @@ -15,6 +15,7 @@ class GUI_API_EXPORT DbListModel : public QAbstractListModel { LikeDbTree, Alphabetical, + AlphabeticalCaseInsensitive, ConnectionOrder }; @@ -49,7 +50,12 @@ class GUI_API_EXPORT DbListModel : public QAbstractListModel class AlphaComparer { public: + AlphaComparer(Qt::CaseSensitivity cs = Qt::CaseSensitive); + bool operator()(Db* db1, Db* db2); + + private: + Qt::CaseSensitivity cs; }; void sort(); diff --git a/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.cpp index 99d3f27..00914a1 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.cpp @@ -14,12 +14,7 @@ QVariant DbObjListModel::data(const QModelIndex& index, int role) const return QVariant(); if (role == Qt::DisplayRole || role == Qt::EditRole) - { - if (sortMode == SortMode::Alphabetical) - return objectList[index.row()]; - else - return unsortedObjectList[index.row()]; - } + return objectList[index.row()]; return QVariant(); } @@ -84,7 +79,19 @@ void DbObjListModel::updateList() resolver.setIgnoreSystemObjects(!includeSystemObjects); objectList = resolver.getObjects(typeString().toLower()); unsortedObjectList = objectList; - qSort(objectList); + + switch (sortMode) + { + case SortMode::Alphabetical: + objectList.sort(); + break; + case SortMode::AlphabeticalCaseInsensitive: + objectList.sort(Qt::CaseInsensitive); + break; + case SortMode::LikeInDb: + break; + } + endResetModel(); } diff --git a/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.h b/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.h index cac1202..4ae3608 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.h +++ b/SQLiteStudio3/guiSQLiteStudio/dbobjlistmodel.h @@ -14,7 +14,8 @@ class GUI_API_EXPORT DbObjListModel : public QAbstractListModel enum class SortMode { LikeInDb, - Alphabetical + Alphabetical, + AlphabeticalCaseInsensitive }; enum class ObjectType diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui index 52b0c7b..755c9b0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtree.ui @@ -14,7 +14,7 @@ <bool>false</bool> </property> <property name="features"> - <set>QDockWidget::AllDockWidgetFeatures</set> + <set>QDockWidget::DockWidgetFloatable|QDockWidget::DockWidgetMovable</set> </property> <property name="allowedAreas"> <set>Qt::LeftDockWidgetArea|Qt::RightDockWidgetArea</set> diff --git a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp index 281510f..a4e736f 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dbtree/dbtreemodel.cpp @@ -222,15 +222,16 @@ void DbTreeModel::restoreGroup(const Config::DbGroupPtr& group, QList<Db*>* dbLi } else { - // If db is managed by manager, it means it was successfully loaded. - // Otherwise there was a problem with the file, or with plugin for that database - // and we still want to have dbtree item for that database, we will just hide it. - // Later, when plugin is loaded, item might become visible. + db = DBLIST->getByName(group->referencedDbName); + + // Databases referenced in groups must exist on database list. If not, we ignore them. + // Even invalid (no plugin, no file) databases have entry in dblist. + if (!db) + return; + item = DbTreeItemFactory::createDb(group->referencedDbName, this); item->setDb(group->referencedDbName); - - db = DBLIST->getByName(group->referencedDbName); - if (db && dbList) + if (dbList) dbList->removeOne(db); } @@ -297,6 +298,7 @@ void DbTreeModel::dbUpdated(const QString& oldName, Db* db) item->setText(db->getName()); item->setDb(db->getName()); + item->updateDbIcon(); } void DbTreeModel::dbRemoved(Db* db) diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.ui index 2133aca..1ac6cbb 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/columndialog.ui @@ -31,6 +31,9 @@ <height>0</height> </size> </property> + <property name="toolTip"> + <string>Scale</string> + </property> </widget> </item> <item row="1" column="3"> @@ -48,6 +51,9 @@ <height>0</height> </size> </property> + <property name="toolTip"> + <string>Precision</string> + </property> </widget> </item> <item row="0" column="1"> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp index b22ee6e..1ff053f 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/configdialog.cpp @@ -1238,7 +1238,7 @@ void ConfigDialog::initPluginsPage() builtIn = PLUGINS->isBuiltIn(pluginName);
title = PLUGINS->getTitle(pluginName);
if (builtIn)
- title += tr("%1 (built-in)", "plugins manager in configuration dialog").arg(title);
+ title = tr("%1 (built-in)", "plugins manager in configuration dialog").arg(title);
item = new QTreeWidgetItem({title});
item->setCheckState(0, PLUGINS->isLoaded(pluginName) ? Qt::Checked : Qt::Unchecked);
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp index a2a9c36..05d50af 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp @@ -15,6 +15,7 @@ #include <QPushButton> #include <QFileDialog> #include <QComboBox> +#include <QTimer> DbDialog::DbDialog(Mode mode, QWidget *parent) : QDialog(parent), @@ -54,26 +55,6 @@ QString DbDialog::getName() return ui->nameEdit->text(); } -Db* DbDialog::getDb() -{ - if (ui->typeCombo->currentIndex() < 0) - return nullptr; - - Db* testDb = nullptr; - QHash<QString, QVariant> options = collectOptions(); - QString path = ui->fileEdit->text(); - foreach (DbPlugin* plugin, dbPlugins) - { - if (options.contains(DB_PLUGIN) && options[DB_PLUGIN].toString() != plugin->getName()) - continue; - - testDb = plugin->getInstance("", path, options); - if (testDb) - return testDb; - } - return testDb; -} - bool DbDialog::isPermanent() { return ui->permamentCheckBox->isChecked(); @@ -95,17 +76,18 @@ void DbDialog::showEvent(QShowEvent *e) { if (db) { + disableTypeAutodetection = true; int idx = ui->typeCombo->findText(db->getTypeLabel()); ui->typeCombo->setCurrentIndex(idx); - ui->typeCombo->setEnabled(false); // converting to other type is in separate dialog, it's different feature ui->generateCheckBox->setChecked(false); ui->fileEdit->setText(db->getPath()); ui->nameEdit->setText(db->getName()); + disableTypeAutodetection = false; } else if (ui->typeCombo->count() > 0) { - int idx = ui->typeCombo->findText("SQLite3"); // we should have SQLite3 plugin + int idx = ui->typeCombo->findText("SQLite 3", Qt::MatchFixedString); // we should have SQLite 3 plugin if (idx > -1) ui->typeCombo->setCurrentIndex(idx); else @@ -126,24 +108,30 @@ void DbDialog::init() { ui->setupUi(this); - ui->browseButton->setIcon(ICONS.DATABASE_FILE); - dbPlugins = PLUGINS->getLoadedPlugins<DbPlugin>(); - foreach (DbPlugin* dbPlugin, dbPlugins) - { - ui->typeCombo->addItem(dbPlugin->getLabel()); - } + ui->browseCreateButton->setIcon(ICONS.PLUS); - ui->browseButton->setVisible(true); + for (DbPlugin* dbPlugin : PLUGINS->getLoadedPlugins<DbPlugin>()) + dbPlugins[dbPlugin->getLabel()] = dbPlugin; + + QStringList typeLabels; + typeLabels += dbPlugins.keys(); + typeLabels.sort(Qt::CaseInsensitive); + ui->typeCombo->addItems(typeLabels); + + ui->browseCreateButton->setVisible(true); ui->testConnIcon->setVisible(false); connect(ui->fileEdit, SIGNAL(textChanged(QString)), this, SLOT(fileChanged(QString))); connect(ui->nameEdit, SIGNAL(textChanged(QString)), this, SLOT(nameModified(QString))); connect(ui->generateCheckBox, SIGNAL(toggled(bool)), this, SLOT(generateNameSwitched(bool))); - connect(ui->browseButton, SIGNAL(clicked()), this, SLOT(browseClicked())); + connect(ui->browseCreateButton, SIGNAL(clicked()), this, SLOT(browseClicked())); + connect(ui->browseOpenButton, SIGNAL(clicked()), this, SLOT(browseClicked())); connect(ui->testConnButton, SIGNAL(clicked()), this, SLOT(testConnectionClicked())); connect(ui->typeCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(dbTypeChanged(int))); generateNameSwitched(true); + + layout()->setSizeConstraint(QLayout::SetFixedSize); } void DbDialog::updateOptions() @@ -153,10 +141,14 @@ void DbDialog::updateOptions() // Remove olds foreach (QWidget* w, optionWidgets) { - ui->gridLayout->removeWidget(w); + ui->optionsGrid->removeWidget(w); delete w; } - adjustSize(); + + customBrowseHandler = nullptr; + ui->pathGroup->setTitle(tr("File")); + ui->browseOpenButton->setToolTip(tr("Browse for existing database file on local computer")); + ui->browseCreateButton->setVisible(true); optionWidgets.clear(); optionKeyToWidget.clear(); @@ -166,31 +158,43 @@ void DbDialog::updateOptions() lastWidgetInTabOrder = ui->permamentCheckBox; // Retrieve new list - DbPlugin* plugin = nullptr; - if (dbPlugins.count() > 0) + if (ui->typeCombo->currentIndex() > -1) { - int idx = ui->typeCombo->currentIndex(); - if (idx > -1 ) + DbPlugin* plugin = dbPlugins[ui->typeCombo->currentText()]; + QList<DbPluginOption> optList = plugin->getOptionsList(); + if (optList.size() > 0) { - plugin = dbPlugins[idx]; - QList<DbPluginOption> optList = plugin->getOptionsList(); - if (optList.size() > 0) + // Add new options + int row = ADDITIONAL_ROWS_BEGIN_INDEX; + for (const DbPluginOption& opt : optList) { - // Add new options - int row = ADDITIONAL_ROWS_BEGIN_INDEX; - foreach (DbPluginOption opt, optList) - addOption(opt, row++); + addOption(opt, row); + row++; } } } - adjustSize(); + setUpdatesEnabled(true); } -void DbDialog::addOption(const DbPluginOption& option, int row) +void DbDialog::addOption(const DbPluginOption& option, int& row) { + if (option.type == DbPluginOption::CUSTOM_PATH_BROWSE) + { + // This option does not add any editor, but has it's own label for path edit. + row--; + ui->pathGroup->setTitle(option.label); + ui->browseCreateButton->setVisible(false); + if (!option.toolTip.isEmpty()) + ui->browseOpenButton->setToolTip(option.toolTip); + + customBrowseHandler = option.customBrowseHandler; + return; + } + QLabel* label = new QLabel(option.label, this); + label->setAlignment(Qt::AlignVCenter|Qt::AlignRight); QWidget* editor = nullptr; QWidget* editorHelper = nullptr; // TODO, based on plugins for Url handlers @@ -204,15 +208,15 @@ void DbDialog::addOption(const DbPluginOption& option, int row) optionKeyToWidget[option.key] = editor; optionKeyToType[option.key] = option.type; - ui->gridLayout->addWidget(label, row, 0); - ui->gridLayout->addWidget(editor, row, 1); + ui->optionsGrid->addWidget(label, row, 0); + ui->optionsGrid->addWidget(editor, row, 1); setTabOrder(lastWidgetInTabOrder, editor); lastWidgetInTabOrder = editor; if (editorHelper) { - ui->gridLayout->addWidget(editorHelper, row, 2); + ui->optionsGrid->addWidget(editorHelper, row, 2); optionWidgets << editorHelper; helperToKey[editorHelper] = option.key; @@ -307,6 +311,8 @@ QWidget *DbDialog::getEditor(const DbPluginOption& opt, QWidget*& editorHelper) connect(sb, SIGNAL(valueChanged(double)), this, SLOT(propertyChanged())); break; } + case DbPluginOption::CUSTOM_PATH_BROWSE: + return nullptr; // should not happen ever, asserted one stack level before default: // TODO plugin based handling of custom editors qWarning() << "Unhandled DbDialog option for creating editor."; @@ -344,6 +350,8 @@ QVariant DbDialog::getValueFrom(DbPluginOption::Type type, QWidget *editor) case DbPluginOption::CHOICE: value = dynamic_cast<QComboBox*>(editor)->currentText(); break; + case DbPluginOption::CUSTOM_PATH_BROWSE: + break; // should not happen ever default: // TODO plugin based handling of custom editors qWarning() << "Unhandled DbDialog option for value."; @@ -373,6 +381,8 @@ void DbDialog::setValueFor(DbPluginOption::Type type, QWidget *editor, const QVa case DbPluginOption::CHOICE: dynamic_cast<QComboBox*>(editor)->setCurrentText(value.toString()); break; + case DbPluginOption::CUSTOM_PATH_BROWSE: + break; // should not happen ever default: qWarning() << "Unhandled DbDialog option to set value."; // TODO plugin based handling of custom editors @@ -382,18 +392,19 @@ void DbDialog::setValueFor(DbPluginOption::Type type, QWidget *editor, const QVa void DbDialog::updateType() { + if (disableTypeAutodetection) + return; + QFileInfo file(ui->fileEdit->text()); if (!file.exists() || file.isDir()) - { - ui->typeCombo->setEnabled(true); return; - } - DbPlugin* validPlugin = nullptr; + QString currentPluginLabel = ui->typeCombo->currentText(); + QList<DbPlugin*> validPlugins; QHash<QString,QVariant> options; QString path = ui->fileEdit->text(); Db* probeDb = nullptr; - foreach (DbPlugin* plugin, dbPlugins) + for (DbPlugin* plugin : dbPlugins) { probeDb = plugin->getInstance("", path, options); if (probeDb) @@ -401,15 +412,15 @@ void DbDialog::updateType() delete probeDb; probeDb = nullptr; - validPlugin = plugin; - break; + if (plugin->getLabel() == currentPluginLabel) + return; // current plugin is among valid plugins, no need to change anything + + validPlugins << plugin; } } - if (validPlugin) - ui->typeCombo->setCurrentText(validPlugin->getLabel()); - - ui->typeCombo->setEnabled(!validPlugin); + if (validPlugins.size() > 0) + ui->typeCombo->setCurrentText(validPlugins.first()->getLabel()); } QHash<QString, QVariant> DbDialog::collectOptions() @@ -424,7 +435,7 @@ QHash<QString, QVariant> DbDialog::collectOptions() DbPlugin* plugin = nullptr; if (dbPlugins.count() > 0) { - plugin = dbPlugins[ui->typeCombo->currentIndex()]; + plugin = dbPlugins[ui->typeCombo->currentText()]; options[DB_PLUGIN] = plugin->getName(); } @@ -433,9 +444,32 @@ QHash<QString, QVariant> DbDialog::collectOptions() bool DbDialog::testDatabase() { + if (ui->typeCombo->currentIndex() < 0) + return false; + QString path = ui->fileEdit->text(); - bool existed = QFile::exists(path); - bool res = getDb() != nullptr; + if (path.isEmpty()) + return false; + + QUrl url(path); + if (url.scheme().isEmpty()) + url.setScheme("file"); + + bool existed = false; + if (url.isLocalFile() && QFile::exists(path)) + existed = QFile::exists(path); + + QHash<QString, QVariant> options = collectOptions(); + DbPlugin* plugin = dbPlugins[ui->typeCombo->currentText()]; + Db* testDb = plugin->getInstance("", path, options); + + bool res = false; + if (testDb) + { + res = true; + delete testDb; + } + if (!existed) { QFile file(path); @@ -522,10 +556,9 @@ void DbDialog::valueForNameGenerationChanged() if (!ui->generateCheckBox->isChecked()) return; - DbPlugin* plugin = nullptr; if (dbPlugins.count() > 0) { - plugin = dbPlugins[ui->typeCombo->currentIndex()]; + DbPlugin* plugin = dbPlugins[ui->typeCombo->currentText()]; QString generatedName = plugin->generateDbName(ui->fileEdit->text()); generatedName = generateUniqueName(generatedName, existingDatabaseNames); ui->nameEdit->setText(generatedName); @@ -549,7 +582,7 @@ void DbDialog::generateNameSwitched(bool checked) { if (checked) { - ui->nameEdit->setPlaceholderText(tr("The name will be auto-generated")); + ui->nameEdit->setPlaceholderText(tr("Auto-generated")); valueForNameGenerationChanged(); } else @@ -570,6 +603,14 @@ void DbDialog::fileChanged(const QString &arg1) void DbDialog::browseClicked() { + if (customBrowseHandler) + { + customBrowseHandler(ui->fileEdit->text()); + return; + } + + bool createMode = (sender() == ui->browseCreateButton); + QFileInfo fileInfo(ui->fileEdit->text()); QString dir; if (ui->fileEdit->text().isEmpty()) @@ -581,7 +622,7 @@ void DbDialog::browseClicked() else dir = getFileDialogInitPath(); - QString path = getDbPath(dir); + QString path = getDbPath(createMode, dir); if (path.isNull()) return; diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h index b2c0d68..ce73b11 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.h @@ -47,12 +47,11 @@ class GUI_API_EXPORT DbDialog : public QDialog private: void init(); void updateOptions(); - void addOption(const DbPluginOption& option, int row); + void addOption(const DbPluginOption& option, int& row); QWidget* getEditor(const DbPluginOption& opt, QWidget *&editorHelper); QVariant getValueFrom(DbPluginOption::Type type, QWidget* editor); void setValueFor(DbPluginOption::Type type, QWidget* editor, const QVariant& value); void updateType(); - Db* getDb(); bool testDatabase(); bool validate(); void updateState(); @@ -61,14 +60,16 @@ class GUI_API_EXPORT DbDialog : public QDialog Mode mode; QStringList existingDatabaseNames; Db* db = nullptr; - QList<DbPlugin*> dbPlugins; + QHash<QString,DbPlugin*> dbPlugins; QList<QWidget*> optionWidgets; QHash<QString,QWidget*> optionKeyToWidget; QHash<QString,DbPluginOption::Type> optionKeyToType; QHash<QWidget*,QString> helperToKey; QWidget* lastWidgetInTabOrder = nullptr; + DbPluginOption::CustomBrowseHandler customBrowseHandler = nullptr; + bool disableTypeAutodetection = false; - static const constexpr int ADDITIONAL_ROWS_BEGIN_INDEX = 4; + static const constexpr int ADDITIONAL_ROWS_BEGIN_INDEX = 1; private slots: void typeChanged(int index); diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui index fb53428..6f35079 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.ui @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>455</width> - <height>200</height> + <height>365</height> </rect> </property> <property name="minimumSize"> @@ -21,127 +21,124 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="2" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QComboBox" name="typeCombo"> - <property name="toolTip"> - <string>Database driver</string> - </property> - </widget> - </item> - </layout> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="nameEdit"> - <property name="readOnly"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="nameLabel"> - <property name="text"> - <string>Name</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="typeLabel"> - <property name="text"> - <string>Type</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="fileEdit"/> - </item> - <item row="0" column="2"> - <layout class="QHBoxLayout" name="horizontalLayout_3"> - <item> - <widget class="QToolButton" name="browseButton"> - <property name="toolTip"> - <string>Browse for database file on local computer</string> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="fileLabel"> - <property name="text"> - <string>File</string> - </property> - </widget> - </item> - <item row="1" column="2"> - <widget class="QCheckBox" name="generateCheckBox"> - <property name="toolTip"> - <string>Generate name basing on file path</string> - </property> - <property name="text"> - <string/> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Permanent</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <layout class="QHBoxLayout" name="horizontalLayout_4"> - <item> - <spacer name="horizontalSpacer_3"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - <item> - <widget class="QCheckBox" name="permamentCheckBox"> - <property name="toolTip"> - <string extracomment="aasfd"><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></string> - </property> - <property name="text"> - <string/> - </property> - <property name="checked"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </item> - </layout> + <widget class="QGroupBox" name="typeGroup"> + <property name="title"> + <string>Database type</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QComboBox" name="typeCombo"> + <property name="toolTip"> + <string>Database driver</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="pathGroup"> + <property name="title"> + <string>File</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="QLineEdit" name="fileEdit"/> + </item> + <item> + <widget class="QToolButton" name="browseCreateButton"> + <property name="toolTip"> + <string>Create new database file</string> + </property> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../icons.qrc"> + <normaloff>:/icons/img/plus.png</normaloff>:/icons/img/plus.png</iconset> + </property> + </widget> + </item> + <item> + <widget class="QToolButton" name="browseOpenButton"> + <property name="text"> + <string/> + </property> + <property name="icon"> + <iconset resource="../icons.qrc"> + <normaloff>:/icons/img/open_sql_file.png</normaloff>:/icons/img/open_sql_file.png</iconset> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="nameGroup"> + <property name="title"> + <string>Name (on the list)</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_6"> + <item> + <widget class="QLineEdit" name="nameEdit"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="generateCheckBox"> + <property name="toolTip"> + <string>Generate name basing on file path</string> + </property> + <property name="text"> + <string>Generate automatically</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="optionsGroup"> + <property name="title"> + <string>Options</string> + </property> + <layout class="QGridLayout" name="optionsGrid"> + <item row="0" column="0" colspan="2"> + <widget class="QCheckBox" name="permamentCheckBox"> + <property name="toolTip"> + <string extracomment="aasfd"><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></string> + </property> + <property name="text"> + <string>Permanent (keep it in configuration)</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeType"> + <enum>QSizePolicy::Fixed</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>360</width> + <height>1</height> + </size> + </property> + </spacer> </item> <item> <widget class="QWidget" name="bottomWidget" native="true"> @@ -161,7 +158,7 @@ <item> <widget class="QPushButton" name="testConnButton"> <property name="text"> - <string>Test database connection</string> + <string>Test connection</string> </property> </widget> </item> @@ -190,15 +187,9 @@ </item> </layout> </widget> - <tabstops> - <tabstop>fileEdit</tabstop> - <tabstop>browseButton</tabstop> - <tabstop>nameEdit</tabstop> - <tabstop>generateCheckBox</tabstop> - <tabstop>typeCombo</tabstop> - <tabstop>permamentCheckBox</tabstop> - </tabstops> - <resources/> + <resources> + <include location="../icons.qrc"/> + </resources> <connections> <connection> <sender>buttonBox</sender> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp index e495dd9..91b4087 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.cpp @@ -124,6 +124,14 @@ void ExportDialog::setDatabaseMode(Db* db) this->db = db; } +void ExportDialog::setPreselectedDb(Db *db) +{ + if (!db->isOpen()) + return; + + this->db = db; +} + void ExportDialog::initModePage() { connect(ui->subjectDatabaseRadio, SIGNAL(clicked()), this, SLOT(updateExportMode())); @@ -146,10 +154,11 @@ void ExportDialog::initTablePage() dbListModel = new DbListModel(this); dbListModel->setCombo(ui->exportTableDbNameCombo); - dbListModel->setSortMode(DbListModel::SortMode::Alphabetical); + dbListModel->setSortMode(DbListModel::SortMode::AlphabeticalCaseInsensitive); tablesModel = new DbObjListModel(this); tablesModel->setType(DbObjListModel::ObjectType::TABLE); + tablesModel->setSortMode(DbObjListModel::SortMode::AlphabeticalCaseInsensitive); connect(this, SIGNAL(tablePageCompleteChanged()), ui->tablePage, SIGNAL(completeChanged())); } @@ -295,6 +304,9 @@ void ExportDialog::tablePageDisplayed() if (table.isNull()) // table mode selected by user, not forced by setTableMode(). { ui->exportTableDbNameCombo->setModel(dbListModel); + if (db) + ui->exportTableDbNameCombo->setCurrentText(db->getName()); + connect(ui->exportTableDbNameCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateDbTables())); ui->exportTableNameCombo->setModel(tablesModel); @@ -313,6 +325,9 @@ void ExportDialog::queryPageDisplayed() if (query.isNull()) // query mode selected by user, not forced by setQueryMode(). { ui->queryDatabaseCombo->setModel(dbListModel); + if (db) + ui->queryDatabaseCombo->setCurrentText(db->getName()); + connect(ui->queryDatabaseCombo, SIGNAL(currentIndexChanged(int)), ui->queryPage, SIGNAL(completeChanged())); } diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h index 296aa4d..0471172 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/exportdialog.h @@ -26,6 +26,7 @@ class GUI_API_EXPORT ExportDialog : public QWizard void setTableMode(Db* db, const QString& table); void setQueryMode(Db* db, const QString& query); void setDatabaseMode(Db* db); + void setPreselectedDb(Db* db); int nextId() const; bool isPluginConfigValid() const; diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp index 32ec30f..c16b90e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.cpp @@ -83,12 +83,13 @@ void ImportDialog::initTablePage() { dbListModel = new DbListModel(this); dbListModel->setCombo(ui->dbNameCombo); - dbListModel->setSortMode(DbListModel::SortMode::Alphabetical); + dbListModel->setSortMode(DbListModel::SortMode::AlphabeticalCaseInsensitive); ui->dbNameCombo->setModel(dbListModel); tablesModel = new DbObjListModel(this); tablesModel->setIncludeSystemObjects(false); tablesModel->setType(DbObjListModel::ObjectType::TABLE); + tablesModel->setSortMode(DbObjListModel::SortMode::AlphabeticalCaseInsensitive); ui->tableNameCombo->setModel(tablesModel); refreshTables(); @@ -166,14 +167,6 @@ void ImportDialog::updateStandardOptions() bool showFileName = currentPlugin->standardOptionsToEnable().testFlag(ImportManager::FILE_NAME); bool showCodec = currentPlugin->standardOptionsToEnable().testFlag(ImportManager::CODEC); - if (!showFileName && !showCodec) - { - ui->dsOptionsGroup->setVisible(false); - return; - } - - ui->dsOptionsGroup->setVisible(true); - int row = 0; QGridLayout* grid = dynamic_cast<QGridLayout*>(ui->dsOptionsGroup->layout()); if (showFileName) @@ -355,6 +348,8 @@ void ImportDialog::accept() if (currentPlugin->standardOptionsToEnable().testFlag(ImportManager::CODEC)) stdConfig.codec = ui->codecCombo->currentText(); + stdConfig.ignoreErrors = ui->ignoreErrorsCheck->isChecked(); + Db* db = DBLIST->getByName(ui->dbNameCombo->currentText());; if (!db) { diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.ui index c8756f7..dfa8ace 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.ui +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/importdialog.ui @@ -103,8 +103,8 @@ <rect> <x>0</x> <y>0</y> - <width>479</width> - <height>310</height> + <width>269</width> + <height>280</height> </rect> </property> <property name="styleSheet"> @@ -141,13 +141,6 @@ <string>Options</string> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="inputFileLabel"> - <property name="text"> - <string>Input file:</string> - </property> - </widget> - </item> <item row="0" column="1"> <widget class="QWidget" name="inputFileWidget" native="true"> <layout class="QHBoxLayout" name="horizontalLayout"> @@ -183,9 +176,26 @@ </property> </widget> </item> + <item row="0" column="0"> + <widget class="QLabel" name="inputFileLabel"> + <property name="text"> + <string>Input file:</string> + </property> + </widget> + </item> <item row="1" column="1"> <widget class="QComboBox" name="codecCombo"/> </item> + <item row="2" column="0" colspan="2"> + <widget class="QCheckBox" name="ignoreErrorsCheck"> + <property name="toolTip"> + <string><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></string> + </property> + <property name="text"> + <string>Ignore errors</string> + </property> + </widget> + </item> </layout> </widget> </item> diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp index 0707bd3..12baafd 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.cpp @@ -19,6 +19,9 @@ #include <QMessageBox> #include <QPushButton> +QStringList TriggerDialog::tableEventNames; +QStringList TriggerDialog::viewEventNames; + TriggerDialog::TriggerDialog(Db* db, QWidget *parent) : QDialog(parent), db(db), @@ -54,6 +57,18 @@ void TriggerDialog::setTrigger(const QString& name) initTrigger(); } +void TriggerDialog::staticInit() +{ + tableEventNames = QStringList({ + SqliteCreateTrigger::time(SqliteCreateTrigger::Time::null), + SqliteCreateTrigger::time(SqliteCreateTrigger::Time::AFTER), + SqliteCreateTrigger::time(SqliteCreateTrigger::Time::BEFORE) + }); + viewEventNames = QStringList({ + SqliteCreateTrigger::time(SqliteCreateTrigger::Time::INSTEAD_OF) + }); +} + void TriggerDialog::changeEvent(QEvent *e) { QDialog::changeEvent(e); @@ -99,6 +114,9 @@ void TriggerDialog::init() }); } + // Event combo - default values + ui->whenCombo->addItems(tableEventNames + viewEventNames); + // Precondition connect(ui->preconditionCheck, SIGNAL(clicked()), this, SLOT(updateState())); connect(ui->preconditionEdit, SIGNAL(errorsChecked(bool)), this, SLOT(updateValidation())); @@ -128,22 +146,19 @@ void TriggerDialog::initTrigger() } // Event combo + QString eventValue = ui->whenCombo->currentText(); + ui->whenCombo->clear(); if (forTable) { - ui->whenCombo->addItems({ - SqliteCreateTrigger::time(SqliteCreateTrigger::Time::null), - SqliteCreateTrigger::time(SqliteCreateTrigger::Time::BEFORE), - SqliteCreateTrigger::time(SqliteCreateTrigger::Time::AFTER) - }); + ui->whenCombo->addItems(tableEventNames); } else { - ui->whenCombo->addItems({ - SqliteCreateTrigger::time(SqliteCreateTrigger::Time::INSTEAD_OF) - }); + ui->whenCombo->addItems(viewEventNames); ui->whenCombo->setEnabled(false); ui->onLabel->setText(tr("On view:")); } + ui->whenCombo->setCurrentText(eventValue); if (!view.isNull() || !table.isNull()) { diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h index d8e7ed4..712ea5e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h +++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/triggerdialog.h @@ -22,6 +22,8 @@ class GUI_API_EXPORT TriggerDialog : public QDialog void setParentView(const QString& name); void setTrigger(const QString& name); + static void staticInit(); + protected: void changeEvent(QEvent *e); @@ -35,6 +37,9 @@ class GUI_API_EXPORT TriggerDialog : public QDialog QString getTargetObjectName() const; void rebuildTrigger(); + static QStringList tableEventNames; + static QStringList viewEventNames; + QString originalTriggerName; QString trigger; QString table; diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro index 55b7380..e32aff5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro +++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro @@ -174,7 +174,8 @@ SOURCES +=\ dialogs/newversiondialog.cpp \ dialogs/quitconfirmdialog.cpp \ common/datawidgetmapper.cpp \ - dialogs/languagedialog.cpp + dialogs/languagedialog.cpp \ + common/ipvalidator.cpp HEADERS += mainwindow.h \ iconmanager.h \ @@ -318,7 +319,8 @@ HEADERS += mainwindow.h \ guiSQLiteStudio_global.h \ dialogs/quitconfirmdialog.h \ common/datawidgetmapper.h \ - dialogs/languagedialog.h + dialogs/languagedialog.h \ + common/ipvalidator.h FORMS += mainwindow.ui \ dbtree/dbtree.ui \ diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc index 40dfe53..4f33880 100644 --- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc +++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.qrc @@ -3,5 +3,7 @@ <file>translations/guiSQLiteStudio_pl.qm</file> <file>translations/guiSQLiteStudio_ru.qm</file> <file>translations/guiSQLiteStudio_fr.qm</file> + <file>translations/guiSQLiteStudio_sk.qm</file> + <file>translations/guiSQLiteStudio_zh_CN.qm</file> </qresource> </RCC> diff --git a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h index 8a30d99..cf4f2ec 100644 --- a/SQLiteStudio3/guiSQLiteStudio/iconmanager.h +++ b/SQLiteStudio3/guiSQLiteStudio/iconmanager.h @@ -84,9 +84,9 @@ class GUI_API_EXPORT IconManager : public QObject DEF_ICON(DATABASE_EXPORT_WIZARD, "database_export_wizard") DEF_ICON(DATABASE_FILE, "database_file") DEF_ICON(DATABASE_IMPORT_WIZARD, "database_import_wizard") - DEF_ICO2(DATABASE_INVALID, DATABASE, WARNING) DEF_ICON(DATABASE_NETWORK, "database_network") DEF_ICON(DATABASE_OFFLINE, "database_offline") + DEF_ICO2(DATABASE_INVALID, DATABASE_OFFLINE, WARNING) DEF_ICON(DATABASE_ONLINE, "database_online") DEF_ICON(DATABASE_RELOAD, "database_reload") DEF_ICON(DDL_HISTORY, "ddl_history") @@ -150,6 +150,7 @@ class GUI_API_EXPORT IconManager : public QObject DEF_ICON(PAGE_PREV, "page_prev") DEF_ICO3(MOVE_LEFT, PAGE_PREV) DEF_ICO3(MOVE_RIGHT, PAGE_NEXT) + DEF_ICON(PLUS, "plus") DEF_ICON(RELOAD, "reload") DEF_ICON(RENAME_FN_ARG, "rename_fn_arg") DEF_ICO3(RENAME_DATATYPE, RENAME_FN_ARG) diff --git a/SQLiteStudio3/guiSQLiteStudio/icons.qrc b/SQLiteStudio3/guiSQLiteStudio/icons.qrc index d89afa9..6612814 100644 --- a/SQLiteStudio3/guiSQLiteStudio/icons.qrc +++ b/SQLiteStudio3/guiSQLiteStudio/icons.qrc @@ -38,7 +38,6 @@ <file>img/database_disconnect.png</file> <file>img/database_export.png</file> <file>img/database_file.png</file> - <file>img/database_invalid.png</file> <file>img/database_network.png</file> <file>img/database_reload.png</file> <file>img/database.png</file> @@ -191,5 +190,6 @@ <file>img/close.png</file> <file>img/go_back.png</file> <file>img/reset_autoincrement.png</file> + <file>img/plus.png</file> </qresource> </RCC> diff --git a/SQLiteStudio3/guiSQLiteStudio/img/database_invalid.png b/SQLiteStudio3/guiSQLiteStudio/img/database_invalid.png Binary files differdeleted file mode 100644 index 7ccd0a3..0000000 --- a/SQLiteStudio3/guiSQLiteStudio/img/database_invalid.png +++ /dev/null diff --git a/SQLiteStudio3/guiSQLiteStudio/img/plus.png b/SQLiteStudio3/guiSQLiteStudio/img/plus.png Binary files differnew file mode 100644 index 0000000..1138739 --- /dev/null +++ b/SQLiteStudio3/guiSQLiteStudio/img/plus.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_asc.png b/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_asc.png Binary files differindex b8e6af1..7d30175 100644 --- a/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_asc.png +++ b/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_asc.png diff --git a/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_desc.png b/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_desc.png Binary files differindex 6d88b78..9427ceb 100644 --- a/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_desc.png +++ b/SQLiteStudio3/guiSQLiteStudio/img/sort_ind_desc.png diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp index fe61b95..373b21d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp @@ -571,10 +571,6 @@ FormManager* MainWindow::getFormManager() const void MainWindow::setupDefShortcuts() { BIND_SHORTCUTS(MainWindow, Action); - - QList<QKeySequence> bindings = QKeySequence::keyBindings(QKeySequence::Close); - if (bindings.size() > 0) - actionMap[Action::CLOSE_WINDOW]->setShortcut(bindings.first()); } void MainWindow::openSqlEditorSlot() @@ -627,6 +623,10 @@ void MainWindow::exportAnything() } ExportDialog dialog(this); + Db* db = DBTREE->getSelectedOpenDb(); + if (db) + dialog.setPreselectedDb(db); + dialog.exec(); } @@ -639,6 +639,10 @@ void MainWindow::importAnything() } ImportDialog dialog(this); + Db* db = DBTREE->getSelectedOpenDb(); + if (db) + dialog.setDb(db); + dialog.exec(); } diff --git a/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp b/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp index d53874c..0d07bcb 100644 --- a/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/mdiarea.cpp @@ -4,6 +4,7 @@ #include "mdichild.h" #include "mdiwindow.h" #include "taskbar.h" +#include "uiconfig.h" #include <QMdiSubWindow> #include <QAction> #include <QActionGroup> @@ -35,6 +36,12 @@ MdiWindow *MdiArea::addSubWindow(MdiChild *mdiChild) if (!mdiChild->handleInitialFocus()) mdiChild->setFocus(); + if (taskBar) + { + if (taskBar->getTasks().size() == 1 && CFG_UI.General.OpenMaximized.get()) + mdiWin->setWindowState(mdiWin->windowState()|Qt::WindowMaximized); + } + emit windowListChanged(); return mdiWin; } @@ -111,12 +118,23 @@ void MdiArea::windowDestroyed(MdiWindow* window) return; QAction* action = winToActionMap[window]; + QAction* taskToSelect = nullptr; + if (!MAINWINDOW->isClosingApp()) + { + taskToSelect = taskBar->getNextTask(action); + if (!taskToSelect) + taskToSelect = taskBar->getPrevTask(action); + } + winToActionMap.remove(window); actionToWinMap.remove(action); taskBar->removeTask(action); delete action; emit windowListChanged(); + + if (taskToSelect) + taskBar->setActiveTask(taskToSelect); } void MdiArea::windowActivated() diff --git a/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp index 0e8d298..f2257c6 100644 --- a/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/mdiwindow.cpp @@ -5,6 +5,7 @@ #include "mainwindow.h" #include "services/dbmanager.h" #include "db/db.h" +#include "uiconfig.h" #include <QDateTime> #include <QApplication> #include <QDebug> @@ -143,6 +144,14 @@ void MdiWindow::changeEvent(QEvent* event) } else QMdiSubWindow::changeEvent(event); + + if (!MAINWINDOW->isClosingApp()) + { + bool wasMaximized = changeEvent->oldState().testFlag(Qt::WindowMaximized); + bool isMaximized = windowState().testFlag(Qt::WindowMaximized); + if (wasMaximized != isMaximized && CFG_UI.General.OpenMaximized.get() != isMaximized) + CFG_UI.General.OpenMaximized.set(isMaximized); + } } void MdiWindow::closeEvent(QCloseEvent* e) diff --git a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp index 359dc29..b63c58d 100644 --- a/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/taskbar.cpp @@ -65,6 +65,22 @@ void TaskBar::mousePressed() dragStartTask->trigger(); } +void TaskBar::taskBarMenuAboutToShow() +{ + // This is a hack. We want to display "Ctrl+W" shortcut to the user in this menu, but assigning that shortcut + // permanently to the action makes it ambigous to Qt, because it's already a standard shortcut, + // thus making Qt confused and this shortcut working only every second time. + // Here we assign the shortcut only for the time of displaying the menu. Rest of the time it's not assigned. + QList<QKeySequence> bindings = QKeySequence::keyBindings(QKeySequence::Close); + if (bindings.size() > 0) + MAINWINDOW->getAction(MainWindow::Action::CLOSE_WINDOW)->setShortcut(bindings.first()); +} + +void TaskBar::taskBarMenuAboutToHide() +{ + MAINWINDOW->getAction(MainWindow::Action::CLOSE_WINDOW)->setShortcut(QKeySequence()); +} + int TaskBar::getActiveTaskIdx() { QAction* checked = taskGroup.checkedAction(); @@ -95,6 +111,14 @@ void TaskBar::prevTask() tasks[idx]->trigger(); } +void TaskBar::setActiveTask(QAction* task) +{ + if (!task) + return; + + task->trigger(); +} + void TaskBar::initContextMenu(ExtActionContainer* mainWin) { // MainWindow is passed as argument to this function, so it's not referenced with MAINWINDOW macro, @@ -107,6 +131,8 @@ void TaskBar::initContextMenu(ExtActionContainer* mainWin) taskMenu->addAction(mainWin->getAction(MainWindow::RESTORE_WINDOW)); taskMenu->addAction(mainWin->getAction(MainWindow::RENAME_WINDOW)); + connect(taskMenu, SIGNAL(aboutToShow()), this, SLOT(taskBarMenuAboutToShow())); + connect(taskMenu, SIGNAL(aboutToHide()), this, SLOT(taskBarMenuAboutToHide())); connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(taskBarMenuRequested(QPoint))); } @@ -313,3 +339,44 @@ int TaskBar::count() { return tasks.count(); } + +QAction* TaskBar::getActiveTask() const +{ + QAction* checked = taskGroup.checkedAction(); + if (!checked) + return nullptr; + + return checked; +} + +QAction* TaskBar::getNextTask(QAction* from) const +{ + if (!from) + from = getActiveTask(); + + if (!from) + return nullptr; + + int idx = tasks.indexOf(from); + idx++; + if (idx < tasks.size()) + return tasks[idx]; + + return nullptr; +} + +QAction* TaskBar::getPrevTask(QAction* from) const +{ + if (!from) + from = getActiveTask(); + + if (!from) + return nullptr; + + int idx = tasks.indexOf(from); + idx--; + if (idx > 0) + return tasks[idx]; + + return nullptr; +} diff --git a/SQLiteStudio3/guiSQLiteStudio/taskbar.h b/SQLiteStudio3/guiSQLiteStudio/taskbar.h index 652b3f6..a7b7d4f 100644 --- a/SQLiteStudio3/guiSQLiteStudio/taskbar.h +++ b/SQLiteStudio3/guiSQLiteStudio/taskbar.h @@ -23,6 +23,9 @@ class GUI_API_EXPORT TaskBar : public QToolBar QList<QAction*> getTasks() const; bool isEmpty(); int count(); + QAction* getActiveTask() const; + QAction* getNextTask(QAction* from = nullptr) const; + QAction* getPrevTask(QAction* from = nullptr) const; protected: void mousePressEvent(QMouseEvent* event); @@ -63,11 +66,14 @@ class GUI_API_EXPORT TaskBar : public QToolBar public slots: void nextTask(); void prevTask(); + void setActiveTask(QAction* task); void initContextMenu(ExtActionContainer *mainWin); private slots: void taskBarMenuRequested(const QPoint& p); void mousePressed(); + void taskBarMenuAboutToShow(); + void taskBarMenuAboutToHide(); }; #endif // TASKBAR_H diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts index 6790149..55a5e5e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>AboutDialog</name> <message> @@ -505,73 +505,83 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> <translation type="unfinished"></translation> </message> @@ -1821,88 +1831,104 @@ Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> - <source>Name</source> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> - <source>Type</source> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> - <source>Browse for database file on local computer</source> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> - <source>Generate name basing on file path</source> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> - <source>Permanent</source> + <location filename="../dialogs/dbdialog.ui" line="92"/> + <source>Generate name basing on file path</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> - <source>Test database connection</source> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> - <source>The name will be auto-generated</source> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation type="unfinished"></translation> </message> @@ -2318,123 +2344,123 @@ All objects from this group will be moved to parent group.</source> <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2788,59 +2814,59 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> @@ -3111,17 +3137,27 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation type="unfinished"></translation> </message> @@ -3131,37 +3167,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3532,7 +3568,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> @@ -3542,37 +3578,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3580,17 +3616,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation type="unfinished"></translation> </message> @@ -3900,68 +3936,68 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> @@ -4319,7 +4355,8 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation type="unfinished"></translation> </message> @@ -4810,69 +4847,69 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -4880,87 +4917,92 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -5566,41 +5608,41 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation type="unfinished"></translation> </message> @@ -5688,33 +5730,33 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts index edc3e21..428d538 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>AboutDialog</name> <message> @@ -505,73 +505,83 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> <translation type="unfinished"></translation> </message> @@ -1821,88 +1831,104 @@ Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> - <source>Name</source> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> - <source>Type</source> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> - <source>Browse for database file on local computer</source> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> - <source>Generate name basing on file path</source> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> - <source>Permanent</source> + <location filename="../dialogs/dbdialog.ui" line="92"/> + <source>Generate name basing on file path</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> - <source>Test database connection</source> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> - <source>The name will be auto-generated</source> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation type="unfinished"></translation> </message> @@ -2318,123 +2344,123 @@ All objects from this group will be moved to parent group.</source> <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2788,59 +2814,59 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> @@ -3111,17 +3137,27 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation type="unfinished"></translation> </message> @@ -3131,37 +3167,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3532,7 +3568,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> @@ -3542,37 +3578,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3580,17 +3616,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation type="unfinished"></translation> </message> @@ -3900,68 +3936,68 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> @@ -4319,7 +4355,8 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation type="unfinished"></translation> </message> @@ -4810,69 +4847,69 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -4880,87 +4917,92 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -5566,41 +5608,41 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation type="unfinished"></translation> </message> @@ -5688,33 +5730,33 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm Binary files differindex bdd914e..42d19a7 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts index 480d4ad..6fa9ba0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>AboutDialog</name> <message> @@ -506,73 +506,83 @@ <translation>Nom et type</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> <translation>Type de données:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> <translation>Nom de colonne:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> <translation>Taille:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> <translation>Contraintes</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> <translation>Unique</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> <translation>Configurer</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> <translation>Clé étranère</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> <translation>Jointure</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> <translation>Non NULL</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation>Vérifiez la contition</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> <translation>Clé primaire</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> <translation>Défaut</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> <translation>Mode avancé</translation> </message> @@ -1823,88 +1833,128 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>Base de donnée</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation>Pilote de base de données</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation type="unfinished">Options</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> + <translation type="unfinished"></translation> + </message> + <message> <source>Name</source> - <translation>Nom</translation> + <translation type="vanished">Nom</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> <source>Type</source> - <translation>Type</translation> + <translation type="vanished">Type</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> <source>Browse for database file on local computer</source> - <translation>Navigation de la base de données en local</translation> + <translation type="obsolete">Navigation de la base de données en local</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> <translation>Fichier</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="92"/> <source>Generate name basing on file path</source> <translation>Génération du nom basé sur le chemin du fichier</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> <source>Permanent</source> - <translation>Permanent</translation> + <translation type="vanished">Permanent</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation><p>Autorisez-ceci si vous voulez que la base de données soit stockée dans le fichier de configuration et restauré chaque fois SQLiteStudio est lancé.</p></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> <source>Test database connection</source> - <translation>Test de connexion</translation> + <translation type="vanished">Test de connexion</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation>Navigateur</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> + <translation type="unfinished"></translation> + </message> + <message> <source>The name will be auto-generated</source> - <translation>Le non sera généré automatiquement</translation> + <translation type="vanished">Le non sera généré automatiquement</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation>Saississez le nom</translation> </message> @@ -2321,125 +2371,125 @@ Tous les objets de ce groupe seront déplacés dans le groupe parent.</translati <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> <translation>Base de données: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> <translation>Version:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation>Taille fichier:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation>Codage:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation>Détails erreur:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation>Table: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation>Colonnes:(%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation>Index (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation>Déclencheurs (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> <translation>Copier</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation>Déplcer</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation>Données incluses</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation>Index inclus</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation>Déclencheurs inclus</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> <translation>Abandonner</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation>Tables référencées</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Vous voulez inclure des tables référencées suivantes aussi : %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation>Conflit de nom</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>L'objet suivant existe déjà dans la base de données cible. Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interrompre l'opération :</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation>Conversion des déclarations SQL </translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>L'erreur suivante est survenue en convertissant des déclarations de SQL de la version cible SQLite :</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Voulez-vous ignorer ces erreurs et procéder?</translation> </message> @@ -2795,59 +2845,59 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <translation>annuler</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> <translation>Sélecctionnez la base de données à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> <translation>Sélectionnez la table à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation>Saississez une requête valide à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation>Sélectionnez au moins un objet à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation>Vous devez fournir le nom d'un fichier à exporter.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Le chemin fourni est un répertoire existant. Vous ne pouvez pas l'écraser.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation>Le répertoire %1 n'existe pas.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Le fichier '%1' existe et sera écrasé.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> <translation>tous les fichiers(*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation>Sélectionnez un fichier à exporter</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Erreur interne pendant l'exportation. c'est un bug. SVP veuillez le reporter.</translation> </message> @@ -3118,17 +3168,27 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <translation>Options</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation>Fichier:</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation>Texte codé:</translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation>Optrions de source de données </translation> </message> @@ -3138,37 +3198,37 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <translation>Annuler</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Si vous saississez un nom de table inexistant, celle-ci sera créée.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation>Saississez un nom de table</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation>Sélectionnez un plugin d'importation.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation>Vous devez fournir un fichier à importer.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation>Le fichier '%1' n'existe pas.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Le chemin indiqué est un répertoire. Un fichier est requis.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation>Sélectionnez le fichier d'importation</translation> </message> @@ -3540,7 +3600,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <translation>Impossible de positionner le style: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Exportation impossible, aucun plugin d'exportation n'est chargé.</translation> </message> @@ -3550,37 +3610,37 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <translation>Importation impossible, aucun plugin d'importation n'est chargé.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> <translation>Renommer la fenêtre</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> <translation>Saississez un nouveau nom de fenêtre:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Une nouvelle mise à jour est disponible. <a href="%1"> cliquez ici pour détails</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> <translation>Vous utilisez la dernière version. Aucune mise à jour de disponible.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>La base de données passée en paramètre dans la ligne de commande (%1)a été temporaire ajoutée à la liste sous le nom: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation>Impossible d'ajouter la base de données %1 à la liste.</translation> </message> @@ -3588,17 +3648,17 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> <translation>Modification non enregistrées</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation>Fermer</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation>Ne pas fermer</translation> </message> @@ -3908,68 +3968,68 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation>impossible d'éditer les colonnes qui ont le résultat composé des déclarations %1 (inclus %2, %3 ou %4 mots-clés).</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation>Le mécanisme d'exécution de la requête a eu des problèmes avec l'extraction du ROWID'S. Ceci pourrait être un bogue de l'application. Vous pouvez le rapporter.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation>La colonne demandée est un résultat d'expression de SQL, au lieu d'une sélection de colonne simple. De telles colonnes ne peuvent pas être éditées.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation>La colonne demandée appartient à une table limitée SQLite. Ces tables ne peuvent pas être éditées directement.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation>Impossible d'éditer les résultats de la requëte autrement que %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation>Impossible d'éditer les colonnes qui sont le résultat de déclarations agrégées %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation>Impossible d'éditer les colonnesqui sont le résultat de déclaration %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation>Impossible d'éditer les colonnes qui sont le résultat de table commune de déclaration (%1).</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation>Sur conflit %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation>Références table %1, colonne %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation>Condition: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation>Nom de collation: %1</translation> @@ -4327,7 +4387,8 @@ Entrez SVP un nouveau nom, unique, ou cliquez '%1' pour d'interro <translation>Tous les fichiers</translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation>Fichier base de données</translation> </message> @@ -4819,69 +4880,69 @@ recherche suivant</translation> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation>Uniquement une seule requête peut être exécutée à la fois.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation>Données non enregistrées</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Impossible d'enregistrer les données pour la cell qui référe à une base de données déjà fermée.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Impossible de lancer la transaction sur la base de données. Détails: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation>Une erreur est survenuelors de l'enregistrement de la transaction: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>Une erreur est survenuelors de l'annulation de la transaction: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Tentative d'enregistrement d'une une cellule qui n'est pas modifiable! Ceci est un bogue. Rapportez-le SVP.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation>Une erreur est survenuelors de l'enregistrement des données: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Erreur pendant l'exécution de la requête sur la base de données %1: %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation>Erreur lors du chargement des résultats de la requête: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation>Insérer plusieurs lignes</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation>Nombre de lignes à inserrer:</translation> </message> @@ -4889,87 +4950,92 @@ recherche suivant</translation> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> <translation>Copier</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation>Copier comme ...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> <translation>Coller</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation>Coller comme ...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation>Valeurs NULL positionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation>valeurs écrasées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation>Valeur modifiée par l'éditeur</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation>Enregistrer</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation>Annuler</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation>Enregistrer les cellules sélectionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation>Annuler les modifications des cellules sélectionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation>Définit les colonnes triées par</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation>Enléve le tri personnalisé</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation>Insérer une ligne</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation>Insérer plusieurs lignes</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation>Supprimer les lignes sélectionnées</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation>Modifier la valeur</translation> </message> @@ -5578,41 +5644,41 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l'onglet <translation>Condition partielle d'index</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> <translation>Nom</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation>Événement</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation>Condition</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> <translation>Details</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation>La fenêtre de table "%1" n'a pas enregistré les modifications de structure et de données.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation>La fenêtre de table "%1" n'a pas enregistrer les données.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation>La fenêtre de table "%1" n'a pas enregistré les modifications de structure.</translation> </message> @@ -5700,33 +5766,33 @@ Voulez-vous enregistrer la structure, ou voulez-vous retourner à l'onglet <translation>DDL</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation>Sur vue:</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation>Impossible d'exécuter correctement le déclencheur %1. Ouverture invalide du dialogue de déclencheur.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation>Saisissez une condition valide.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation>Saisissez un code de déclencheur valide.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation>Erreur</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation>Une erreur survenue lors de l'exécution de l'intruction SQL: %1</translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm Binary files differindex c8c85a8..f927e35 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts index 48ff371..dcd9b50 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>AboutDialog</name> <message> @@ -507,75 +507,85 @@ <translation>Nazwa i typ</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation>Skala</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation>Precyzja</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> <translation>Typ danych:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> <translation>Nazwa kolumny:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> <translation>Rozmiar:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> <translation>Ograniczenia</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> <translation>Wartości unikalne</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> <translation>Konfiguruj</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> <translation>Klucz obcy</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> <translation>Zestawienie</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> <translation>Niepuste</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation>Sprawdzaj warunek</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> <translation>Klucz główny</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> <translation>Wartość domyślna</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> - <translation>Tryb zaawandowany</translation> + <translation>Tryb zaawansowany</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="83"/> @@ -1829,88 +1839,128 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani <translation>Baza danych</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation>Typ bazy danych</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation>Sterownik bazy danych</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> + <translation>Generuj automatycznie</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation>Opcje</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> + <translation>Trwała (trzymaj w konfiguracji)</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> + <translation>Testuj połączenie</translation> + </message> + <message> <source>Name</source> - <translation>Nazwa</translation> + <translation type="vanished">Nazwa</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> <source>Type</source> - <translation>Typ</translation> + <translation type="vanished">Typ</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> <source>Browse for database file on local computer</source> - <translation>Przeglądaj w poszukiwaniu pliku bazy danych na lokalnym komputerze</translation> + <translation type="obsolete">Przeglądaj w poszukiwaniu pliku bazy danych na lokalnym komputerze</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation>Utwórz nową bazę</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> <translation>Plik</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> + <translation>Nazwa (na liście)</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="92"/> <source>Generate name basing on file path</source> <translation>Generuj nazwę bazując na ścieżce do pliku</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> <source>Permanent</source> - <translation>Trwała</translation> + <translation type="vanished">Trwała</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation><p>Włącz to, jeśli chcesz aby baza danych była przechowywana w pliku konfiguracji i przywracana za każdym razem, gdy startuje SQLiteStudio.</p></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> <source>Test database connection</source> - <translation>Testuj połączenie z bazą</translation> + <translation type="vanished">Testuj połączenie z bazą</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> + <translation>Przeglądaj lokalny komputer w poszukiwaniu istniejącej bazy</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation>Przeglądaj</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> <translation>Wprowadź unikalną nazwę bazy danych.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> <translation>Ta nazwa jest już w użyciu. Proszę wprowadzić unikalną nazwę.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> <translation>Wprowadź ścieżkę do pliku bazy danych.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> <translation>Ta baza jest już na liście pod nazwą: %1</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> <translation>Wybierz typ bazy danych.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> + <translation>Auto-generowana</translation> + </message> + <message> <source>The name will be auto-generated</source> - <translation>Nazwa będzie generowana automatycznie</translation> + <translation type="vanished">Nazwa będzie generowana automatycznie</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation>Wprowadź nazwę</translation> </message> @@ -2343,125 +2393,125 @@ Wszystkie obiekty z tej grupy zostaną przeniesione do nadrzędnej grupy.</trans <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> <translation>Baza danych: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> <translation>Wersja:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation>Rozmiar pliku:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation>Kodowanie:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation>Szczegóły błędu:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation>Tablela: : %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation>Kolumny (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation>Indeksy (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation>Wyzwalacze (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> <translation>Kopiuj</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation>Przenieś</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation>Również dane</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation>Również indeksy</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation>Również wyzwalacze</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> <translation>Przerwij</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation>Tabele powiązane</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Czy chcesz zawrzeć również powiązane tabele: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation>Konflikt nazwy</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>Następująy obiekt istnieje już w docelowej bazie danych. Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przerwać operację.</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation>Konwersja zapytań SQL</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>Następujące błędy wystąpiły podczas konwersji zapytań SQL do docelowej wersji SQLite:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Czy chcesz zignorować te błędy i kontynuować?</translation> </message> @@ -2821,59 +2871,59 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Anuluj</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> <translation>Wybierz bazę do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> <translation>Wybierz tabelę do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation>Wprowadź poprawne zapytanie do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation>Wybierz przynajmniej jeden obiekt do eksportu.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation>Musisz podać nazwę pliku do którego należy wyeksportować.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Ścieżka którą podałeś jest istniejącym katalogiem. Nie można go nadpisać.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation>Katalog '%1' nie istnieje.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Plik '%1' istnieje i zostanie nadpisany.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> <translation>Wszystkie pliki (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation>Wybierz plik do eksportu</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Wystąpił wewnętrzny błąd podczas eksportu. To jest błąd programu. Proszę to zgłosić.</translation> </message> @@ -3144,17 +3194,27 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>OOpcje</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation>Plik wejściowy:</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation>Kodowanie tekstu:</translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation><p>Jeśli włączone, to jakiekolwiek naruszenia ograniczeń, lub niepoprawny format danych (niepoprawna liczba kolumn), lub jakikolwiek inny problem, który wystąpi podczas importu zostanie zignorowany i importowanie będzie kontynuowane.</p></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation>Ignoruj błędy</translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation>Opcje źródła danych</translation> </message> @@ -3164,37 +3224,37 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Anuluj</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Jeśli wpiszesz nazwę tabeli, która nie istnieje, to zostanie ona stworzona.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation>Wprowadź nazwę tabeli</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation>Wybierz wtyczkę importu</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation>Musisz podać plik z którego należy zaimportować.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation>Plik '%1' nie istnieje.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Ścieżka którą podałeś jest katalogiem. Wymagany jest zwykły plik.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation>Wybierz plik do importu</translation> </message> @@ -3566,7 +3626,7 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Nie udało się ustawić stylu: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Nie można wyeksportować, ponieważ żadna wtyczka eksportu nie została załadowana.</translation> </message> @@ -3576,37 +3636,37 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Nie można zaimportować, ponieważ żadna wtyczka importu nie została załadowana.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> <translation>Zmień nazwę okna</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> <translation>Wprowadź nową nazwę dla okna:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Nowe aktualizacje są dostępne: <a href="%1">Kliknij aby poznać szczegóły</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> <translation>Uruchomiona jest najnowsza wersja. Nie ma dostępnych aktualizacji.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation>Baza danych podana w parametrach linii poleceń (%1) była już na liście pod nazwą: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation>Baza danych podana w linii poleceń (%1) jest tymczasowo dodana do listy pod nazwą: %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation>Nie udało się dodać bazy danych %1 do listy.</translation> </message> @@ -3614,17 +3674,17 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> <translation>Niezatwierdzone dane</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation>Zamknij mimo to</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation>Nie zamykaj</translation> </message> @@ -3938,68 +3998,68 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation>Mechanizm wykonywania zapytań miał problemy z wyciągnięciem własności ROWID. To może być błąd aplikacji. Możesz to zgłosić.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation>Ta kolumna jest wynikiem wyrażenia SQL, a nie zwykłej selekcji kolumny. Takie kolumny nie mogą być edytowane.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation>Ta kolumna należy do systemowej tabeli SQLite. Te tabele nie mogą być edytowane bezpośrednio.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation>Nie można edytować kolumn, które są wynikiem złożonego zapytania %1 (tego, które zawiera słowo kluczowe %2, %3, lub %4).</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation>Nie można edytować wyników zapytania innego niż %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation>Nie można edytować kolumn, które są wynikiem zapytania agregacyjnego %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation>Nie można edytować kolumn, które są wynikiem zapytania %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation>Nie można edytować kolumn, które są wynikiem zapytania ze wspólnym wyrażeniem tabeli (%1).</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation>w razie konfliktu: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation>odwołuje się do tabeli %1, kolumny %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation>warunek: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation>nazwa zestawienia: %1</translation> @@ -4357,7 +4417,8 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć '%1', aby przer <translation>Wszystkie pliki</translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation>Plik bazy danych</translation> </message> @@ -4851,54 +4912,54 @@ znajdź następny</translation> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation>Tylko jedno zapytanie może być wykonywane w danym momencie.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation>Niezatwierdzone dane</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation>Niektóre zmiany w danych nie zostały zatwierdzone. Czy na pewno chcesz kontynuować? Wszystkie niezatwierdzone zmiany zostaną utracone.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Nie można zatwierdzić danych dla komórki, która odnosi się do zamkniętej już bazy danych.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Nie udało się rozpocząć transakcji na bazie danych. Szczegóły: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation>Wystąpił błąd podczas zatwierdzania transakcji: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>Wystąpił błąd podczas wycofywania transakcji: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Próbowano zatwierdzić komórkę, której nie można edytować (a mimo to została zmodyfikowana i czeka na zatwierdzenie)! To jest błąd. Proszę to zgłosić.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation>Wystąpił błąd podczas zatwierdzania danych: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Błąd podczas wykonywania zapytania SQL na bazie '%1': %2</translation> </message> @@ -4907,17 +4968,17 @@ znajdź następny</translation> <translation type="obsolete">Błąd podczas wykonywania zapytania SQL: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation>Błąd podczas wczytywania wyników zapytania: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation>Wstaw wiele wierszy</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation>Liczba wierszy do wstawienia:</translation> </message> @@ -4925,87 +4986,92 @@ znajdź następny</translation> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> <translation>Kopiuj</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation>Kopiuj jako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> <translation>Wklej</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation>Wklej jako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation>Ustaw wartości NULL</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation>Wymaż wartości</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation>Edytuj wartość w edytorze</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation>Zatwierdź</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation>Wycofaj</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation>Zatwierdź zaznaczone komórki</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation>Wycofaj zaznaczone komórki</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation>Zdefiniuj kolumny po których sortować</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation>Wycofaj własne sortowanie</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation>Wstaw wiersz</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation>Wstaw wiele wierszy</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation>Usuń zaznaczony wiersz</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation>Nie wybrano elementów do których należy wkleić zawartość schowka.</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation>Edytuj wartość</translation> </message> @@ -5615,41 +5681,41 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation>Warunek indeksu częściowego:</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> <translation>Nazwa</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation>Zdarzenie</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation>Warunek</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> <translation>Szczegóły</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation>Okno tabeli "%1" ma niezatwierdzone modyfikacje struktury i danych.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation>Okno tabeli "%1" ma niezatwierdzone dane.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation>Okno tabeli "%1" ma niezatwierdzone modyfikacje struktury.</translation> </message> @@ -5737,33 +5803,33 @@ Czy chcesz zatwierdzić strukturę, czy jednak chcesz wrócić do karty struktur <translation>DDL</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation>Na widoku:</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation>Nie udało się przetworzyć poprawnie wyzwalacza %1. Nie można otworzyć okna wyzwalacza.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation>Wprowadź poprawny warunek.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation>Wprowadź poprawny kod wyzwalacza.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation>Błąd</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation>Wystąpił błąd podczas wykonywania zapytań SQL: diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts index b83a8f3..450cfbf 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>AboutDialog</name> <message> @@ -505,73 +505,83 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> <translation type="unfinished"></translation> </message> @@ -1821,88 +1831,104 @@ Browsing other pages will be possible after the row counting is done.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> - <source>Name</source> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> - <source>Type</source> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> - <source>Browse for database file on local computer</source> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> - <source>Generate name basing on file path</source> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> - <source>Permanent</source> + <location filename="../dialogs/dbdialog.ui" line="92"/> + <source>Generate name basing on file path</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> - <source>Test database connection</source> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> - <source>The name will be auto-generated</source> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation type="unfinished"></translation> </message> @@ -2318,123 +2344,123 @@ All objects from this group will be moved to parent group.</source> <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2788,59 +2814,59 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> @@ -3111,17 +3137,27 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation type="unfinished"></translation> </message> @@ -3131,37 +3167,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3532,7 +3568,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> @@ -3542,37 +3578,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3580,17 +3616,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation type="unfinished"></translation> </message> @@ -3900,68 +3936,68 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> @@ -4319,7 +4355,8 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation type="unfinished"></translation> </message> @@ -4810,69 +4847,69 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -4880,87 +4917,92 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -5566,41 +5608,41 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation type="unfinished"></translation> </message> @@ -5688,33 +5730,33 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation type="unfinished"></translation> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm Binary files differindex d3a90ca..3e51d97 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts index a3d8093..467ca92 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts @@ -51,7 +51,7 @@ <message> <location filename="../dialogs/aboutdialog.ui" line="172"/> <source>SQLite 3 version:</source> - <translation type="unfinished"></translation> + <translation>Версия SQLite 3:</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="111"/> @@ -507,73 +507,83 @@ <translation>Имя и тип</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation>Размер</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation>Точность</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> <translation>Тип данных:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> <translation>Имя столбца:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> <translation>Размер:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> <translation>Ограничения</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> <translation>Уникальность</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> <translation>Настроить</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> <translation>Внешний ключ</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> <translation>Сравнение</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> <translation>Не NULL</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation>Проверка условия</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> <translation>Первичный ключ</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> <translation></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> <translation>Расширенный режим</translation> </message> @@ -1824,88 +1834,128 @@ Browsing other pages will be possible after the row counting is done.</source> <translation>База данных</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> + <translation>Тип базы данных</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation>Драйвер базы данных</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> + <translation>Сгенерировать автоматически</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation>Опции</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> + <translation>Постоянная (сохранить базу в конфигурационном файле)</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> + <translation>Тест соединения</translation> + </message> + <message> <source>Name</source> <translation>Имя</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> <source>Type</source> <translation>Тип</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> <source>Browse for database file on local computer</source> - <translation>Указать файл базы данных на локальном компьютере</translation> + <translation type="obsolete">Указать файл базы данных на локальном компьютере</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> + <translation>Создать новый файл базы данных</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> <translation>Файл</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> + <translation>Имя (в списке)</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="92"/> <source>Generate name basing on file path</source> <translation>Генерировать имя на основе пути к файлу</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> <source>Permanent</source> <translation>Запомнить</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation><p>Активируйте эту опцию для сохранения базы данных в конфигурационном файле и добавления её в список при каждом запуске SQLiteStudio.</p></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> <source>Test database connection</source> <translation>Тест соединения с базой данных</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> + <translation>Указать существующий файл базы данных на локальном компьютере</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation>Обзор</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> - <translation type="unfinished"></translation> + <translation>Введите уникальное имя базы данных.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> - <translation type="unfinished"></translation> + <translation>Данное имя уже используется. Пожалуйста, укажите уникальное имя.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> - <translation type="unfinished"></translation> + <translation>Введите путь к базе данных.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> - <translation type="unfinished"></translation> + <translation>Указанная база данных уже находится в списке под именем %1</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> - <translation type="unfinished"></translation> + <translation>Выберите тип базы данных.</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> + <translation>Автоматически сгенерировано</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> <source>The name will be auto-generated</source> <translation>Имя будет сгенерировано автоматически</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation>Введите имя</translation> </message> @@ -2321,125 +2371,125 @@ All objects from this group will be moved to parent group.</source> <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> <translation>База данных: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> <translation>Версия:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation>Размер файла:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation>Кодировка:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation>Подробности ошибки:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation>Таблица: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation>Столбцы (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation>Индексы (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation>Триггеры (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation>Переместить</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation>Включая данные</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation>Включая индексы</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation>Включая триггеры</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> <translation>Прервать</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation>Связанные таблицы</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation>Вы хотите также включить следующие связанные таблицы: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation>Конфликт имён</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation>Данный объект уже существует в целевой базе данных. Пожалуйста введите новое уникальное имя или нажмите %1 для прерывания операции:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation>Конвертация конструкций SQL</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation>При конвертации конструкций SQL в новую версию SQLite произошла ошибка:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation>Вы хотите проигнорировать эти ошибки и продолжить?</translation> </message> @@ -2795,59 +2845,59 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Отмена</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> <translation>Выберите базу данных для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> <translation>Выберите таблицу для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation>Введи корректный запрос для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation>Выберите хотя бы один объект для экспорта.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation>Необходимо указать имя файла, в который будет произведён экспорт.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation>Указанный путь является существующим каталогом. Его невозможно перезаписать.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation>Каталог '%1' не существует.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation>Файл '%1' существует и будет перезаписан.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> <translation>Все файлы (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation>Выберите файл для экспорта</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation>Внутренняя ошибка во время экспорта. Пожалуйста, вышлите отчёт об этой ошибке.</translation> </message> @@ -3118,17 +3168,27 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Опции</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation>Файл-источник:</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation>Кодировка текста:</translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation><p>Если опция активирована, все нарушения ограничений, неправильный формат данных (неверное количество столбцов) и любые другие проблемы, возникшие при осуществлении импорта, будут проигнорированы и импорт будет продолжен.</p></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation>Игнорировать ошибки</translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation>Опции источника данных</translation> </message> @@ -3138,37 +3198,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Отмена</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation>Если вы введёте несуществующее имя таблицы, она будет создана.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation>Введите имя таблицы</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation>Выберите модуль импорта.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation>Необходимо указать файл, из которого осуществляется импорт.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation>Файл '%1' не существует.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation>Указанный путь является каталогом. Необходимо указать файл.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation>Выберите файл для импорта</translation> </message> @@ -3540,7 +3600,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Невозможно применить стиль: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation> </message> @@ -3550,37 +3610,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> <translation>Переименовать окно</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> <translation>Введите новое имя для окна:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> <translation>Доступны обновления. <a href="%1">Нажмите здесь для подробностей</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> <translation>Установлена последняя версия. Обновлений нет.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> - <translation type="unfinished"></translation> + <translation>База данных, переданная через аргументы командной строки (%1), уже находится в списке под именем %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> - <translation>База данных, переданная через аргумент командной строки (%1), была временно добавлена в список под именем %2</translation> + <translation>База данных, переданная через аргументы командной строки (%1), была временно добавлена в список под именем %2</translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation>Невозможно добавить базу данных %1 в список.</translation> </message> @@ -3588,17 +3648,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> <translation>Неподтверждённые изменения</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation>Всё равно закрыть</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation>Не закрывать</translation> </message> @@ -3908,68 +3968,68 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation>Невозможно редактировать столцбы, являющиеся результатом составных конструкций %1 (те, которые включают ключевые слова %2, %3 и %4).</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation>В механизме выполнения запросов возникли проблемы при корректном извлечении значений ROWID. Предположительно это ошибка в приложении. Возможно стоит отправить отчёт об ошибке.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation>Запрошенный столбец является результатом SQL выражения, а не просто выбором столбца. Такие столбцы не могут быть отредактированы.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation>Запрошенный столбец принадлежит служебной таблице SQLite. Эти таблицы нельзя редактировать напрямую.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation>Невозможно редактировать результаты запросов, отличных от %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation>Невозможно редактировать столцбы, являющиеся результатом агрегирующих конструкций %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation>Невозможно редактировать столцбы, являющиеся результатом конструкции %1.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation>Невозможно редактировать столцбы, являющиеся результатом обобщённого табличного выражения (%1).</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation>при конфликте: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation>ссылается на таблицу %1, столбец %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation>условие: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation>имя сравнения: %1</translation> @@ -4327,7 +4387,8 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation>Все файлы</translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation>Файл баз данных</translation> </message> @@ -4820,69 +4881,69 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation>Одновременно может быть выполнен только один запрос.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation>Неподтверждённые данные</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation>Имеются неподтверждённые изменения данных. Вы действительно хотите продолжить? Все неподтверждённые изменения будут утеряны.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation>Невозможно подтвердить данные для ячейки, которая ссылается на уже закрытую базу данных.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation>Невозможно начать транзакцию в базе данных. Подробности: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation>При завершении транзакции возникла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation>При отмене транзакции возникла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation>Попытка подтверждения данных для нередактируемой ячейки (которая тем не менее была изменена и ожидает подтверждения). Это программная ошибка. Пожалуйста, отправьте о ней отчёт.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation>При подтверждении данных произошла ошибка: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation>Ошибка при выполнении SQL запроса к базе данных '%1': %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation>Ошибка при загрузке результатов запроса: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation>Вставить несколько строк</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation>Количество вставляемых строк:</translation> </message> @@ -4890,87 +4951,92 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> <translation>Копировать</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation>Копировать как...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> <translation>Вставить</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation>Вставить как...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation>Установить значения на NULL</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation>Стереть содержимое</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation>Править содержимое в редакторе</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation>Подтвердить</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation>Откатить</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation>Подтвердить выбранные ячейки</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation>Откатить выбранные ячейки</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation>Определить столбцы для сортировки</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation>Сбросить указанную сортировку</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation>Вставить строку</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation>Вставить несколько строк</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation>Удалить выбранную строку</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation>Не выбраны элементы для вставки в них содержимого буфера обмена.</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation>Править содержимое</translation> </message> @@ -5580,41 +5646,41 @@ Do you want to commit the structure, or do you want to go back to the structure <translation>Условие для частичного индекса</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> <translation>Имя</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation>Событие</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation>Условие</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> <translation>Подробности</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation>В окне таблицы "%1" имеются неподтверждённые изменения структуры и данных.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation>В окне таблицы "%1" имеются неподтверждённые изменения данных.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation>В окне таблицы "%1" имеются неподтверждённые изменения структуры.</translation> </message> @@ -5702,33 +5768,33 @@ Do you want to commit the structure, or do you want to go back to the structure <translation>DDL</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation>Для представления:</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation>Не удалось корректно обработать триггер %1. Невозможно открыть окно триггера.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation>Введите корректное условие.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation>Введите корректный код триггера.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation>Ошибка</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation>При выполнении конструкций SQL произошла ошибка: diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm Binary files differindex 1776294..a2ccadd 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts index c71f491..26e0fb1 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts @@ -6,87 +6,87 @@ <message> <location filename="../dialogs/aboutdialog.ui" line="14"/> <source>About SQLiteStudio and licenses</source> - <translation type="unfinished"></translation> + <translation>O programe SQLiteStudio a licenciách</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="24"/> <source>About</source> - <translation type="unfinished"></translation> + <translation>O programe</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Slobodný, open-source, multi-platformový SQLite databázový manažér.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Autor a aktívny správca:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> <source>Licenses</source> - <translation type="unfinished"></translation> + <translation>Licencie</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="55"/> <source>Environment</source> - <translation type="unfinished"></translation> + <translation>Prostredie</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="61"/> <source>Icon directories</source> - <translation type="unfinished"></translation> + <translation>Adresáre s ikonami</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="81"/> <source>Form directories</source> - <translation type="unfinished"></translation> + <translation>Adresáre so štýlmi</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="101"/> <source>Plugin directories</source> - <translation type="unfinished"></translation> + <translation>Adresáre s pluginmi</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="121"/> <source>Application directory</source> - <translation type="unfinished"></translation> + <translation>Adresár aplikácie</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="172"/> <source>SQLite 3 version:</source> - <translation type="unfinished"></translation> + <translation>Verzia SQLite3:</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="111"/> <source>Configuration directory</source> - <translation type="unfinished"></translation> + <translation>Adresár s konfiguráciou</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> - <translation type="unfinished"></translation> + <translation>Verzia Qt:</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="39"/> <source>Portable distribution.</source> - <translation type="unfinished"></translation> + <translation>Prenosná distribúcia.</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="42"/> <source>MacOS X application boundle distribution.</source> - <translation type="unfinished"></translation> + <translation>MacOS X aplikačná distribúcia.</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="45"/> <source>Operating system managed distribution.</source> - <translation type="unfinished"></translation> + <translation>Distribúcia spravovaná operačným systémom.</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="89"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopírovať</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="102"/> <source><h3>Table of contents:</h3><ol>%2</ol></source> - <translation type="unfinished"></translation> + <translation><h3>Tabuľka obsahu:</h3><ol>%2</ol></translation> </message> </context> <context> @@ -94,74 +94,75 @@ <message> <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation type="unfinished"></translation> + <translation>Chyby a nápady</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation type="unfinished"></translation> + <translation>Reportér</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation type="unfinished"></translation> + <translation>emailová adresa</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="43"/> <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation type="unfinished"></translation> + <translation>Prihlásenie</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation type="unfinished"></translation> + <translation>Krátky popis</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation type="unfinished"></translation> + <translation>Detailný popis</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation type="unfinished"></translation> + <translation>Zobraziť viacej detailov</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation type="unfinished"></translation> + <translation>Verzia SQLiteStudio</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation type="unfinished"></translation> + <translation>Operačný systém</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation type="unfinished"></translation> + <translation>Načítané pluginy</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation type="unfinished"></translation> + <translation>Odoslať</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation type="unfinished"></translation> + <translation>Všetky svoje nahlásené chyby a nápady môžte vidieť výberom '%1' a následne '%2'.</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation type="unfinished"></translation> + <translation>Správa o chybe bola úspešne odoslaná.</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation type="unfinished"></translation> + <translation>Vyskytol sa problém pri posielaní správy o chybe: %1 +%2</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="80"/> @@ -252,7 +253,7 @@ <location filename="../windows/bugreporthistorywindow.ui" line="36"/> <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation type="unfinished"></translation> + <translation>Titulok</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.ui" line="41"/> @@ -264,7 +265,7 @@ <location filename="../windows/bugreporthistorywindow.ui" line="46"/> <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation type="unfinished"></translation> + <translation>URL</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> @@ -279,7 +280,7 @@ <message> <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybranú položku</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> @@ -292,7 +293,7 @@ <message> <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation type="unfinished"></translation> + <translation>Prihlásenie</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> @@ -302,12 +303,12 @@ <message> <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation type="unfinished"></translation> + <translation>Meno:</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation type="unfinished"></translation> + <translation>Heslo:</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> @@ -327,17 +328,17 @@ <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation type="unfinished"></translation> + <translation>Zrušiť</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation type="unfinished"></translation> + <translation>meno musí mať dĺžku minimálne 2 znaky.</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation type="unfinished"></translation> + <translation>Heslo musí mať dĺžku minimálne 5 znakov.</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> @@ -350,22 +351,22 @@ <message> <location filename="../windows/collationseditor.ui" line="75"/> <source>Filter collations</source> - <translation type="unfinished"></translation> + <translation>Filtrovať porovnávania</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="110"/> <source>Collation name:</source> - <translation type="unfinished"></translation> + <translation>Názov porovnánavania:</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="120"/> <source>Implementation language:</source> - <translation type="unfinished"></translation> + <translation>Implementačný jazyk:</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="152"/> <source>Databases</source> - <translation type="unfinished"></translation> + <translation>Databázy</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="158"/> @@ -385,27 +386,27 @@ <message> <location filename="../windows/collationseditor.cpp" line="52"/> <source>Collations editor</source> - <translation type="unfinished"></translation> + <translation>Editor porovnávaní</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="57"/> <source>Commit all collation changes</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť všetky zmeny v porovnávaní</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="58"/> <source>Rollback all collation changes</source> - <translation type="unfinished"></translation> + <translation>Vrátiť späť všetky zmeny v porovnávaní</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="60"/> <source>Create new collation</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť nové porovnávanie</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="61"/> <source>Delete selected collation</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybrané porovnávanie</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="63"/> @@ -430,7 +431,7 @@ <message> <location filename="../windows/collationseditor.cpp" line="388"/> <source>Collations editor window has uncommited modifications.</source> - <translation type="unfinished"></translation> + <translation>Okno editora porovnávaní obsahuje nepotvrdené zmeny.</translation> </message> </context> <context> @@ -438,7 +439,7 @@ <message> <location filename="../common/colorbutton.cpp" line="29"/> <source>Pick a color</source> - <translation type="unfinished"></translation> + <translation>Vyberte farbu</translation> </message> </context> <context> @@ -446,22 +447,22 @@ <message> <location filename="../constraints/columncollatepanel.ui" line="41"/> <source>Collation name:</source> - <translation type="unfinished"></translation> + <translation>Názov porovnánavania:</translation> </message> <message> <location filename="../constraints/columncollatepanel.ui" line="73"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia:</translation> </message> <message> <location filename="../constraints/columncollatepanel.cpp" line="80"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> <message> <location filename="../constraints/columncollatepanel.cpp" line="81"/> <source>Enter a collation name.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov porovnávania.</translation> </message> </context> <context> @@ -469,12 +470,12 @@ <message> <location filename="../constraints/columndefaultpanel.ui" line="20"/> <source>Default value:</source> - <translation type="unfinished"></translation> + <translation>Prednastavená hodnota:</translation> </message> <message> <location filename="../constraints/columndefaultpanel.ui" line="35"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia:</translation> </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="39"/> @@ -489,7 +490,7 @@ <message> <location filename="../constraints/columndefaultpanel.cpp" line="90"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> </context> <context> @@ -497,132 +498,142 @@ <message> <location filename="../dialogs/columndialog.ui" line="14"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation>Stĺpec</translation> </message> <message> <location filename="../dialogs/columndialog.ui" line="23"/> <source>Name and type</source> + <translation>Názov a typ</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> - <source>Data type:</source> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="62"/> + <source>Data type:</source> + <translation>Datový typ:</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> - <translation type="unfinished"></translation> + <translation>Názov stĺpca:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> - <translation type="unfinished"></translation> + <translation>Veľkosť:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> - <translation type="unfinished"></translation> + <translation>Obmedzenia</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> - <translation type="unfinished"></translation> + <translation>Jedinečný</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> - <translation type="unfinished"></translation> + <translation>Konfigurovať</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> - <translation type="unfinished"></translation> + <translation>Cudzí klúč</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> - <translation type="unfinished"></translation> + <translation>Porovnanie</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> - <translation type="unfinished"></translation> + <translation>Nie NULL</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> - <translation type="unfinished"></translation> + <translation>Primárny klúč</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> - <translation type="unfinished"></translation> + <translation>Prednastavená hodnota</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> - <translation type="unfinished"></translation> + <translation>Rozšírený mód</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="83"/> <source>Add constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Pridať obmedzenie</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="84"/> <source>Edit constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Upraviť obmedzenie</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="85"/> <location filename="../dialogs/columndialog.cpp" line="229"/> <source>Delete constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Vymazať obmedzenie</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="86"/> <source>Move constraint up</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Posunúť obmedzenie hore</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="87"/> <source>Move constraint down</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Posunúť obmedzenie dole</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="89"/> <source>Add a primary key</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Pridať primárny kľúč</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="90"/> <source>Add a foreign key</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Pridať cudzí kľúč</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="91"/> <source>Add an unique constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>Pridať jedinečné obmedzenie</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="92"/> @@ -672,19 +683,19 @@ but it's okay to use it.</source> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="328"/> <source>Type</source> <comment>column dialog constraints</comment> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="330"/> <source>Name</source> <comment>column dialog constraints</comment> - <translation type="unfinished"></translation> + <translation>Názov</translation> </message> <message> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="332"/> <source>Details</source> <comment>column dialog constraints</comment> - <translation type="unfinished"></translation> + <translation>Detaily</translation> </message> </context> <context> @@ -692,17 +703,17 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="29"/> <source>Foreign table:</source> - <translation type="unfinished"></translation> + <translation>Cudzia tabuľka:</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="45"/> <source>Foreign column:</source> - <translation type="unfinished"></translation> + <translation>Cudzí stĺpec:</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="58"/> <source>Reactions</source> - <translation type="unfinished"></translation> + <translation>Reakcie</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="97"/> @@ -712,27 +723,27 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="115"/> <source>Named constraint</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="122"/> <source>Constraint name</source> - <translation type="unfinished"></translation> + <translation>Názov obmedzenia</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="40"/> <source>Pick the foreign table.</source> - <translation type="unfinished"></translation> + <translation>Vyberte cudziu tabuľku.</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="41"/> <source>Pick the foreign column.</source> - <translation type="unfinished"></translation> + <translation>Vyberte cudzí stĺpec.</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="42"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> </context> <context> @@ -740,33 +751,33 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="26"/> <source>Autoincrement</source> - <translation type="unfinished"></translation> + <translation>Autoikrement</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="48"/> <source>Sort order:</source> - <translation type="unfinished"></translation> + <translation>Zoradiť:</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="83"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia:</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="111"/> <source>On conflict:</source> - <translation type="unfinished"></translation> + <translation>Pri konflikte:</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.cpp" line="87"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation type="unfinished"></translation> + <translation>Autoinkrement (iba pre stĺpec typu %1)</translation> </message> </context> <context> @@ -774,17 +785,17 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="41"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia:</translation> </message> <message> <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/> <source>On conflict:</source> - <translation type="unfinished"></translation> + <translation>Pri konflikte:</translation> </message> <message> <location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> </context> <context> @@ -793,85 +804,85 @@ but it's okay to use it.</source> <location filename="../completer/completerwindow.cpp" line="159"/> <source>Column: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Stĺpec: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="161"/> <source>Table: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Tabuľka: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="163"/> <source>Index: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Index: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="165"/> <source>Trigger: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Spúšťač: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="167"/> <source>View: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Pohľad: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="169"/> <source>Database: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Databáza: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="181"/> <source>Keyword: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Kľúčové slovo: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="183"/> <source>Function: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Funkcia: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="185"/> <source>Operator: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Operátor: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="187"/> <source>String</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Reťazec</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="189"/> <source>Number</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Číslo</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="191"/> <source>Binary data</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Binárne dáta</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="193"/> <source>Collation: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Porovnávanie: %1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="195"/> <source>Pragma function: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>Pragma funkcia : %1</translation> </message> </context> <context> @@ -880,72 +891,72 @@ but it's okay to use it.</source> <location filename="../dialogs/configdialog.ui" line="14"/> <location filename="../dialogs/configdialog.ui" line="1216"/> <source>Configuration</source> - <translation type="unfinished"></translation> + <translation>Konfigurácia</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="73"/> <source>Search</source> - <translation type="unfinished"></translation> + <translation>Hľadať</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="104"/> <source>General</source> - <translation type="unfinished"></translation> + <translation>Všeobecné</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="116"/> <source>Keyboard shortcuts</source> - <translation type="unfinished"></translation> + <translation>Klávesové skratky</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="128"/> <source>Look & feel</source> - <translation type="unfinished"></translation> + <translation>Vzhľad</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="139"/> <source>Style</source> - <translation type="unfinished"></translation> + <translation>Štýl</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="151"/> <source>Fonts</source> - <translation type="unfinished"></translation> + <translation>Fonty</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="163"/> <source>Colors</source> - <translation type="unfinished"></translation> + <translation>Farby</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="176"/> <source>Plugins</source> - <translation type="unfinished"></translation> + <translation>Pluginy</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="187"/> <source>Code formatters</source> - <translation type="unfinished"></translation> + <translation>Formát kódu</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="196"/> <source>Data browsing</source> - <translation type="unfinished"></translation> + <translation>Prezeranie dát</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="207"/> <source>Data editors</source> - <translation type="unfinished"></translation> + <translation>Editory dát</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="237"/> <source>Data browsing and editing</source> - <translation type="unfinished"></translation> + <translation>Prezeranie a úprava dát</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="243"/> <source>Number of data rows per page:</source> - <translation type="unfinished"></translation> + <translation>Počet data riadkov na stranu:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="269"/> @@ -961,12 +972,12 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="328"/> <source>Data types</source> - <translation type="unfinished"></translation> + <translation>Datové typy</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="366"/> <source>Available editors:</source> - <translation type="unfinished"></translation> + <translation>Dostupné editory:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="382"/> @@ -976,38 +987,38 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="418"/> <source>Schema editing</source> - <translation type="unfinished"></translation> + <translation>Úprava schémy</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="430"/> <source>Number of DDL changes kept in history.</source> - <translation type="unfinished"></translation> + <translation>Počet DDL zmien uchovávaných v histórii.</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="443"/> <source>DDL history size:</source> - <translation type="unfinished"></translation> + <translation>Veľkosť DDL histórie:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="450"/> <source>Don't show DDL preview dialog when commiting schema changes</source> - <translation type="unfinished"></translation> + <translation>Nezobrazovať náhľad DDL pri potvrdzovaní zmien v schéme</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="463"/> <source>SQL queries</source> - <translation type="unfinished"></translation> + <translation>SQL dotazy</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="475"/> <location filename="../dialogs/configdialog.ui" line="488"/> <source>Number of queries kept in the history.</source> - <translation type="unfinished"></translation> + <translation>Počet dotazov uchovávaných v histórii.</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="491"/> <source>History size:</source> - <translation type="unfinished"></translation> + <translation>Veľkosť SQL histórie:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="498"/> @@ -1022,53 +1033,53 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="514"/> <source>Updates</source> - <translation type="unfinished"></translation> + <translation>Aktualizácie</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="520"/> <source>Automatically check for updates at startup</source> - <translation type="unfinished"></translation> + <translation>Kontrolovať aktualizácie pri štarte</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="533"/> <source>Session</source> - <translation type="unfinished"></translation> + <translation>Sedenie</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="539"/> <source>Restore last session (active MDI windows) after startup</source> - <translation type="unfinished"></translation> + <translation>Obnoviť posledné sedenie (aktívne okná) pri štarte</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="581"/> <source>Filter shortcuts by name or key combination</source> - <translation type="unfinished"></translation> + <translation>Filtrovať podľa názvu alebo klávesovej skratky</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="622"/> <source>Action</source> - <translation type="unfinished"></translation> + <translation>Akcia</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="627"/> <source>Key combination</source> - <translation type="unfinished"></translation> + <translation>Klávesová skratka</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="656"/> <location filename="../dialogs/configdialog.ui" line="1206"/> <source>Language</source> - <translation type="unfinished"></translation> + <translation>Jazyk</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="662"/> <source>Changing language requires application restart to take effect.</source> - <translation type="unfinished"></translation> + <translation>Je potrebné reštartovať aplikáciu aby sa zmena jazyka prejavila.</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="679"/> <source>Database list</source> - <translation type="unfinished"></translation> + <translation>Zoznam databáz</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="685"/> @@ -1168,7 +1179,7 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="933"/> <source>Hide built-in plugins</source> - <translation type="unfinished"></translation> + <translation>Nezobrazovať interné pluginy</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="962"/> @@ -1386,7 +1397,7 @@ but it's okay to use it.</source> <location filename="../dialogs/configdialog.cpp" line="767"/> <source>Version:</source> <comment>plugin details</comment> - <translation type="unfinished"></translation> + <translation>Verzia:</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="768"/> @@ -1431,7 +1442,7 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.cpp" line="1254"/> <source>Details</source> - <translation type="unfinished"></translation> + <translation>Detaily</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1266"/> @@ -1441,17 +1452,17 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.cpp" line="1362"/> <source>Add new data type</source> - <translation type="unfinished"></translation> + <translation>Pridať nový datový typ</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1366"/> <source>Rename selected data type</source> - <translation type="unfinished"></translation> + <translation>Premenovať vybraný datový typ</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1370"/> <source>Delete selected data type</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný datový typ</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1374"/> @@ -1464,27 +1475,27 @@ but it's okay to use it.</source> <message> <location filename="../constraints/constraintcheckpanel.ui" line="20"/> <source>The condition</source> - <translation type="unfinished"></translation> + <translation>Podmienka</translation> </message> <message> <location filename="../constraints/constraintcheckpanel.ui" line="35"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia:</translation> </message> <message> <location filename="../constraints/constraintcheckpanel.ui" line="51"/> <source>On conflict</source> - <translation type="unfinished"></translation> + <translation>Pri konflikte</translation> </message> <message> <location filename="../constraints/constraintcheckpanel.cpp" line="46"/> <source>Enter a valid condition.</source> - <translation type="unfinished"></translation> + <translation>Zadajte platnú podmienku.</translation> </message> <message> <location filename="../constraints/constraintcheckpanel.cpp" line="47"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> </context> <context> @@ -1493,49 +1504,49 @@ but it's okay to use it.</source> <location filename="../dialogs/constraintdialog.cpp" line="62"/> <source>New constraint</source> <comment>constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Nové obmedzenie</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="63"/> <source>Create</source> <comment>constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Vytvoriť</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="66"/> <source>Edit constraint</source> <comment>dialog window</comment> - <translation type="unfinished"></translation> + <translation>Upraviť obmedzenie</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="67"/> <source>Apply</source> <comment>constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Aplikovať</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="170"/> <source>Primary key</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Primárny klúč</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="174"/> <source>Foreign key</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Cudzí klúč</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="178"/> <source>Unique</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Jedinečnosť</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="182"/> <source>Not NULL</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Nie NULL</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="186"/> @@ -1547,13 +1558,13 @@ but it's okay to use it.</source> <location filename="../dialogs/constraintdialog.cpp" line="190"/> <source>Collate</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Porovnanie</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="194"/> <source>Default</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Prednastavená hodnota</translation> </message> </context> <context> @@ -1562,13 +1573,13 @@ but it's okay to use it.</source> <location filename="../windows/constrainttabmodel.cpp" line="68"/> <source>Table</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Tabuľka</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="109"/> <source>Column (%1)</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Stĺpec (%1)</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="153"/> @@ -1580,19 +1591,19 @@ but it's okay to use it.</source> <location filename="../windows/constrainttabmodel.cpp" line="155"/> <source>Type</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Typ</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="157"/> <source>Details</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Detaily</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="159"/> <source>Name</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Názov</translation> </message> </context> <context> @@ -1601,118 +1612,119 @@ but it's okay to use it.</source> <location filename="../dataview.cpp" line="95"/> <source>Filter data</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Filtrovať</translation> </message> <message> <location filename="../dataview.cpp" line="104"/> <source>Grid view</source> - <translation type="unfinished"></translation> + <translation>Tabuľkové zobrazenie</translation> </message> <message> <location filename="../dataview.cpp" line="105"/> <source>Form view</source> - <translation type="unfinished"></translation> + <translation>Formulárové zobrazenie</translation> </message> <message> <location filename="../dataview.cpp" line="148"/> <source>Refresh table data</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Obnoviť dáta v tabuľke</translation> </message> <message> <location filename="../dataview.cpp" line="162"/> <source>First page</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Prvá strana</translation> </message> <message> <location filename="../dataview.cpp" line="163"/> <source>Previous page</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Predchádzajúca strana</translation> </message> <message> <location filename="../dataview.cpp" line="165"/> <source>Next page</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Nasledujúca strana</translation> </message> <message> <location filename="../dataview.cpp" line="166"/> <source>Last page</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Posledná strana</translation> </message> <message> <location filename="../dataview.cpp" line="171"/> <source>Apply filter</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Aplikovať filter</translation> </message> <message> <location filename="../dataview.cpp" line="186"/> <source>Commit changes for selected cells</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny pre vybrané bunky</translation> </message> <message> <location filename="../dataview.cpp" line="187"/> <source>Rollback changes for selected cells</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Vrátiť späť zmeny pre vybrané bunky</translation> </message> <message> <location filename="../dataview.cpp" line="188"/> <source>Show grid view of results</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Výsledky zobraziť v tabuľke</translation> </message> <message> <location filename="../dataview.cpp" line="189"/> <source>Show form view of results</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Výsledky zobraziť vo formulári</translation> </message> <message> <location filename="../dataview.cpp" line="258"/> <source>Filter by text</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Filtrovať pomocou textu</translation> </message> <message> <location filename="../dataview.cpp" line="259"/> <source>Filter by the Regular Expression</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Filtrovať pomocou regulárneho výrazu</translation> </message> <message> <location filename="../dataview.cpp" line="260"/> <source>Filter by SQL expression</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Filtrovať pomocou SQL výrazu</translation> </message> <message> <location filename="../dataview.cpp" line="291"/> <source>Tabs on top</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Záložky hore</translation> </message> <message> <location filename="../dataview.cpp" line="292"/> <source>Tabs at bottom</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Záložky dole</translation> </message> <message> <location filename="../dataview.cpp" line="510"/> <source>Total number of rows is being counted. Browsing other pages will be possible after the row counting is done.</source> - <translation type="unfinished"></translation> + <translation>Spočítava sa celkový počet riadkov. +Prezeranie ďalších strán bude možné až po dokončení spočítavania.</translation> </message> <message> <location filename="../dataview.cpp" line="521"/> <source>Row: %1</source> - <translation type="unfinished"></translation> + <translation>Riadok:%1</translation> </message> </context> <context> @@ -1720,27 +1732,27 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dialogs/dbconverterdialog.ui" line="14"/> <source>Convert database</source> - <translation type="unfinished"></translation> + <translation>Konvertovať databázu</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="20"/> <source>Source database</source> - <translation type="unfinished"></translation> + <translation>Zdrojová databáza</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="29"/> <source>Source database version:</source> - <translation type="unfinished"></translation> + <translation>Verzia zdrojovej databázy:</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="46"/> <source>Target database</source> - <translation type="unfinished"></translation> + <translation>Cieľová databáza</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="52"/> <source>Target version:</source> - <translation type="unfinished"></translation> + <translation>Cieľová databáza:</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="59"/> @@ -1750,12 +1762,12 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dialogs/dbconverterdialog.ui" line="66"/> <source>Target file:</source> - <translation type="unfinished"></translation> + <translation>Cieľový súbor:</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="73"/> <source>Name of the new database:</source> - <translation type="unfinished"></translation> + <translation>Názov novej databázy:</translation> </message> <message> <location filename="../dialogs/dbconverterdialog.ui" line="90"/> @@ -1818,93 +1830,133 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dialogs/dbdialog.ui" line="20"/> <source>Database</source> + <translation>Databáza</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> + <translation>Databázový ovládač</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> - <source>Name</source> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation type="unfinished">Voľby</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> - <source>Type</source> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> + <source>Name</source> + <translation>Názov</translation> + </message> + <message> + <source>Type</source> + <translation>Typ</translation> + </message> + <message> <source>Browse for database file on local computer</source> + <translation type="obsolete">Hľadať databázový súbor na lokálnom počítači</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> <source>File</source> + <translation>Súbor</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> + <location filename="../dialogs/dbdialog.ui" line="92"/> <source>Generate name basing on file path</source> - <translation type="unfinished"></translation> + <translation>Generovať názov na základe cesty k súboru</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> <source>Permanent</source> - <translation type="unfinished"></translation> + <translation>Uložiť natrvalo</translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> - <translation type="unfinished"></translation> + <translation><p>Databáza sa uloží do konfiguračného súboru a bude obnovená pri každom spustení SQLiteStudia.</p></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> <source>Test database connection</source> + <translation>Otestovať spojenie s databázou</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> - <translation type="unfinished"></translation> + <translation>Prehľadávať</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov databázy.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> - <translation type="unfinished"></translation> + <translation>Tento názov už existuje. Prosím zadajte iný názov.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> - <translation type="unfinished"></translation> + <translation>Zadajte cestu k databázovému súboru.</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> - <translation type="unfinished"></translation> + <translation>Táto databáza už je v zozname pod názvom: %1</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> + <translation>Vyberte typ databázy.</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> <source>The name will be auto-generated</source> - <translation type="unfinished"></translation> + <translation>Názov bude vygenerovaný automaticky</translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> - <translation type="unfinished"></translation> + <translation>Zadajte meno</translation> </message> </context> <context> @@ -1912,47 +1964,48 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dbobjectdialogs.cpp" line="174"/> <source>Delete table</source> - <translation type="unfinished"></translation> + <translation>Vymazať tabuľku</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="175"/> <source>Are you sure you want to delete table %1?</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať tabuľku %1?</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="179"/> <source>Delete index</source> - <translation type="unfinished"></translation> + <translation>Vymazať index</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="180"/> <source>Are you sure you want to delete index %1?</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať index %1?</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="184"/> <source>Delete trigger</source> - <translation type="unfinished"></translation> + <translation>Vymazať spúšťač</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="185"/> <source>Are you sure you want to delete trigger %1?</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať spúšťač %1?</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="189"/> <source>Delete view</source> - <translation type="unfinished"></translation> + <translation>Vymazať pohľad</translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="190"/> <source>Are you sure you want to delete view %1?</source> - <translation type="unfinished"></translation> + <translatorcomment>Ste si istý, že chcete vymazať pohľad %1?</translatorcomment> + <translation></translation> </message> <message> <location filename="../dbobjectdialogs.cpp" line="218"/> <source>Error while dropping %1: %2</source> - <translation type="unfinished"></translation> + <translation>Vyskystla sa chyba počas mazania %1: %2</translation> </message> </context> <context> @@ -1960,260 +2013,261 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dbtree/dbtree.ui" line="23"/> <source>Databases</source> - <translation type="unfinished"></translation> + <translation>Databázy</translation> </message> <message> <location filename="../dbtree/dbtree.ui" line="67"/> <source>Filter by name</source> - <translation type="unfinished"></translation> + <translation>Filtrovať podľa názvu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="99"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopírovať</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="100"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Vložiť</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="101"/> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Vybrať všetko</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="102"/> <source>Create a group</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť skupinu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="103"/> <source>Delete the group</source> - <translation type="unfinished"></translation> + <translation>Vymazať skupinu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="104"/> <source>Rename the group</source> - <translation type="unfinished"></translation> + <translation>Premenovať skupinu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="105"/> <source>Add a database</source> - <translation type="unfinished"></translation> + <translation>Pridať databázu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="106"/> <source>Edit the database</source> - <translation type="unfinished"></translation> + <translation>Upraviť databázu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="107"/> <source>Remove the database</source> - <translation type="unfinished"></translation> + <translation>Odstrániť databázu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="108"/> <source>Connect to the database</source> - <translation type="unfinished"></translation> + <translation>Pripojiť sa k databáze</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="109"/> <source>Disconnect from the database</source> - <translation type="unfinished"></translation> + <translation>Odpojiť sa od databázy</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation>Importovať</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="111"/> <source>Export the database</source> - <translation type="unfinished"></translation> + <translation>Exportovať databázu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="112"/> <source>Convert database type</source> - <translation type="unfinished"></translation> + <translation>Konvertovať databázu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="113"/> <source>Vacuum</source> - <translation type="unfinished"></translation> + <translation>Vacuum</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="114"/> <source>Integrity check</source> - <translation type="unfinished"></translation> + <translation>Kontrola integrity</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="115"/> <source>Create a table</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť tabuľku</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="116"/> <source>Edit the table</source> - <translation type="unfinished"></translation> + <translation>Upraviť tabuľku</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="117"/> <source>Delete the table</source> - <translation type="unfinished"></translation> + <translation>Vymazať tabuľku</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="118"/> <source>Export the table</source> - <translation type="unfinished"></translation> + <translation>Exportovať tabuľku</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="119"/> <source>Import into the table</source> - <translation type="unfinished"></translation> + <translation>Importovať do tabuľky</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="120"/> <source>Populate table</source> - <translation type="unfinished"></translation> + <translation>Naplniť tabuľku</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="121"/> <source>Create similar table</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť rovnakú tabuľku</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="122"/> <source>Reset autoincrement sequence</source> - <translation type="unfinished"></translation> + <translation>Resetovať sekvenciu autoinkrementu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="123"/> <source>Create an index</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť index</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="124"/> <source>Edit the index</source> - <translation type="unfinished"></translation> + <translation>Upraviť index</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="125"/> <source>Delete the index</source> - <translation type="unfinished"></translation> + <translation>Vymazať index</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="126"/> <source>Create a trigger</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť spúšťač</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="127"/> <source>Edit the trigger</source> - <translation type="unfinished"></translation> + <translation>Upraviť spúšťač</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="128"/> <source>Delete the trigger</source> - <translation type="unfinished"></translation> + <translation>Vymazať spúšťač</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="129"/> <source>Create a view</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť pohľad</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="130"/> <source>Edit the view</source> - <translation type="unfinished"></translation> + <translation>Upraviť pohľad</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="131"/> <source>Delete the view</source> - <translation type="unfinished"></translation> + <translation>Vymazať pohľad</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="132"/> <source>Add a column</source> - <translation type="unfinished"></translation> + <translation>Pridať stĺpec</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="133"/> <source>Edit the column</source> - <translation type="unfinished"></translation> + <translation>Upraviť stĺpec</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="134"/> <source>Delete the column</source> - <translation type="unfinished"></translation> + <translation>Vymazať stĺpec</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="135"/> <source>Delete selected items</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybrané položky</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="136"/> <source>Clear filter</source> - <translation type="unfinished"></translation> + <translation>Zrušiť filter</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="137"/> <source>Refresh all database schemas</source> - <translation type="unfinished"></translation> + <translation>Obnoviť všetky databázové schémy</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="138"/> <source>Refresh selected database schema</source> - <translation type="unfinished"></translation> + <translation>Obnoviť vybranú databázovú schému</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="308"/> <location filename="../dbtree/dbtree.cpp" line="313"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation>Databáza</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="323"/> <source>Grouping</source> - <translation type="unfinished"></translation> + <translation>Zoskupovanie</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="932"/> <location filename="../dbtree/dbtree.cpp" line="935"/> <source>Create group</source> - <translation type="unfinished"></translation> + <translation>Vytvoriť skupinu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="932"/> <source>Group name</source> - <translation type="unfinished"></translation> + <translation>Názov skupiny</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="935"/> <source>Entry with name %1 already exists in group %2.</source> - <translation type="unfinished"></translation> + <translation>Položka s názvom %1 už existuje v skupine %2.</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="953"/> <source>Delete group</source> - <translation type="unfinished"></translation> + <translation>Vymazať skupinu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="954"/> <source>Are you sure you want to delete group %1? All objects from this group will be moved to parent group.</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať skupinu %1? +Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1014"/> <source>Delete database</source> - <translation type="unfinished"></translation> + <translation>Vymazať databázu</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1014"/> <source>Are you sure you want to delete database '%1'?</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať databázu '%1'?</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1050"/> @@ -2230,32 +2284,32 @@ All objects from this group will be moved to parent group.</source> <message> <location filename="../dbtree/dbtree.cpp" line="1334"/> <source>Error while executing VACUUM on the database %1: %2</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas vykonávania príkazu VACUUM na databáze %1: %2</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1336"/> <source>VACUUM execution finished successfully.</source> - <translation type="unfinished"></translation> + <translation>VACUUM úspešne skončilo.</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1353"/> <source>Integrity check (%1)</source> - <translation type="unfinished"></translation> + <translation>Kontrola integrity (%1)</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1390"/> <source>Reset autoincrement</source> - <translation type="unfinished"></translation> + <translation>Resetovať autoinkrement</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1390"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1397"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku '%1': %2</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="1399"/> @@ -2318,123 +2372,123 @@ All objects from this group will be moved to parent group.</source> <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Databáza: %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Verzia:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Veľkosť súboru:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Kódovanie:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Detaily chyby:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Tabuľka : %1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Stĺpce (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Indexy (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation>Spúšťače (%1):</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopírovať</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> - <translation type="unfinished"></translation> + <translation>Zrušiť</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2456,7 +2510,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/ddlhistorywindow.cpp" line="124"/> <source>DDL history</source> - <translation type="unfinished"></translation> + <translation>DDL história</translation> </message> </context> <context> @@ -2464,12 +2518,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/ddlpreviewdialog.ui" line="14"/> <source>Queries to be executed</source> - <translation type="unfinished"></translation> + <translation>Dotazy, ktoré budú vykonané</translation> </message> <message> <location filename="../dialogs/ddlpreviewdialog.ui" line="42"/> <source>Don't show again</source> - <translation type="unfinished"></translation> + <translation>Znovu nezobrazovať</translation> </message> </context> <context> @@ -2485,83 +2539,83 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/editorwindow.ui" line="39"/> <source>Query</source> - <translation type="unfinished"></translation> + <translation>Dotaz</translation> </message> <message> <location filename="../windows/editorwindow.ui" line="109"/> <source>History</source> - <translation type="unfinished"></translation> + <translation>História</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="130"/> <source>Results in the separate tab</source> - <translation type="unfinished"></translation> + <translation>Výsledky zobraziť v samostatnej záložke</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="131"/> <source>Results below the query</source> - <translation type="unfinished"></translation> + <translation>Výsledky zobraziť pod dotaz</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="164"/> <location filename="../windows/editorwindow.cpp" line="166"/> <source>SQL editor %1</source> - <translation type="unfinished"></translation> + <translation>SQL editor %1</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="324"/> <source>Results</source> - <translation type="unfinished"></translation> + <translation>Výsledky</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="357"/> <source>Execute query</source> - <translation type="unfinished"></translation> + <translation>Vykonať dotaz</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="358"/> <source>Explain query</source> - <translation type="unfinished"></translation> + <translation>Vysvetliť dotaz</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="361"/> <source>Clear execution history</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Vyprázdniť históriu dotazov</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="363"/> <source>Export results</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Vyexportovať výsledky</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="365"/> <source>Create view from query</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Vytvoriť pohľad z dotazu</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="374"/> <source>Previous database</source> - <translation type="unfinished"></translation> + <translation>Predchádzajúca databáza</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="375"/> <source>Next database</source> - <translation type="unfinished"></translation> + <translation>Nasledujúca databáza</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="378"/> <source>Show next tab</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Zobraziť nasledujúcu záložku</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="379"/> <source>Show previous tab</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Zobraziť predchádzajúcu záložku</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="380"/> @@ -2578,42 +2632,42 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/editorwindow.cpp" line="455"/> <source>Active database (%1/%2)</source> - <translation type="unfinished"></translation> + <translation>Aktívna databáza (%1/%2)</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="495"/> <source>Query finished in %1 second(s). Rows affected: %2</source> - <translation type="unfinished"></translation> + <translation>Dotaz trval %1 sekúnd. Počet dotknutých riadkov: %2</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="499"/> <source>Query finished in %1 second(s).</source> - <translation type="unfinished"></translation> + <translation>Dotaz trval %1 sekúnd.</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="601"/> <source>Clear execution history</source> - <translation type="unfinished"></translation> + <translation>Vyprázdniť históriu dotazov</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="601"/> <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chete vymazať celú históriu SQL dotazov? Túto operáciu nieje možné vrátiť späť.</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="613"/> <source>Cannot export, because no export plugin is loaded.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="634"/> <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source> - <translation type="unfinished"></translation> + <translation>Nebola vybraná žiadna databáza v SQL editore. Nemôžem vytvoriť view pre neznámu databázu.</translation> </message> <message> <location filename="../windows/editorwindow.cpp" line="664"/> <source>Editor window "%1" has uncommited data.</source> - <translation type="unfinished"></translation> + <translation>Okno editora "%1" obsahuje nepotrdené dáta.</translation> </message> </context> <context> @@ -2639,210 +2693,210 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/exportdialog.ui" line="14"/> <source>Export</source> - <translation type="unfinished"></translation> + <translation>Export</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="21"/> <source>What do you want to export?</source> - <translation type="unfinished"></translation> + <translation>Čo chcete exportovať?</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="36"/> <source>A database</source> - <translation type="unfinished"></translation> + <translation>Databáza</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="46"/> <source>A single table</source> - <translation type="unfinished"></translation> + <translation>Jednotlivá tabuľka</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="53"/> <source>Query results</source> - <translation type="unfinished"></translation> + <translation>Výsledky dotazu</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="65"/> <source>Table to export</source> - <translation type="unfinished"></translation> + <translation>Tabuľka na export</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="100"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation>Databáza</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="107"/> <source>Table</source> - <translation type="unfinished"></translation> + <translation>Tabuľka</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="124"/> <source>Options</source> - <translation type="unfinished"></translation> + <translation>Voľby</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="130"/> <source>When this option is unchecked, then only table DDL (CREATE TABLE statement) is exported.</source> - <translation type="unfinished"></translation> + <translation>Ak táto voľba nebude označená, tak sa vyexportuje len DDL tabuľky(príkaz CREATE TABLE).</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="133"/> <source>Export table data</source> - <translation type="unfinished"></translation> + <translation>Exportovať dáta tabuľky</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="143"/> <source>Export table indexes</source> - <translation type="unfinished"></translation> + <translation>Exportovať indexy tabuľky</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="153"/> <source>Export table triggers</source> - <translation type="unfinished"></translation> + <translation>Exportovať spúšťače tabuľky</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="175"/> <source>Note, that exporting table indexes and triggers may be unsupported by some output formats.</source> - <translation type="unfinished"></translation> + <translation>Poznámka. Niektoré exportné formáty nemusia podporovať export indexov a spúšťačov.</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="189"/> <source>Select database objects to export</source> - <translation type="unfinished"></translation> + <translation>Vyberte databázové objekty, ktoré chcete exportovať</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="202"/> <source>Export data from tables</source> - <translation type="unfinished"></translation> + <translation>Exportovať dáta z tabuliek</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="212"/> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>Vybrať všetko</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="219"/> <source>Deselect all</source> - <translation type="unfinished"></translation> + <translation>Zrušiť výber</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="229"/> <location filename="../dialogs/exportdialog.ui" line="249"/> <source>Database:</source> - <translation type="unfinished"></translation> + <translation>Databáza:</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="237"/> <source>Query to export results for</source> - <translation type="unfinished"></translation> + <translation>Dotaz pre export výsledkov pre</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="256"/> <source>Query to be executed for results:</source> - <translation type="unfinished"></translation> + <translation>Dotaz, ktorý bude vykonaný pre získanie dát:</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="264"/> <source>Export format and options</source> - <translation type="unfinished"></translation> + <translation>Formát exportu a možnosti</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="318"/> <source>Export format</source> - <translation type="unfinished"></translation> + <translation>Formát exportu</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="330"/> <source>Output</source> - <translation type="unfinished"></translation> + <translation>Výstup</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="336"/> <source>Exported file path</source> - <translation type="unfinished"></translation> + <translation>Cesta k výstupnému súboru</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="343"/> <source>Clipboard</source> - <translation type="unfinished"></translation> + <translation>Schránka</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="357"/> <source>File</source> - <translation type="unfinished"></translation> + <translation>Súbor</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="382"/> <source>Exported text encoding:</source> - <translation type="unfinished"></translation> + <translation>Kódovanie vyexportovaného textu:</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="398"/> <source>Export format options</source> - <translation type="unfinished"></translation> + <translation>Možnosti formátu exportu</translation> </message> <message> <location filename="../dialogs/exportdialog.cpp" line="51"/> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>Zrušiť</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> - <translation type="unfinished"></translation> + <translation>Vyberte databázu, ktorú chcete exportovať.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> - <translation type="unfinished"></translation> + <translation>Vyberte tabuľku, ktorú chcete exportovať.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> - <translation type="unfinished"></translation> + <translation>Zadajte platný dotaz pre export.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> - <translation type="unfinished"></translation> + <translation>Vyberte aspoň jeden objekt pre export.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> - <translation type="unfinished"></translation> + <translation>Musíte zadať názov súboru, do ktorého sa budú exportovať dáta.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> - <translation type="unfinished"></translation> + <translation>Cesta, ktorú ste zadali je existujúci adresár. Nemôžte ho prepísať.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> - <translation type="unfinished"></translation> + <translation>Adresár %1 neexistuje.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> - <translation type="unfinished"></translation> + <translation>Súbor %1 už existuje a bude prepísaný.</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> - <translation type="unfinished"></translation> + <translation>Všetky súbory (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> - <translation type="unfinished"></translation> + <translation>Výber súboru do ktorého sa budú exportovať dáta</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> - <translation type="unfinished"></translation> + <translation>Počas exportu sa vyskytla interná chyba. Toto je chyba v programe. Prosím nahláste ju.</translation> </message> </context> <context> @@ -2868,49 +2922,49 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../formview.cpp" line="253"/> <source>Commit row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Potvrdiť riadok</translation> </message> <message> <location filename="../formview.cpp" line="254"/> <source>Rollback row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Vrátiť späť riadok</translation> </message> <message> <location filename="../formview.cpp" line="255"/> <source>First row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Prvý riadok</translation> </message> <message> <location filename="../formview.cpp" line="256"/> <source>Previous row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Predchádzajúci riadok</translation> </message> <message> <location filename="../formview.cpp" line="257"/> <source>Next row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Nasledujúci riadok</translation> </message> <message> <location filename="../formview.cpp" line="258"/> <source>Last row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Posledný riadok</translation> </message> <message> <location filename="../formview.cpp" line="259"/> <source>Insert new row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Vložiť nový riadok</translation> </message> <message> <location filename="../formview.cpp" line="260"/> <source>Delete current row</source> <comment>form view</comment> - <translation type="unfinished"></translation> + <translation>Vymazať aktuálny riadok</translation> </message> </context> <context> @@ -2933,7 +2987,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.ui" line="171"/> <source>Type:</source> - <translation type="unfinished"></translation> + <translation>Typ:</translation> </message> <message> <location filename="../windows/functionseditor.ui" line="187"/> @@ -2948,7 +3002,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.ui" line="235"/> <source>Databases</source> - <translation type="unfinished"></translation> + <translation>Databázy</translation> </message> <message> <location filename="../windows/functionseditor.ui" line="241"/> @@ -3078,92 +3132,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/importdialog.ui" line="14"/> <source>Import data</source> - <translation type="unfinished"></translation> + <translation>Import dát</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="21"/> <source>Table to import to</source> - <translation type="unfinished"></translation> + <translation>Tabuľka na import</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="36"/> <source>Table</source> - <translation type="unfinished"></translation> + <translation>Tabuľka</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="43"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation>Databáza</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="84"/> <source>Data source to import from</source> - <translation type="unfinished"></translation> + <translation>Dátový zdroj na import</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="129"/> <source>Data source type</source> - <translation type="unfinished"></translation> + <translation>Typ dátového zdroja</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="141"/> <source>Options</source> - <translation type="unfinished"></translation> + <translation>Voľby</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> - <translation type="unfinished"></translation> + <translation>Vstupný súbor:</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> + <translation>Kódovanie textu:</translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> <translation type="unfinished"></translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="195"/> - <source>Data source options</source> + <source>Ignore errors</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="205"/> + <source>Data source options</source> + <translation>Nastavenia dátového zdroja</translation> + </message> + <message> <location filename="../dialogs/importdialog.cpp" line="71"/> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>Zrušiť</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> - <translation type="unfinished"></translation> + <translation>Ak zadáte názov neexistujúcej tabuľky, tak bude vytvorená.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov tabuľky</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> - <translation type="unfinished"></translation> + <translation>Vyberte importný plugin.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> - <translation type="unfinished"></translation> + <translation>Musíte zadať súbor, z ktorého sa budú importovať dáta.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> - <translation type="unfinished"></translation> + <translation>Súbor %1 neexistuje.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> - <translation type="unfinished"></translation> + <translation>Cesta, ktorú ste zadali je adresár. Prosím zadajte celú cestu.</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> - <translation type="unfinished"></translation> + <translation>Výber súboru, z ktorého sa budú importovať dáta</translation> </message> </context> <context> @@ -3172,17 +3236,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../dialogs/indexdialog.ui" line="20"/> <location filename="../dialogs/indexdialog.ui" line="30"/> <source>Index</source> - <translation type="unfinished"></translation> + <translation>Index</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="36"/> <source>On table:</source> - <translation type="unfinished"></translation> + <translation>Na tabuľke:</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="43"/> <source>Index name:</source> - <translation type="unfinished"></translation> + <translation>Názov indexu:</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="50"/> @@ -3192,27 +3256,27 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/indexdialog.ui" line="67"/> <source>Unique index</source> - <translation type="unfinished"></translation> + <translation>Jedinečný index</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="90"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation>Stĺpec</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="95"/> <source>Collation</source> - <translation type="unfinished"></translation> + <translation>Porovnávanie</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="100"/> <source>Sort</source> - <translation type="unfinished"></translation> + <translation>Zoradiť</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="115"/> <source>DDL</source> - <translation type="unfinished"></translation> + <translation>DDL</translation> </message> <message> <location filename="../dialogs/indexdialog.cpp" line="65"/> @@ -3232,12 +3296,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/indexdialog.cpp" line="186"/> <source>Select at least one column.</source> - <translation type="unfinished"></translation> + <translation>Vyberte minimálne jeden stĺpec.</translation> </message> <message> <location filename="../dialogs/indexdialog.cpp" line="187"/> <source>Enter a valid condition.</source> - <translation type="unfinished"></translation> + <translation>Zadajte platnú podmienku.</translation> </message> <message> <location filename="../dialogs/indexdialog.cpp" line="236"/> @@ -3249,7 +3313,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../dialogs/indexdialog.cpp" line="247"/> <source>Sort order</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Zoradiť</translation> </message> <message> <location filename="../dialogs/indexdialog.cpp" line="453"/> @@ -3275,12 +3339,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/languagedialog.ui" line="14"/> <source>Language</source> - <translation type="unfinished"></translation> + <translation>Jazyk</translation> </message> <message> <location filename="../dialogs/languagedialog.ui" line="20"/> <source>Please choose language:</source> - <translation type="unfinished"></translation> + <translation>Prosím vyberte si jazyk:</translation> </message> </context> <context> @@ -3288,27 +3352,27 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.ui" line="66"/> <source>Database toolbar</source> - <translation type="unfinished"></translation> + <translation>Databázová lišta</translation> </message> <message> <location filename="../mainwindow.ui" line="77"/> <source>Structure toolbar</source> - <translation type="unfinished"></translation> + <translation>Lišta štruktúr</translation> </message> <message> <location filename="../mainwindow.ui" line="88"/> <source>Tools</source> - <translation type="unfinished"></translation> + <translation>Nástroje</translation> </message> <message> <location filename="../mainwindow.ui" line="105"/> <source>Window list</source> - <translation type="unfinished"></translation> + <translation>Lišta okien</translation> </message> <message> <location filename="../mainwindow.ui" line="119"/> <source>View toolbar</source> - <translation type="unfinished"></translation> + <translation>Lišta pohľadov</translation> </message> <message> <location filename="../mainwindow.cpp" line="104"/> @@ -3323,7 +3387,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.cpp" line="106"/> <source>Data editors</source> - <translation type="unfinished"></translation> + <translation>Editory dát</translation> </message> <message> <location filename="../mainwindow.cpp" line="118"/> @@ -3333,77 +3397,77 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.cpp" line="120"/> <source>Running in debug mode. Debug messages are printed to the standard output.</source> - <translation type="unfinished"></translation> + <translation>Beží v ladiacom móde. Ladiace správy sú vypisované na štandardný výstup.</translation> </message> <message> <location filename="../mainwindow.cpp" line="202"/> <source>You need to restart application to make the language change take effect.</source> - <translation type="unfinished"></translation> + <translation>Je potrebné reštartovať aplikáciu aby sa zmena jazyka prejavila.</translation> </message> <message> <location filename="../mainwindow.cpp" line="245"/> <source>Open SQL editor</source> - <translation type="unfinished"></translation> + <translation>Otvoriť SQL editor</translation> </message> <message> <location filename="../mainwindow.cpp" line="246"/> <source>Open DDL history</source> - <translation type="unfinished"></translation> + <translation>Otvoriť DDL históriu</translation> </message> <message> <location filename="../mainwindow.cpp" line="247"/> <source>Open SQL functions editor</source> - <translation type="unfinished"></translation> + <translation>Otvoriť editor SQL funkcií</translation> </message> <message> <location filename="../mainwindow.cpp" line="248"/> <source>Open collations editor</source> - <translation type="unfinished"></translation> + <translation>Otvoriť editor porovnávaní</translation> </message> <message> <location filename="../mainwindow.cpp" line="249"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation>Import</translation> </message> <message> <location filename="../mainwindow.cpp" line="250"/> <source>Export</source> - <translation type="unfinished"></translation> + <translation>Export</translation> </message> <message> <location filename="../mainwindow.cpp" line="252"/> <source>Open configuration dialog</source> - <translation type="unfinished"></translation> + <translation>Konfigurácia</translation> </message> <message> <location filename="../mainwindow.cpp" line="254"/> <source>Tile windows</source> - <translation type="unfinished"></translation> + <translation>Oddeliť okná</translation> </message> <message> <location filename="../mainwindow.cpp" line="255"/> <source>Tile windows horizontally</source> - <translation type="unfinished"></translation> + <translation>Oddeliť okná horizontálne</translation> </message> <message> <location filename="../mainwindow.cpp" line="256"/> <source>Tile windows vertically</source> - <translation type="unfinished"></translation> + <translation>Oddeliť okná vertikálne</translation> </message> <message> <location filename="../mainwindow.cpp" line="257"/> <source>Cascade windows</source> - <translation type="unfinished"></translation> + <translation>Okná kaskádovito</translation> </message> <message> <location filename="../mainwindow.cpp" line="258"/> <source>Next window</source> - <translation type="unfinished"></translation> + <translation>Nasledujúce okno</translation> </message> <message> <location filename="../mainwindow.cpp" line="259"/> <source>Previous window</source> - <translation type="unfinished"></translation> + <translation>Predchádzajúce okno</translation> </message> <message> <location filename="../mainwindow.cpp" line="260"/> @@ -3413,184 +3477,184 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.cpp" line="262"/> <source>Close selected window</source> - <translation type="unfinished"></translation> + <translation>Zatvoriť vybrané okno</translation> </message> <message> <location filename="../mainwindow.cpp" line="263"/> <source>Close all windows but selected</source> - <translation type="unfinished"></translation> + <translation>Zatvoriť všetky okná okrem vybraného</translation> </message> <message> <location filename="../mainwindow.cpp" line="264"/> <source>Close all windows</source> - <translation type="unfinished"></translation> + <translation>Zatvoriť všetky okná</translation> </message> <message> <location filename="../mainwindow.cpp" line="265"/> <source>Restore recently closed window</source> - <translation type="unfinished"></translation> + <translation>Obnoviť posledné zatvorené okno</translation> </message> <message> <location filename="../mainwindow.cpp" line="266"/> <source>Rename selected window</source> - <translation type="unfinished"></translation> + <translation>Premenovať vybrané okno</translation> </message> <message> <location filename="../mainwindow.cpp" line="268"/> <source>Open Debug Console</source> - <translation type="unfinished"></translation> + <translation>Otvoriť ladiacu konzolu</translation> </message> <message> <location filename="../mainwindow.cpp" line="269"/> <source>Report a bug</source> - <translation type="unfinished"></translation> + <translation>Nahlásiť chybu</translation> </message> <message> <location filename="../mainwindow.cpp" line="270"/> <source>Propose a new feature</source> - <translation type="unfinished"></translation> + <translation>Navrhnúť novú funkciu</translation> </message> <message> <location filename="../mainwindow.cpp" line="271"/> <source>About</source> - <translation type="unfinished"></translation> + <translation>O programe</translation> </message> <message> <location filename="../mainwindow.cpp" line="272"/> <source>Licenses</source> - <translation type="unfinished"></translation> + <translation>Licencie</translation> </message> <message> <location filename="../mainwindow.cpp" line="273"/> <source>Open home page</source> - <translation type="unfinished"></translation> + <translation>Otvoriť domovskú stránku</translation> </message> <message> <location filename="../mainwindow.cpp" line="274"/> <source>Open forum page</source> - <translation type="unfinished"></translation> + <translation>Otvoriť fórum</translation> </message> <message> <location filename="../mainwindow.cpp" line="275"/> <source>User Manual</source> - <translation type="unfinished"></translation> + <translation>Užívateľský manuál</translation> </message> <message> <location filename="../mainwindow.cpp" line="276"/> <source>SQLite documentation</source> - <translation type="unfinished"></translation> + <translation>Dokumentácia SQLite</translation> </message> <message> <location filename="../mainwindow.cpp" line="277"/> <source>Report history</source> - <translation type="unfinished"></translation> + <translation>História hlásení</translation> </message> <message> <location filename="../mainwindow.cpp" line="278"/> <source>Check for updates</source> - <translation type="unfinished"></translation> + <translation>Skontrolovať akutalizácie</translation> </message> <message> <location filename="../mainwindow.cpp" line="315"/> <source>Database</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>Databázy</translation> </message> <message> <location filename="../mainwindow.cpp" line="335"/> <source>Structure</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>Štruktúry</translation> </message> <message> <location filename="../mainwindow.cpp" line="356"/> <source>View</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>Zobrazenie</translation> </message> <message> <location filename="../mainwindow.cpp" line="360"/> <source>Window list</source> <comment>menubar view menu</comment> - <translation type="unfinished"></translation> + <translation>Lišta okien</translation> </message> <message> <location filename="../mainwindow.cpp" line="381"/> <source>Tools</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>Nástroje</translation> </message> <message> <location filename="../mainwindow.cpp" line="395"/> <source>Help</source> - <translation type="unfinished"></translation> + <translation>Pomoc</translation> </message> <message> <location filename="../mainwindow.cpp" line="549"/> <source>Could not set style: %1</source> <comment>main window</comment> - <translation type="unfinished"></translation> + <translation>Nemôžem nastaviť štýl: %1</translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation> </message> <message> <location filename="../mainwindow.cpp" line="637"/> <source>Cannot import, because no import plugin is loaded.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> - <translation type="unfinished"></translation> + <translation>Premenovať okno</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> - <translation type="unfinished"></translation> + <translation>Zadajte nový názov pre okno:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> - <translation type="unfinished"></translation> + <translation>Nové aktualizácie sú dostupné. <a href="%1">Kliknite sem pre zobrazenie detailov</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> - <translation type="unfinished"></translation> + <translation>Niesú dostupné žiadne aktualizácie. Používate aktuálnu verziu.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem pridať databázu %1 do zoznamu.</translation> </message> </context> <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation>Nepotvrdené zmeny</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> <translation type="unfinished"></translation> </message> @@ -3601,7 +3665,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditor.cpp" line="53"/> <source>Null value</source> <comment>multieditor</comment> - <translation type="unfinished"></translation> + <translation>Hodnota null</translation> </message> <message> <location filename="../multieditor/multieditor.cpp" line="68"/> @@ -3639,7 +3703,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation type="unfinished"></translation> + <translation>Dátum</translation> </message> </context> <context> @@ -3647,7 +3711,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation type="unfinished"></translation> + <translation>Dátum a čas</translation> </message> </context> <context> @@ -3664,7 +3728,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation type="unfinished"></translation> + <translation>Číslo</translation> </message> </context> <context> @@ -3682,22 +3746,22 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Cut</source> - <translation type="unfinished"></translation> + <translation>Vystrihnúť</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopírovať</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="109"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Vložiť</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="110"/> <source>Delete</source> - <translation type="unfinished"></translation> + <translation>Vymazať</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="111"/> @@ -3723,28 +3787,28 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/newconstraintdialog.ui" line="20"/> <source>New constraint</source> - <translation type="unfinished"></translation> + <translation>Nové obmedzenie</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="87"/> <location filename="../dialogs/newconstraintdialog.cpp" line="97"/> <source>Primary Key</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Primárny klúč</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="89"/> <location filename="../dialogs/newconstraintdialog.cpp" line="99"/> <source>Foreign Key</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Cudzí klúč</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="91"/> <location filename="../dialogs/newconstraintdialog.cpp" line="101"/> <source>Unique</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Jedinečnosť</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="92"/> @@ -3757,19 +3821,19 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../dialogs/newconstraintdialog.cpp" line="103"/> <source>Not NULL</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Nie NULL</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="105"/> <source>Collate</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Porovnanie</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="107"/> <source>Default</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>Prednastavená hodnota</translation> </message> </context> <context> @@ -3782,7 +3846,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/newversiondialog.ui" line="26"/> <source>New updates are available!</source> - <translation type="unfinished"></translation> + <translation>Nové aktualizácie sú dostupné!</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="70"/> @@ -3792,7 +3856,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Current version</source> - <translation type="unfinished"></translation> + <translation>Nainštalovaná verzia</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="80"/> @@ -3802,7 +3866,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/newversiondialog.ui" line="91"/> <source>Check for updates on startup</source> - <translation type="unfinished"></translation> + <translation>Kontrolovať aktualizácie pri štarte</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="101"/> @@ -3843,38 +3907,38 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/populatedialog.ui" line="14"/> <source>Populate table</source> - <translation type="unfinished"></translation> + <translation>Naplniť tabuľku</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="26"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation>Databáza</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="44"/> <source>Table</source> - <translation type="unfinished"></translation> + <translation>Tabuľka</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="72"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation>Stĺpce</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="102"/> <source>Number of rows to populate:</source> - <translation type="unfinished"></translation> + <translation>Počet riadkov na naplnenie:</translation> </message> <message> <location filename="../dialogs/populatedialog.cpp" line="42"/> <source>Populate</source> <comment>populate dialog button</comment> - <translation type="unfinished"></translation> + <translation>Naplniť</translation> </message> <message> <location filename="../dialogs/populatedialog.cpp" line="158"/> <source>Configure</source> - <translation type="unfinished"></translation> + <translation>Konfigurovať</translation> </message> <message> <location filename="../dialogs/populatedialog.cpp" line="256"/> @@ -3884,319 +3948,319 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/populatedialog.cpp" line="287"/> <source>Select database with table to populate</source> - <translation type="unfinished"></translation> + <translation>Vyberte databázu s tabuľkou na naplnenie</translation> </message> <message> <location filename="../dialogs/populatedialog.cpp" line="288"/> <source>Select table to populate</source> - <translation type="unfinished"></translation> + <translation>Vyberte tabuľku na naplnenie</translation> </message> <message> <location filename="../dialogs/populatedialog.cpp" line="289"/> <source>You have to select at least one column.</source> - <translation type="unfinished"></translation> + <translation>Musíte vybrať minimálne jeden stĺpec.</translation> </message> </context> <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> - <translation type="unfinished"></translation> + <translation>Pri konflikte: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> - <translation type="unfinished"></translation> + <translation>Názov porovnánavania: %1</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="19"/> <source>Data grid view</source> - <translation type="unfinished"></translation> + <translation>Tabuľkové zobrazenie dát</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="20"/> <source>Copy cell(s) contents to clipboard</source> - <translation type="unfinished"></translation> + <translation>Kopírovať obsah buniek do schránky</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="22"/> <source>Paste cell(s) contents from clipboard</source> - <translation type="unfinished"></translation> + <translation>Vložiť obsah buniek zo schránky</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="24"/> <source>Set empty value to selected cell(s)</source> - <translation type="unfinished"></translation> + <translation>Vymazať hodnoty z vybraných buniek</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="25"/> <source>Set NULL value to selected cell(s)</source> - <translation type="unfinished"></translation> + <translation>Nastaviť NULL hodnotu vo vybraných bunkách</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="26"/> <source>Commit changes to cell(s) contents</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny v bunkách</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="27"/> <source>Rollback changes to cell(s) contents</source> - <translation type="unfinished"></translation> + <translation>Vrátiť späť zmeny v bunkách</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="28"/> <source>Delete selected data row</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný riadok</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="29"/> <source>Insert new data row</source> - <translation type="unfinished"></translation> + <translation>Vložiť nový riadok</translation> </message> <message> <location filename="../datagrid/sqlqueryview.h" line="30"/> <source>Open contents of selected cell in a separate editor</source> - <translation type="unfinished"></translation> + <translation>Otvoriť obsah vybranej bunky v samostatnom editore</translation> </message> <message> <location filename="../dataview.cpp" line="487"/> <source>Total pages available: %1</source> - <translation type="unfinished"></translation> + <translation>Celkový počet strán: %1</translation> </message> <message> <location filename="../dataview.cpp" line="497"/> <source>Total rows loaded: %1</source> - <translation type="unfinished"></translation> + <translation>Celkový počet riadkov: %1</translation> </message> <message> <location filename="../dataview.h" line="17"/> <source>Data view (both grid and form)</source> - <translation type="unfinished"></translation> + <translation>Zobrazenie dát (tabuľka a formulár)</translation> </message> <message> <location filename="../dataview.h" line="18"/> <source>Refresh data</source> - <translation type="unfinished"></translation> + <translation>Obnoviť dáta</translation> </message> <message> <location filename="../dataview.h" line="19"/> <source>Switch to grid view of the data</source> - <translation type="unfinished"></translation> + <translation>Prepnúť na tabuľkové zobrazenie dát</translation> </message> <message> <location filename="../dataview.h" line="20"/> <source>Switch to form view of the data</source> - <translation type="unfinished"></translation> + <translation>Prepnúť na formulárové zobrazenie dát</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="26"/> <source>Database list</source> - <translation type="unfinished"></translation> + <translation>Zoznam databáz</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="27"/> <source>Delete selected item</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybranú položku</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="28"/> <source>Clear filter contents</source> - <translation type="unfinished"></translation> + <translation>Vymazať filter</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="29"/> <source>Refresh schema</source> - <translation type="unfinished"></translation> + <translation>Obnoviť schému</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="30"/> <source>Refresh all schemas</source> - <translation type="unfinished"></translation> + <translation>Obnoviť všetky schémy</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="31"/> <source>Add database</source> - <translation type="unfinished"></translation> + <translation>Pridať databázu</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="32"/> <source>Select all items</source> - <translation type="unfinished"></translation> + <translation>Vybrať všetky položky</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="33"/> <source>Copy selected item(s)</source> - <translation type="unfinished"></translation> + <translation>Kopírovať vybrané položky</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="34"/> <location filename="../multieditor/multieditortext.h" line="15"/> <location filename="../sqleditor.h" line="24"/> <source>Paste from clipboard</source> - <translation type="unfinished"></translation> + <translation>Vložiť zo schránky</translation> </message> <message> <location filename="../dbtree/dbtreeitemfactory.cpp" line="47"/> <source>Tables</source> - <translation type="unfinished"></translation> + <translation>Tabuľky</translation> </message> <message> <location filename="../dbtree/dbtreeitemfactory.cpp" line="52"/> <source>Indexes</source> - <translation type="unfinished"></translation> + <translation>Indexy</translation> </message> <message> <location filename="../dbtree/dbtreeitemfactory.cpp" line="57"/> <source>Triggers</source> - <translation type="unfinished"></translation> + <translation>Spúšťače</translation> </message> <message> <location filename="../dbtree/dbtreeitemfactory.cpp" line="62"/> <source>Views</source> - <translation type="unfinished"></translation> + <translation>Pohľady</translation> </message> <message> <location filename="../dbtree/dbtreeitemfactory.cpp" line="67"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation>Stĺpce</translation> </message> <message> <location filename="../formview.h" line="16"/> <source>Data form view</source> - <translation type="unfinished"></translation> + <translation>Formulárové zobrazenie dát</translation> </message> <message> <location filename="../formview.h" line="17"/> <source>Commit changes for current row</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny pre aktuálny riadok</translation> </message> <message> <location filename="../formview.h" line="18"/> <source>Rollback changes for current row</source> - <translation type="unfinished"></translation> + <translation>Vrátiť späť zmeny na aktuálnom riadku</translation> </message> <message> <location filename="../formview.h" line="19"/> <source>Go to first row on current page</source> - <translation type="unfinished"></translation> + <translation>Prejsť na prvý riadok na aktuálnej strane</translation> </message> <message> <location filename="../formview.h" line="20"/> <source>Go to next row</source> - <translation type="unfinished"></translation> + <translation>Prejsť na nasledujúci riadok</translation> </message> <message> <location filename="../formview.h" line="21"/> <source>Go to previous row</source> - <translation type="unfinished"></translation> + <translation>Prejsť na predchádzajúci riadok</translation> </message> <message> <location filename="../formview.h" line="22"/> <source>Go to last row on current page</source> - <translation type="unfinished"></translation> + <translation>Prejsť na posledný riadok na aktuálnej strane</translation> </message> <message> <location filename="../formview.h" line="23"/> <source>Insert new row</source> - <translation type="unfinished"></translation> + <translation>Vložiť nový riadok</translation> </message> <message> <location filename="../formview.h" line="24"/> <source>Delete current row</source> - <translation type="unfinished"></translation> + <translation>Vymazať aktuálny riadok</translation> </message> <message> <location filename="../mainwindow.h" line="42"/> <source>Main window</source> - <translation type="unfinished"></translation> + <translation>Hlavné okno</translation> </message> <message> <location filename="../mainwindow.h" line="43"/> <source>Open SQL editor</source> - <translation type="unfinished"></translation> + <translation>Otvoriť SQL editor</translation> </message> <message> <location filename="../mainwindow.h" line="44"/> <source>Previous window</source> - <translation type="unfinished"></translation> + <translation>Predchádzajúce okno</translation> </message> <message> <location filename="../mainwindow.h" line="45"/> <source>Next window</source> - <translation type="unfinished"></translation> + <translation>Nasledujúce okno</translation> </message> <message> <location filename="../mainwindow.h" line="46"/> <source>Hide status area</source> - <translation type="unfinished"></translation> + <translation>Skryť status okno</translation> </message> <message> <location filename="../mainwindow.h" line="47"/> <source>Open configuration dialog</source> - <translation type="unfinished"></translation> + <translation>Otvoriť konfiguračné okno</translation> </message> <message> <location filename="../mainwindow.h" line="48"/> <source>Open Debug Console</source> - <translation type="unfinished"></translation> + <translation>Otvoriť ladiacu konzolu</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="12"/> @@ -4207,19 +4271,19 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditortext.h" line="13"/> <location filename="../sqleditor.h" line="22"/> <source>Cut selected text</source> - <translation type="unfinished"></translation> + <translation>Vystrihnúť vybraný text</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="14"/> <location filename="../sqleditor.h" line="23"/> <source>Copy selected text</source> - <translation type="unfinished"></translation> + <translation>Kopírovať vybraný text</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="16"/> <location filename="../sqleditor.h" line="25"/> <source>Delete selected text</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný text</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="17"/> @@ -4241,72 +4305,72 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../sqleditor.h" line="26"/> <source>Select whole editor contents</source> - <translation type="unfinished"></translation> + <translation>Označiť všetko</translation> </message> <message> <location filename="../sqleditor.h" line="29"/> <source>Save contents into a file</source> - <translation type="unfinished"></translation> + <translation>Uložiť SQL do súboru</translation> </message> <message> <location filename="../sqleditor.h" line="30"/> <source>Load contents from a file</source> - <translation type="unfinished"></translation> + <translation>Načítať SQL zo súboru</translation> </message> <message> <location filename="../sqleditor.h" line="31"/> <source>Find in text</source> - <translation type="unfinished"></translation> + <translation>Nájsť v SQL</translation> </message> <message> <location filename="../sqleditor.h" line="32"/> <source>Find next</source> - <translation type="unfinished"></translation> + <translation>Nájsť ďalší</translation> </message> <message> <location filename="../sqleditor.h" line="33"/> <source>Find previous</source> - <translation type="unfinished"></translation> + <translation>Nájsť predchádzajúci</translation> </message> <message> <location filename="../sqleditor.h" line="34"/> <source>Replace in text</source> - <translation type="unfinished"></translation> + <translation>Nahradiť v SQL</translation> </message> <message> <location filename="../sqleditor.h" line="35"/> <source>Delete current line</source> - <translation type="unfinished"></translation> + <translation>Vymazať aktuálny riadok</translation> </message> <message> <location filename="../sqleditor.h" line="36"/> <source>Request code assistant</source> - <translation type="unfinished"></translation> + <translation>Otvoriť SQL pomocníka</translation> </message> <message> <location filename="../sqleditor.h" line="37"/> <source>Format contents</source> - <translation type="unfinished"></translation> + <translation>Formátovať SQL</translation> </message> <message> <location filename="../sqleditor.h" line="38"/> <source>Move selected block of text one line down</source> - <translation type="unfinished"></translation> + <translation>Presunúť blok kódu o riadok nižšie</translation> </message> <message> <location filename="../sqleditor.h" line="39"/> <source>Move selected block of text one line up</source> - <translation type="unfinished"></translation> + <translation>Presunúť blok kódu o riadok vyššie</translation> </message> <message> <location filename="../sqleditor.h" line="40"/> <source>Copy selected block of text and paste it a line below</source> - <translation type="unfinished"></translation> + <translation>Kopírovať blok kódu a vložiť ho na riadok nižšie</translation> </message> <message> <location filename="../sqleditor.h" line="41"/> <source>Copy selected block of text and paste it a line above</source> - <translation type="unfinished"></translation> + <translation>Kopírovať blok kódu a vložiť ho na riadok vyššie</translation> </message> <message> <location filename="../uiutils.cpp" line="32"/> @@ -4319,9 +4383,10 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> - <translation type="unfinished"></translation> + <translation>Databázový súbor</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.h" line="11"/> @@ -4331,7 +4396,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybranú položku</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4341,7 +4406,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/editorwindow.h" line="27"/> <source>Execute query</source> - <translation type="unfinished"></translation> + <translation>Vykonať dotaz</translation> </message> <message> <location filename="../windows/editorwindow.h" line="28"/> @@ -4386,102 +4451,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/tablewindow.h" line="31"/> <source>Refresh table structure</source> - <translation type="unfinished"></translation> + <translation>Obnoviť štruktúru tabuľky</translation> </message> <message> <location filename="../windows/tablewindow.h" line="32"/> <source>Add new column</source> - <translation type="unfinished"></translation> + <translation>Pridať nový stĺpec</translation> </message> <message> <location filename="../windows/tablewindow.h" line="33"/> <source>Edit selected column</source> - <translation type="unfinished"></translation> + <translation>Upraviť vybraný stĺpec</translation> </message> <message> <location filename="../windows/tablewindow.h" line="34"/> <source>Delete selected column</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný stĺpec</translation> </message> <message> <location filename="../windows/tablewindow.h" line="35"/> <source>Export table data</source> - <translation type="unfinished"></translation> + <translation>Exportovať dáta z tabuľky</translation> </message> <message> <location filename="../windows/tablewindow.h" line="36"/> <source>Import data to the table</source> - <translation type="unfinished"></translation> + <translation>Importovať dáta do tabuľky</translation> </message> <message> <location filename="../windows/tablewindow.h" line="37"/> <source>Add new table constraint</source> - <translation type="unfinished"></translation> + <translation>Pridať nové obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.h" line="38"/> <source>Edit selected table constraint</source> - <translation type="unfinished"></translation> + <translation>Upraviť vybrané obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.h" line="39"/> <source>Delete selected table constraint</source> - <translation type="unfinished"></translation> + <translation>Vymazaťˇvybrané obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.h" line="40"/> <source>Refresh table index list</source> - <translation type="unfinished"></translation> + <translation>Obnoviť zoznam indexov</translation> </message> <message> <location filename="../windows/tablewindow.h" line="41"/> <source>Add new index</source> - <translation type="unfinished"></translation> + <translation>Pridať nový index</translation> </message> <message> <location filename="../windows/tablewindow.h" line="42"/> <source>Edit selected index</source> - <translation type="unfinished"></translation> + <translation>Upraviť vybraný index</translation> </message> <message> <location filename="../windows/tablewindow.h" line="43"/> <source>Delete selected index</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný index</translation> </message> <message> <location filename="../windows/tablewindow.h" line="44"/> <source>Refresh table trigger list</source> - <translation type="unfinished"></translation> + <translation>Obnoviť zoznam spúšťačov</translation> </message> <message> <location filename="../windows/tablewindow.h" line="45"/> <location filename="../windows/viewwindow.h" line="25"/> <source>Add new trigger</source> - <translation type="unfinished"></translation> + <translation>Pridať nový spúšťač</translation> </message> <message> <location filename="../windows/tablewindow.h" line="46"/> <location filename="../windows/viewwindow.h" line="26"/> <source>Edit selected trigger</source> - <translation type="unfinished"></translation> + <translation>Upraviť vybraný spúšťač</translation> </message> <message> <location filename="../windows/tablewindow.h" line="47"/> <location filename="../windows/viewwindow.h" line="27"/> <source>Delete selected trigger</source> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný spúšťač</translation> </message> <message> <location filename="../windows/tablewindow.h" line="48"/> <location filename="../windows/viewwindow.h" line="28"/> <source>Go to next tab</source> - <translation type="unfinished"></translation> + <translation>Prechod na nasledujúcu záložku</translation> </message> <message> <location filename="../windows/tablewindow.h" line="49"/> <location filename="../windows/viewwindow.h" line="29"/> <source>Go to previous tab</source> - <translation type="unfinished"></translation> + <translation>Prechod na predchádzajúcu záložku</translation> </message> <message> <location filename="../windows/viewwindow.h" line="23"/> @@ -4499,7 +4564,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/quitconfirmdialog.ui" line="14"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation>Nepotvrdené zmeny</translation> </message> <message> <location filename="../dialogs/quitconfirmdialog.ui" line="20"/> @@ -4514,22 +4579,22 @@ Following items are pending:</source> <message> <location filename="../dialogs/searchtextdialog.ui" line="14"/> <source>Find or replace</source> - <translation type="unfinished"></translation> + <translation>Nájsť alebo nahradiť</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="23"/> <source>Find:</source> - <translation type="unfinished"></translation> + <translation>Nájsť:</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="36"/> <source>Case sensitive</source> - <translation type="unfinished"></translation> + <translation>Rozlišovať veľké písmená</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="43"/> <source>Search backwards</source> - <translation type="unfinished"></translation> + <translation>Hľadať spätne</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="50"/> @@ -4540,22 +4605,23 @@ Following items are pending:</source> <location filename="../dialogs/searchtextdialog.ui" line="60"/> <source>Replace && find next</source> - <translation type="unfinished"></translation> + <translation>Nahradiť a +nájsť ďalší</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="78"/> <source>Replace with:</source> - <translation type="unfinished"></translation> + <translation>Nahradiť s:</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="91"/> <source>Replace all</source> - <translation type="unfinished"></translation> + <translation>Nahradiť všetko</translation> </message> <message> <location filename="../dialogs/searchtextdialog.ui" line="98"/> <source>Find</source> - <translation type="unfinished"></translation> + <translation>Nájsť</translation> </message> </context> <context> @@ -4563,34 +4629,34 @@ find next</source> <message> <location filename="../dialogs/sortdialog.ui" line="14"/> <source>Sort by columns</source> - <translation type="unfinished"></translation> + <translation>Zoradiť podľa stĺpcov</translation> </message> <message> <location filename="../dialogs/sortdialog.ui" line="45"/> <location filename="../dialogs/sortdialog.cpp" line="48"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation>Stĺpec</translation> </message> <message> <location filename="../dialogs/sortdialog.ui" line="50"/> <location filename="../dialogs/sortdialog.cpp" line="48"/> <source>Order</source> - <translation type="unfinished"></translation> + <translation>Usporiadanie</translation> </message> <message> <location filename="../dialogs/sortdialog.cpp" line="178"/> <source>Sort by: %1</source> - <translation type="unfinished"></translation> + <translation>Zoradiť podľa : %1</translation> </message> <message> <location filename="../dialogs/sortdialog.cpp" line="242"/> <source>Move column up</source> - <translation type="unfinished"></translation> + <translation>Posunúť stĺpec hore</translation> </message> <message> <location filename="../dialogs/sortdialog.cpp" line="243"/> <source>Move column down</source> - <translation type="unfinished"></translation> + <translation>Posunúť stĺpec dole</translation> </message> </context> <context> @@ -4605,13 +4671,13 @@ find next</source> <location filename="../sqleditor.cpp" line="119"/> <source>Copy</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Kopírovať</translation> </message> <message> <location filename="../sqleditor.cpp" line="120"/> <source>Paste</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Vložiť</translation> </message> <message> <location filename="../sqleditor.cpp" line="121"/> @@ -4623,7 +4689,7 @@ find next</source> <location filename="../sqleditor.cpp" line="122"/> <source>Select all</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Vybrať všetko</translation> </message> <message> <location filename="../sqleditor.cpp" line="123"/> @@ -4647,25 +4713,25 @@ find next</source> <location filename="../sqleditor.cpp" line="126"/> <source>Format SQL</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Formátovať SQL</translation> </message> <message> <location filename="../sqleditor.cpp" line="127"/> <source>Save SQL to file</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Uložiť SQL do súboru</translation> </message> <message> <location filename="../sqleditor.cpp" line="128"/> <source>Load SQL from file</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Načítať SQL zo súboru</translation> </message> <message> <location filename="../sqleditor.cpp" line="129"/> <source>Delete line</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Vymazať riadok</translation> </message> <message> <location filename="../sqleditor.cpp" line="130"/> @@ -4695,25 +4761,25 @@ find next</source> <location filename="../sqleditor.cpp" line="134"/> <source>Find</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Nájsť</translation> </message> <message> <location filename="../sqleditor.cpp" line="135"/> <source>Find next</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Nájsť ďalší</translation> </message> <message> <location filename="../sqleditor.cpp" line="136"/> <source>Find previous</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Nájsť predchádzajúci</translation> </message> <message> <location filename="../sqleditor.cpp" line="137"/> <source>Replace</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>Nahradiť</translation> </message> <message> <location filename="../sqleditor.cpp" line="412"/> @@ -4728,7 +4794,7 @@ find next</source> <message> <location filename="../sqleditor.cpp" line="1027"/> <source>Save to file</source> - <translation type="unfinished"></translation> + <translation>Uložiť do súboru</translation> </message> <message> <location filename="../sqleditor.cpp" line="1036"/> @@ -4743,7 +4809,7 @@ find next</source> <message> <location filename="../sqleditor.cpp" line="1051"/> <source>Open file</source> - <translation type="unfinished"></translation> + <translation>Otvoriť súbor</translation> </message> <message> <location filename="../sqleditor.cpp" line="1060"/> @@ -4762,30 +4828,30 @@ find next</source> <location filename="../datagrid/sqlqueryitem.cpp" line="251"/> <source>Column:</source> <comment>data view tooltip</comment> - <translation type="unfinished"></translation> + <translation>Stĺpec:</translation> </message> <message> <location filename="../datagrid/sqlqueryitem.cpp" line="252"/> <source>Data type:</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation>Datový typ:</translation> </message> <message> <location filename="../datagrid/sqlqueryitem.cpp" line="255"/> <source>Table:</source> <comment>data view tooltip</comment> - <translation type="unfinished"></translation> + <translation>Tabuľka:</translation> </message> <message> <location filename="../datagrid/sqlqueryitem.cpp" line="285"/> <source>Constraints:</source> <comment>data view tooltip</comment> - <translation type="unfinished"></translation> + <translation>Obmedzenia:</translation> </message> <message> <location filename="../datagrid/sqlqueryitem.cpp" line="398"/> <source>This cell is not editable, because: %1</source> - <translation type="unfinished"></translation> + <translation>Táto bunka nieje editovateľná, pretože: %1</translation> </message> <message> <location filename="../datagrid/sqlqueryitem.cpp" line="415"/> @@ -4810,159 +4876,164 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> - <translation type="unfinished"></translation> + <translation>Nemôže byť spustených viacero dotazov súčasne.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> - <translation type="unfinished"></translation> + <translation>Nepotvrdené dáta</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> - <translation type="unfinished"></translation> + <translation>Sú tu nepotvrdené zmeny. Chcete aj napriek tomu pokračovať? Všetky nepotvrdené zmeny budú stratené.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> - <translation type="unfinished"></translation> + <translation>Nemôžem potrdiť dáta bunky, ktorá odkazuje na už uzatvorenú databázu.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> - <translation type="unfinished"></translation> + <translation>Nemôžem začať tranzakciu na databáze. Detaily: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas potvrdzovania tranzakcie: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas vracania späť tranzakcie: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> - <translation type="unfinished"></translation> + <translation>Nastal pokus o potvrdenie zmien v bunke, ktorú nieje možné upravovať (napriek tomu bola upravená a čaká na potvrdenie)! Toto je chyba. Prosím nahláste ju.</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas potvrdzovania dát: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas vykonávania SQL dotazu na databáze '%1': %2</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas načítavania výsledkov dotazu: %1</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> - <translation type="unfinished"></translation> + <translation>Vložiť viacero riadkov</translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> - <translation type="unfinished"></translation> + <translation>Počet vkládaných riadkov:</translation> </message> </context> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopírovať</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> - <translation type="unfinished"></translation> + <translation>Kopírovať ako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>Vložiť</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> - <translation type="unfinished"></translation> + <translation>Vložiť ako...</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> - <translation type="unfinished"></translation> + <translation>Nastaviť null hodnoty</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> - <translation type="unfinished"></translation> + <translation>Vymazať hodnoty</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> - <translation type="unfinished"></translation> + <translation>Upraviť hodnotu v editory</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> - <translation type="unfinished"></translation> + <translation>Vrátiť späť</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť vybrané bunky</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> - <translation type="unfinished"></translation> + <translation>Vrátiť späť vybrané bunky</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> - <translation type="unfinished"></translation> + <translation>Vybrať stĺpce na zoradenie podľa</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> - <translation type="unfinished"></translation> + <translation>Odstrániť užívateľské triedenie</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> - <translation type="unfinished"></translation> + <translation>Vložiť riadok</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> - <translation type="unfinished"></translation> + <translation>Vložiť viacero riadkov</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> - <translation type="unfinished"></translation> + <translation>Vymazať viacero riadkov</translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation>Neboli vybrané žiadne položky na vloženie obsahu schránky.</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> - <translation type="unfinished"></translation> + <translation>Upraviť hodnotu</translation> </message> </context> <context> @@ -4970,12 +5041,12 @@ find next</source> <message> <location filename="../datagrid/sqltablemodel.cpp" line="74"/> <source>Error while commiting new row: %1</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas potvrdzovania nového riadka: %1</translation> </message> <message> <location filename="../datagrid/sqltablemodel.cpp" line="132"/> <source>Error while deleting row from table %1: %2</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba počas mazania riadka z tabuľky %1: %2</translation> </message> </context> <context> @@ -4983,17 +5054,17 @@ find next</source> <message> <location filename="../statusfield.ui" line="14"/> <source>Status</source> - <translation type="unfinished"></translation> + <translation>Status</translation> </message> <message> <location filename="../statusfield.cpp" line="161"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>Kopírovať</translation> </message> <message> <location filename="../statusfield.cpp" line="168"/> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>Vyčistiť</translation> </message> </context> <context> @@ -5002,19 +5073,19 @@ find next</source> <location filename="../windows/tableconstraintsmodel.cpp" line="75"/> <source>Type</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Typ</translation> </message> <message> <location filename="../windows/tableconstraintsmodel.cpp" line="77"/> <source>Details</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Detaily</translation> </message> <message> <location filename="../windows/tableconstraintsmodel.cpp" line="79"/> <source>Name</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Názov</translation> </message> </context> <context> @@ -5022,7 +5093,7 @@ find next</source> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="29"/> <source>Foreign table:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Cudzia tabuľka:</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="48"/> @@ -5033,22 +5104,22 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="62"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation>Stĺpce</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="77"/> <source>Local column</source> - <translation type="unfinished"></translation> + <translation>Lokálny stĺpec</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="90"/> <source>Foreign column</source> - <translation type="unfinished"></translation> + <translation>Cudzí stĺpec</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="126"/> <source>Reactions</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Reakcie</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="165"/> @@ -5058,22 +5129,22 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="183"/> <source>Named constraint</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Pomenovanie obmedzenia</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="190"/> <source>Constraint name</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Názov obmedzenia</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.cpp" line="53"/> <source>Pick the foreign column.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Vyberte cudzí stĺpec.</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.cpp" line="65"/> <source>Pick the foreign table.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Vyberte cudziu tabuľku.</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.cpp" line="66"/> @@ -5083,13 +5154,13 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tableforeignkeypanel.cpp" line="67"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Zadajte názov obmedzenia.</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/> <source>Foreign column</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Cudzí stĺpec</translation> </message> </context> <context> @@ -5097,69 +5168,69 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="32"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation>Stĺpce</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="59"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation>Stĺpec</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="84"/> <source>Collation</source> - <translation type="unfinished"></translation> + <translation>Porovnávanie</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="109"/> <source>Sort</source> - <translation type="unfinished"></translation> + <translation>Zoradiť</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="142"/> <source>Valid only for a single column with INTEGER data type</source> - <translation type="unfinished"></translation> + <translation>Platné len pre jeden stĺpec s datovým typom INTEGER</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="145"/> <source>Autoincrement</source> - <translation type="unfinished"></translation> + <translation>Autoinkrement</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="167"/> <source>Named constraint</source> - <translation type="unfinished"></translation> + <translation>Pomenovanie obmedzenia</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="174"/> <source>Constraint name</source> - <translation type="unfinished"></translation> + <translation>Názov obmedzenia</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="199"/> <source>On conflict</source> - <translation type="unfinished"></translation> + <translation>Pri konflikte</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> <source>Collate</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Porovnať</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> <source>Sort order</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>Zoradiť</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/> <source>Select at least one column.</source> - <translation type="unfinished"></translation> + <translation>Vyberte minimálne jeden stĺpec.</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>Zadajte názov obmedzenia.</translation> </message> </context> <context> @@ -5168,19 +5239,19 @@ but it's okay to use them anyway.</source> <location filename="../windows/tablestructuremodel.cpp" line="299"/> <source>Name</source> <comment>table structure columns</comment> - <translation type="unfinished"></translation> + <translation>Názov</translation> </message> <message> <location filename="../windows/tablestructuremodel.cpp" line="301"/> <source>Data type</source> <comment>table structure columns</comment> - <translation type="unfinished"></translation> + <translation>Datový typ</translation> </message> <message> <location filename="../windows/tablestructuremodel.cpp" line="315"/> <source>Default value</source> <comment>table structure columns</comment> - <translation type="unfinished"></translation> + <translation>Prednastavená hodnota</translation> </message> </context> <context> @@ -5188,164 +5259,164 @@ but it's okay to use them anyway.</source> <message> <location filename="../windows/tablewindow.ui" line="36"/> <source>Structure</source> - <translation type="unfinished"></translation> + <translation>Štruktúra</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="60"/> <source>Table name:</source> - <translation type="unfinished"></translation> + <translation>Názov tabuľky:</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="184"/> <source>Data</source> - <translation type="unfinished"></translation> + <translation>Dáta</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="201"/> <source>Constraints</source> - <translation type="unfinished"></translation> + <translation>Obmedzovače</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="215"/> <source>Indexes</source> - <translation type="unfinished"></translation> + <translation>Indexy</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="244"/> <source>Triggers</source> - <translation type="unfinished"></translation> + <translation>Spúšťače</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="276"/> <source>DDL</source> - <translation type="unfinished"></translation> + <translation>DDL</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="180"/> <source>Export table</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Exportovať tabuľku</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="181"/> <source>Import data to table</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Importovať dáta do tabuľky</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="182"/> <source>Populate table</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Naplniť tabuľku</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="196"/> <source>Refresh structure</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Obnoviť štruktúru</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="198"/> <source>Commit structure changes</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny štruktúr</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="199"/> <source>Rollback structure changes</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vrátiť späť zmeny štruktúr</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="200"/> <source>Add column</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Pridať stĺpec</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="201"/> <source>Edit column</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Upraviť stĺpec</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="202"/> <location filename="../windows/tablewindow.cpp" line="289"/> <source>Delete column</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vymazať stĺpec</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="203"/> <source>Move column up</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Posunúť stĺpec hore</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="204"/> <source>Move column down</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Posunúť stĺpec dole</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="210"/> <source>Create similar table</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vytvoriť rovnakú tabuľku</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="211"/> <source>Reset autoincrement value</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Resetovať hodnotu autoinkrementu</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="214"/> <source>Add table constraint</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Pridať obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="215"/> <source>Edit table constraint</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Upraviť obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="216"/> <source>Delete table constraint</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vymazať obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="217"/> <source>Move table constraint up</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Posunúť obmedzenie hore</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="218"/> <source>Move table constraint down</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Posunúť obmedzenie dole</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="220"/> <source>Add table primary key</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Pridať primárny kľúč</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="221"/> <source>Add table foreign key</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Pridať cudzí kľúč</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="222"/> <source>Add table unique constraint</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Pridať jedinečné obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="223"/> @@ -5357,55 +5428,55 @@ but it's okay to use them anyway.</source> <location filename="../windows/tablewindow.cpp" line="241"/> <source>Refresh index list</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Obnoviť zoznam indexov</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="243"/> <source>Create index</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vytvoriť index</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="244"/> <source>Edit index</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Upraviť index</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="245"/> <source>Delete index</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vymazať index</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="251"/> <source>Refresh trigger list</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Obnoviť zoznam spúšťačov</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="253"/> <source>Create trigger</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vytvoriť spúšťač</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="254"/> <source>Edit trigger</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Upraviť spúšťač</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="255"/> <source>Delete trigger</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vymazať spúšťač</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="288"/> <source>Are you sure you want to delete column '%1'?</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať stĺpec '%1' ?</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="316"/> @@ -5455,17 +5526,17 @@ Would you like to proceed?</source> <message> <location filename="../windows/tablewindow.cpp" line="846"/> <source>Reset autoincrement</source> - <translation type="unfinished"></translation> + <translation>Resetovať autoinkrement</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="846"/> <source>Are you sure you want to reset autoincrement value for table '%1'?</source> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete zresetovať hodnotu autoinkrementu pre tabuľku %1 ?</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="853"/> <source>An error occurred while trying to reset autoincrement value for table '%1': %2</source> - <translation type="unfinished"></translation> + <translation>Vyskytla sa chyba pri pokuse o zresetovanie hodnoty autoinkrementu pre tebuľku '%1': %2</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="855"/> @@ -5502,13 +5573,13 @@ Are you sure you want to create a table with blank name?</source> <location filename="../windows/tablewindow.cpp" line="1114"/> <source>Are you sure you want to delete table constraint '%1'?</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Ste si istý, že chcete vymazať obmedzenie '%1'?</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1115"/> <source>Delete constraint</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation>Vymazať obmedzenie</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1169"/> @@ -5523,41 +5594,42 @@ Are you sure you want to create a table with blank name?</source> <message> <location filename="../windows/tablewindow.cpp" line="1214"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation>Nepotvrdené zmeny</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1215"/> <source>There are uncommited structure modifications. You cannot browse or edit data until you have table structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> - <translation type="unfinished"></translation> + <translation>Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná. +Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1218"/> <source>Go back to structure tab</source> - <translation type="unfinished"></translation> + <translation>Choď späť na záložku štruktúr</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1218"/> <source>Commit modifications and browse data.</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny a prezerať dáta.</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1368"/> <source>Name</source> <comment>table window indexes</comment> - <translation type="unfinished"></translation> + <translation>Názov</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1369"/> <source>Unique</source> <comment>table window indexes</comment> - <translation type="unfinished"></translation> + <translation>Jedinečný</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1370"/> <source>Columns</source> <comment>table window indexes</comment> - <translation type="unfinished"></translation> + <translation>Stĺpce</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1371"/> @@ -5566,43 +5638,43 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation>Názov</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation>Udalosť</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation>Podmienka</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation>Detaily</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> - <translation type="unfinished"></translation> + <translation>V okne tabuľky %1 sú nepotvrdené zmeny štruktúry a dáta.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> - <translation type="unfinished"></translation> + <translation>V okne tabuľky %1 sú nepotvrdené dáta.</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> - <translation type="unfinished"></translation> + <translation>V okne tabuľky %1 sú nepotvrdené zmeny štruktúry.</translation> </message> </context> <context> @@ -5624,17 +5696,17 @@ Do you want to commit the structure, or do you want to go back to the structure <location filename="../dialogs/triggerdialog.ui" line="14"/> <location filename="../dialogs/triggerdialog.ui" line="24"/> <source>Trigger</source> - <translation type="unfinished"></translation> + <translation>Spúšťač</translation> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="30"/> <source>On table:</source> - <translation type="unfinished"></translation> + <translation>Na tabuľke:</translation> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="40"/> <source>Action:</source> - <translation type="unfinished"></translation> + <translation>Akcia:</translation> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="56"/> @@ -5655,12 +5727,12 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../dialogs/triggerdialog.ui" line="73"/> <source>Trigger name:</source> - <translation type="unfinished"></translation> + <translation>Názov spúšťača:</translation> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="80"/> <source>When:</source> - <translation type="unfinished"></translation> + <translation>Kedy:</translation> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="87"/> @@ -5675,7 +5747,7 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../dialogs/triggerdialog.ui" line="104"/> <source>Code:</source> - <translation type="unfinished"></translation> + <translation>Kód:</translation> </message> <message> <location filename="../dialogs/triggerdialog.ui" line="111"/> @@ -5685,36 +5757,36 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../dialogs/triggerdialog.ui" line="132"/> <source>DDL</source> - <translation type="unfinished"></translation> + <translation>DDL</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">Zadajte platnú podmienku.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> - <translation type="unfinished"></translation> + <translation>Zadajte validný kód spúšťača.</translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation type="unfinished"></translation> @@ -5748,27 +5820,27 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../windows/viewwindow.ui" line="36"/> <source>Query</source> - <translation type="unfinished"></translation> + <translation>Dotaz</translation> </message> <message> <location filename="../windows/viewwindow.ui" line="60"/> <source>View name:</source> - <translation type="unfinished"></translation> + <translation>Názov pohľadu:</translation> </message> <message> <location filename="../windows/viewwindow.ui" line="77"/> <source>Data</source> - <translation type="unfinished"></translation> + <translation>Dáta</translation> </message> <message> <location filename="../windows/viewwindow.ui" line="87"/> <source>Triggers</source> - <translation type="unfinished"></translation> + <translation>Spúšťače</translation> </message> <message> <location filename="../windows/viewwindow.ui" line="119"/> <source>DDL</source> - <translation type="unfinished"></translation> + <translation>DDL</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="115"/> @@ -5795,43 +5867,43 @@ Do you want to commit the structure, or do you want to go back to the structure <location filename="../windows/viewwindow.cpp" line="275"/> <source>Refresh the view</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Obnoviť pohľad</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="277"/> <source>Commit the view changes</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny v pohľade</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="278"/> <source>Rollback the view changes</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Vrátiť späť zmeny v pohľade</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="285"/> <source>Refresh trigger list</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Obnoviť zoznam spúšťačov</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="287"/> <source>Create new trigger</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Vytvoriť nový spúšťač</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="288"/> <source>Edit selected trigger</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Upraviť vybraný spúšťač</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="289"/> <source>Delete selected trigger</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Vymazať vybraný spúšťač</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="310"/> @@ -5856,35 +5928,36 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../windows/viewwindow.cpp" line="466"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation>Nepotvrdené zmeny</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="467"/> <source>There are uncommited structure modifications. You cannot browse or edit data until you have the view structure settled. Do you want to commit the structure, or do you want to go back to the structure tab?</source> - <translation type="unfinished"></translation> + <translation>Sú tu nepotvrdené zmeny štruktúr. Nemôžte prezerať alebo editovať dáta dokiaľ nebude štruktúra tabuľky jasná. +Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="470"/> <source>Go back to structure tab</source> - <translation type="unfinished"></translation> + <translation>Choď späť na záložku štruktúr</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="470"/> <source>Commit modifications and browse data.</source> - <translation type="unfinished"></translation> + <translation>Potvrdiť zmeny a prezerať dáta.</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="528"/> <source>Could not commit view changes. Error message: %1</source> <comment>view window</comment> - <translation type="unfinished"></translation> + <translation>Nemôžem potvrdiť zmeny v pohľade. Chyba: %1</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="606"/> <source>Name</source> <comment>view window triggers</comment> - <translation type="unfinished"></translation> + <translation>Názov</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="607"/> @@ -5896,13 +5969,13 @@ Do you want to commit the structure, or do you want to go back to the structure <location filename="../windows/viewwindow.cpp" line="608"/> <source>Condition</source> <comment>view window triggers</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Podmienka</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="609"/> <source>Details</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation>Detaily</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="649"/> diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm Binary files differindex be651ee..8879190 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.qm diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts index a0dd959..9a6bd32 100644 --- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts +++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts @@ -1,92 +1,92 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>AboutDialog</name> <message> <location filename="../dialogs/aboutdialog.ui" line="14"/> <source>About SQLiteStudio and licenses</source> - <translation type="unfinished"></translation> + <translation>关于 SQLiteStudio 和许可协议</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="24"/> <source>About</source> - <translation type="unfinished"></translation> + <translation>关于</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="30"/> <source><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">Free, open-source, cross-platform SQLite database manager.<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">Author and active maintainer:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></source> - <translation type="unfinished"></translation> + <translation><html><head/><body><p align="center"><span style=" font-size:11pt; font-weight:600;">SQLiteStudio v%1</span></p><p align="center">自由,开源,跨平台的 SQLite 数据库管理工具。<br/><a href="http://sqlitestudio.pl"><span style=" text-decoration: underline; color:#0000ff;">http://sqlitestudio.pl</span></a><br/></p><p align="center">%2<br/></p><p align="center">作者和活跃维护人:<br/>SalSoft (<a href="http://salsoft.com.pl"><span style=" text-decoration: underline; color:#0000ff;">http://salsoft.com.pl</span></a>)<br/></p></body></html></translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="41"/> <source>Licenses</source> - <translation type="unfinished"></translation> + <translation>许可协议</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="55"/> <source>Environment</source> - <translation type="unfinished"></translation> + <translation>环境</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="61"/> <source>Icon directories</source> - <translation type="unfinished"></translation> + <translation>图标目录</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="81"/> <source>Form directories</source> - <translation type="unfinished"></translation> + <translation>表格目录</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="101"/> <source>Plugin directories</source> - <translation type="unfinished"></translation> + <translation>插件目录</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="121"/> <source>Application directory</source> - <translation type="unfinished"></translation> + <translation>应用程序目录</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="172"/> <source>SQLite 3 version:</source> - <translation type="unfinished"></translation> + <translation>SQLite 3 版本:</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="111"/> <source>Configuration directory</source> - <translation type="unfinished"></translation> + <translation>配置文件目录</translation> </message> <message> <location filename="../dialogs/aboutdialog.ui" line="148"/> <source>Qt version:</source> - <translation type="unfinished"></translation> + <translation>Qt版本:</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="39"/> <source>Portable distribution.</source> - <translation type="unfinished"></translation> + <translation>便携版。</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="42"/> <source>MacOS X application boundle distribution.</source> - <translation type="unfinished"></translation> + <translation>MacOS X 应用版。</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="45"/> <source>Operating system managed distribution.</source> - <translation type="unfinished"></translation> + <translation>系统提供版。</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="89"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>复制</translation> </message> <message> <location filename="../dialogs/aboutdialog.cpp" line="102"/> <source><h3>Table of contents:</h3><ol>%2</ol></source> - <translation type="unfinished"></translation> + <translation><h3>目录:</h3><ol>%2</ol></translation> </message> </context> <context> @@ -94,156 +94,158 @@ <message> <location filename="../dialogs/bugdialog.ui" line="14"/> <source>Bugs and ideas</source> - <translation type="unfinished"></translation> + <translation>Bugs 和想法</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="20"/> <source>Reporter</source> - <translation type="unfinished"></translation> + <translation>上报人</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="36"/> <source>E-mail address</source> - <translation type="unfinished"></translation> + <translation>E-mail 地址</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="43"/> <location filename="../dialogs/bugdialog.cpp" line="121"/> <source>Log in</source> - <translation type="unfinished"></translation> + <translation>登录</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="68"/> <source>Short description</source> - <translation type="unfinished"></translation> + <translation>简要描述</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="80"/> <source>Detailed description</source> - <translation type="unfinished"></translation> + <translation>详细描述</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="92"/> <source>Show more details</source> - <translation type="unfinished"></translation> + <translation>更多详细信息</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="119"/> <source>SQLiteStudio version</source> - <translation type="unfinished"></translation> + <translation>SQLiteStudio 版本</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="131"/> <source>Operating system</source> - <translation type="unfinished"></translation> + <translation>操作系统</translation> </message> <message> <location filename="../dialogs/bugdialog.ui" line="143"/> <source>Loaded plugins</source> - <translation type="unfinished"></translation> + <translation>已加载插件</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="39"/> <source>Send</source> - <translation type="unfinished"></translation> + <translation>发送</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="66"/> <source>You can see all your reported bugs and ideas by selecting menu '%1' and then '%2'.</source> - <translation type="unfinished"></translation> + <translation>您可以通过选择菜单 “1%”下的“%2”来查看全部您报告的bugs和想法。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="74"/> <source>A bug report sent successfully.</source> - <translation type="unfinished"></translation> + <translation>Bug报告提交成功。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="79"/> <source>An error occurred while sending a bug report: %1 %2</source> - <translation type="unfinished"></translation> + <translation>提交bug报告时发生了错误:%1 +%2</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="80"/> <location filename="../dialogs/bugdialog.cpp" line="94"/> <source>You can retry sending. The contents will be restored when you open a report dialog after an error like this.</source> - <translation type="unfinished"></translation> + <translation>您可以重新发送试试。当你在发生错误后重新打开上报对话框时,你之前输入的内容将会恢复。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="88"/> <source>An idea proposal sent successfully.</source> - <translation type="unfinished"></translation> + <translation>提交建议成功。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="93"/> <source>An error occurred while sending an idea proposal: %1 %2</source> - <translation type="unfinished"></translation> + <translation>在提交建议时发生错误:%1 +%2</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="105"/> <source>A bug report</source> - <translation type="unfinished"></translation> + <translation>Bug报告</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="106"/> <source>Describe problem in few words</source> - <translation type="unfinished"></translation> + <translation>简要描述一下问题</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="107"/> <source>Describe problem and how to reproduce it</source> - <translation type="unfinished"></translation> + <translation>描述一下问题,怎么复现问题</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="111"/> <source>A new feature idea</source> - <translation type="unfinished"></translation> + <translation>新功能建议</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="112"/> <source>A title for your idea</source> - <translation type="unfinished"></translation> + <translation>您的建议题目</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="113"/> <source>Describe your idea in more details</source> - <translation type="unfinished"></translation> + <translation>仔细描述一下您的想法</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="118"/> <source>Reporting as an unregistered user, using e-mail address.</source> - <translation type="unfinished"></translation> + <translation>使用e-mail地址以未注册用户身份上报。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="127"/> <source>Reporting as a registered user.</source> - <translation type="unfinished"></translation> + <translation>作为已注册用户报告。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="131"/> <source>Log out</source> - <translation type="unfinished"></translation> + <translation>退出</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="144"/> <source>Providing true email address will make it possible to contact you regarding your report. To learn more, press 'help' button on the right side.</source> - <translation type="unfinished"></translation> + <translation>使用真实email地址有助于您上报后联系到您。如果想了解更多,请点击右方的“帮助”按钮。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="146"/> <source>Enter vaild e-mail address, or log in.</source> - <translation type="unfinished"></translation> + <translation>输入正确的e-mail地址,或者登录。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="148"/> <source>Short description requires at least 10 characters, but not more than 100. Longer description can be entered in the field below.</source> - <translation type="unfinished"></translation> + <translation>简要描述至少10个字符,但不超过100个字符。更详细的描述内容请在下面的区域填写。</translation> </message> <message> <location filename="../dialogs/bugdialog.cpp" line="151"/> <source>Long description requires at least 30 characters.</source> - <translation type="unfinished"></translation> + <translation>详细描述内容至少30个字符。</translation> </message> </context> <context> @@ -252,39 +254,39 @@ <location filename="../windows/bugreporthistorywindow.ui" line="36"/> <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Title</source> - <translation type="unfinished"></translation> + <translation>标题</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.ui" line="41"/> <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>Reported at</source> - <translation type="unfinished"></translation> + <translation>报告时间</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.ui" line="46"/> <location filename="../windows/bugreporthistorywindow.cpp" line="119"/> <source>URL</source> - <translation type="unfinished"></translation> + <translation>URL</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.cpp" line="45"/> <source>Reports history</source> - <translation type="unfinished"></translation> + <translation>报告历史</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.cpp" line="50"/> <source>Clear reports history</source> - <translation type="unfinished"></translation> + <translation>清空报告历史</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.cpp" line="51"/> <source>Delete selected entry</source> - <translation type="unfinished"></translation> + <translation>删除选中项</translation> </message> <message> <location filename="../windows/bugreporthistorywindow.cpp" line="90"/> <source>Invalid response from server.</source> - <translation type="unfinished"></translation> + <translation>无效的服务器回应。</translation> </message> </context> <context> @@ -292,57 +294,59 @@ <message> <location filename="../dialogs/bugreportlogindialog.ui" line="14"/> <source>Log in</source> - <translation type="unfinished"></translation> + <translation>登录</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="20"/> <source>Credentials</source> - <translation type="unfinished"></translation> + <translation>认证信息</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="26"/> <source>Login:</source> - <translation type="unfinished"></translation> + <translation>登录名:</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="36"/> <source>Password:</source> - <translation type="unfinished"></translation> + <translation>密码:</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="53"/> <source>Validation</source> - <translation type="unfinished"></translation> + <translatorcomment>这里不是很确认。Not sure about this translation.</translatorcomment> + <translation>确认</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="59"/> <source>Validate</source> - <translation type="unfinished"></translation> + <translatorcomment>not sure about this translation</translatorcomment> + <translation>确认</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.ui" line="73"/> <source>Validation result message</source> - <translation type="unfinished"></translation> + <translation>验证信息</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/> <source>Abort</source> - <translation type="unfinished"></translation> + <translation>中止</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="65"/> <source>A login must be at least 2 characters long.</source> - <translation type="unfinished"></translation> + <translation>登录名至少2个字符。</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/> <source>A password must be at least 5 characters long.</source> - <translation type="unfinished"></translation> + <translation>密码至少5个字符。</translation> </message> <message> <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/> <source>Valid</source> - <translation type="unfinished"></translation> + <translation>已验证</translation> </message> </context> <context> @@ -350,87 +354,87 @@ <message> <location filename="../windows/collationseditor.ui" line="75"/> <source>Filter collations</source> - <translation type="unfinished"></translation> + <translation>过滤器排序规则</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="110"/> <source>Collation name:</source> - <translation type="unfinished"></translation> + <translation>排序规则名称:</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="120"/> <source>Implementation language:</source> - <translation type="unfinished"></translation> + <translation>实现语言:</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="152"/> <source>Databases</source> - <translation type="unfinished"></translation> + <translation>数据库</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="158"/> <source>Register in all databases</source> - <translation type="unfinished"></translation> + <translation>在所有数据库中注册</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="165"/> <source>Register in following databases:</source> - <translation type="unfinished"></translation> + <translation>在下列数据库中注册:</translation> </message> <message> <location filename="../windows/collationseditor.ui" line="186"/> <source>Implementation code:</source> - <translation type="unfinished"></translation> + <translation>实现代码:</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="52"/> <source>Collations editor</source> - <translation type="unfinished"></translation> + <translation>排序编辑器</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="57"/> <source>Commit all collation changes</source> - <translation type="unfinished"></translation> + <translation>提交全部排序规则更改</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="58"/> <source>Rollback all collation changes</source> - <translation type="unfinished"></translation> + <translation>回滚所有排序更改</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="60"/> <source>Create new collation</source> - <translation type="unfinished"></translation> + <translation>创建新排序规则</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="61"/> <source>Delete selected collation</source> - <translation type="unfinished"></translation> + <translation>删除选中排序规则</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="63"/> <source>Editing collations manual</source> - <translation type="unfinished"></translation> + <translation>手动更改排序规则</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="283"/> <source>Enter a non-empty, unique name of the collation.</source> - <translation type="unfinished"></translation> + <translation>为排序规则输入一个非空唯一的名称。</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="291"/> <source>Pick the implementation language.</source> - <translation type="unfinished"></translation> + <translation>选择实现语言。</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="294"/> <source>Enter a non-empty implementation code.</source> - <translation type="unfinished"></translation> + <translation>输入非空实现代码。</translation> </message> <message> <location filename="../windows/collationseditor.cpp" line="388"/> <source>Collations editor window has uncommited modifications.</source> - <translation type="unfinished"></translation> + <translation>排序规则编辑器存在未提交的改动。</translation> </message> </context> <context> @@ -438,7 +442,7 @@ <message> <location filename="../common/colorbutton.cpp" line="29"/> <source>Pick a color</source> - <translation type="unfinished"></translation> + <translation>选择一种颜色</translation> </message> </context> <context> @@ -446,22 +450,22 @@ <message> <location filename="../constraints/columncollatepanel.ui" line="41"/> <source>Collation name:</source> - <translation type="unfinished"></translation> + <translation>排序名称:</translation> </message> <message> <location filename="../constraints/columncollatepanel.ui" line="73"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>约束名:</translation> </message> <message> <location filename="../constraints/columncollatepanel.cpp" line="80"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>输入约束名称。</translation> </message> <message> <location filename="../constraints/columncollatepanel.cpp" line="81"/> <source>Enter a collation name.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">输入排序规则名称。</translation> </message> </context> <context> @@ -469,27 +473,27 @@ <message> <location filename="../constraints/columndefaultpanel.ui" line="20"/> <source>Default value:</source> - <translation type="unfinished"></translation> + <translation>默认值:</translation> </message> <message> <location filename="../constraints/columndefaultpanel.ui" line="35"/> <source>Named constraint:</source> - <translation type="unfinished"></translation> + <translation>已命名的约束:</translation> </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="39"/> <source>Enter a default value expression.</source> - <translation type="unfinished"></translation> + <translation>默认值表达式。</translation> </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="78"/> <source>Invalid default value expression: %1</source> - <translation type="unfinished"></translation> + <translation>无效的默认值表达式:%1</translation> </message> <message> <location filename="../constraints/columndefaultpanel.cpp" line="90"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>输入约束名:</translation> </message> </context> <context> @@ -497,173 +501,183 @@ <message> <location filename="../dialogs/columndialog.ui" line="14"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation>字段</translation> </message> <message> <location filename="../dialogs/columndialog.ui" line="23"/> <source>Name and type</source> - <translation type="unfinished"></translation> + <translation>名称和类型</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="35"/> + <source>Scale</source> + <translation type="unfinished">小数长度</translation> + </message> + <message> + <location filename="../dialogs/columndialog.ui" line="55"/> + <source>Precision</source> + <translation>精度</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="56"/> + <location filename="../dialogs/columndialog.ui" line="62"/> <source>Data type:</source> - <translation type="unfinished"></translation> + <translation>数据类型:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="63"/> + <location filename="../dialogs/columndialog.ui" line="69"/> <source>Column name:</source> - <translation type="unfinished"></translation> + <translation>字段名:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="73"/> + <location filename="../dialogs/columndialog.ui" line="79"/> <source>Size:</source> - <translation type="unfinished"></translation> + <translation>大小:</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="96"/> + <location filename="../dialogs/columndialog.ui" line="102"/> <source>Constraints</source> - <translation type="unfinished"></translation> + <translation>约束</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="109"/> + <location filename="../dialogs/columndialog.ui" line="115"/> <source>Unique</source> - <translation type="unfinished"></translation> + <translation>唯一</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="116"/> - <location filename="../dialogs/columndialog.ui" line="130"/> - <location filename="../dialogs/columndialog.ui" line="172"/> - <location filename="../dialogs/columndialog.ui" line="179"/> - <location filename="../dialogs/columndialog.ui" line="186"/> - <location filename="../dialogs/columndialog.ui" line="193"/> - <location filename="../dialogs/columndialog.ui" line="200"/> + <location filename="../dialogs/columndialog.ui" line="122"/> + <location filename="../dialogs/columndialog.ui" line="136"/> + <location filename="../dialogs/columndialog.ui" line="178"/> + <location filename="../dialogs/columndialog.ui" line="185"/> + <location filename="../dialogs/columndialog.ui" line="192"/> + <location filename="../dialogs/columndialog.ui" line="199"/> + <location filename="../dialogs/columndialog.ui" line="206"/> <source>Configure</source> - <translation type="unfinished"></translation> + <translation>配置</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="123"/> + <location filename="../dialogs/columndialog.ui" line="129"/> <source>Foreign Key</source> - <translation type="unfinished"></translation> + <translation>外键</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="137"/> + <location filename="../dialogs/columndialog.ui" line="143"/> <source>Collate</source> - <translation type="unfinished"></translation> + <translation>排序规则</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="144"/> + <location filename="../dialogs/columndialog.ui" line="150"/> <source>Not NULL</source> - <translation type="unfinished"></translation> + <translation>非空</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="151"/> + <location filename="../dialogs/columndialog.ui" line="157"/> <source>Check condition</source> - <translation type="unfinished"></translation> + <translation>条件</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="158"/> + <location filename="../dialogs/columndialog.ui" line="164"/> <source>Primary Key</source> - <translation type="unfinished"></translation> + <translation>主键</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="165"/> + <location filename="../dialogs/columndialog.ui" line="171"/> <source>Default</source> - <translation type="unfinished"></translation> + <translation>默认</translation> </message> <message> - <location filename="../dialogs/columndialog.ui" line="264"/> + <location filename="../dialogs/columndialog.ui" line="270"/> <source>Advanced mode</source> - <translation type="unfinished"></translation> + <translation>高级模式</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="83"/> <source>Add constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="84"/> <source>Edit constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>编辑约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="85"/> <location filename="../dialogs/columndialog.cpp" line="229"/> <source>Delete constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>删除约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="86"/> <source>Move constraint up</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>上移约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="87"/> <source>Move constraint down</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>下移约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="89"/> <source>Add a primary key</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加主键</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="90"/> <source>Add a foreign key</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加外键</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="91"/> <source>Add an unique constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加唯一约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="92"/> <source>Add a check constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加条件约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="93"/> <source>Add a not null constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加非空约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="94"/> <source>Add a collate constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加排序规则约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="95"/> <source>Add a default constraint</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>添加默认约束</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="228"/> <source>Are you sure you want to delete constraint '%1'?</source> <comment>column dialog</comment> - <translation type="unfinished"></translation> + <translation>您确定要删除约束“%1”吗?</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="290"/> <source>Correct the constraint's configuration.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">修正约束配置。</translation> </message> <message> <location filename="../dialogs/columndialog.cpp" line="293"/> <source>This constraint is not officially supported by SQLite 2, but it's okay to use it.</source> - <translation type="unfinished"></translation> + <translation>SQLite2没有官方支持该约束,但是可以使用。</translation> </message> </context> <context> @@ -672,19 +686,19 @@ but it's okay to use it.</source> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="328"/> <source>Type</source> <comment>column dialog constraints</comment> - <translation type="unfinished"></translation> + <translation>类型</translation> </message> <message> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="330"/> <source>Name</source> <comment>column dialog constraints</comment> - <translation type="unfinished"></translation> + <translation>名称</translation> </message> <message> <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="332"/> <source>Details</source> <comment>column dialog constraints</comment> - <translation type="unfinished"></translation> + <translation>详情</translation> </message> </context> <context> @@ -692,7 +706,7 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="29"/> <source>Foreign table:</source> - <translation type="unfinished"></translation> + <translation></translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="45"/> @@ -717,7 +731,7 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnforeignkeypanel.ui" line="122"/> <source>Constraint name</source> - <translation type="unfinished"></translation> + <translation>约束名称</translation> </message> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="40"/> @@ -732,7 +746,7 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnforeignkeypanel.cpp" line="42"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>输入约束名称</translation> </message> </context> <context> @@ -745,7 +759,7 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="48"/> <source>Sort order:</source> - <translation type="unfinished"></translation> + <translation>排序:</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="83"/> @@ -755,7 +769,7 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnprimarykeypanel.ui" line="111"/> <source>On conflict:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">冲突:</translation> </message> <message> <location filename="../constraints/columnprimarykeypanel.cpp" line="87"/> @@ -766,7 +780,7 @@ but it's okay to use it.</source> <location filename="../constraints/columnprimarykeypanel.cpp" line="103"/> <source>Autoincrement (only for %1 type columns)</source> <comment>column primary key</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">Autoincrement (只能%1类型的字段才能有该属性)</translation> </message> </context> <context> @@ -779,12 +793,12 @@ but it's okay to use it.</source> <message> <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/> <source>On conflict:</source> - <translation type="unfinished"></translation> + <translation>冲突:</translation> </message> <message> <location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/> <source>Enter a name of the constraint.</source> - <translation type="unfinished"></translation> + <translation>输入约束名。</translation> </message> </context> <context> @@ -793,49 +807,49 @@ but it's okay to use it.</source> <location filename="../completer/completerwindow.cpp" line="159"/> <source>Column: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>字段:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="161"/> <source>Table: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>表:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="163"/> <source>Index: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>索引:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="165"/> <source>Trigger: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>触发器:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="167"/> <source>View: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>视图:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="169"/> <source>Database: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>数据库:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="181"/> <source>Keyword: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>关键字:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="183"/> <source>Function: %1</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>函数:%1</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="185"/> @@ -847,19 +861,19 @@ but it's okay to use it.</source> <location filename="../completer/completerwindow.cpp" line="187"/> <source>String</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>字符串</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="189"/> <source>Number</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>数值</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="191"/> <source>Binary data</source> <comment>completer statusbar</comment> - <translation type="unfinished"></translation> + <translation>二进制数据</translation> </message> <message> <location filename="../completer/completerwindow.cpp" line="193"/> @@ -900,144 +914,144 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="128"/> <source>Look & feel</source> - <translation type="unfinished"></translation> + <translation>外观</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="139"/> <source>Style</source> - <translation type="unfinished"></translation> + <translation>风格</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="151"/> <source>Fonts</source> - <translation type="unfinished"></translation> + <translation>字体</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="163"/> <source>Colors</source> - <translation type="unfinished"></translation> + <translation>颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="176"/> <source>Plugins</source> - <translation type="unfinished"></translation> + <translation>插件</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="187"/> <source>Code formatters</source> - <translation type="unfinished"></translation> + <translation type="unfinished">代码格式化</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="196"/> <source>Data browsing</source> - <translation type="unfinished"></translation> + <translation>浏览数据</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="207"/> <source>Data editors</source> - <translation type="unfinished"></translation> + <translation>数据编辑器</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="237"/> <source>Data browsing and editing</source> - <translation type="unfinished"></translation> + <translation>流量和编辑数据</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="243"/> <source>Number of data rows per page:</source> - <translation type="unfinished"></translation> + <translation>每页的行数:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="269"/> <location filename="../dialogs/configdialog.ui" line="279"/> <source><p>When the data is read into grid view columns width is automatically adjusted. This value limits the initial width for the adjustment, but user can still resize the column manually over this limit.</p></source> - <translation type="unfinished"></translation> + <translation><p>在以列表方式显示数据时,列宽度会自动调整。该值控制初始列宽度,之后您可以手动调整列宽度,不受此限制。</p></translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="272"/> <source>Limit initial data column width to (in pixels):</source> - <translation type="unfinished"></translation> + <translation>限制宽度(单位:像素):</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="328"/> <source>Data types</source> - <translation type="unfinished"></translation> + <translation>数据类型</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="366"/> <source>Available editors:</source> - <translation type="unfinished"></translation> + <translation>可用的编辑器:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="382"/> <source>Editors selected for this data type:</source> - <translation type="unfinished"></translation> + <translation>已选的该数据类型编辑器:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="418"/> <source>Schema editing</source> - <translation type="unfinished"></translation> + <translation>架构编辑</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="430"/> <source>Number of DDL changes kept in history.</source> - <translation type="unfinished"></translation> + <translation>数据库定义(DDL)的更改历史记录数量。</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="443"/> <source>DDL history size:</source> - <translation type="unfinished"></translation> + <translation>数据库定义(DDL)历史大小:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="450"/> <source>Don't show DDL preview dialog when commiting schema changes</source> - <translation type="unfinished"></translation> + <translation>当提交schema变动时不显示数据库定义(DDL)预览对话框</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="463"/> <source>SQL queries</source> - <translation type="unfinished"></translation> + <translation>SQL查询</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="475"/> <location filename="../dialogs/configdialog.ui" line="488"/> <source>Number of queries kept in the history.</source> - <translation type="unfinished"></translation> + <translation>查询历史记录数量。</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="491"/> <source>History size:</source> - <translation type="unfinished"></translation> + <translation>历史大小:</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="498"/> <source><p>If there is more than one query in the SQL editor window, then (if this option is enabled) only a single query will be executed - the one under the keyboard insertion cursor. Otherwise all queries will be executed. You can always limit queries to be executed by selecting those queries before calling to execute.</p></source> - <translation type="unfinished"></translation> + <translation><p>如果SQL编辑器中有多个语句,如果启用该选项,只执行光标下的语句;反之则执行全部语句。另外您可以选择需要执行的语句来执行</p></translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="501"/> <source>Execute only the query under the cursor</source> - <translation type="unfinished"></translation> + <translation>只执行光标下的语句</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="514"/> <source>Updates</source> - <translation type="unfinished"></translation> + <translation>更新</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="520"/> <source>Automatically check for updates at startup</source> - <translation type="unfinished"></translation> + <translation>在启动时自己检查更新</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="533"/> <source>Session</source> - <translation type="unfinished"></translation> + <translation>会话</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="539"/> <source>Restore last session (active MDI windows) after startup</source> - <translation type="unfinished"></translation> + <translation>启动后恢复上一次会话。</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="581"/> @@ -1052,38 +1066,38 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="627"/> <source>Key combination</source> - <translation type="unfinished"></translation> + <translation>按键编定</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="656"/> <location filename="../dialogs/configdialog.ui" line="1206"/> <source>Language</source> - <translation type="unfinished"></translation> + <translation>语言</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="662"/> <source>Changing language requires application restart to take effect.</source> - <translation type="unfinished"></translation> + <translation>更改语言后,重启程序生效。</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="679"/> <source>Database list</source> - <translation type="unfinished"></translation> + <translation>数据库列表</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="685"/> <source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source> - <translation type="unfinished"></translation> + <translation>如果关闭,将会以 CREATE TABLE 中的顺序对列进行排序。</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="688"/> <source>Sort table columns alphabetically</source> - <translation type="unfinished"></translation> + <translation>按字母对列排序</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="698"/> <source>Expand tables node when connected to a database</source> - <translation type="unfinished"></translation> + <translation>当连接到数据库时,展开数据库节点。</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="708"/> @@ -1178,67 +1192,67 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="979"/> <source>Preview</source> - <translation type="unfinished"></translation> + <translation>预览</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="989"/> <source>Enabled</source> - <translation type="unfinished"></translation> + <translation>已启用</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1162"/> <source>Disabled</source> - <translation type="unfinished"></translation> + <translation>已禁用</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1211"/> <source>Active formatter plugin</source> - <translation type="unfinished"></translation> + <translation>启用格式化插件</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1249"/> <source>SQL editor font</source> - <translation type="unfinished"></translation> + <translation>SQL编辑器字体</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1265"/> <source>Database list font</source> - <translation type="unfinished"></translation> + <translation>数据库字体</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1281"/> <source>Database list additional label font</source> - <translation type="unfinished"></translation> + <translation>数据库额外标签字体</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1297"/> <source>Data view font</source> - <translation type="unfinished"></translation> + <translation>数据浏览字体</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1313"/> <source>Status field font</source> - <translation type="unfinished"></translation> + <translation>状态栏字体</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1371"/> <source>SQL editor colors</source> - <translation type="unfinished"></translation> + <translation>SQL编辑器颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1377"/> <source>Current line background</source> - <translation type="unfinished"></translation> + <translation>当前行的背景色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1384"/> <source><p>SQL strings are enclosed with single quote characters.</p></source> - <translation type="unfinished"></translation> + <translation><p>单引号内的SQL字符串</p></translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1387"/> <source>String foreground</source> - <translation type="unfinished"></translation> + <translation>字符串颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1490"/> @@ -1263,32 +1277,32 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="1526"/> <source>BLOB value foreground</source> - <translation type="unfinished"></translation> + <translation>BLOB值的颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1533"/> <source>Regular foreground</source> - <translation type="unfinished"></translation> + <translation type="unfinished">背景色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1540"/> <source>Line numbers area background</source> - <translation type="unfinished"></translation> + <translation>行号的背景色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1563"/> <source>Keyword foreground</source> - <translation type="unfinished"></translation> + <translation>关键字的颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1570"/> <source>Number foreground</source> - <translation type="unfinished"></translation> + <translation>数字颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1577"/> <source>Comment foreground</source> - <translation type="unfinished"></translation> + <translation>注释颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1616"/> @@ -1328,17 +1342,17 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="1703"/> <source>NULL value foreground</source> - <translation type="unfinished"></translation> + <translation>NULL值的颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1726"/> <source>Deleted row background</source> - <translation type="unfinished"></translation> + <translation>已删除行的背景色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1752"/> <source>Database list colors</source> - <translation type="unfinished"></translation> + <translation>数据库列表颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1758"/> @@ -1358,47 +1372,47 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.ui" line="1793"/> <source>Information message foreground</source> - <translation type="unfinished"></translation> + <translation>信息颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1816"/> <source>Warning message foreground</source> - <translation type="unfinished"></translation> + <translation>警告信息颜色</translation> </message> <message> <location filename="../dialogs/configdialog.ui" line="1839"/> <source>Error message foreground</source> - <translation type="unfinished"></translation> + <translation>错误信息颜色</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="765"/> <source>Description:</source> <comment>plugin details</comment> - <translation type="unfinished"></translation> + <translation>描述:</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="766"/> <source>Category:</source> <comment>plugin details</comment> - <translation type="unfinished"></translation> + <translation>分类:</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="767"/> <source>Version:</source> <comment>plugin details</comment> - <translation type="unfinished"></translation> + <translation>版本:</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="768"/> <source>Author:</source> <comment>plugin details</comment> - <translation type="unfinished"></translation> + <translation>作者:</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="770"/> <source>Internal name:</source> <comment>plugin details</comment> - <translation type="unfinished"></translation> + <translation>内部名字:</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="771"/> @@ -1415,7 +1429,7 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.cpp" line="776"/> <source>Plugin details</source> - <translation type="unfinished"></translation> + <translation>插件详情</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1177"/> @@ -1431,27 +1445,27 @@ but it's okay to use it.</source> <message> <location filename="../dialogs/configdialog.cpp" line="1254"/> <source>Details</source> - <translation type="unfinished"></translation> + <translation>详情</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1266"/> <source>No plugins in this category.</source> - <translation type="unfinished"></translation> + <translation>该分类下没有插件。</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1362"/> <source>Add new data type</source> - <translation type="unfinished"></translation> + <translation>添加新的数据类型</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1366"/> <source>Rename selected data type</source> - <translation type="unfinished"></translation> + <translation>重命名选择的数据类型</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1370"/> <source>Delete selected data type</source> - <translation type="unfinished"></translation> + <translation>删除已选数据类型</translation> </message> <message> <location filename="../dialogs/configdialog.cpp" line="1374"/> @@ -1493,7 +1507,7 @@ but it's okay to use it.</source> <location filename="../dialogs/constraintdialog.cpp" line="62"/> <source>New constraint</source> <comment>constraint dialog</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">新约束</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="63"/> @@ -1505,7 +1519,7 @@ but it's okay to use it.</source> <location filename="../dialogs/constraintdialog.cpp" line="66"/> <source>Edit constraint</source> <comment>dialog window</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">编辑约束</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="67"/> @@ -1529,31 +1543,31 @@ but it's okay to use it.</source> <location filename="../dialogs/constraintdialog.cpp" line="178"/> <source>Unique</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">唯一</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="182"/> <source>Not NULL</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">非空</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="186"/> <source>Check</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">条件</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="190"/> <source>Collate</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">排序规则</translation> </message> <message> <location filename="../dialogs/constraintdialog.cpp" line="194"/> <source>Default</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">默认</translation> </message> </context> <context> @@ -1562,7 +1576,7 @@ but it's okay to use it.</source> <location filename="../windows/constrainttabmodel.cpp" line="68"/> <source>Table</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">表</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="109"/> @@ -1580,19 +1594,19 @@ but it's okay to use it.</source> <location filename="../windows/constrainttabmodel.cpp" line="155"/> <source>Type</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">类型</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="157"/> <source>Details</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">详情</translation> </message> <message> <location filename="../windows/constrainttabmodel.cpp" line="159"/> <source>Name</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">名称</translation> </message> </context> <context> @@ -1818,91 +1832,115 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dialogs/dbdialog.ui" line="20"/> <source>Database</source> + <translation type="unfinished">数据库</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="26"/> + <source>Database type</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="43"/> + <location filename="../dialogs/dbdialog.ui" line="32"/> <source>Database driver</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="59"/> - <source>Name</source> + <location filename="../dialogs/dbdialog.ui" line="95"/> + <source>Generate automatically</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="66"/> - <source>Type</source> + <location filename="../dialogs/dbdialog.ui" line="108"/> + <source>Options</source> + <translation type="unfinished">选项</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="117"/> + <source>Permanent (keep it in configuration)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="78"/> - <source>Browse for database file on local computer</source> + <location filename="../dialogs/dbdialog.ui" line="161"/> + <source>Test connection</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="90"/> - <source>File</source> + <source>Name</source> + <translation type="obsolete">名称</translation> + </message> + <message> + <source>Type</source> + <translation type="obsolete">类型</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="51"/> + <source>Create new database file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="97"/> - <source>Generate name basing on file path</source> + <location filename="../dialogs/dbdialog.ui" line="42"/> + <location filename="../dialogs/dbdialog.cpp" line="149"/> + <source>File</source> + <translation type="unfinished">文件</translation> + </message> + <message> + <location filename="../dialogs/dbdialog.ui" line="79"/> + <source>Name (on the list)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="110"/> - <source>Permanent</source> + <location filename="../dialogs/dbdialog.ui" line="92"/> + <source>Generate name basing on file path</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="132"/> + <location filename="../dialogs/dbdialog.ui" line="114"/> <source><p>Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.</p></source> <extracomment>aasfd</extracomment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.ui" line="164"/> - <source>Test database connection</source> + <location filename="../dialogs/dbdialog.cpp" line="150"/> + <source>Browse for existing database file on local computer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="279"/> + <location filename="../dialogs/dbdialog.cpp" line="283"/> <source>Browse</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="454"/> + <location filename="../dialogs/dbdialog.cpp" line="488"/> <source>Enter an unique database name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="463"/> + <location filename="../dialogs/dbdialog.cpp" line="497"/> <source>This name is already in use. Please enter unique name.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="471"/> + <location filename="../dialogs/dbdialog.cpp" line="505"/> <source>Enter a database file path.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="478"/> + <location filename="../dialogs/dbdialog.cpp" line="512"/> <source>This database is already on the list under name: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="494"/> + <location filename="../dialogs/dbdialog.cpp" line="528"/> <source>Select a database type.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="552"/> - <source>The name will be auto-generated</source> + <location filename="../dialogs/dbdialog.cpp" line="585"/> + <source>Auto-generated</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/dbdialog.cpp" line="557"/> + <location filename="../dialogs/dbdialog.cpp" line="590"/> <source>Type the name</source> <translation type="unfinished"></translation> </message> @@ -1960,7 +1998,7 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dbtree/dbtree.ui" line="23"/> <source>Databases</source> - <translation type="unfinished"></translation> + <translation type="unfinished">数据库</translation> </message> <message> <location filename="../dbtree/dbtree.ui" line="67"/> @@ -1970,17 +2008,17 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dbtree/dbtree.cpp" line="99"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation type="unfinished">复制</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="100"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation type="unfinished">粘贴</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="101"/> <source>Select all</source> - <translation type="unfinished"></translation> + <translation type="unfinished">全选</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="102"/> @@ -2025,7 +2063,7 @@ Browsing other pages will be possible after the row counting is done.</source> <message> <location filename="../dbtree/dbtree.cpp" line="110"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation type="unfinished">导入</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="111"/> @@ -2171,7 +2209,7 @@ Browsing other pages will be possible after the row counting is done.</source> <location filename="../dbtree/dbtree.cpp" line="308"/> <location filename="../dbtree/dbtree.cpp" line="313"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation type="unfinished">数据库</translation> </message> <message> <location filename="../dbtree/dbtree.cpp" line="323"/> @@ -2318,123 +2356,123 @@ All objects from this group will be moved to parent group.</source> <context> <name>DbTreeModel</name> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="405"/> + <location filename="../dbtree/dbtreemodel.cpp" line="407"/> <source>Database: %1</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">数据库:%1</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="410"/> + <location filename="../dbtree/dbtreemodel.cpp" line="412"/> <source>Version:</source> <comment>dbtree tooltip</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">版本:</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="411"/> + <location filename="../dbtree/dbtreemodel.cpp" line="413"/> <source>File size:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="412"/> + <location filename="../dbtree/dbtreemodel.cpp" line="414"/> <source>Encoding:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="417"/> + <location filename="../dbtree/dbtreemodel.cpp" line="419"/> <source>Error details:</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="427"/> + <location filename="../dbtree/dbtreemodel.cpp" line="429"/> <source>Table : %1</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="450"/> + <location filename="../dbtree/dbtreemodel.cpp" line="452"/> <source>Columns (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="453"/> + <location filename="../dbtree/dbtreemodel.cpp" line="455"/> <source>Indexes (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="456"/> + <location filename="../dbtree/dbtreemodel.cpp" line="458"/> <source>Triggers (%1):</source> <comment>dbtree tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1071"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1073"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation type="unfinished">复制</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1072"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> <source>Move</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1074"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> <source>Include data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1075"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1077"/> <source>Include indexes</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1076"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> <source>Include triggers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1078"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1080"/> <source>Abort</source> - <translation type="unfinished"></translation> + <translation type="unfinished">中止</translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1154"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1156"/> <source>Referenced tables</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1155"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1157"/> <source>Do you want to include following referenced tables as well: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1164"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1166"/> <source>Name conflict</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1165"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1167"/> <source>Following object already exists in the target database. Please enter new, unique name, or press '%1' to abort the operation:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1178"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1180"/> <source>SQL statements conversion</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1186"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1188"/> <source>Following error occurred while converting SQL statements to the target SQLite version:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dbtree/dbtreemodel.cpp" line="1187"/> + <location filename="../dbtree/dbtreemodel.cpp" line="1189"/> <source>Would you like to ignore those errors and proceed?</source> <translation type="unfinished"></translation> </message> @@ -2477,7 +2515,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../debugconsole.ui" line="14"/> <source>SQLiteStudio Debug Console</source> - <translation type="unfinished"></translation> + <translation type="unfinished">SQLiteStudio 调试终端</translation> </message> </context> <context> @@ -2639,47 +2677,47 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/exportdialog.ui" line="14"/> <source>Export</source> - <translation type="unfinished"></translation> + <translation>导出</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="21"/> <source>What do you want to export?</source> - <translation type="unfinished"></translation> + <translation>您想导出什么?</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="36"/> <source>A database</source> - <translation type="unfinished"></translation> + <translation>数据库</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="46"/> <source>A single table</source> - <translation type="unfinished"></translation> + <translation>一张表</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="53"/> <source>Query results</source> - <translation type="unfinished"></translation> + <translation>查询结果</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="65"/> <source>Table to export</source> - <translation type="unfinished"></translation> + <translation>要导出的表</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="100"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation>数据库</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="107"/> <source>Table</source> - <translation type="unfinished"></translation> + <translation>表</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="124"/> <source>Options</source> - <translation type="unfinished"></translation> + <translation>选项</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="130"/> @@ -2689,17 +2727,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/exportdialog.ui" line="133"/> <source>Export table data</source> - <translation type="unfinished"></translation> + <translation>导出表里的数据</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="143"/> <source>Export table indexes</source> - <translation type="unfinished"></translation> + <translation>导出表的索引</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="153"/> <source>Export table triggers</source> - <translation type="unfinished"></translation> + <translation>导出表的触发器</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="175"/> @@ -2719,18 +2757,18 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/exportdialog.ui" line="212"/> <source>Select all</source> - <translation type="unfinished"></translation> + <translation>全选</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="219"/> <source>Deselect all</source> - <translation type="unfinished"></translation> + <translation>全不选</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="229"/> <location filename="../dialogs/exportdialog.ui" line="249"/> <source>Database:</source> - <translation type="unfinished"></translation> + <translation>数据库:</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="237"/> @@ -2745,102 +2783,102 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/exportdialog.ui" line="264"/> <source>Export format and options</source> - <translation type="unfinished"></translation> + <translation>导出格式和选项</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="318"/> <source>Export format</source> - <translation type="unfinished"></translation> + <translation>导出格式</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="330"/> <source>Output</source> - <translation type="unfinished"></translation> + <translation>输出</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="336"/> <source>Exported file path</source> - <translation type="unfinished"></translation> + <translation>导出文件路径</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="343"/> <source>Clipboard</source> - <translation type="unfinished"></translation> + <translation>剪贴板</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="357"/> <source>File</source> - <translation type="unfinished"></translation> + <translation>文件</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="382"/> <source>Exported text encoding:</source> - <translation type="unfinished"></translation> + <translation>导出编码:</translation> </message> <message> <location filename="../dialogs/exportdialog.ui" line="398"/> <source>Export format options</source> - <translation type="unfinished"></translation> + <translation>导出格式选项</translation> </message> <message> <location filename="../dialogs/exportdialog.cpp" line="51"/> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation>取消</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="141"/> - <location filename="../dialogs/exportdialog.cpp" line="165"/> - <location filename="../dialogs/exportdialog.cpp" line="188"/> + <location filename="../dialogs/exportdialog.cpp" line="149"/> + <location filename="../dialogs/exportdialog.cpp" line="174"/> + <location filename="../dialogs/exportdialog.cpp" line="197"/> <source>Select database to export.</source> - <translation type="unfinished"></translation> + <translation>选择要导出的数据库。</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="142"/> + <location filename="../dialogs/exportdialog.cpp" line="150"/> <source>Select table to export.</source> - <translation type="unfinished"></translation> + <translation>选择要导出的表。</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="166"/> + <location filename="../dialogs/exportdialog.cpp" line="175"/> <source>Enter valid query to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="189"/> + <location filename="../dialogs/exportdialog.cpp" line="198"/> <source>Select at least one object to export.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="212"/> + <location filename="../dialogs/exportdialog.cpp" line="221"/> <source>You must provide a file name to export to.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="219"/> + <location filename="../dialogs/exportdialog.cpp" line="228"/> <source>Path you provided is an existing directory. You cannot overwrite it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="225"/> + <location filename="../dialogs/exportdialog.cpp" line="234"/> <source>The directory '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="231"/> + <location filename="../dialogs/exportdialog.cpp" line="240"/> <source>The file '%1' exists and will be overwritten.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="402"/> + <location filename="../dialogs/exportdialog.cpp" line="417"/> <source>All files (*)</source> - <translation type="unfinished"></translation> + <translation type="unfinished">所有文件 (*)</translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="405"/> + <location filename="../dialogs/exportdialog.cpp" line="420"/> <source>Pick file to export to</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/exportdialog.cpp" line="694"/> + <location filename="../dialogs/exportdialog.cpp" line="709"/> <source>Internal error during export. This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> @@ -2851,7 +2889,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../common/fontedit.cpp" line="61"/> <source>Choose font</source> <comment>font configuration</comment> - <translation type="unfinished"></translation> + <translation>字体选择</translation> </message> </context> <context> @@ -2859,7 +2897,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../forms/sqlformatterplugin.ui" line="20"/> <source>Active SQL formatter plugin</source> - <translation type="unfinished"></translation> + <translation>激活SQL语句格式化插件</translation> </message> </context> <context> @@ -2928,7 +2966,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.ui" line="161"/> <source>Implementation language:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">实现语言:</translation> </message> <message> <location filename="../windows/functionseditor.ui" line="171"/> @@ -2948,17 +2986,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.ui" line="235"/> <source>Databases</source> - <translation type="unfinished"></translation> + <translation type="unfinished">数据库</translation> </message> <message> <location filename="../windows/functionseditor.ui" line="241"/> <source>Register in all databases</source> - <translation type="unfinished"></translation> + <translation type="unfinished">在所有数据库中注册</translation> </message> <message> <location filename="../windows/functionseditor.ui" line="248"/> <source>Register in following databases:</source> - <translation type="unfinished"></translation> + <translation type="unfinished">在下列数据库中注册:</translation> </message> <message> <location filename="../windows/functionseditor.ui" line="278"/> @@ -3049,7 +3087,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.cpp" line="422"/> <source>Pick the implementation language.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">选择实现语言。</translation> </message> <message> <location filename="../windows/functionseditor.cpp" line="426"/> @@ -3059,7 +3097,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/functionseditor.cpp" line="432"/> <source>Enter a non-empty implementation code.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">输入非空实现代码。</translation> </message> <message> <location filename="../windows/functionseditor.cpp" line="505"/> @@ -3088,12 +3126,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/importdialog.ui" line="36"/> <source>Table</source> - <translation type="unfinished"></translation> + <translation type="unfinished">表</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="43"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation type="unfinished">数据库</translation> </message> <message> <location filename="../dialogs/importdialog.ui" line="84"/> @@ -3108,60 +3146,70 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/importdialog.ui" line="141"/> <source>Options</source> - <translation type="unfinished"></translation> + <translation type="unfinished">选项</translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="147"/> + <location filename="../dialogs/importdialog.ui" line="182"/> <source>Input file:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.ui" line="182"/> + <location filename="../dialogs/importdialog.ui" line="175"/> <source>Text encoding:</source> <translation type="unfinished"></translation> </message> <message> + <location filename="../dialogs/importdialog.ui" line="192"/> + <source><p>If enabled, any constraint violation, or invalid data format (wrong column count), or any other problem encountered during import will be ignored and the importing will be continued.</p></source> + <translation type="unfinished"></translation> + </message> + <message> <location filename="../dialogs/importdialog.ui" line="195"/> + <source>Ignore errors</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dialogs/importdialog.ui" line="205"/> <source>Data source options</source> <translation type="unfinished"></translation> </message> <message> <location filename="../dialogs/importdialog.cpp" line="71"/> <source>Cancel</source> - <translation type="unfinished"></translation> + <translation type="unfinished">取消</translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>If you type table name that doesn't exist, it will be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="101"/> + <location filename="../dialogs/importdialog.cpp" line="102"/> <source>Enter the table name</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="119"/> + <location filename="../dialogs/importdialog.cpp" line="120"/> <source>Select import plugin.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="128"/> + <location filename="../dialogs/importdialog.cpp" line="129"/> <source>You must provide a file to import from.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="135"/> + <location filename="../dialogs/importdialog.cpp" line="136"/> <source>The file '%1' does not exist.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="141"/> + <location filename="../dialogs/importdialog.cpp" line="142"/> <source>Path you provided is a directory. A regular file is required.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/importdialog.cpp" line="325"/> + <location filename="../dialogs/importdialog.cpp" line="318"/> <source>Pick file to import from</source> <translation type="unfinished"></translation> </message> @@ -3172,7 +3220,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../dialogs/indexdialog.ui" line="20"/> <location filename="../dialogs/indexdialog.ui" line="30"/> <source>Index</source> - <translation type="unfinished"></translation> + <translation>索引</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="36"/> @@ -3182,7 +3230,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/indexdialog.ui" line="43"/> <source>Index name:</source> - <translation type="unfinished"></translation> + <translation>索引名:</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="50"/> @@ -3192,12 +3240,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/indexdialog.ui" line="67"/> <source>Unique index</source> - <translation type="unfinished"></translation> + <translation>唯一索引</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="90"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../dialogs/indexdialog.ui" line="95"/> @@ -3275,12 +3323,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/languagedialog.ui" line="14"/> <source>Language</source> - <translation type="unfinished"></translation> + <translation>语言</translation> </message> <message> <location filename="../dialogs/languagedialog.ui" line="20"/> <source>Please choose language:</source> - <translation type="unfinished"></translation> + <translation>请选择一门语言:</translation> </message> </context> <context> @@ -3298,32 +3346,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.ui" line="88"/> <source>Tools</source> - <translation type="unfinished"></translation> + <translation>工具</translation> </message> <message> <location filename="../mainwindow.ui" line="105"/> <source>Window list</source> - <translation type="unfinished"></translation> + <translation>窗口列表</translation> </message> <message> <location filename="../mainwindow.ui" line="119"/> <source>View toolbar</source> - <translation type="unfinished"></translation> + <translation>查看工具栏</translation> </message> <message> <location filename="../mainwindow.cpp" line="104"/> <source>Configuration widgets</source> - <translation type="unfinished"></translation> + <translation>配置部件</translation> </message> <message> <location filename="../mainwindow.cpp" line="105"/> <source>Syntax highlighting engines</source> - <translation type="unfinished"></translation> + <translation>语法高亮引擎</translation> </message> <message> <location filename="../mainwindow.cpp" line="106"/> <source>Data editors</source> - <translation type="unfinished"></translation> + <translation>数据编辑器</translation> </message> <message> <location filename="../mainwindow.cpp" line="118"/> @@ -3343,17 +3391,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.cpp" line="245"/> <source>Open SQL editor</source> - <translation type="unfinished"></translation> + <translation>打开SQL编辑器</translation> </message> <message> <location filename="../mainwindow.cpp" line="246"/> <source>Open DDL history</source> - <translation type="unfinished"></translation> + <translation>打开数据库定义(DDL)历史</translation> </message> <message> <location filename="../mainwindow.cpp" line="247"/> <source>Open SQL functions editor</source> - <translation type="unfinished"></translation> + <translation>打开SQL函数编辑器</translation> </message> <message> <location filename="../mainwindow.cpp" line="248"/> @@ -3363,167 +3411,167 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.cpp" line="249"/> <source>Import</source> - <translation type="unfinished"></translation> + <translation type="unfinished">导入</translation> </message> <message> <location filename="../mainwindow.cpp" line="250"/> <source>Export</source> - <translation type="unfinished"></translation> + <translation>导出</translation> </message> <message> <location filename="../mainwindow.cpp" line="252"/> <source>Open configuration dialog</source> - <translation type="unfinished"></translation> + <translation>打开配置对话框</translation> </message> <message> <location filename="../mainwindow.cpp" line="254"/> <source>Tile windows</source> - <translation type="unfinished"></translation> + <translation>平铺窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="255"/> <source>Tile windows horizontally</source> - <translation type="unfinished"></translation> + <translation>水平排列窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="256"/> <source>Tile windows vertically</source> - <translation type="unfinished"></translation> + <translation>垂直排列窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="257"/> <source>Cascade windows</source> - <translation type="unfinished"></translation> + <translation>层叠窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="258"/> <source>Next window</source> - <translation type="unfinished"></translation> + <translation>下一个窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="259"/> <source>Previous window</source> - <translation type="unfinished"></translation> + <translation>上一个窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="260"/> <source>Hide status field</source> - <translation type="unfinished"></translation> + <translation>隐藏状态栏</translation> </message> <message> <location filename="../mainwindow.cpp" line="262"/> <source>Close selected window</source> - <translation type="unfinished"></translation> + <translation>关闭当前窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="263"/> <source>Close all windows but selected</source> - <translation type="unfinished"></translation> + <translation>关闭其它窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="264"/> <source>Close all windows</source> - <translation type="unfinished"></translation> + <translation>关闭全部窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="265"/> <source>Restore recently closed window</source> - <translation type="unfinished"></translation> + <translation>恢复最近关闭的窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="266"/> <source>Rename selected window</source> - <translation type="unfinished"></translation> + <translation>重命名当前窗口</translation> </message> <message> <location filename="../mainwindow.cpp" line="268"/> <source>Open Debug Console</source> - <translation type="unfinished"></translation> + <translation>打开调试终端</translation> </message> <message> <location filename="../mainwindow.cpp" line="269"/> <source>Report a bug</source> - <translation type="unfinished"></translation> + <translation>提交Bug</translation> </message> <message> <location filename="../mainwindow.cpp" line="270"/> <source>Propose a new feature</source> - <translation type="unfinished"></translation> + <translation>提交新功能建议</translation> </message> <message> <location filename="../mainwindow.cpp" line="271"/> <source>About</source> - <translation type="unfinished"></translation> + <translation>关于</translation> </message> <message> <location filename="../mainwindow.cpp" line="272"/> <source>Licenses</source> - <translation type="unfinished"></translation> + <translation>许可</translation> </message> <message> <location filename="../mainwindow.cpp" line="273"/> <source>Open home page</source> - <translation type="unfinished"></translation> + <translation>访问主页</translation> </message> <message> <location filename="../mainwindow.cpp" line="274"/> <source>Open forum page</source> - <translation type="unfinished"></translation> + <translation>访问论坛</translation> </message> <message> <location filename="../mainwindow.cpp" line="275"/> <source>User Manual</source> - <translation type="unfinished"></translation> + <translation>用户手册</translation> </message> <message> <location filename="../mainwindow.cpp" line="276"/> <source>SQLite documentation</source> - <translation type="unfinished"></translation> + <translation>SQLite文档</translation> </message> <message> <location filename="../mainwindow.cpp" line="277"/> <source>Report history</source> - <translation type="unfinished"></translation> + <translation>报告历史</translation> </message> <message> <location filename="../mainwindow.cpp" line="278"/> <source>Check for updates</source> - <translation type="unfinished"></translation> + <translation>检查更新</translation> </message> <message> <location filename="../mainwindow.cpp" line="315"/> <source>Database</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>数据库</translation> </message> <message> <location filename="../mainwindow.cpp" line="335"/> <source>Structure</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>结构</translation> </message> <message> <location filename="../mainwindow.cpp" line="356"/> <source>View</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>查看</translation> </message> <message> <location filename="../mainwindow.cpp" line="360"/> <source>Window list</source> <comment>menubar view menu</comment> - <translation type="unfinished"></translation> + <translation>窗口列表</translation> </message> <message> <location filename="../mainwindow.cpp" line="381"/> <source>Tools</source> <comment>menubar</comment> - <translation type="unfinished"></translation> + <translation>工具</translation> </message> <message> <location filename="../mainwindow.cpp" line="395"/> <source>Help</source> - <translation type="unfinished"></translation> + <translation>帮助</translation> </message> <message> <location filename="../mainwindow.cpp" line="549"/> @@ -3532,7 +3580,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="625"/> + <location filename="../mainwindow.cpp" line="621"/> <source>Cannot export, because no export plugin is loaded.</source> <translation type="unfinished"></translation> </message> @@ -3542,37 +3590,37 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Rename window</source> - <translation type="unfinished"></translation> + <translation>重命名窗口</translation> </message> <message> - <location filename="../mainwindow.cpp" line="666"/> + <location filename="../mainwindow.cpp" line="670"/> <source>Enter new name for the window:</source> - <translation type="unfinished"></translation> + <translation>窗口的新名称:</translation> </message> <message> - <location filename="../mainwindow.cpp" line="734"/> + <location filename="../mainwindow.cpp" line="738"/> <source>New updates are available. <a href="%1">Click here for details</a>.</source> - <translation type="unfinished"></translation> + <translation>有新更新 <a href="%1">点此查看更新详情</a>.</translation> </message> <message> - <location filename="../mainwindow.cpp" line="742"/> + <location filename="../mainwindow.cpp" line="746"/> <source>You're running the most recent version. No updates are available.</source> - <translation type="unfinished"></translation> + <translation type="unfinished">您使用的是最新版,不需要更新。</translation> </message> <message> - <location filename="../mainwindow.cpp" line="841"/> + <location filename="../mainwindow.cpp" line="845"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="848"/> + <location filename="../mainwindow.cpp" line="852"/> <source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../mainwindow.cpp" line="853"/> + <location filename="../mainwindow.cpp" line="857"/> <source>Could not add database %1 to list.</source> <translation type="unfinished"></translation> </message> @@ -3580,19 +3628,19 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <context> <name>MdiWindow</name> <message> - <location filename="../mdiwindow.cpp" line="190"/> + <location filename="../mdiwindow.cpp" line="199"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation>未提交的更改</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="195"/> + <location filename="../mdiwindow.cpp" line="204"/> <source>Close anyway</source> - <translation type="unfinished"></translation> + <translation>仍然关闭</translation> </message> <message> - <location filename="../mdiwindow.cpp" line="197"/> + <location filename="../mdiwindow.cpp" line="206"/> <source>Don't close</source> - <translation type="unfinished"></translation> + <translation>不关闭</translation> </message> </context> <context> @@ -3601,7 +3649,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditor.cpp" line="53"/> <source>Null value</source> <comment>multieditor</comment> - <translation type="unfinished"></translation> + <translation>Null 值</translation> </message> <message> <location filename="../multieditor/multieditor.cpp" line="68"/> @@ -3617,13 +3665,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditor.cpp" line="356"/> <source>Deleted</source> <comment>multieditor</comment> - <translation type="unfinished"></translation> + <translation>已删除</translation> </message> <message> <location filename="../multieditor/multieditor.cpp" line="358"/> <source>Read only</source> <comment>multieditor</comment> - <translation type="unfinished"></translation> + <translation>只读</translation> </message> </context> <context> @@ -3631,7 +3679,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditorbool.cpp" line="130"/> <source>Boolean</source> - <translation type="unfinished"></translation> + <translation>布尔</translation> </message> </context> <context> @@ -3639,7 +3687,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditordate.cpp" line="14"/> <source>Date</source> - <translation type="unfinished"></translation> + <translation>日期</translation> </message> </context> <context> @@ -3647,7 +3695,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditordatetime.cpp" line="181"/> <source>Date & time</source> - <translation type="unfinished"></translation> + <translation>日期和时间</translation> </message> </context> <context> @@ -3655,7 +3703,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditorhex.cpp" line="39"/> <source>Hex</source> - <translation type="unfinished"></translation> + <translation>十六进制</translation> </message> </context> <context> @@ -3664,7 +3712,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditornumeric.cpp" line="36"/> <source>Number</source> <comment>numeric multi editor tab name</comment> - <translation type="unfinished"></translation> + <translation>数值</translation> </message> </context> <context> @@ -3682,32 +3730,32 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditortext.cpp" line="107"/> <source>Cut</source> - <translation type="unfinished"></translation> + <translation>剪切</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="108"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>复制</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="109"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation>粘贴</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="110"/> <source>Delete</source> - <translation type="unfinished"></translation> + <translation>删除</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="111"/> <source>Undo</source> - <translation type="unfinished"></translation> + <translation>撤销</translation> </message> <message> <location filename="../multieditor/multieditortext.cpp" line="112"/> <source>Redo</source> - <translation type="unfinished"></translation> + <translation>恢复</translation> </message> </context> <context> @@ -3715,7 +3763,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../multieditor/multieditortime.cpp" line="16"/> <source>Time</source> - <translation type="unfinished"></translation> + <translation>时间</translation> </message> </context> <context> @@ -3723,53 +3771,53 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/newconstraintdialog.ui" line="20"/> <source>New constraint</source> - <translation type="unfinished"></translation> + <translation>新约束</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="87"/> <location filename="../dialogs/newconstraintdialog.cpp" line="97"/> <source>Primary Key</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>主键</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="89"/> <location filename="../dialogs/newconstraintdialog.cpp" line="99"/> <source>Foreign Key</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>外键</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="91"/> <location filename="../dialogs/newconstraintdialog.cpp" line="101"/> <source>Unique</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>唯一</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="92"/> <location filename="../dialogs/newconstraintdialog.cpp" line="102"/> <source>Check</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>条件</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="103"/> <source>Not NULL</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation>非空</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="105"/> <source>Collate</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">排序规则</translation> </message> <message> <location filename="../dialogs/newconstraintdialog.cpp" line="107"/> <source>Default</source> <comment>new constraint dialog</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">默认</translation> </message> </context> <context> @@ -3777,52 +3825,52 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/newversiondialog.ui" line="14"/> <source>SQLiteStudio updates</source> - <translation type="unfinished"></translation> + <translation>SQLiteStudio 更新</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="26"/> <source>New updates are available!</source> - <translation type="unfinished"></translation> + <translation>有新更新!</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="70"/> <source>Component</source> - <translation type="unfinished"></translation> + <translation>组件</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="75"/> <source>Current version</source> - <translation type="unfinished"></translation> + <translation>当年版本</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="80"/> <source>Update version</source> - <translation type="unfinished"></translation> + <translation>可更新版本</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="91"/> <source>Check for updates on startup</source> - <translation type="unfinished"></translation> + <translation>在启动时检查更新</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="101"/> <source>Update to new version!</source> - <translation type="unfinished"></translation> + <translation>更新到新版本!</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="114"/> <source>The update will be automatically downloaded and installed. This will also restart application at the end.</source> - <translation type="unfinished"></translation> + <translation>本次更新将会自动下载和安装。在更新后会重启程序。</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="121"/> <source>Not now.</source> - <translation type="unfinished"></translation> + <translation>现在不更新。</translation> </message> <message> <location filename="../dialogs/newversiondialog.ui" line="134"/> <source>Don't install the update and close this window.</source> - <translation type="unfinished"></translation> + <translation>不安装更新并关闭本窗口。</translation> </message> </context> <context> @@ -3835,7 +3883,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/populateconfigdialog.cpp" line="54"/> <source>Configuring <b>%1</b> for column <b>%2</b></source> - <translation type="unfinished"></translation> + <translation>给字段 <b>%2</b> 配置 <b>%1</b></translation> </message> </context> <context> @@ -3848,17 +3896,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/populatedialog.ui" line="26"/> <source>Database</source> - <translation type="unfinished"></translation> + <translation>数据库</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="44"/> <source>Table</source> - <translation type="unfinished"></translation> + <translation>表</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="72"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation>字段</translation> </message> <message> <location filename="../dialogs/populatedialog.ui" line="102"/> @@ -3874,7 +3922,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/populatedialog.cpp" line="158"/> <source>Configure</source> - <translation type="unfinished"></translation> + <translation type="unfinished">配置</translation> </message> <message> <location filename="../dialogs/populatedialog.cpp" line="256"/> @@ -3894,74 +3942,74 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/populatedialog.cpp" line="289"/> <source>You have to select at least one column.</source> - <translation type="unfinished"></translation> + <translation>您至少得选择一个字段。</translation> </message> </context> <context> <name>QObject</name> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="66"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="67"/> <source>Cannot edit columns that are result of compound %1 statements (one that includes %2, %3 or %4 keywords).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="69"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/> <source>The query execution mechanism had problems with extracting ROWID's properly. This might be a bug in the application. You may want to report this.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="71"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="72"/> <source>Requested column is a result of SQL expression, instead of a simple column selection. Such columns cannot be edited.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="73"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="74"/> <source>Requested column belongs to restricted SQLite table. Those tables cannot be edited directly.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="75"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/> <source>Cannot edit results of query other than %1.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="77"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/> <source>Cannot edit columns that are result of aggregated %1 statements.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="79"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/> <source>Cannot edit columns that are result of %1 statement.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="81"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="82"/> <source>Cannot edit columns that are result of common table expression statement (%1).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="353"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="389"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="407"/> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="443"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="393"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="411"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/> <source>on conflict: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="373"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/> <source>references table %1, column %2</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="440"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/> <source>condition: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/> <source>collation name: %1</source> <comment>data view tooltip</comment> <translation type="unfinished"></translation> @@ -4049,7 +4097,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dbtree/dbtree.h" line="26"/> <source>Database list</source> - <translation type="unfinished"></translation> + <translation type="unfinished">数据库列表</translation> </message> <message> <location filename="../dbtree/dbtree.h" line="27"/> @@ -4116,7 +4164,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dbtree/dbtreeitemfactory.cpp" line="67"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../formview.h" line="16"/> @@ -4171,17 +4219,17 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.h" line="43"/> <source>Open SQL editor</source> - <translation type="unfinished"></translation> + <translation type="unfinished">打开SQL编辑器</translation> </message> <message> <location filename="../mainwindow.h" line="44"/> <source>Previous window</source> - <translation type="unfinished"></translation> + <translation type="unfinished">上一个窗口</translation> </message> <message> <location filename="../mainwindow.h" line="45"/> <source>Next window</source> - <translation type="unfinished"></translation> + <translation type="unfinished">下一个窗口</translation> </message> <message> <location filename="../mainwindow.h" line="46"/> @@ -4191,12 +4239,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../mainwindow.h" line="47"/> <source>Open configuration dialog</source> - <translation type="unfinished"></translation> + <translation type="unfinished">打开配置对话框</translation> </message> <message> <location filename="../mainwindow.h" line="48"/> <source>Open Debug Console</source> - <translation type="unfinished"></translation> + <translation type="unfinished">打开调试终端</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="12"/> @@ -4225,13 +4273,13 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <location filename="../multieditor/multieditortext.h" line="17"/> <location filename="../sqleditor.h" line="27"/> <source>Undo</source> - <translation type="unfinished"></translation> + <translation type="unfinished">撤销</translation> </message> <message> <location filename="../multieditor/multieditortext.h" line="18"/> <location filename="../sqleditor.h" line="28"/> <source>Redo</source> - <translation type="unfinished"></translation> + <translation type="unfinished">恢复</translation> </message> <message> <location filename="../sqleditor.h" line="21"/> @@ -4261,12 +4309,12 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../sqleditor.h" line="32"/> <source>Find next</source> - <translation type="unfinished"></translation> + <translation type="unfinished">查找下一个</translation> </message> <message> <location filename="../sqleditor.h" line="33"/> <source>Find previous</source> - <translation type="unfinished"></translation> + <translation type="unfinished">查找上一个</translation> </message> <message> <location filename="../sqleditor.h" line="34"/> @@ -4319,7 +4367,8 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <translation type="unfinished"></translation> </message> <message> - <location filename="../uiutils.cpp" line="38"/> + <location filename="../uiutils.cpp" line="39"/> + <location filename="../uiutils.cpp" line="41"/> <source>Database file</source> <translation type="unfinished"></translation> </message> @@ -4331,7 +4380,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/bugreporthistorywindow.h" line="12"/> <source>Delete selected entry</source> - <translation type="unfinished"></translation> + <translation type="unfinished">删除选中项</translation> </message> <message> <location filename="../windows/editorwindow.h" line="26"/> @@ -4406,7 +4455,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../windows/tablewindow.h" line="35"/> <source>Export table data</source> - <translation type="unfinished"></translation> + <translation type="unfinished">导出表里的数据</translation> </message> <message> <location filename="../windows/tablewindow.h" line="36"/> @@ -4499,7 +4548,7 @@ Please enter new, unique name, or press '%1' to abort the operation:</ <message> <location filename="../dialogs/quitconfirmdialog.ui" line="14"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation type="unfinished">未提交的更改</translation> </message> <message> <location filename="../dialogs/quitconfirmdialog.ui" line="20"/> @@ -4555,7 +4604,7 @@ find next</source> <message> <location filename="../dialogs/searchtextdialog.ui" line="98"/> <source>Find</source> - <translation type="unfinished"></translation> + <translation type="unfinished">查找</translation> </message> </context> <context> @@ -4569,7 +4618,7 @@ find next</source> <location filename="../dialogs/sortdialog.ui" line="45"/> <location filename="../dialogs/sortdialog.cpp" line="48"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../dialogs/sortdialog.ui" line="50"/> @@ -4599,85 +4648,85 @@ find next</source> <location filename="../sqleditor.cpp" line="118"/> <source>Cut</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>剪切</translation> </message> <message> <location filename="../sqleditor.cpp" line="119"/> <source>Copy</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>复制</translation> </message> <message> <location filename="../sqleditor.cpp" line="120"/> <source>Paste</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>粘贴</translation> </message> <message> <location filename="../sqleditor.cpp" line="121"/> <source>Delete</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>删除</translation> </message> <message> <location filename="../sqleditor.cpp" line="122"/> <source>Select all</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>全选</translation> </message> <message> <location filename="../sqleditor.cpp" line="123"/> <source>Undo</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>撤销</translation> </message> <message> <location filename="../sqleditor.cpp" line="124"/> <source>Redo</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>恢复</translation> </message> <message> <location filename="../sqleditor.cpp" line="125"/> <source>Complete</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>完成</translation> </message> <message> <location filename="../sqleditor.cpp" line="126"/> <source>Format SQL</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>格式化SQL</translation> </message> <message> <location filename="../sqleditor.cpp" line="127"/> <source>Save SQL to file</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>保存SQL到文件</translation> </message> <message> <location filename="../sqleditor.cpp" line="128"/> <source>Load SQL from file</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>从文件加载SQL</translation> </message> <message> <location filename="../sqleditor.cpp" line="129"/> <source>Delete line</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>删除行</translation> </message> <message> <location filename="../sqleditor.cpp" line="130"/> <source>Move block down</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>整块下移</translation> </message> <message> <location filename="../sqleditor.cpp" line="131"/> <source>Move block up</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>整块上移</translation> </message> <message> <location filename="../sqleditor.cpp" line="132"/> @@ -4695,25 +4744,25 @@ find next</source> <location filename="../sqleditor.cpp" line="134"/> <source>Find</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>查找</translation> </message> <message> <location filename="../sqleditor.cpp" line="135"/> <source>Find next</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>查找下一个</translation> </message> <message> <location filename="../sqleditor.cpp" line="136"/> <source>Find previous</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>查找上一个</translation> </message> <message> <location filename="../sqleditor.cpp" line="137"/> <source>Replace</source> <comment>sql editor</comment> - <translation type="unfinished"></translation> + <translation>替换</translation> </message> <message> <location filename="../sqleditor.cpp" line="412"/> @@ -4728,7 +4777,7 @@ find next</source> <message> <location filename="../sqleditor.cpp" line="1027"/> <source>Save to file</source> - <translation type="unfinished"></translation> + <translation>保存到文件</translation> </message> <message> <location filename="../sqleditor.cpp" line="1036"/> @@ -4738,12 +4787,12 @@ find next</source> <message> <location filename="../sqleditor.cpp" line="1050"/> <source>SQL scripts (*.sql);;All files (*)</source> - <translation type="unfinished"></translation> + <translation>SQL文件(*.sql);;所有文件(*)</translation> </message> <message> <location filename="../sqleditor.cpp" line="1051"/> <source>Open file</source> - <translation type="unfinished"></translation> + <translation>打开文件</translation> </message> <message> <location filename="../sqleditor.cpp" line="1060"/> @@ -4753,7 +4802,7 @@ find next</source> <message> <location filename="../sqleditor.cpp" line="1267"/> <source>Reached the end of document. Hit the find again to restart the search.</source> - <translation type="unfinished"></translation> + <translation>已搜索到文档底部。点击查找从头程序开始搜索。</translation> </message> </context> <context> @@ -4768,7 +4817,7 @@ find next</source> <location filename="../datagrid/sqlqueryitem.cpp" line="252"/> <source>Data type:</source> <comment>data view</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">数据类型:</translation> </message> <message> <location filename="../datagrid/sqlqueryitem.cpp" line="255"/> @@ -4810,69 +4859,69 @@ find next</source> <context> <name>SqlQueryModel</name> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="62"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="460"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="63"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="474"/> <source>Only one query can be executed simultaneously.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="94"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> <source>Uncommited data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="95"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="96"/> <source>There are uncommited data changes. Do you want to proceed anyway? All uncommited changes will be lost.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="341"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="343"/> <source>Cannot commit the data for a cell that refers to the already closed database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="372"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="374"/> <source>Could not begin transaction on the database. Details: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="409"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="415"/> <source>An error occurred while commiting the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="428"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="434"/> <source>An error occurred while rolling back the transaction: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="546"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="560"/> <source>Tried to commit a cell which is not editable (yet modified and waiting for commit)! This is a bug. Please report it.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="572"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="586"/> <source>An error occurred while commiting the data: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1016"/> - <location filename="../datagrid/sqlquerymodel.cpp" line="1068"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1031"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1086"/> <source>Error while executing SQL query on database '%1': %2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1065"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1083"/> <source>Error while loading query results: %1</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlquerymodel.cpp" line="1393"/> + <location filename="../datagrid/sqlquerymodel.cpp" line="1424"/> <source>Number of rows to insert:</source> <translation type="unfinished"></translation> </message> @@ -4880,87 +4929,92 @@ find next</source> <context> <name>SqlQueryView</name> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="69"/> + <location filename="../datagrid/sqlqueryview.cpp" line="72"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation type="unfinished">复制</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="70"/> + <location filename="../datagrid/sqlqueryview.cpp" line="73"/> <source>Copy as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="71"/> + <location filename="../datagrid/sqlqueryview.cpp" line="74"/> <source>Paste</source> - <translation type="unfinished"></translation> + <translation type="unfinished">粘贴</translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="72"/> + <location filename="../datagrid/sqlqueryview.cpp" line="75"/> <source>Paste as...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="73"/> + <location filename="../datagrid/sqlqueryview.cpp" line="76"/> <source>Set NULL values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="74"/> + <location filename="../datagrid/sqlqueryview.cpp" line="77"/> <source>Erase values</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="75"/> + <location filename="../datagrid/sqlqueryview.cpp" line="78"/> <source>Edit value in editor</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="76"/> + <location filename="../datagrid/sqlqueryview.cpp" line="79"/> <source>Commit</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="77"/> + <location filename="../datagrid/sqlqueryview.cpp" line="80"/> <source>Rollback</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="78"/> + <location filename="../datagrid/sqlqueryview.cpp" line="81"/> <source>Commit selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="79"/> + <location filename="../datagrid/sqlqueryview.cpp" line="82"/> <source>Rollback selected cells</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="80"/> + <location filename="../datagrid/sqlqueryview.cpp" line="83"/> <source>Define columns to sort by</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="81"/> + <location filename="../datagrid/sqlqueryview.cpp" line="84"/> <source>Remove custom sorting</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="82"/> + <location filename="../datagrid/sqlqueryview.cpp" line="85"/> <source>Insert row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="83"/> + <location filename="../datagrid/sqlqueryview.cpp" line="86"/> <source>Insert multiple rows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="84"/> + <location filename="../datagrid/sqlqueryview.cpp" line="87"/> <source>Delete selected row</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../datagrid/sqlqueryview.cpp" line="443"/> + <location filename="../datagrid/sqlqueryview.cpp" line="256"/> + <source>No items selected to paste clipboard contents to.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../datagrid/sqlqueryview.cpp" line="510"/> <source>Edit value</source> <translation type="unfinished"></translation> </message> @@ -4983,17 +5037,17 @@ find next</source> <message> <location filename="../statusfield.ui" line="14"/> <source>Status</source> - <translation type="unfinished"></translation> + <translation>状态</translation> </message> <message> <location filename="../statusfield.cpp" line="161"/> <source>Copy</source> - <translation type="unfinished"></translation> + <translation>复制</translation> </message> <message> <location filename="../statusfield.cpp" line="168"/> <source>Clear</source> - <translation type="unfinished"></translation> + <translation>清除</translation> </message> </context> <context> @@ -5002,19 +5056,19 @@ find next</source> <location filename="../windows/tableconstraintsmodel.cpp" line="75"/> <source>Type</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>类型</translation> </message> <message> <location filename="../windows/tableconstraintsmodel.cpp" line="77"/> <source>Details</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>详情</translation> </message> <message> <location filename="../windows/tableconstraintsmodel.cpp" line="79"/> <source>Name</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation>名称</translation> </message> </context> <context> @@ -5033,7 +5087,7 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="62"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="77"/> @@ -5063,7 +5117,7 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tableforeignkeypanel.ui" line="190"/> <source>Constraint name</source> - <translation type="unfinished"></translation> + <translation type="unfinished">约束名称</translation> </message> <message> <location filename="../constraints/tableforeignkeypanel.cpp" line="53"/> @@ -5097,12 +5151,12 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="32"/> <source>Columns</source> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="59"/> <source>Column</source> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="84"/> @@ -5132,7 +5186,7 @@ but it's okay to use them anyway.</source> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="174"/> <source>Constraint name</source> - <translation type="unfinished"></translation> + <translation type="unfinished">约束名称</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.ui" line="199"/> @@ -5143,7 +5197,7 @@ but it's okay to use them anyway.</source> <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/> <source>Collate</source> <comment>table constraints</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">排序规则</translation> </message> <message> <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/> @@ -5168,7 +5222,7 @@ but it's okay to use them anyway.</source> <location filename="../windows/tablestructuremodel.cpp" line="299"/> <source>Name</source> <comment>table structure columns</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">名称</translation> </message> <message> <location filename="../windows/tablestructuremodel.cpp" line="301"/> @@ -5188,7 +5242,7 @@ but it's okay to use them anyway.</source> <message> <location filename="../windows/tablewindow.ui" line="36"/> <source>Structure</source> - <translation type="unfinished"></translation> + <translation type="unfinished">结构</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="60"/> @@ -5203,7 +5257,7 @@ but it's okay to use them anyway.</source> <message> <location filename="../windows/tablewindow.ui" line="201"/> <source>Constraints</source> - <translation type="unfinished"></translation> + <translation type="unfinished">约束</translation> </message> <message> <location filename="../windows/tablewindow.ui" line="215"/> @@ -5508,7 +5562,7 @@ Are you sure you want to create a table with blank name?</source> <location filename="../windows/tablewindow.cpp" line="1115"/> <source>Delete constraint</source> <comment>table window</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">删除约束</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1169"/> @@ -5523,7 +5577,7 @@ Are you sure you want to create a table with blank name?</source> <message> <location filename="../windows/tablewindow.cpp" line="1214"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation type="unfinished">未提交的更改</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1215"/> @@ -5545,19 +5599,19 @@ Do you want to commit the structure, or do you want to go back to the structure <location filename="../windows/tablewindow.cpp" line="1368"/> <source>Name</source> <comment>table window indexes</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">名称</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1369"/> <source>Unique</source> <comment>table window indexes</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">唯一</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1370"/> <source>Columns</source> <comment>table window indexes</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">字段</translation> </message> <message> <location filename="../windows/tablewindow.cpp" line="1371"/> @@ -5566,41 +5620,41 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1424"/> + <location filename="../windows/tablewindow.cpp" line="1425"/> <source>Name</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">名称</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1425"/> + <location filename="../windows/tablewindow.cpp" line="1426"/> <source>Event</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1426"/> + <location filename="../windows/tablewindow.cpp" line="1427"/> <source>Condition</source> <comment>table window triggers</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1427"/> + <location filename="../windows/tablewindow.cpp" line="1428"/> <source>Details</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">详情</translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1515"/> + <location filename="../windows/tablewindow.cpp" line="1517"/> <source>Table window "%1" has uncommited structure modifications and data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1517"/> + <location filename="../windows/tablewindow.cpp" line="1519"/> <source>Table window "%1" has uncommited data.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../windows/tablewindow.cpp" line="1519"/> + <location filename="../windows/tablewindow.cpp" line="1521"/> <source>Table window "%1" has uncommited structure modifications.</source> <translation type="unfinished"></translation> </message> @@ -5688,33 +5742,33 @@ Do you want to commit the structure, or do you want to go back to the structure <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="145"/> + <location filename="../dialogs/triggerdialog.cpp" line="159"/> <source>On view:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="168"/> + <location filename="../dialogs/triggerdialog.cpp" line="183"/> <source>Could not process trigger %1 correctly. Unable to open a trigger dialog.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="338"/> + <location filename="../dialogs/triggerdialog.cpp" line="353"/> <source>Enter a valid condition.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="339"/> + <location filename="../dialogs/triggerdialog.cpp" line="354"/> <source>Enter a valid trigger code.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>Error</source> <comment>trigger dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../dialogs/triggerdialog.cpp" line="411"/> + <location filename="../dialogs/triggerdialog.cpp" line="426"/> <source>An error occurred while executing SQL statements: %1</source> <translation type="unfinished"></translation> @@ -5856,7 +5910,7 @@ Do you want to commit the structure, or do you want to go back to the structure <message> <location filename="../windows/viewwindow.cpp" line="466"/> <source>Uncommited changes</source> - <translation type="unfinished"></translation> + <translation type="unfinished">未提交的更改</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="467"/> @@ -5884,7 +5938,7 @@ Do you want to commit the structure, or do you want to go back to the structure <location filename="../windows/viewwindow.cpp" line="606"/> <source>Name</source> <comment>view window triggers</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">名称</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="607"/> @@ -5902,7 +5956,7 @@ Do you want to commit the structure, or do you want to go back to the structure <location filename="../windows/viewwindow.cpp" line="609"/> <source>Details</source> <comment>table window triggers</comment> - <translation type="unfinished"></translation> + <translation type="unfinished">详情</translation> </message> <message> <location filename="../windows/viewwindow.cpp" line="649"/> diff --git a/SQLiteStudio3/guiSQLiteStudio/uiconfig.h b/SQLiteStudio3/guiSQLiteStudio/uiconfig.h index e6cfea2..3372979 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uiconfig.h +++ b/SQLiteStudio3/guiSQLiteStudio/uiconfig.h @@ -81,6 +81,7 @@ CFG_CATEGORIES(Ui, CFG_ENTRY(QString, FileDialogLastPath, QString())
CFG_ENTRY(int, MaxInitialColumnWith, 600)
CFG_ENTRY(bool, LanguageAsked, false)
+ CFG_ENTRY(bool, OpenMaximized, true)
)
)
diff --git a/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp b/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp index 9504bda..00aaac4 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/uidebug.cpp @@ -3,12 +3,14 @@ #include "qio.h" #include "debugconsole.h" #include "common/global.h" +#include <QFile> #include <QTime> DebugConsole* sqliteStudioUiDebugConsole = nullptr; MsgHandlerThreadProxy* msgHandlerThreadProxy = nullptr; bool UI_DEBUG_ENABLED = false; bool UI_DEBUG_CONSOLE = true; +QString UI_DEBUG_FILE; void uiMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg) { @@ -39,18 +41,22 @@ void uiMessageHandler(QtMsgType type, const QMessageLogContext &context, const Q } } -void setUiDebug(bool enabled, bool useUiConsole) +void setUiDebug(bool enabled, bool useUiConsole, const QString& file) { UI_DEBUG_ENABLED = enabled; - UI_DEBUG_CONSOLE = useUiConsole; + UI_DEBUG_CONSOLE = useUiConsole && file.isEmpty(); + UI_DEBUG_FILE = file; safe_delete(msgHandlerThreadProxy); safe_delete(sqliteStudioUiDebugConsole); if (enabled) { - if (useUiConsole) + if (UI_DEBUG_CONSOLE) sqliteStudioUiDebugConsole = new DebugConsole(); - msgHandlerThreadProxy = new MsgHandlerThreadProxy(); + if (file.isEmpty()) + msgHandlerThreadProxy = new MsgHandlerThreadProxy(); + else + msgHandlerThreadProxy = new MsgHandlerThreadProxy(file); } } @@ -73,6 +79,27 @@ bool isDebugConsoleEnabled() MsgHandlerThreadProxy::MsgHandlerThreadProxy(QObject *parent) : QObject(parent) { + init(); +} + +MsgHandlerThreadProxy::MsgHandlerThreadProxy(const QString &file, QObject *parent) : + QObject(parent) +{ + initFile(file); + init(); +} + +MsgHandlerThreadProxy::~MsgHandlerThreadProxy() +{ + if (outFile) + { + outFile->close(); + safe_delete(outFile); + } +} + +void MsgHandlerThreadProxy::init() +{ if (sqliteStudioUiDebugConsole) { connect(this, SIGNAL(debugRequested(QString)), sqliteStudioUiDebugConsole, SLOT(debug(QString))); @@ -80,6 +107,13 @@ MsgHandlerThreadProxy::MsgHandlerThreadProxy(QObject *parent) : connect(this, SIGNAL(criticalRequested(QString)), sqliteStudioUiDebugConsole, SLOT(critical(QString))); connect(this, SIGNAL(fatalRequested(QString)), sqliteStudioUiDebugConsole, SLOT(fatal(QString))); } + else if (outFile) + { + connect(this, SIGNAL(debugRequested(QString)), this, SLOT(printToFile(QString))); + connect(this, SIGNAL(warnRequested(QString)), this, SLOT(printToFile(QString))); + connect(this, SIGNAL(criticalRequested(QString)), this, SLOT(printToFile(QString))); + connect(this, SIGNAL(fatalRequested(QString)), this, SLOT(printToFile(QString))); + } else { connect(this, SIGNAL(debugRequested(QString)), this, SLOT(print(QString))); @@ -89,6 +123,15 @@ MsgHandlerThreadProxy::MsgHandlerThreadProxy(QObject *parent) : } } +void MsgHandlerThreadProxy::initFile(const QString &fileName) +{ + outFile = new QFile(fileName); + if (outFile->open(QIODevice::WriteOnly)) + outFileStream.setDevice(outFile); + else + safe_delete(outFile); +} + void MsgHandlerThreadProxy::debug(const QString &msg) { emit debugRequested(msg); @@ -114,3 +157,9 @@ void MsgHandlerThreadProxy::print(const QString& txt) qOut << txt << "\n"; qOut.flush(); } + +void MsgHandlerThreadProxy::printToFile(const QString &txt) +{ + outFileStream << txt << "\n"; + outFileStream.flush(); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/uidebug.h b/SQLiteStudio3/guiSQLiteStudio/uidebug.h index d1b04b7..d2a2a51 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uidebug.h +++ b/SQLiteStudio3/guiSQLiteStudio/uidebug.h @@ -3,6 +3,9 @@ #include "guiSQLiteStudio_global.h" #include <QtDebug> +#include <QTextStream> + +class QFile; class GUI_API_EXPORT MsgHandlerThreadProxy : public QObject { @@ -10,6 +13,15 @@ class GUI_API_EXPORT MsgHandlerThreadProxy : public QObject public: explicit MsgHandlerThreadProxy(QObject* parent = 0); + MsgHandlerThreadProxy(const QString& file, QObject* parent = 0); + ~MsgHandlerThreadProxy(); + + private: + void init(); + void initFile(const QString& fileName); + + QFile* outFile = nullptr; + QTextStream outFileStream; public slots: void debug(const QString& msg); @@ -25,10 +37,11 @@ class GUI_API_EXPORT MsgHandlerThreadProxy : public QObject private slots: void print(const QString& txt); + void printToFile(const QString& txt); }; GUI_API_EXPORT void uiMessageHandler(QtMsgType type, const QMessageLogContext &context, const QString &msg); -GUI_API_EXPORT void setUiDebug(bool enabled, bool useUiConsole = true); +GUI_API_EXPORT void setUiDebug(bool enabled, bool useUiConsole = true, const QString& file = QString()); GUI_API_EXPORT void showUiDebugConsole(); GUI_API_EXPORT bool isDebugEnabled(); GUI_API_EXPORT bool isDebugConsoleEnabled(); diff --git a/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp b/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp index 182cdb2..72dde94 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp @@ -22,7 +22,7 @@ const QStringList pageSizes = { const QStringList pageSizesWithDimensions; -QString getDbPath(const QString &startWith) +QString getDbPath(bool newFileMode, const QString &startWith) { QString dir = startWith; if (dir.isNull()) @@ -35,8 +35,10 @@ QString getDbPath(const QString &startWith) filters += QObject::tr("All files")+" (*)"; QString filter = filters.join(";;"); - QString path = QFileDialog::getSaveFileName(0, QObject::tr("Database file"), dir, filter, &filters[0], QFileDialog::DontConfirmOverwrite); - return path; + if (newFileMode) + return QFileDialog::getSaveFileName(0, QObject::tr("Database file"), dir, filter, &filters[0], QFileDialog::DontConfirmOverwrite); + else + return QFileDialog::getOpenFileName(0, QObject::tr("Database file"), dir, filter, &filters[0]); } void setValidState(QWidget *widget, bool valid, const QString& message) diff --git a/SQLiteStudio3/guiSQLiteStudio/uiutils.h b/SQLiteStudio3/guiSQLiteStudio/uiutils.h index b1c78f3..01652b7 100644 --- a/SQLiteStudio3/guiSQLiteStudio/uiutils.h +++ b/SQLiteStudio3/guiSQLiteStudio/uiutils.h @@ -7,7 +7,7 @@ class QWidget; -GUI_API_EXPORT QString getDbPath(const QString& startWith = QString::null); +GUI_API_EXPORT QString getDbPath(bool newFileMode, const QString& startWith = QString::null); GUI_API_EXPORT void setValidState(QWidget* widget, bool valid, const QString& message = QString()); GUI_API_EXPORT void setValidStateWihtTooltip(QWidget* widget, const QString& tooltip, bool valid, const QString& message = QString()); GUI_API_EXPORT void setValidStateWarning(QWidget* widget, const QString& warning); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp index 590a2fd..c494702 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.cpp @@ -104,7 +104,7 @@ void EditorWindow::init() connect(resultsModel, SIGNAL(executionSuccessful()), this, SLOT(executionSuccessful())); connect(resultsModel, SIGNAL(executionFailed(QString)), this, SLOT(executionFailed(QString))); - connect(resultsModel, SIGNAL(totalRowsAndPagesAvailable()), this, SLOT(totalRowsAndPagesAvailable())); + connect(resultsModel, SIGNAL(storeExecutionInHistory()), this, SLOT(storeExecutionInHistory())); // SQL history list ui->historyList->setModel(CFG->getSqlHistoryModel()); @@ -520,7 +520,7 @@ void EditorWindow::executionFailed(const QString &errorText) updateState(); } -void EditorWindow::totalRowsAndPagesAvailable() +void EditorWindow::storeExecutionInHistory() { qint64 rowsReturned = resultsModel->getTotalRowsReturned(); qint64 rowsAffected = resultsModel->getTotalRowsAffected(); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h index 4666386..d952b1b 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h +++ b/SQLiteStudio3/guiSQLiteStudio/windows/editorwindow.h @@ -134,7 +134,7 @@ class GUI_API_EXPORT EditorWindow : public MdiChild void dbChanged(); void executionSuccessful(); void executionFailed(const QString& errorText); - void totalRowsAndPagesAvailable(); + void storeExecutionInHistory(); void updateResultsDisplayMode(); void prevDb(); void nextDb(); diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp index fdbbac2..77a4adc 100644 --- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp @@ -1406,6 +1406,7 @@ void TableWindow::updateIndexes() } ui->indexList->resizeColumnsToContents(); + ui->indexList->horizontalHeader()->setSectionResizeMode(2, QHeaderView::Stretch); updateIndexesState(); } @@ -1453,6 +1454,7 @@ void TableWindow::updateTriggers() } ui->triggerList->resizeColumnsToContents(); + ui->triggerList->horizontalHeader()->setSectionResizeMode(3, QHeaderView::Stretch); updateTriggersState(); } diff --git a/SQLiteStudio3/lang.tcl b/SQLiteStudio3/lang.tcl index d9cacf9..00fd151 100755 --- a/SQLiteStudio3/lang.tcl +++ b/SQLiteStudio3/lang.tcl @@ -2,7 +2,7 @@ proc usage {} { puts "$::argv0 (add|remove) <lang_name>" - puts "$::argv0 (update|release)" + puts "$::argv0 (update|release|status)" } lassign $argv op lang @@ -13,6 +13,41 @@ if {$::tcl_platform(platform) == "windows"} { set ERR_NULL "2>/dev/null" } +proc countstrings {data search} { + set l [string length $search] + set count 0 + while {[set i [string first $search $data]]>=0} { + incr count + incr i $l + set data [string range $data $i end] + } + set count +} + +proc scanLangs {} { + set langs [dict create] + foreach f [exec find .. -name "*.ts"] { + set lang [lindex [regexp -inline {[^_]*_(\w+(\w+)?).ts$} $f] 1] + if {[dict exists $langs $lang]} { + set langDict [dict get $langs $lang] + } else { + set langDict [dict create translated 0 untranslated 0] + } + + set fd [open $f r] + set data [read $fd] + close $fd + + set c1 [countstrings $data "<translation>"] + set c2 [countstrings $data "<translation type=\"unfinished\">"] + dict incr langDict translated $c1 + dict incr langDict untranslated $c2 + dict set langs $lang $langDict + } + + return $langs +} + switch -- $op { "update" - "release" { if {$argc != 1} { @@ -61,6 +96,21 @@ switch -- $op { } } } + "status" { + set langs [scanLangs] + foreach k [dict keys $langs] { + set lang [dict get $langs $k] + set tr [dict get $lang translated] + set untr [dict get $lang untranslated] + set all [expr {$tr + $untr}] + if {$all == 0} continue + + set perc [expr {round(double($tr)/$all * 1000)/10.0}] + + set lang [string tolower $lang] + puts "$k - ${perc}% ($tr / $all)" + } + } "add" - "remove" { if {$argc != 2} { usage diff --git a/SQLiteStudio3/sqlitestudio/main.cpp b/SQLiteStudio3/sqlitestudio/main.cpp index f2284a6..4ec98cc 100644 --- a/SQLiteStudio3/sqlitestudio/main.cpp +++ b/SQLiteStudio3/sqlitestudio/main.cpp @@ -24,6 +24,7 @@ #include "qio.h"
#include "translations.h"
#include "dialogs/languagedialog.h"
+#include "dialogs/triggerdialog.h"
#include "services/pluginmanager.h"
#include <QCommandLineParser>
#include <QCommandLineOption>
@@ -45,12 +46,14 @@ QString uiHandleCmdLineArgs() QCommandLineOption debugOption({"d", "debug"}, QObject::tr("Enables debug messages in console (accessible with F12)."));
QCommandLineOption debugStdOutOption("debug-stdout", QObject::tr("Redirects debug messages into standard output (forces debug mode)."));
+ QCommandLineOption debugFileOption("debug-file", QObject::tr("Redirects debug messages into given file (forces debug mode)."), QObject::tr("log file"));
QCommandLineOption lemonDebugOption("debug-lemon", QObject::tr("Enables Lemon parser debug messages for SQL code assistant."));
QCommandLineOption sqlDebugOption("debug-sql", QObject::tr("Enables debugging of every single SQL query being sent to any database."));
QCommandLineOption sqlDebugDbNameOption("debug-sql-db", QObject::tr("Limits SQL query messages to only the given <database>."), QObject::tr("database"));
QCommandLineOption listPluginsOption("list-plugins", QObject::tr("Lists plugins installed in the SQLiteStudio and quits."));
parser.addOption(debugOption);
parser.addOption(debugStdOutOption);
+ parser.addOption(debugFileOption);
parser.addOption(lemonDebugOption);
parser.addOption(sqlDebugOption);
parser.addOption(sqlDebugDbNameOption);
@@ -60,7 +63,8 @@ QString uiHandleCmdLineArgs() parser.process(qApp->arguments());
- setUiDebug(parser.isSet(debugOption) || parser.isSet(debugStdOutOption) || parser.isSet(sqlDebugOption), !parser.isSet(debugStdOutOption));
+ bool enableDebug = parser.isSet(debugOption) || parser.isSet(debugStdOutOption) || parser.isSet(sqlDebugOption) || parser.isSet(debugFileOption);
+ setUiDebug(enableDebug, !parser.isSet(debugStdOutOption), parser.value(debugFileOption));
CompletionHelper::enableLemonDebug = parser.isSet(lemonDebugOption);
setSqlLoggingEnabled(parser.isSet(sqlDebugOption));
if (parser.isSet(sqlDebugDbNameOption))
@@ -118,6 +122,7 @@ int main(int argc, char *argv[]) MultiEditorTime::staticInit();
MultiEditorDate::staticInit();
MultiEditorBool::staticInit();
+ TriggerDialog::staticInit();
MainWindow::getInstance();
diff --git a/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc b/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc index de49c48..1abc1e0 100644 --- a/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc +++ b/SQLiteStudio3/sqlitestudio/sqlitestudio.qrc @@ -3,5 +3,7 @@ <file>translations/sqlitestudio_pl.qm</file> <file>translations/sqlitestudio_ru.qm</file> <file>translations/sqlitestudio_fr.qm</file> + <file>translations/sqlitestudio_sk.qm</file> + <file>translations/sqlitestudio_zh_CN.qm</file> </qresource> </RCC> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts index 65c406f..1d96a62 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts @@ -1,61 +1,71 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="48"/> - <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="49"/> - <source>Enables debugging of every single SQL query being sent to any database.</source> + <source>log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="50"/> + <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="51"/> + <source>Enables debugging of every single SQL query being sent to any database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> <translation type="unfinished"></translation> </message> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts index 2e4f578..34ff1b5 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_es.ts @@ -1,61 +1,71 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="48"/> - <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="49"/> - <source>Enables debugging of every single SQL query being sent to any database.</source> + <source>log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="50"/> + <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="51"/> + <source>Enables debugging of every single SQL query being sent to any database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> <translation type="unfinished"></translation> </message> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts index 8ff363f..3a5ef09 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_fr.ts @@ -1,62 +1,72 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> <translatorcomment>Interface GUI de SQLiteStudio un outil pour SQLite</translatorcomment> <translation></translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> <translation>Messages de déboguage avec la console(accessible avec F12).</translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> <translation>Messages de déboguage redirigés vers sortie standard(mode déboguage forcé).</translation> </message> <message> - <location filename="../main.cpp" line="48"/> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="49"/> + <source>log file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="50"/> <source>Enables Lemon parser debug messages for SQL code assistant.</source> <translation>Message de déboguage avec l'analyseur Lemon pour un assistant code SQL.</translation> </message> <message> - <location filename="../main.cpp" line="49"/> + <location filename="../main.cpp" line="51"/> <source>Enables debugging of every single SQL query being sent to any database.</source> <translation>Déboguage pour toutes requêtes SQL simple utilisé pour la plupart des bases de données.</translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation>Limites des meesages de la requête SQL pour la <database>.</translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> <translation>Base de données</translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation>Listes des plugins installés dans SQLiteStudio et quitter.</translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> <translation>Fichier</translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation>Fichier de la base de données à ouvrir</translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> <translation>Erreur</translation> </message> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm Binary files differindex 610ec3f..2da6fe3 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.qm diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts index cc2f9ca..967434a 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>QObject</name> <message> @@ -47,5 +47,13 @@ <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation>Wypisuje listę zainstalowanych w SQLiteStudio wtyczek i wychodzi.</translation> </message> + <message> + <source>Redirects debug messages into given file (forces debug mode).</source> + <translation>Przekierowuje wiadomości debugujące do danego pliku (wymusza tryb debugujący).</translation> + </message> + <message> + <source>log file</source> + <translation>plik logów</translation> + </message> </context> </TS> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts index f549b1e..c95e02a 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_pt_BR.ts @@ -1,61 +1,71 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="48"/> - <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="49"/> - <source>Enables debugging of every single SQL query being sent to any database.</source> + <source>log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="50"/> + <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="51"/> + <source>Enables debugging of every single SQL query being sent to any database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> <translation type="unfinished"></translation> </message> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm Binary files differindex c8e1e69..e6a4c31 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.qm diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts index 3b24e3c..8a9b8ca 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts @@ -4,58 +4,68 @@ <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> <translation>Графический интерфейс для SQLiteStudio, менеджера баз данных SQLite.</translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> <translation>Включает вывод отладочных сообщений в консоль (доступную по нажатию F12).</translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> <translation>Перенаправляет отладочные сообщения в стандартный поток (принудительный отладочный режим).</translation> </message> <message> - <location filename="../main.cpp" line="48"/> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> + <translation>Перенаправляет отладочные сообщения в указанный файл (принудительный отладочный режим).</translation> + </message> + <message> + <location filename="../main.cpp" line="49"/> + <source>log file</source> + <translation>файл журнала</translation> + </message> + <message> + <location filename="../main.cpp" line="50"/> <source>Enables Lemon parser debug messages for SQL code assistant.</source> <translation>Включает вывод отладочных сообщений анализатора Lemon для автодополнения SQL кода.</translation> </message> <message> - <location filename="../main.cpp" line="49"/> + <location filename="../main.cpp" line="51"/> <source>Enables debugging of every single SQL query being sent to any database.</source> <translation>Включает отладку каждого запроса SQL, посылаемого к любой базе данных.</translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation>Ограничивает сообщения запросов SQL только для указанной <базы данных>.</translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> <translation>база данных</translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation>Выводит список установленных в SQLiteStudio модулей и осуществляет выход.</translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> <translation>файл</translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation>Файл базы данных для открытия</translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> <translation>Ошибка</translation> </message> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.qm b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.qm Binary files differindex 1776294..526751e 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.qm +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.qm diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts index 1b4c3a2..4c82ea1 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_sk.ts @@ -1,63 +1,73 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> - <translation type="unfinished"></translation> + <translation>GUI rozhranie pre SQLiteStudio, SQLite manažér.</translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> - <translation type="unfinished"></translation> + <translation>Aktivuje ladiace správy v konzole (dostupné pomocou F12).</translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> + <translation>Presmerovať ladiace informácie na štandardný výstup (vynútený ladiaci mód).</translation> + </message> + <message> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="48"/> + <location filename="../main.cpp" line="49"/> + <source>log file</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="50"/> <source>Enables Lemon parser debug messages for SQL code assistant.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="49"/> + <location filename="../main.cpp" line="51"/> <source>Enables debugging of every single SQL query being sent to any database.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> - <translation type="unfinished"></translation> + <translation>databáza</translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> - <translation type="unfinished"></translation> + <translation>Súbor</translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> - <translation type="unfinished"></translation> + <translation>Chyba</translation> </message> </context> </TS> diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts index e5f6a78..ff9ee04 100644 --- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts +++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts @@ -1,61 +1,71 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>QObject</name> <message> - <location filename="../main.cpp" line="42"/> + <location filename="../main.cpp" line="43"/> <source>GUI interface to SQLiteStudio, a SQLite manager.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="46"/> + <location filename="../main.cpp" line="47"/> <source>Enables debug messages in console (accessible with F12).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="47"/> + <location filename="../main.cpp" line="48"/> <source>Redirects debug messages into standard output (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="48"/> - <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <location filename="../main.cpp" line="49"/> + <source>Redirects debug messages into given file (forces debug mode).</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="49"/> - <source>Enables debugging of every single SQL query being sent to any database.</source> + <source>log file</source> <translation type="unfinished"></translation> </message> <message> <location filename="../main.cpp" line="50"/> + <source>Enables Lemon parser debug messages for SQL code assistant.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="51"/> + <source>Enables debugging of every single SQL query being sent to any database.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../main.cpp" line="52"/> <source>Limits SQL query messages to only the given <database>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="50"/> + <location filename="../main.cpp" line="52"/> <source>database</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="51"/> + <location filename="../main.cpp" line="53"/> <source>Lists plugins installed in the SQLiteStudio and quits.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="59"/> + <location filename="../main.cpp" line="62"/> <source>Database file to open</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../main.cpp" line="81"/> - <location filename="../main.cpp" line="96"/> + <location filename="../main.cpp" line="85"/> + <location filename="../main.cpp" line="100"/> <source>Error</source> <translation type="unfinished"></translation> </message> diff --git a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc index 7a27dfe..46f8566 100644 --- a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc +++ b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.qrc @@ -3,5 +3,7 @@ <file>translations/sqlitestudiocli_pl.qm</file> <file>translations/sqlitestudiocli_ru.qm</file> <file>translations/sqlitestudiocli_fr.qm</file> + <file>translations/sqlitestudiocli_sk.qm</file> + <file>translations/sqlitestudiocli_zh_CN.qm</file> </qresource> </RCC> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts index 887f13b..9dee56c 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="de_DE"> +<TS version="2.1" language="de_DE"> <context> <name>CLI</name> <message> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts index bd93869..d446494 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="es_ES"> +<TS version="2.1" language="es_ES"> <context> <name>CLI</name> <message> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts index 3d10f87..5096d8c 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="fr_FR"> +<TS version="2.1" language="fr_FR"> <context> <name>CLI</name> <message> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm Binary files differindex b438a02..6af2684 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.qm diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts index b2ecd33..c7bdf0f 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pl_PL"> +<TS version="2.1" language="pl_PL"> <context> <name>CLI</name> <message> @@ -25,7 +25,7 @@ </message> <message> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> - <translation type="unfinished"></translation> + <translation>Baz danych przekazana w parametrach linii poleceń (%1) była już na liście pod nazwą: %2</translation> </message> </context> <context> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts index f9c8a82..5b92d37 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="pt_BR"> +<TS version="2.1" language="pt_BR"> <context> <name>CLI</name> <message> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.qm b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.qm Binary files differindex ab88676..2f2ac76 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.qm +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.qm diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts index c63207d..0cbe067 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="ru_RU"> +<TS version="2.1" language="ru_RU"> <context> <name>CLI</name> <message> @@ -21,7 +21,7 @@ <message> <location filename="../cli.cpp" line="228"/> <source>Database passed in command line parameters (%1) was already on the list under name: %2</source> - <translation type="unfinished"></translation> + <translation>База данных, переданная через аргументы командной строки (%1), уже находится в списке под именем %2</translation> </message> <message> <location filename="../cli.cpp" line="235"/> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts index d817c65..df9da22 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="sk_SK"> +<TS version="2.1" language="sk_SK"> <context> <name>CLI</name> <message> diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts index 01469f1..4dd7f0a 100644 --- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts +++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE TS> -<TS version="2.0" language="zh_CN"> +<TS version="2.1" language="zh_CN"> <context> <name>CLI</name> <message> |
