aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Unit 193 <unit193@ubuntu.com>2015-11-25 16:48:41 -0500
committerLibravatar Unit 193 <unit193@ubuntu.com>2015-11-25 16:48:41 -0500
commit8e640722c62692818ab840d50b3758f89a41a54e (patch)
tree38197eb1688a5afc338081ea17e15f938976e422
parent9618f0ebbf4b88045247c01ce8c8f58203508ebf (diff)
downloadsqlitestudio-8e640722c62692818ab840d50b3758f89a41a54e.tar.bz2
sqlitestudio-8e640722c62692818ab840d50b3758f89a41a54e.tar.xz
sqlitestudio-8e640722c62692818ab840d50b3758f89a41a54e.tar.zst
Imported Upstream version 3.0.7upstream/3.0.7
-rw-r--r--Plugins/ConfigMigration/ConfigMigration.pro4
-rw-r--r--Plugins/ConfigMigration/ConfigMigration_it.ts150
-rw-r--r--Plugins/CsvExport/CsvExport.pro4
-rw-r--r--Plugins/CsvExport/CsvExport_it.ts57
-rw-r--r--Plugins/CsvExport/CsvExport_zh_CN.ts20
-rw-r--r--Plugins/CsvImport/CsvImport.pro4
-rw-r--r--Plugins/CsvImport/CsvImport_it.ts85
-rw-r--r--Plugins/DbAndroid/DbAndroid.pro53
-rw-r--r--Plugins/DbAndroid/adbmanager.cpp426
-rw-r--r--Plugins/DbAndroid/adbmanager.h65
-rw-r--r--Plugins/DbAndroid/dbandroid.cpp209
-rw-r--r--Plugins/DbAndroid/dbandroid.h63
-rw-r--r--Plugins/DbAndroid/dbandroid.json9
-rw-r--r--Plugins/DbAndroid/dbandroid.qrc1
-rw-r--r--Plugins/DbAndroid/dbandroid_global.h12
-rw-r--r--Plugins/DbAndroid/dbandroidconnection.cpp14
-rw-r--r--Plugins/DbAndroid/dbandroidconnection.h44
-rw-r--r--Plugins/DbAndroid/dbandroidconnectionfactory.cpp28
-rw-r--r--Plugins/DbAndroid/dbandroidconnectionfactory.h21
-rw-r--r--Plugins/DbAndroid/dbandroidinstance.cpp143
-rw-r--r--Plugins/DbAndroid/dbandroidinstance.h51
-rw-r--r--Plugins/DbAndroid/dbandroidjsonconnection.cpp430
-rw-r--r--Plugins/DbAndroid/dbandroidjsonconnection.h65
-rw-r--r--Plugins/DbAndroid/dbandroidmode.h13
-rw-r--r--Plugins/DbAndroid/dbandroidpathdialog.cpp579
-rw-r--r--Plugins/DbAndroid/dbandroidpathdialog.h80
-rw-r--r--Plugins/DbAndroid/dbandroidpathdialog.ui244
-rw-r--r--Plugins/DbAndroid/dbandroidshellconnection.cpp363
-rw-r--r--Plugins/DbAndroid/dbandroidshellconnection.h59
-rw-r--r--Plugins/DbAndroid/dbandroidurl.cpp217
-rw-r--r--Plugins/DbAndroid/dbandroidurl.h59
-rw-r--r--Plugins/DbAndroid/sqlqueryandroid.cpp160
-rw-r--r--Plugins/DbAndroid/sqlqueryandroid.h47
-rw-r--r--Plugins/DbAndroid/sqlresultrowandroid.cpp12
-rw-r--r--Plugins/DbAndroid/sqlresultrowandroid.h13
-rw-r--r--Plugins/DbSqlite2/DbSqlite2.pro1
-rw-r--r--Plugins/HtmlExport/HtmlExport.pro4
-rw-r--r--Plugins/HtmlExport/HtmlExport_it.ts173
-rw-r--r--Plugins/JsonExport/JsonExport.pro4
-rw-r--r--Plugins/JsonExport/JsonExport_it.ts22
-rw-r--r--Plugins/JsonExport/JsonExport_zh_CN.ts6
-rw-r--r--Plugins/PdfExport/PdfExport.pro4
-rw-r--r--Plugins/PdfExport/PdfExport_de.ts96
-rw-r--r--Plugins/PdfExport/PdfExport_it.ts256
-rw-r--r--Plugins/Plugins.pro3
-rw-r--r--Plugins/Printing/Printing.pro4
-rw-r--r--Plugins/Printing/Printing_de.ts12
-rw-r--r--Plugins/Printing/Printing_it.ts40
-rw-r--r--Plugins/Printing/Printing_zh_CN.ts12
-rw-r--r--Plugins/RegExpImport/RegExpImport.pro4
-rw-r--r--Plugins/RegExpImport/RegExpImport_it.ts83
-rw-r--r--Plugins/ScriptingTcl/ScriptingTcl.pro8
-rw-r--r--Plugins/ScriptingTcl/ScriptingTcl_it.ts22
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter.pro4
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_it.ts233
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts33
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts31
-rw-r--r--Plugins/SqlEnterpriseFormatter/formatempty.cpp5
-rw-r--r--Plugins/SqlEnterpriseFormatter/formatempty.h3
-rw-r--r--Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.cpp206
-rw-r--r--Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.h23
-rw-r--r--Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.ui69
-rw-r--r--Plugins/SqlExport/SqlExport.pro4
-rw-r--r--Plugins/SqlExport/SqlExport_it.ts98
-rw-r--r--Plugins/SqlExport/SqlExport_zh_CN.ts14
-rw-r--r--Plugins/SqlFormatterSimple/SqlFormatterSimple.pro4
-rw-r--r--Plugins/SqlFormatterSimple/SqlFormatterSimple_it.ts17
-rw-r--r--Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts4
-rw-r--r--Plugins/XmlExport/XmlExport.pro4
-rw-r--r--Plugins/XmlExport/XmlExport_it.ts70
-rw-r--r--SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp11
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt9
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/TODO.txt12
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp13
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp19
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h5
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp14
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/lempar.c6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp6
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/token.cpp8
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/parser/token.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp2
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp59
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/tablemodifier.h4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts488
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts32
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts32
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts1283
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts4
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts32
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts34
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts50
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts34
-rwxr-xr-xSQLiteStudio3/create_source_dist.sh7
-rw-r--r--SQLiteStudio3/create_win32_portable.bat2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/common/tablewidget.cpp1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp173
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h10
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp11
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp75
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h3
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp13
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/mainwindow.h1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp7
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/sqleditor.h2
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts1915
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts511
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts511
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts6154
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts511
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts511
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts511
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts86
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts1096
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp1
-rw-r--r--SQLiteStudio3/sqlitestudio/sqlitestudio.pro4
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts28
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts73
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts2
-rw-r--r--SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts12
-rw-r--r--SQLiteStudio3/sqlitestudiocli/cli.cpp29
-rw-r--r--SQLiteStudio3/sqlitestudiocli/cli.h10
-rw-r--r--SQLiteStudio3/sqlitestudiocli/clicommandexecutor.cpp4
-rw-r--r--SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.cpp94
-rw-r--r--SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.h8
-rw-r--r--SQLiteStudio3/sqlitestudiocli/commands/clicommanduse.cpp2
-rw-r--r--SQLiteStudio3/sqlitestudiocli/main.cpp5
-rw-r--r--SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro4
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts68
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts68
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts70
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts788
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts44
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts68
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts72
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts68
-rw-r--r--SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts100
149 files changed, 18183 insertions, 3299 deletions
diff --git a/Plugins/ConfigMigration/ConfigMigration.pro b/Plugins/ConfigMigration/ConfigMigration.pro
index 8983b8d..52eeaec 100644
--- a/Plugins/ConfigMigration/ConfigMigration.pro
+++ b/Plugins/ConfigMigration/ConfigMigration.pro
@@ -31,7 +31,8 @@ RESOURCES += \
configmigration.qrc
-TRANSLATIONS += ConfigMigration_zh_CN.ts \
+TRANSLATIONS += ConfigMigration_it.ts \
+ ConfigMigration_zh_CN.ts \
ConfigMigration_sk.ts \
ConfigMigration_de.ts \
ConfigMigration_ru.ts \
@@ -51,3 +52,4 @@ TRANSLATIONS += ConfigMigration_zh_CN.ts \
+
diff --git a/Plugins/ConfigMigration/ConfigMigration_it.ts b/Plugins/ConfigMigration/ConfigMigration_it.ts
new file mode 100644
index 0000000..c71c354
--- /dev/null
+++ b/Plugins/ConfigMigration/ConfigMigration_it.ts
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>ConfigMigration</name>
+ <message>
+ <location filename="configmigration.cpp" line="36"/>
+ <source>A configuration from old SQLiteStudio 2.x.x has been detected. Would you like to migrate old settings into the current version? &lt;a href=&quot;%1&quot;&gt;Click here to do that&lt;/a&gt;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigration.cpp" line="136"/>
+ <source>Bug reports history (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigration.cpp" line="145"/>
+ <source>Database list (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigration.cpp" line="154"/>
+ <source>Custom SQL functions (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigration.cpp" line="163"/>
+ <source>SQL queries history (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ConfigMigrationWizard</name>
+ <message>
+ <location filename="configmigrationwizard.ui" line="14"/>
+ <source>Configuration migration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.ui" line="24"/>
+ <source>Items to migrate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.ui" line="27"/>
+ <source>This is a list of items found in the old configuration file, which can be migrated into the current configuration.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.ui" line="58"/>
+ <source>Options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.ui" line="64"/>
+ <source>Put imported databases into separate group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.ui" line="76"/>
+ <source>Group name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="60"/>
+ <source>Enter a non-empty name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="68"/>
+ <source>Top level group named &apos;%1&apos; already exists. Enter a group name that does not exist yet.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="102"/>
+ <source>Could not open old configuration file in order to migrate settings from it.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="110"/>
+ <source>Could not open current configuration file in order to migrate settings from old configuration file.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="119"/>
+ <source>Could not commit migrated data into new configuration file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="163"/>
+ <source>Could not read bug reports history from old configuration file in order to migrate it: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="180"/>
+ <source>Could not insert a bug reports history entry into new configuration file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="201"/>
+ <source>Could not read database list from old configuration file in order to migrate it: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="215"/>
+ <source>Could not query for available order for containing group in new configuration file in order to migrate the database list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="226"/>
+ <source>Could not create containing group in new configuration file in order to migrate the database list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="247"/>
+ <source>Could not insert a database entry into new configuration file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="259"/>
+ <source>Could not query for available order for next database in new configuration file in order to migrate the database list: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="270"/>
+ <source>Could not create group referencing the database in new configuration file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="288"/>
+ <source>Could not read function list from old configuration file in order to migrate it: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="323"/>
+ <source>Could not read SQL queries history from old configuration file in order to migrate it: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="330"/>
+ <source>Could not read next ID for SQL queries history in new configuration file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="configmigrationwizard.cpp" line="346"/>
+ <source>Could not insert SQL history entry into new configuration file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/CsvExport/CsvExport.pro b/Plugins/CsvExport/CsvExport.pro
index 1599a13..9e509b2 100644
--- a/Plugins/CsvExport/CsvExport.pro
+++ b/Plugins/CsvExport/CsvExport.pro
@@ -29,7 +29,8 @@ RESOURCES += \
-TRANSLATIONS += CsvExport_zh_CN.ts \
+TRANSLATIONS += CsvExport_it.ts \
+ CsvExport_zh_CN.ts \
CsvExport_sk.ts \
CsvExport_de.ts \
CsvExport_ru.ts \
@@ -49,3 +50,4 @@ TRANSLATIONS += CsvExport_zh_CN.ts \
+
diff --git a/Plugins/CsvExport/CsvExport_it.ts b/Plugins/CsvExport/CsvExport_it.ts
new file mode 100644
index 0000000..30f4907
--- /dev/null
+++ b/Plugins/CsvExport/CsvExport_it.ts
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>CsvExport</name>
+ <message>
+ <location filename="CsvExport.ui" line="20"/>
+ <source>Column names in first row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="30"/>
+ <source>Column separator:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="41"/>
+ <source>, (comma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="46"/>
+ <source>; (semicolon)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="51"/>
+ <source>\t (tab)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="56"/>
+ <source> (whitespace)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="61"/>
+ <source>Custom:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="82"/>
+ <source>Export NULL values as:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvExport.ui" line="89"/>
+ <source>Empty string</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="csvexport.cpp" line="42"/>
+ <source>Enter the custom separator character.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/CsvExport/CsvExport_zh_CN.ts b/Plugins/CsvExport/CsvExport_zh_CN.ts
index e73fe4e..6d31621 100644
--- a/Plugins/CsvExport/CsvExport_zh_CN.ts
+++ b/Plugins/CsvExport/CsvExport_zh_CN.ts
@@ -6,52 +6,52 @@
<message>
<location filename="CsvExport.ui" line="20"/>
<source>Column names in first row</source>
- <translation type="unfinished"></translation>
+ <translation>第一行显示列名</translation>
</message>
<message>
<location filename="CsvExport.ui" line="30"/>
<source>Column separator:</source>
- <translation type="unfinished"></translation>
+ <translation>列分隔符:</translation>
</message>
<message>
<location filename="CsvExport.ui" line="41"/>
<source>, (comma)</source>
- <translation type="unfinished"></translation>
+ <translation>,(逗号)</translation>
</message>
<message>
<location filename="CsvExport.ui" line="46"/>
<source>; (semicolon)</source>
- <translation type="unfinished"></translation>
+ <translation>;(分号)</translation>
</message>
<message>
<location filename="CsvExport.ui" line="51"/>
<source>\t (tab)</source>
- <translation type="unfinished"></translation>
+ <translation>\t(tab位)</translation>
</message>
<message>
<location filename="CsvExport.ui" line="56"/>
<source> (whitespace)</source>
- <translation type="unfinished"></translation>
+ <translation> (空格)</translation>
</message>
<message>
<location filename="CsvExport.ui" line="61"/>
<source>Custom:</source>
- <translation type="unfinished"></translation>
+ <translation>自定义:</translation>
</message>
<message>
<location filename="CsvExport.ui" line="82"/>
<source>Export NULL values as:</source>
- <translation type="unfinished"></translation>
+ <translation>NULL导出为:</translation>
</message>
<message>
<location filename="CsvExport.ui" line="89"/>
<source>Empty string</source>
- <translation type="unfinished"></translation>
+ <translation>空字符串</translation>
</message>
<message>
<location filename="csvexport.cpp" line="42"/>
<source>Enter the custom separator character.</source>
- <translation type="unfinished"></translation>
+ <translation>输入自定义分隔符 。</translation>
</message>
</context>
</TS>
diff --git a/Plugins/CsvImport/CsvImport.pro b/Plugins/CsvImport/CsvImport.pro
index 6ce08d1..7e8dce0 100644
--- a/Plugins/CsvImport/CsvImport.pro
+++ b/Plugins/CsvImport/CsvImport.pro
@@ -28,7 +28,8 @@ RESOURCES += \
csvimport.qrc
-TRANSLATIONS += CsvImport_zh_CN.ts \
+TRANSLATIONS += CsvImport_it.ts \
+ CsvImport_zh_CN.ts \
CsvImport_sk.ts \
CsvImport_de.ts \
CsvImport_ru.ts \
@@ -48,3 +49,4 @@ TRANSLATIONS += CsvImport_zh_CN.ts \
+
diff --git a/Plugins/CsvImport/CsvImport_it.ts b/Plugins/CsvImport/CsvImport_it.ts
new file mode 100644
index 0000000..bc60d95
--- /dev/null
+++ b/Plugins/CsvImport/CsvImport_it.ts
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>CsvImport</name>
+ <message>
+ <location filename="csvimport.cpp" line="30"/>
+ <source>Cannot read file %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="csvimport.cpp" line="62"/>
+ <source>Could not find any data in the file %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="csvimport.cpp" line="167"/>
+ <source>Enter the custom separator character.</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="csvimport.cpp" line="194"/>
+ <source>CSV files (*.csv);;Text files (*.txt);;All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>csvImportOptions</name>
+ <message>
+ <location filename="CsvImportOptions.ui" line="24"/>
+ <source>, (comma)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="29"/>
+ <source>; (semicolon)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="34"/>
+ <source>\t (tab)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="39"/>
+ <source> (whitespace)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="44"/>
+ <source>Custom:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="52"/>
+ <source>&lt;p&gt;Enable this if the first data line in your CSV file represents column names. You don&apos;t want column names to be imported into the table as a regular data.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="55"/>
+ <source>First line represents CSV column names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="65"/>
+ <source>Field separator:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="CsvImportOptions.ui" line="85"/>
+ <source>NULL values:</source>
+ <translation type="unfinished"></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>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/DbAndroid/DbAndroid.pro b/Plugins/DbAndroid/DbAndroid.pro
new file mode 100644
index 0000000..2895c7f
--- /dev/null
+++ b/Plugins/DbAndroid/DbAndroid.pro
@@ -0,0 +1,53 @@
+#-------------------------------------------------
+#
+# Project created by QtCreator 2015-01-04T19:37:23
+#
+#-------------------------------------------------
+
+QT += widgets network
+
+include($$PWD/../../../sqlitestudio/SQLiteStudio3/plugins.pri)
+
+TARGET = DbAndroid
+TEMPLATE = lib
+
+DEFINES += DBANDROID_LIBRARY
+
+SOURCES += dbandroid.cpp \
+ dbandroidinstance.cpp \
+ sqlqueryandroid.cpp \
+ dbandroidurl.cpp \
+ dbandroidpathdialog.cpp \
+ adbmanager.cpp \
+ sqlresultrowandroid.cpp \
+ dbandroidjsonconnection.cpp \
+ dbandroidshellconnection.cpp \
+ dbandroidconnection.cpp \
+ dbandroidconnectionfactory.cpp
+
+HEADERS += dbandroid.h\
+ dbandroid_global.h \
+ dbandroidinstance.h \
+ sqlqueryandroid.h \
+ dbandroidurl.h \
+ dbandroidpathdialog.h \
+ adbmanager.h \
+ dbandroidconnection.h \
+ dbandroidmode.h \
+ sqlresultrowandroid.h \
+ dbandroidjsonconnection.h \
+ dbandroidshellconnection.h \
+ dbandroidconnectionfactory.h
+
+win32: {
+ LIBS += -lcoreSQLiteStudio -lguiSQLiteStudio
+}
+
+DISTFILES += \
+ dbandroid.json
+
+FORMS += \
+ dbandroidpathdialog.ui
+
+RESOURCES += \
+ dbandroid.qrc
diff --git a/Plugins/DbAndroid/adbmanager.cpp b/Plugins/DbAndroid/adbmanager.cpp
new file mode 100644
index 0000000..ed012a1
--- /dev/null
+++ b/Plugins/DbAndroid/adbmanager.cpp
@@ -0,0 +1,426 @@
+#include "adbmanager.h"
+#include "dbandroid.h"
+#include "common/utils.h"
+#include <QFileInfo>
+#include <QDebug>
+#include <QTimer>
+#include <QRegularExpression>
+
+AdbManager::AdbManager(DbAndroid* dbAndroidPlugin) :
+ QObject(dbAndroidPlugin), plugin(dbAndroidPlugin)
+{
+ connect(this, SIGNAL(internalDeviceListUpdate(QStringList)), this, SLOT(handleNewDeviceList(QStringList)));
+ connect(this, SIGNAL(deviceDetailsChanged(QList<Device>)), this, SLOT(handleNewDetails(QList<Device>)));
+
+ adbRunMonitor = new QTimer(this);
+ connect(adbRunMonitor, SIGNAL(timeout()), this, SLOT(updateDeviceList()));
+ adbRunMonitor->setSingleShot(false);
+ adbRunMonitor->setInterval(1000);
+ adbRunMonitor->start();
+ updateDeviceList();
+}
+
+AdbManager::~AdbManager()
+{
+ adbRunMonitor->stop();
+ updateDevicesFuture.waitForFinished();
+}
+
+const QStringList& AdbManager::getDevices(bool forceSyncUpdate)
+{
+ if (forceSyncUpdate)
+ syncDeviceListUpdate();
+
+ return currentDeviceList;
+}
+
+AdbManager::Device AdbManager::getDetails(const QString& deviceId)
+{
+ if (!currentDeviceDetails.contains(deviceId))
+ {
+ AdbManager::Device device;
+ device.id = deviceId;
+ return device;
+ }
+
+ return currentDeviceDetails[deviceId];
+}
+
+QList<AdbManager::Device> AdbManager::getDeviceDetails()
+{
+ return currentDeviceDetails.values();
+}
+
+QHash<QString, QPair<int, int>> AdbManager::getForwards()
+{
+ QHash<QString, QPair<int, int>> forwards;
+ QString stdOut;
+ if (!exec(QStringList({"forward", "--list"}), &stdOut))
+ return forwards;
+
+ QRegularExpression re("(.*)\\s+tcp:(\\d+)\\s+tcp:(\\d+)");
+ QRegularExpressionMatch match;
+ QPair<int, int> forward;
+ QStringList lines = stdOut.split("\n");
+ for (const QString& line : lines)
+ {
+ match = re.match(line);
+ if (!match.hasMatch())
+ continue;
+
+ forward.first = match.captured(2).toInt();
+ forward.second = match.captured(3).toInt();
+ forwards[match.captured(1)] = forward;
+ }
+
+ return forwards;
+}
+
+int AdbManager::makeForwardFor(const QString& device, int targetPort)
+{
+ static_qstring(portTpl, "tcp:%1");
+
+ QHash<QString, QPair<int, int>> forwards = getForwards();
+ if (forwards.contains(device) && forwards[device].second == targetPort)
+ return forwards[device].first;
+
+ int localPort = targetPort;
+ QStringList args = QStringList({"-s", device, "forward"});
+ args << portTpl.arg(localPort);
+ args << portTpl.arg(targetPort);
+
+ int tryCount = 0;
+ QString stdOut;
+ bool res;
+ while (!(res = exec(args, &stdOut)) && tryCount++ < 3)
+ {
+ localPort = rand(1025, 65000);
+ args.replace(3, portTpl.arg(localPort));
+ }
+
+ if (!res)
+ return -1;
+
+ return localPort;
+}
+
+QString AdbManager::findAdb()
+{
+ QStringList candidates;
+#ifdef Q_OS_WIN32
+ candidates << "adb.exe";
+#endif
+
+#ifdef Q_OS_MACX
+ candidates << (QDir::homePath() + "/Library/Android/sdk/platform-tools/adb");
+#endif
+
+#ifdef Q_OS_UNIX
+ candidates << "adb" << "./adb";
+
+ QProcess locate;
+ locate.start("locate", QStringList({"adb"}));
+ if (waitForProc(locate, true))
+ {
+ QFileInfo fi;
+ QStringList locateLines = decode(locate.readAllStandardOutput()).split("\n");
+ for (const QString& filePath : locateLines)
+ {
+ fi.setFile(filePath);
+ if (fi.fileName() != "adb" || !fi.isReadable() || !fi.isExecutable())
+ continue;
+
+ candidates << filePath;
+ }
+ }
+#endif
+
+#ifdef Q_OS_WIN32
+ if (testAdb("adb.exe", true))
+ return "adb.exe";
+
+ static_qstring(winAdbPath, "/../Android/sdk/platform-tools/adb.exe");
+ QString fullPath;
+ for (const QString& path : QStandardPaths::standardLocations(QStandardPaths::AppLocalDataLocation))
+ {
+ fullPath = QDir::cleanPath(path + winAdbPath);
+ if (testAdb(fullPath, true))
+ return fullPath;
+ }
+#endif
+
+ return QString();
+}
+
+bool AdbManager::testCurrentAdb()
+{
+ return testAdb(plugin->getCurrentAdb(), false);
+}
+
+bool AdbManager::testAdb(const QString& adbPath, bool quiet)
+{
+ if (adbPath.isEmpty())
+ return false;
+
+ QProcess adbApp;
+ adbApp.start(adbPath, QStringList({"version"}));
+ if (!waitForProc(adbApp, quiet))
+ return false;
+
+ QString verStr = decode(adbApp.readAllStandardOutput());
+ bool res = verStr.startsWith("Android Debug Bridge", Qt::CaseInsensitive);
+ if (!res && !quiet)
+ qWarning() << "Adb binary correct, but its version string is incorrect:" << verStr;
+
+ return res;
+}
+
+bool AdbManager::execBytes(const QStringList& arguments, QByteArray* stdOut, QByteArray* stdErr)
+{
+ if (!ensureAdbRunning())
+ return false;
+
+ QProcess proc;
+ if (arguments.join(" ").size() > 800)
+ {
+ if (!execLongCommand(arguments, proc, stdErr))
+ return false;
+ }
+ else
+ {
+ proc.start(plugin->getCurrentAdb(), arguments);
+ if (!waitForProc(proc, false))
+ return false;
+ }
+
+ if (stdOut)
+ *stdOut = proc.readAllStandardOutput();
+
+ if (stdErr)
+ *stdErr = proc.readAllStandardError();
+
+ return true;
+}
+
+bool AdbManager::waitForProc(QProcess& proc, bool quiet)
+{
+ if (!proc.waitForFinished(-1))
+ {
+ if (!quiet)
+ qDebug() << "DbAndroid QProcess timed out.";
+
+ return false;
+ }
+
+ if (proc.exitStatus() == QProcess::CrashExit)
+ {
+ if (!quiet)
+ {
+ qDebug() << "DbAndroid QProcess finished by crashing.";
+ qDebug() << proc.readAllStandardOutput() << proc.readAllStandardError();
+ }
+
+ return false;
+ }
+
+ if (proc.exitCode() != 0)
+ {
+ if (!quiet)
+ {
+ qDebug() << "DbAndroid QProcess finished with code:" << proc.exitCode();
+ qDebug() << proc.readAllStandardOutput() << proc.readAllStandardError();
+ }
+
+ return false;
+ }
+
+ return true;
+}
+
+bool AdbManager::ensureAdbRunning()
+{
+ if (!plugin->isAdbValid())
+ return false;
+
+ QProcess adbApp;
+ adbApp.start(plugin->getCurrentAdb(), QStringList({"start-server"}));
+ if (!waitForProc(adbApp, false))
+ return false;
+
+ return true;
+}
+
+bool AdbManager::exec(const QStringList& arguments, QString* stdOut, QString* stdErr)
+{
+ QByteArray* out = stdOut ? new QByteArray() : nullptr;
+ QByteArray* err = stdErr ? new QByteArray() : nullptr;
+ bool res = execBytes(arguments, out, err);
+
+ if (stdOut)
+ {
+ *stdOut = decode(*out);
+ delete out;
+ }
+
+ if (stdErr)
+ {
+ *stdErr = decode(*err);
+ delete err;
+ }
+
+ return res;
+}
+
+QByteArray AdbManager::encode(const QString& input)
+{
+ return input.toUtf8();
+}
+
+QString AdbManager::decode(const QByteArray& input)
+{
+ return QString::fromUtf8(input);
+}
+
+bool AdbManager::execLongCommand(const QStringList& arguments, QProcess& proc, QByteArray* stdErr)
+{
+ // Take off initial arguments from ADB, store it to use with "push".
+ QStringList primaryArguments;
+ QStringList args = arguments;
+ while (args.first() != "shell")
+ primaryArguments << args.takeFirst();
+
+ args.removeFirst(); // remove the shell itself
+
+ // Escape remaining arguments for the script
+ QString cmd = " '" + args.replaceInStrings("'", "'\''").join("' '") + "'";
+
+ // Now, the temporary file for the script
+ QTemporaryFile tmpFile("SQLiteStudio-XXXXXX.sh");
+ if (!tmpFile.open())
+ {
+ if (stdErr)
+ *stdErr = encode(QString("Could not create temporary file: %1").arg(tmpFile.fileName()));
+
+ return false;
+ }
+
+ tmpFile.write(cmd.toUtf8());
+ tmpFile.close();
+
+ // Push the file
+ args = primaryArguments;
+ args << "push" << tmpFile.fileName() << "/data/local/tmp";
+ proc.start(plugin->getCurrentAdb(), args);
+ if (!waitForProc(proc, false))
+ return false;
+
+ QString remoteFile = ("/data/local/tmp/" + QFileInfo(tmpFile.fileName()).fileName());
+
+ // Execute the file
+ args = primaryArguments;
+ args << "shell" << "sh" << remoteFile;
+ proc.start(plugin->getCurrentAdb(), args);
+ if (!waitForProc(proc, false))
+ return false;
+
+ // Delete the file from device
+ args = primaryArguments;
+ args << "shell" << "rm" << remoteFile;
+ QProcess localProc;
+ localProc.start(plugin->getCurrentAdb(), args);
+ if (!waitForProc(localProc, false))
+ {
+ // Not a critical issue...
+ qWarning() << "Could not clean up execution script from the device: " << remoteFile << "\nDetails:\n"
+ << localProc.readAllStandardOutput() << "\n" << localProc.readAllStandardError();
+ }
+
+ return true;
+}
+
+QStringList AdbManager::getDevicesInternal(bool emitSignal)
+{
+ QStringList devices;
+ QString stdOut;
+ if (!exec(QStringList({"devices"}), &stdOut))
+ {
+ if (emitSignal)
+ emit internalDeviceListUpdate(devices);
+
+ return devices;
+ }
+
+ QRegularExpression re("(.*)\\s+device$");
+ QRegularExpressionMatch match;
+ QStringList lines = stdOut.split("\n");
+ for (const QString& line : lines)
+ {
+ match = re.match(line.trimmed());
+ if (!match.hasMatch())
+ continue;
+
+ devices << match.captured(1).trimmed();
+ }
+
+ if (emitSignal)
+ emit internalDeviceListUpdate(devices);
+
+ return devices;
+}
+
+void AdbManager::syncDeviceListUpdate()
+{
+ currentDeviceList = getDevicesInternal(false);
+ updateDetails(currentDeviceList);
+}
+
+void AdbManager::updateDetails(const QStringList& devices)
+{
+ QString stdOut;
+ QList<Device> detailList;
+ for (const QString& deviceId : devices)
+ {
+ Device deviceDetails;
+ deviceDetails.id = deviceId;
+ if (exec(QStringList({"-s", deviceId, "shell", "getprop", "ro.product.manufacturer"}), &stdOut))
+ deviceDetails.fullName = stdOut.trimmed();
+ else
+ qWarning() << "Could not read brand for device" << deviceId;
+
+ if (exec(QStringList({"-s", deviceId, "shell", "getprop", "ro.product.model"}), &stdOut))
+ deviceDetails.fullName += " " + stdOut.trimmed();
+ else
+ qWarning() << "Could not read brand for device" << deviceId;
+
+ deviceDetails.fullName = deviceDetails.fullName.trimmed();
+ detailList << deviceDetails;
+ }
+
+ emit deviceDetailsChanged(detailList);
+}
+
+void AdbManager::updateDeviceList()
+{
+ if (!plugin->isAdbValid())
+ return;
+
+ updateDevicesFuture = QtConcurrent::run(this, &AdbManager::getDevicesInternal, true);
+}
+
+void AdbManager::handleNewDeviceList(const QStringList& devices)
+{
+ if (currentDeviceList == devices)
+ return;
+
+ currentDeviceList = devices;
+ QtConcurrent::run(this, &AdbManager::updateDetails, devices);
+
+ emit deviceListChanged(devices);
+}
+
+void AdbManager::handleNewDetails(const QList<AdbManager::Device>& devices)
+{
+ currentDeviceDetails.clear();
+ for (Device device : devices)
+ currentDeviceDetails[device.id] = device;
+}
diff --git a/Plugins/DbAndroid/adbmanager.h b/Plugins/DbAndroid/adbmanager.h
new file mode 100644
index 0000000..adeca90
--- /dev/null
+++ b/Plugins/DbAndroid/adbmanager.h
@@ -0,0 +1,65 @@
+#ifndef ADBMANAGER_H
+#define ADBMANAGER_H
+
+#include <QObject>
+#include <QProcess>
+#include <QtConcurrent/QtConcurrent>
+
+class DbAndroid;
+class QTimer;
+
+class AdbManager : public QObject
+{
+ Q_OBJECT
+ public:
+ struct Device
+ {
+ QString id;
+ QString fullName;
+ };
+
+ AdbManager(DbAndroid* plugin);
+ ~AdbManager();
+
+ const QStringList& getDevices(bool forceSyncUpdate = false);
+ Device getDetails(const QString& deviceId);
+ QList<Device> getDeviceDetails();
+ QHash<QString,QPair<int,int>> getForwards();
+ int makeForwardFor(const QString& device, int targetPort);
+ QString findAdb();
+ bool testCurrentAdb();
+ bool testAdb(const QString& adbPath, bool quiet = false);
+ bool execBytes(const QStringList& arguments, QByteArray* stdOut = nullptr, QByteArray* stdErr = nullptr);
+ bool exec(const QStringList& arguments, QString* stdOut = nullptr, QString* stdErr = nullptr);
+
+ static QByteArray encode(const QString& input);
+ static QString decode(const QByteArray& input);
+
+ private:
+ bool execLongCommand(const QStringList& arguments, QProcess& proc, QByteArray* stdErr);
+ bool waitForProc(QProcess& proc, bool quiet = false);
+ bool ensureAdbRunning();
+ QStringList getDevicesInternal(bool emitSignal);
+ void syncDeviceListUpdate();
+ void updateDetails(const QStringList& devices);
+
+ DbAndroid* plugin;
+ QTimer* adbRunMonitor = nullptr;
+ QStringList currentDeviceList;
+ QHash<QString,Device> currentDeviceDetails;
+ QFuture<QStringList> updateDevicesFuture;
+
+ private slots:
+ void updateDeviceList();
+ void handleNewDeviceList(const QStringList& devices);
+ void handleNewDetails(const QList<Device>& devices);
+
+ signals:
+ void internalDeviceListUpdate(const QStringList& devices);
+ void deviceListChanged(const QStringList& devices);
+ void deviceDetailsChanged(const QList<Device>& details);
+};
+
+Q_DECLARE_METATYPE(QList<AdbManager::Device>)
+
+#endif // ADBMANAGER_H
diff --git a/Plugins/DbAndroid/dbandroid.cpp b/Plugins/DbAndroid/dbandroid.cpp
new file mode 100644
index 0000000..99150cd
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroid.cpp
@@ -0,0 +1,209 @@
+#include "adbmanager.h"
+#include "dbandroid.h"
+#include "dbandroidinstance.h"
+#include "dbandroidpathdialog.h"
+#include "mainwindow.h"
+#include "services/notifymanager.h"
+#include "uiconfig.h"
+#include "statusfield.h"
+#include "services/dbmanager.h"
+#include "dbandroidconnectionfactory.h"
+#include <QUrl>
+#include <QDebug>
+#include <QFileDialog>
+#include <QMessageBox>
+#include <QtConcurrent/QtConcurrent>
+
+DbAndroid::DbAndroid()
+{
+}
+
+QString DbAndroid::getLabel() const
+{
+ return "Android SQLite";
+}
+
+bool DbAndroid::checkIfDbServedByPlugin(Db* db) const
+{
+ return (db && dynamic_cast<DbAndroidInstance*>(db));
+}
+
+Db* DbAndroid::getInstance(const QString& name, const QString& path, const QHash<QString, QVariant>& options, QString* errorMessage)
+{
+ DbAndroidUrl url(path);
+ if (!url.isValid())
+ {
+ if (errorMessage)
+ *errorMessage = tr("Invalid or incomplete Android Database URL.");
+
+ return nullptr;
+ }
+
+ DbAndroidInstance* db = new DbAndroidInstance(this, name, path, options);
+ return db;
+}
+
+QList<DbPluginOption> DbAndroid::getOptionsList() const
+{
+ QList<DbPluginOption> options;
+
+ DbPluginOption customBrowseOpt;
+ customBrowseOpt.type = DbPluginOption::Type::CUSTOM_PATH_BROWSE;
+ customBrowseOpt.label = tr("Android database URL");
+ customBrowseOpt.toolTip = tr("Select Android database");
+ customBrowseOpt.customBrowseHandler = [this](const QString& initialPath) -> QString
+ {
+ DbAndroidPathDialog dialog(this, MAINWINDOW);
+ dialog.setUrl(initialPath);
+ if (!dialog.exec())
+ return QString();
+
+ return dialog.getUrl().toUrlString();
+ };
+ options << customBrowseOpt;
+
+ return options;
+}
+
+QString DbAndroid::generateDbName(const QVariant& baseValue)
+{
+ // android://drgh:port/dbName
+ QUrl url(baseValue.toString());
+ if (!url.isValid())
+ return baseValue.toString();
+
+ return url.fileName();
+}
+
+bool DbAndroid::init()
+{
+ Q_INIT_RESOURCE(dbandroid);
+
+ qRegisterMetaType<QList<AdbManager::Device>>("QList<Device>");
+
+ connect(this, SIGNAL(adbReady(bool)), this, SLOT(handleValidAdb(bool)));
+ connect(this, SIGNAL(invalidAdb()), this, SLOT(handleInvalidAdb()));
+ connect(MAINWINDOW->getStatusField(), SIGNAL(linkActivated(QString)), this, SLOT(statusFieldLinkClicked(QString)));
+
+ connectionFactory = new DbAndroidConnectionFactory(this);
+
+ adbManager = new AdbManager(this);
+ connect(adbManager, SIGNAL(deviceListChanged(QStringList)), this, SLOT(deviceListChanged()));
+
+ if (adbManager->testCurrentAdb())
+ {
+ qDebug() << "Using ADB binary:" << cfg.DbAndroid.AdbPath.get();
+ adbValid = true;
+ adbManager->getDevices(true);
+ }
+ else
+ {
+ QtConcurrent::run(this, &DbAndroid::initAdb);
+ }
+ return true;
+}
+
+void DbAndroid::deinit()
+{
+ safe_delete(connectionFactory);
+ safe_delete(adbManager);
+ Q_CLEANUP_RESOURCE(dbandroid);
+}
+
+QString DbAndroid::getCurrentAdb()
+{
+ return cfg.DbAndroid.AdbPath.get();
+}
+
+void DbAndroid::initAdb()
+{
+ QString adbPath = adbManager->findAdb();
+ if (!adbPath.isEmpty())
+ {
+ cfg.DbAndroid.AdbPath.set(adbPath);
+ qDebug() << "Found ADB binary:" << cfg.DbAndroid.AdbPath.get();
+ emit adbReady(true);
+ return;
+ }
+
+ emit invalidAdb();
+}
+
+QString DbAndroid::askForAdbPath()
+{
+#if defined(Q_OS_UNIX)
+ QString adbAppName = "adb";
+#elif defined(Q_OS_WIN32)
+ QString adbAppName = "adb.exe";
+#else
+ qCritical() << "Unsupported OS for DbAndroid.";
+ return QString();
+#endif
+ QString file = QFileDialog::getOpenFileName(MAINWINDOW, tr("Select ADB"), getFileDialogInitPath(), QString("Android Debug Bridge (%1)").arg(adbAppName));
+ if (file.isEmpty())
+ return file;
+
+ setFileDialogInitPathByFile(file);
+ return file;
+}
+
+bool DbAndroid::isAdbValid() const
+{
+ return adbValid;
+}
+
+DbAndroidConnectionFactory*DbAndroid::getConnectionFactory() const
+{
+ return connectionFactory;
+}
+
+void DbAndroid::handleValidAdb(bool showMessage)
+{
+ adbValid = true;
+ if (showMessage)
+ notifyInfo(tr("Using Android Debug Bridge: %1").arg(cfg.DbAndroid.AdbPath.get()));
+
+ DBLIST->rescanInvalidDatabasesForPlugin(this);
+}
+
+void DbAndroid::handleInvalidAdb()
+{
+ notifyError(tr("Could not find Android Debug Bridge application. <a href=\"%1\">Click here</a> to point out the location of the ADB application, "
+ "otherwise the %2 plugin will not support USB cable connections, only the network connection..").arg(SELECT_ADB_URL, getLabel()));
+}
+
+void DbAndroid::statusFieldLinkClicked(const QString& link)
+{
+ if (link == SELECT_ADB_URL)
+ {
+ QString file = askForAdbPath();
+ while (!file.isEmpty())
+ {
+ if (adbManager->testAdb(file))
+ {
+ cfg.DbAndroid.AdbPath.set(file);
+ emit adbReady(true);
+ return;
+ }
+
+ int res = QMessageBox::warning(MAINWINDOW, tr("Invalid ADB"), tr("The selected ADB is incorrect.\n"
+ "Would you like to select another one, or leave it unconfigured?"),
+ tr("Select another ADB"), tr("Leave unconfigured"));
+
+ if (res == 1)
+ return;
+
+ file = askForAdbPath();
+ }
+ }
+}
+
+void DbAndroid::deviceListChanged()
+{
+ DBLIST->rescanInvalidDatabasesForPlugin(this);
+}
+
+AdbManager* DbAndroid::getAdbManager() const
+{
+ return adbManager;
+}
diff --git a/Plugins/DbAndroid/dbandroid.h b/Plugins/DbAndroid/dbandroid.h
new file mode 100644
index 0000000..68893d0
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroid.h
@@ -0,0 +1,63 @@
+#ifndef DBANDROID_H
+#define DBANDROID_H
+
+#include "dbandroid_global.h"
+#include "plugins/dbplugin.h"
+#include "plugins/genericplugin.h"
+#include "config_builder.h"
+
+class AdbManager;
+class DbAndroidConnectionFactory;
+
+CFG_CATEGORIES(DbAndroidConfig,
+ CFG_CATEGORY(DbAndroid,
+ CFG_ENTRY(QString, AdbPath, QString())
+ )
+)
+
+class DBANDROIDSHARED_EXPORT DbAndroid : public GenericPlugin, public DbPlugin
+{
+ Q_OBJECT
+ SQLITESTUDIO_PLUGIN("dbandroid.json")
+
+ public:
+ DbAndroid();
+
+ QString getLabel() const;
+ bool checkIfDbServedByPlugin(Db* db) const;
+ Db* getInstance(const QString& name, const QString& path, const QHash<QString, QVariant>& options, QString* errorMessage);
+ QList<DbPluginOption> getOptionsList() const;
+ QString generateDbName(const QVariant& baseValue);
+ bool init();
+ void deinit();
+ QString getCurrentAdb();
+ AdbManager* getAdbManager() const;
+ bool isAdbValid() const;
+ DbAndroidConnectionFactory* getConnectionFactory() const;
+
+ static_char* PASSWORD_OPT = "remote_access_password";
+
+ private:
+ void initAdb();
+ QString askForAdbPath();
+
+ AdbManager* adbManager = nullptr;
+ DbAndroidConnectionFactory* connectionFactory = nullptr;
+ bool adbValid = false;
+
+ static_char* SELECT_ADB_URL = "select_adb://";
+
+ CFG_LOCAL_PERSISTABLE(DbAndroidConfig, cfg)
+
+ private slots:
+ void handleValidAdb(bool showMessage);
+ void handleInvalidAdb();
+ void statusFieldLinkClicked(const QString& link);
+ void deviceListChanged();
+
+ signals:
+ void adbReady(bool showMessage);
+ void invalidAdb();
+};
+
+#endif // DBANDROID_H
diff --git a/Plugins/DbAndroid/dbandroid.json b/Plugins/DbAndroid/dbandroid.json
new file mode 100644
index 0000000..0808bb4
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroid.json
@@ -0,0 +1,9 @@
+{
+ "type": "DbPlugin",
+ "title": "Android SQLite",
+ "description": "Provides support for remote SQLite databases on Android devices.",
+ "version": 10100,
+ "author": "SalSoft",
+ "minAppVersion": 30006,
+ "gui": true
+}
diff --git a/Plugins/DbAndroid/dbandroid.qrc b/Plugins/DbAndroid/dbandroid.qrc
new file mode 100644
index 0000000..7646d2b
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroid.qrc
@@ -0,0 +1 @@
+<RCC/>
diff --git a/Plugins/DbAndroid/dbandroid_global.h b/Plugins/DbAndroid/dbandroid_global.h
new file mode 100644
index 0000000..aa128c1
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroid_global.h
@@ -0,0 +1,12 @@
+#ifndef DBANDROID_GLOBAL_H
+#define DBANDROID_GLOBAL_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(DBANDROID_LIBRARY)
+# define DBANDROIDSHARED_EXPORT Q_DECL_EXPORT
+#else
+# define DBANDROIDSHARED_EXPORT Q_DECL_IMPORT
+#endif
+
+#endif // DBANDROID_GLOBAL_H
diff --git a/Plugins/DbAndroid/dbandroidconnection.cpp b/Plugins/DbAndroid/dbandroidconnection.cpp
new file mode 100644
index 0000000..1d5ba05
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidconnection.cpp
@@ -0,0 +1,14 @@
+#include "dbandroidconnection.h"
+#include <QDebug>
+
+QByteArray DbAndroidConnection::convertBlob(const QString& value)
+{
+ if (!value.startsWith("X'", Qt::CaseInsensitive) || !value.endsWith("'"))
+ {
+ qCritical() << "Invalid BLOB value from Android. Doesn't match BLOB pattern:" << value;
+ return QByteArray();
+ }
+
+ return QByteArray::fromHex(value.mid(2, value.length() - 3).toLatin1());
+}
+
diff --git a/Plugins/DbAndroid/dbandroidconnection.h b/Plugins/DbAndroid/dbandroidconnection.h
new file mode 100644
index 0000000..11e9be0
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidconnection.h
@@ -0,0 +1,44 @@
+#ifndef DBANDROIDCONNECTION_H
+#define DBANDROIDCONNECTION_H
+
+#include "dbandroidurl.h"
+#include <QObject>
+#include <QStringList>
+#include <QHash>
+
+class DbAndroidConnection : public QObject
+{
+ Q_OBJECT
+
+ public:
+ struct ExecutionResult
+ {
+ bool wasError = false;
+ int errorCode = 0;
+ QString errorMsg;
+ QStringList resultColumns;
+ QList<QVariantHash> resultDataMap;
+ QList<QVariantList> resultDataList;
+ };
+
+ DbAndroidConnection(QObject* parent = 0) : QObject(parent) {}
+ virtual ~DbAndroidConnection() {}
+
+ virtual bool connectToAndroid(const DbAndroidUrl& url) = 0;
+ virtual void disconnectFromAndroid() = 0;
+ virtual bool isConnected() const = 0;
+ virtual QString getDbName() const = 0;
+ virtual QStringList getDbList() = 0;
+ virtual QStringList getAppList() = 0;
+ virtual bool isAppOkay() const = 0;
+ virtual bool deleteDatabase(const QString& dbName) = 0;
+ virtual ExecutionResult executeQuery(const QString& query) = 0;
+
+ protected:
+ static QByteArray convertBlob(const QString& value);
+
+ signals:
+ void disconnected();
+};
+
+#endif // DBANDROIDCONNECTION_H
diff --git a/Plugins/DbAndroid/dbandroidconnectionfactory.cpp b/Plugins/DbAndroid/dbandroidconnectionfactory.cpp
new file mode 100644
index 0000000..22377b4
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidconnectionfactory.cpp
@@ -0,0 +1,28 @@
+#include "dbandroidconnectionfactory.h"
+#include "dbandroidjsonconnection.h"
+#include "dbandroidshellconnection.h"
+
+DbAndroidConnectionFactory::DbAndroidConnectionFactory(DbAndroid* plugin) :
+ plugin(plugin)
+{
+}
+
+DbAndroidConnection* DbAndroidConnectionFactory::create(const QString& url, QObject* parent)
+{
+ return create(DbAndroidUrl(url), parent);
+}
+
+DbAndroidConnection* DbAndroidConnectionFactory::create(const DbAndroidUrl& url, QObject* parent)
+{
+ switch (url.getMode())
+ {
+ case DbAndroidMode::SHELL:
+ return new DbAndroidShellConnection(plugin, parent);
+ case DbAndroidMode::NETWORK:
+ case DbAndroidMode::USB:
+ return new DbAndroidJsonConnection(plugin, parent);
+ case DbAndroidMode::null:
+ break;
+ }
+ return nullptr;
+}
diff --git a/Plugins/DbAndroid/dbandroidconnectionfactory.h b/Plugins/DbAndroid/dbandroidconnectionfactory.h
new file mode 100644
index 0000000..0e46c9f
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidconnectionfactory.h
@@ -0,0 +1,21 @@
+#ifndef DBANDROIDCONNECTIONFACTORY_H
+#define DBANDROIDCONNECTIONFACTORY_H
+
+#include "dbandroidurl.h"
+
+class DbAndroidConnection;
+class DbAndroid;
+
+class DbAndroidConnectionFactory
+{
+ public:
+ explicit DbAndroidConnectionFactory(DbAndroid* plugin);
+
+ DbAndroidConnection* create(const QString& url, QObject* parent = nullptr);
+ DbAndroidConnection* create(const DbAndroidUrl& url, QObject* parent = nullptr);
+
+ private:
+ DbAndroid* plugin = nullptr;
+};
+
+#endif // DBANDROIDCONNECTIONFACTORY_H
diff --git a/Plugins/DbAndroid/dbandroidinstance.cpp b/Plugins/DbAndroid/dbandroidinstance.cpp
new file mode 100644
index 0000000..b60203e
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidinstance.cpp
@@ -0,0 +1,143 @@
+#include "dbandroidconnection.h"
+#include "dbandroidinstance.h"
+#include "sqlqueryandroid.h"
+#include "db/sqlerrorcodes.h"
+#include "common/unused.h"
+#include "dbandroid.h"
+#include "dbandroidjsonconnection.h"
+#include "dbandroidconnectionfactory.h"
+#include "dbandroidurl.h"
+#include "schemaresolver.h"
+#include "services/notifymanager.h"
+#include <QJsonObject>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QDebug>
+
+DbAndroidInstance::DbAndroidInstance(DbAndroid* plugin, const QString& name, const QString& path, const QHash<QString, QVariant>& connOptions) :
+ AbstractDb(name, path, connOptions), plugin(plugin)
+{
+ this->connOptions[SchemaResolver::USE_SCHEMA_CACHING] = true;
+}
+
+DbAndroidInstance::~DbAndroidInstance()
+{
+ closeInternal();
+}
+
+SqlQueryPtr DbAndroidInstance::prepare(const QString& query)
+{
+ return SqlQueryPtr(new SqlQueryAndroid(this, connection, query));
+}
+
+QString DbAndroidInstance::getTypeLabel()
+{
+ return plugin->getLabel();
+}
+
+bool DbAndroidInstance::deregisterFunction(const QString& name, int argCount)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ UNUSED(argCount);
+ return true;
+}
+
+bool DbAndroidInstance::registerScalarFunction(const QString& name, int argCount)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ UNUSED(argCount);
+ return true;
+}
+
+bool DbAndroidInstance::registerAggregateFunction(const QString& name, int argCount)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ UNUSED(argCount);
+ return true;
+}
+
+bool DbAndroidInstance::initAfterCreated()
+{
+ version = 3;
+ return AbstractDb::initAfterCreated();
+}
+
+bool DbAndroidInstance::isOpenInternal()
+{
+ return (connection && connection->isConnected());
+}
+
+void DbAndroidInstance::interruptExecution()
+{
+ // Unsupported by native Android driver
+}
+
+QString DbAndroidInstance::getErrorTextInternal()
+{
+ return errorText;
+}
+
+int DbAndroidInstance::getErrorCodeInternal()
+{
+ return errorCode;
+}
+
+bool DbAndroidInstance::openInternal()
+{
+ connection = createConnection();
+ bool res = connection->connectToAndroid(DbAndroidUrl(path));
+ if (!res)
+ {
+ safe_delete(connection);
+ }
+ else
+ {
+ connect(connection, SIGNAL(disconnected()), this, SLOT(handleDisconnected()));
+ }
+
+ return res;
+}
+
+bool DbAndroidInstance::closeInternal()
+{
+ if (!connection)
+ return false;
+
+ disconnect(connection, SIGNAL(disconnected()), this, SLOT(handleDisconnected()));
+ connection->disconnectFromAndroid();
+ safe_delete(connection);
+ return true;
+}
+
+bool DbAndroidInstance::registerCollationInternal(const QString& name)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ return true;
+}
+
+bool DbAndroidInstance::deregisterCollationInternal(const QString& name)
+{
+ // Unsupported by native Android driver
+ UNUSED(name);
+ return true;
+}
+
+DbAndroidConnection* DbAndroidInstance::createConnection()
+{
+ DbAndroidUrl url(path);
+ if (!url.isValid(false))
+ return nullptr;
+
+ return plugin->getConnectionFactory()->create(url, this);
+}
+
+void DbAndroidInstance::handleDisconnected()
+{
+ safe_delete(connection);
+ notifyWarn(tr("Connection with Android database '%1' lost.").arg(getName()));
+ emit disconnected();
+}
diff --git a/Plugins/DbAndroid/dbandroidinstance.h b/Plugins/DbAndroid/dbandroidinstance.h
new file mode 100644
index 0000000..453b370
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidinstance.h
@@ -0,0 +1,51 @@
+#ifndef DBANDROIDINSTANCE_H
+#define DBANDROIDINSTANCE_H
+
+#include "db/abstractdb.h"
+#include <QObject>
+#include <functional>
+#include <QCache>
+
+class DbAndroidConnection;
+class DbAndroid;
+
+class DbAndroidInstance : public AbstractDb
+{
+ Q_OBJECT
+
+ public:
+ typedef std::function<void(const QStringList&)> AsyncDbListResponseHandler;
+
+ DbAndroidInstance(DbAndroid* plugin, const QString& name, const QString& path, const QHash<QString, QVariant>& connOptions);
+ ~DbAndroidInstance();
+
+ SqlQueryPtr prepare(const QString& query);
+ QString getTypeLabel();
+ bool deregisterFunction(const QString& name, int argCount);
+ bool registerScalarFunction(const QString& name, int argCount);
+ bool registerAggregateFunction(const QString& name, int argCount);
+ bool initAfterCreated();
+
+ protected:
+ bool isOpenInternal();
+ void interruptExecution();
+ QString getErrorTextInternal();
+ int getErrorCodeInternal();
+ bool openInternal();
+ bool closeInternal();
+ bool registerCollationInternal(const QString& name);
+ bool deregisterCollationInternal(const QString& name);
+
+ private:
+ DbAndroidConnection* createConnection();
+
+ DbAndroid* plugin = nullptr;
+ DbAndroidConnection* connection = nullptr;
+ int errorCode = 0;
+ QString errorText;
+
+ private slots:
+ void handleDisconnected();
+};
+
+#endif // DBANDROIDINSTANCE_H
diff --git a/Plugins/DbAndroid/dbandroidjsonconnection.cpp b/Plugins/DbAndroid/dbandroidjsonconnection.cpp
new file mode 100644
index 0000000..05d6469
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidjsonconnection.cpp
@@ -0,0 +1,430 @@
+#include "dbandroidjsonconnection.h"
+#include "dbandroid.h"
+#include "adbmanager.h"
+#include "services/notifymanager.h"
+#include "common/blockingsocket.h"
+#include "db/sqlerrorcodes.h"
+#include <QJsonObject>
+#include <QJsonArray>
+#include <QtConcurrent/QtConcurrent>
+
+DbAndroidJsonConnection::DbAndroidJsonConnection(DbAndroid* plugin, QObject *parent) :
+ DbAndroidConnection(parent), plugin(plugin)
+{
+ socket = new BlockingSocket(this);
+ adbManager = plugin->getAdbManager();
+ connect(socket, SIGNAL(disconnected()), this, SLOT(handlePossibleDisconnection()));
+}
+
+DbAndroidJsonConnection::~DbAndroidJsonConnection()
+{
+ cleanUp();
+}
+
+bool DbAndroidJsonConnection::connectToAndroid(const DbAndroidUrl& url)
+{
+ if (isConnected())
+ {
+ qWarning() << "Already connected while calling DbAndroidConnection::connect().";
+ return false;
+ }
+
+ dbUrl = url;
+ mode = url.getMode();
+
+ switch (mode)
+ {
+ case DbAndroidMode::NETWORK:
+ return connectToNetwork();
+ case DbAndroidMode::USB:
+ return connectToDevice();
+ case DbAndroidMode::SHELL:
+ qCritical() << "SHELL mode encountered in DbAndroidJsonConnection";
+ break;
+ case DbAndroidMode::null:
+ qCritical() << "Null mode encountered in DbAndroidJsonConnection";
+ break;
+ }
+
+ qCritical() << "Invalid Android db mode while connecting:" << static_cast<int>(mode);
+ return false;
+}
+
+void DbAndroidJsonConnection::disconnectFromAndroid()
+{
+ socket->disconnectFromHost();
+ connectedState = false;
+}
+
+bool DbAndroidJsonConnection::isConnected() const
+{
+ if (!socket)
+ return false;
+
+ return connectedState;
+}
+
+QByteArray DbAndroidJsonConnection::send(const QByteArray& data)
+{
+ QByteArray bytes = sizeToBytes(data.size());
+ bytes.append(data);
+ return sendBytes(bytes);
+}
+
+QString DbAndroidJsonConnection::getDbName() const
+{
+ return dbUrl.getDbName();
+}
+
+QByteArray DbAndroidJsonConnection::sendBytes(const QByteArray& data)
+{
+ //qDebug() << "Sending" << data;
+ bool success = socket->send(data);
+ if (!success)
+ {
+ qCritical() << "Error writing bytes to Android socket:" << socket->getErrorText();
+ return QByteArray();
+ }
+
+ QByteArray sizeBytes = socket->read(4, 5000, &success);
+ if (!success)
+ {
+ qCritical() << "Error reading response size from Android socket:" << socket->getErrorText();
+ return QByteArray();
+ }
+
+ qint32 size = bytesToSize(sizeBytes);
+ QByteArray responseBytes = socket->read(size, 5000, &success);
+ if (!success)
+ {
+ qCritical() << "Error reading response from Android socket:" << socket->getErrorText();
+ return QByteArray();
+ }
+ //qDebug() << "Received" << responseBytes;
+ return responseBytes;
+}
+
+void DbAndroidJsonConnection::handleSocketError()
+{
+ qWarning() << "Blocking socket error in Android connection:" << socket->getErrorText();
+ handlePossibleDisconnection();
+}
+
+void DbAndroidJsonConnection::handlePossibleDisconnection()
+{
+ if (connectedState && !socket->isConnected())
+ {
+ connectedState = false;
+ emit disconnected();
+ }
+}
+
+QByteArray DbAndroidJsonConnection::sizeToBytes(qint32 size)
+{
+ QByteArray bytes;
+ for (int i = 0; i < 4; i++)
+ bytes.append((size >> (8*i)) & 0xff);
+
+ return bytes;
+}
+
+qint32 DbAndroidJsonConnection::bytesToSize(const QByteArray& bytes)
+{
+ int size = (((unsigned char)bytes[3]) << 24) |
+ (((unsigned char)bytes[2]) << 16) |
+ (((unsigned char)bytes[1]) << 8) |
+ ((unsigned char)bytes[0]);
+
+ return size;
+}
+
+QVariant DbAndroidJsonConnection::convertJsonValue(const QJsonValue& value)
+{
+ if (value.isArray())
+ {
+ // BLOB
+ QJsonArray blobContainer = value.toArray();
+ if (blobContainer.size() < 1)
+ {
+ qCritical() << "Invalid blob value from Android - empty array.";
+ return QByteArray();
+ }
+
+ return convertBlob(blobContainer.first().toString());
+ }
+
+ // Regular value
+ return value.toVariant();
+}
+
+bool DbAndroidJsonConnection::connectToNetwork()
+{
+ if (!dbUrl.isHostValid())
+ return false;
+
+ return connectToTcp(dbUrl.getHost(), dbUrl.getPort());
+}
+
+bool DbAndroidJsonConnection::connectToDevice()
+{
+ if (!plugin->isAdbValid())
+ return false;
+
+ if (!plugin->getAdbManager()->getDevices().contains(dbUrl.getDevice()))
+ {
+ notifyWarn(tr("Cannot connect to device %1, because it's not visible to your computer.").arg(dbUrl.getDevice()));
+ return false;
+ }
+
+ int localPort = plugin->getAdbManager()->makeForwardFor(dbUrl.getDevice(), dbUrl.getPort());
+ if (localPort < 0)
+ {
+ notifyError(tr("Failed to create port forwarding for device %1 for port %2.")
+ .arg(dbUrl.getDevice(), QString::number(dbUrl.getPort())));
+ return false;
+ }
+
+ return connectToTcp("127.0.0.1", localPort);
+}
+
+bool DbAndroidJsonConnection::connectToTcp(const QString& ip, int port)
+{
+ bool success = socket->connectToHost(ip, port);
+ if (!success)
+ {
+ qWarning() << "Could not connect to network host for Android DB:" << ip << ":" << port << ", details:" << socket->getErrorText();
+ notifyWarn(tr("Could not connect to network host: %1:%2").arg(ip, QString::number(port)));
+ return false;
+ }
+
+ connectedState = true;
+
+ // Evaluate the connection and send the security token
+ static_qstring(pingCmd, "{ping:\"%1\"}");
+ QDate date = QDateTime::currentDateTime().date();
+ QString tokenString = "06fn43" + QString::number(date.dayOfYear()) + "3ig7ws" + QString::number(date.year()) + "53";
+ QByteArray md5 = QCryptographicHash::hash(tokenString.toUtf8(), QCryptographicHash::Md5);
+ QByteArray token = md5.toBase64();
+
+ QByteArray response = send(pingCmd.arg(QString::fromLatin1(token)).toUtf8());
+ if (response != PING_RESPONSE_OK)
+ {
+ qWarning() << "Connection to" << ip << ":" << port << "has failed, because response to PING was:" << response;
+ notifyWarn(tr("Cannot connect to SQLiteStudio service on Android device. The remote service is unavailable or invalid."));
+ handleConnectionFailed();
+ return false;
+ }
+
+ // Authenticate
+ QString pass = dbUrl.getPassword();
+ if (!pass.isEmpty())
+ {
+ static_qstring(passPharse, "{auth:\"%1\"}");
+ response = send(passPharse.arg(pass.replace("\"", "\\\"")).toUtf8());
+ if (response != PASS_RESPONSE_OK)
+ {
+ notifyWarn(tr("Cannot connect to %1:%2, because password is invalid.").arg(ip, QString::number(port)));
+ handleConnectionFailed();
+ return false;
+ }
+ }
+
+ return true;
+}
+
+void DbAndroidJsonConnection::handleConnectionFailed()
+{
+ connectedState = false;
+ socket->disconnectFromHost();
+}
+
+void DbAndroidJsonConnection::cleanUp()
+{
+ disconnectFromAndroid();
+ safe_delete(socket);
+}
+
+QStringList DbAndroidJsonConnection::getDbList()
+{
+ if (!isConnected())
+ {
+ qWarning() << "Called DbAndroidJsonConnection::getDbList() on closed connection.";
+ return QStringList();
+ }
+
+ QByteArray result = send(LIST_CMD);
+ return handleDbListResult(result);
+}
+
+QStringList DbAndroidJsonConnection::getAppList()
+{
+ return QStringList();
+}
+
+bool DbAndroidJsonConnection::isAppOkay() const
+{
+ return true;
+}
+
+QStringList DbAndroidJsonConnection::handleDbListResult(const QByteArray& results)
+{
+ QJsonParseError jsonError;
+ QJsonDocument jsonResponse = QJsonDocument::fromJson(results, &jsonError);
+ if (jsonError.error != QJsonParseError::NoError)
+ {
+ qCritical() << "Error while parsing response from Android:" << jsonError.errorString();
+ return QStringList();
+ }
+
+ QJsonObject responseObject = jsonResponse.object();
+ if (responseObject.contains("generic_error"))
+ {
+ qCritical() << "Generic error from Android:" << responseObject["generic_error"].toInt();
+ return QStringList();
+ }
+
+ if (!responseObject.contains("list"))
+ {
+ qCritical() << "Missing 'list' in response from Android.";
+ return QStringList();
+ }
+
+ QStringList dbNames;
+ for (const QVariant& name : responseObject["list"].toArray().toVariantList())
+ dbNames << name.toString();
+
+ return dbNames;
+}
+
+bool DbAndroidJsonConnection::deleteDatabase(const QString& dbName)
+{
+ if (!isConnected())
+ {
+ qWarning() << "Called DbAndroidConnection::deleteDatabase() on closed database.";
+ return false;
+ }
+
+ QByteArray result = send(QString(DELETE_DB_CMD).arg(dbName).toUtf8());
+ return handleStdResult(result);
+}
+
+DbAndroidConnection::ExecutionResult DbAndroidJsonConnection::executeQuery(const QString& query)
+{
+ DbAndroidConnection::ExecutionResult executionResults;
+
+ QJsonDocument json = wrapQueryInJson(query);
+ QByteArray responseBytes = send(json.toJson(QJsonDocument::Compact));
+
+ QJsonParseError jsonError;
+ QJsonDocument jsonResponse = QJsonDocument::fromJson(responseBytes, &jsonError);
+ if (jsonError.error != QJsonParseError::NoError)
+ {
+ executionResults.wasError = true;
+ executionResults.errorMsg = tr("Error while parsing response from Android: %1").arg(jsonError.errorString());
+ return executionResults;
+ }
+
+ QJsonObject responseObject = jsonResponse.object();
+ if (responseObject.contains("generic_error"))
+ {
+ executionResults.wasError = true;
+ executionResults.errorMsg = tr("Generic error from Android: %1").arg(responseObject["generic_error"].toInt());
+ return executionResults;
+ }
+
+ if (responseObject.contains("error_code"))
+ {
+ executionResults.errorCode = responseObject["error_code"].toInt();
+ executionResults.errorMsg = responseObject["error_message"].toString();
+ return executionResults;
+ }
+
+ if (!responseObject.contains("columns"))
+ {
+ executionResults.wasError = true;
+ executionResults.errorMsg = tr("Missing 'columns' in response from Android.");
+ return executionResults;
+ }
+
+ if (!responseObject.contains("data"))
+ {
+ executionResults.wasError = true;
+ executionResults.errorMsg = tr("Missing 'columns' in response from Android.");
+ return executionResults;
+ }
+
+ for (const QVariant& col : responseObject["columns"].toArray().toVariantList())
+ executionResults.resultColumns << col.toString();
+
+ QJsonArray jsonRows = responseObject["data"].toArray();
+ QJsonObject jsonRow;
+ QJsonValue jsonValue;
+ QVariantHash rowAsMap;
+ QVariantList rowAsList;
+ QVariant cellValue;
+ for (int i = 0, total = jsonRows.size(); i < total; ++i)
+ {
+ jsonRow = jsonRows[i].toObject();
+ for (const QString& colName : executionResults.resultColumns)
+ {
+ if (!jsonRow.contains(colName))
+ {
+ executionResults.wasError = true;
+ executionResults.errorMsg = tr("Response from Android has missing data for column '%1' in row %2.").arg(colName, QString::number(i+1));
+ return executionResults;
+ }
+
+ jsonValue = jsonRow[colName];
+ cellValue = convertJsonValue(jsonValue);
+ rowAsMap[colName] = cellValue;
+ rowAsList << cellValue;
+ }
+
+ executionResults.resultDataMap << rowAsMap;
+ executionResults.resultDataList << rowAsList;
+
+ rowAsMap.clear();
+ rowAsList.clear();
+ }
+
+ return executionResults;
+}
+
+QJsonDocument DbAndroidJsonConnection::wrapQueryInJson(const QString& query)
+{
+ QJsonDocument doc;
+
+ QJsonObject rootObj;
+ rootObj["cmd"] = "QUERY";
+ rootObj["db"] = dbUrl.getDbName();
+ rootObj["query"] = query;
+
+ doc.setObject(rootObj);
+ return doc;
+}
+
+bool DbAndroidJsonConnection::handleStdResult(const QByteArray& results)
+{
+ QJsonParseError jsonError;
+ QJsonDocument jsonResponse = QJsonDocument::fromJson(results, &jsonError);
+ if (jsonError.error != QJsonParseError::NoError)
+ {
+ qCritical() << "Error while parsing response from Android:" << jsonError.errorString();
+ return false;
+ }
+
+ QJsonObject responseObject = jsonResponse.object();
+ if (responseObject.contains("generic_error"))
+ {
+ qCritical() << "Generic error from Android:" << responseObject["generic_error"].toInt();
+ return false;
+ }
+
+ if (!responseObject.contains("result"))
+ {
+ qCritical() << "Missing 'result' in response from Android.";
+ return false;
+ }
+
+ return (responseObject["result"].toString() == "ok");
+}
diff --git a/Plugins/DbAndroid/dbandroidjsonconnection.h b/Plugins/DbAndroid/dbandroidjsonconnection.h
new file mode 100644
index 0000000..ef0c943
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidjsonconnection.h
@@ -0,0 +1,65 @@
+#ifndef DBANDROIDJSONCONNECTION_H
+#define DBANDROIDJSONCONNECTION_H
+
+#include "dbandroidmode.h"
+#include "common/global.h"
+#include "common/expiringcache.h"
+#include "dbandroidconnection.h"
+#include <QObject>
+
+class DbAndroid;
+class AdbManager;
+class BlockingSocket;
+
+class DbAndroidJsonConnection : public DbAndroidConnection
+{
+ Q_OBJECT
+
+ public:
+ DbAndroidJsonConnection(DbAndroid* plugin, QObject *parent = 0);
+ ~DbAndroidJsonConnection();
+
+ bool connectToAndroid(const DbAndroidUrl& url);
+ void disconnectFromAndroid();
+ bool isConnected() const;
+ QByteArray send(const QByteArray& data);
+ QString getDbName() const;
+ QStringList getDbList();
+ QStringList getAppList();
+ bool isAppOkay() const;
+ bool deleteDatabase(const QString& dbName);
+ ExecutionResult executeQuery(const QString& query);
+
+ private:
+ QJsonDocument wrapQueryInJson(const QString& query);
+ bool connectToNetwork();
+ bool connectToDevice();
+ bool connectToTcp(const QString& ip, int port);
+ void cleanUp();
+ QByteArray sendBytes(const QByteArray& data);
+ void handleSocketError();
+ void handleConnectionFailed();
+ QStringList handleDbListResult(const QByteArray& results);
+ bool handleStdResult(const QByteArray& results);
+
+ static QByteArray sizeToBytes(qint32 size);
+ static qint32 bytesToSize(const QByteArray& bytes);
+ static QVariant convertJsonValue(const QJsonValue& value);
+
+ DbAndroid* plugin = nullptr;
+ AdbManager* adbManager = nullptr;
+ BlockingSocket* socket = nullptr;
+ DbAndroidUrl dbUrl;
+ DbAndroidMode mode = DbAndroidMode::NETWORK;
+ bool connectedState = false;
+
+ static_char* PASS_RESPONSE_OK = "{\"result\":\"ok\"}";
+ static_char* PING_RESPONSE_OK = "{\"result\":\"pong\"}";
+ static_char* LIST_CMD = "{cmd:\"LIST\"}";
+ static_char* DELETE_DB_CMD = "{cmd:\"DELETE_DB\",db:\"%1\"}";
+
+ private slots:
+ void handlePossibleDisconnection();
+};
+
+#endif // DBANDROIDJSONCONNECTION_H
diff --git a/Plugins/DbAndroid/dbandroidmode.h b/Plugins/DbAndroid/dbandroidmode.h
new file mode 100644
index 0000000..523fdd8
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidmode.h
@@ -0,0 +1,13 @@
+#ifndef DBANDROIDMODE
+#define DBANDROIDMODE
+
+enum class DbAndroidMode
+{
+ USB,
+ NETWORK,
+ SHELL,
+ null
+};
+
+#endif // DBANDROIDMODE
+
diff --git a/Plugins/DbAndroid/dbandroidpathdialog.cpp b/Plugins/DbAndroid/dbandroidpathdialog.cpp
new file mode 100644
index 0000000..da1cf5c
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidpathdialog.cpp
@@ -0,0 +1,579 @@
+#include "dbandroidpathdialog.h"
+#include "ui_dbandroidpathdialog.h"
+#include "common/ipvalidator.h"
+#include "dbandroid.h"
+#include "common/widgetcover.h"
+#include "adbmanager.h"
+#include "uiutils.h"
+#include "iconmanager.h"
+#include "dbandroidconnection.h"
+#include "dbandroidconnectionfactory.h"
+#include <QDebug>
+#include <QTimer>
+#include <QPushButton>
+#include <QInputDialog>
+#include <QMessageBox>
+#include <QtConcurrent/QtConcurrent>
+#include <common/userinputfilter.h>
+
+DbAndroidPathDialog::DbAndroidPathDialog(const DbAndroid* plugin, QWidget *parent) :
+ QDialog(parent),
+ plugin(plugin),
+ ui(new Ui::DbAndroidPathDialog)
+{
+ init();
+}
+
+DbAndroidPathDialog::~DbAndroidPathDialog()
+{
+ delete ui;
+}
+
+void DbAndroidPathDialog::setUrl(const QString& url)
+{
+ dbUrl = DbAndroidUrl(url);
+ loadUrl();
+}
+
+void DbAndroidPathDialog::setUrl(const DbAndroidUrl& url)
+{
+ dbUrl = url;
+ loadUrl();
+}
+
+const DbAndroidUrl& DbAndroidPathDialog::getUrl() const
+{
+ return dbUrl;
+}
+
+void DbAndroidPathDialog::init()
+{
+ ui->setupUi(this);
+
+ dbListCover = new WidgetCover(ui->databaseCombo);
+ appListCover = new WidgetCover(ui->appCombo);
+ new UserInputFilter(ui->appFilterEdit, this, SLOT(applyAppFilter(QString)));
+
+ ui->createDatabaseButton->setIcon(ICONS.PLUS);
+ ui->deleteDatabaseButton->setIcon(ICONS.DELETE);
+
+ dbListUpdateTimer = new QTimer(this);
+ dbListUpdateTimer->setSingleShot(true);
+ dbListUpdateTimer->setInterval(500);
+ connect(dbListUpdateTimer, SIGNAL(timeout()), this, SLOT(refreshDbList()));
+
+ appListUpdateTimer = new QTimer(this);
+ appListUpdateTimer->setSingleShot(true);
+ appListUpdateTimer->setInterval(500);
+ connect(appListUpdateTimer, SIGNAL(timeout()), this, SLOT(refreshAppList()));
+
+ connect(ui->deviceCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(scheduleAppListUpdate()));
+ connect(ui->databaseCombo, SIGNAL(currentIndexChanged(int)), this, SLOT(updateState()));
+ connect(ui->portSpin, SIGNAL(valueChanged(int)), this, SLOT(scheduleDbListUpdate()));
+ connect(ui->createDatabaseButton, SIGNAL(clicked()), this, SLOT(createNewDatabase()));
+ connect(ui->deleteDatabaseButton, SIGNAL(clicked()), this, SLOT(deleteSelectedDatabase()));
+ connect(ui->passwordGroup, SIGNAL(toggled(bool)), this, SLOT(updateState()));
+ connect(ui->passwordGroup, SIGNAL(toggled(bool)), this, SLOT(scheduleDbListUpdate()));
+ connect(ui->passwordEdit, SIGNAL(textChanged(QString)), this, SLOT(scheduleDbListUpdate()));
+
+ connect(this, SIGNAL(asyncDbListUpdatingFinished(bool)), this, SLOT(handleFinishedAsyncDbListUpdate(bool)));
+ connect(this, SIGNAL(asyncAppListUpdatingFinished()), this, SLOT(handleFinishedAsyncAppListUpdate()));
+ connect(this, SIGNAL(callForDbListUpdate(QStringList)), this, SLOT(handleUpdateDbList(QStringList)));
+ connect(this, SIGNAL(callForAppListUpdate(QStringList)), this, SLOT(handleUpdateAppList(QStringList)));
+ connect(this, SIGNAL(callForValidations()), this, SLOT(updateValidations()));
+ connect(this, SIGNAL(callForDbCreationUpdate(bool)), this, SLOT(handleDbCreationUpdate(bool)));
+
+ if (!plugin->isAdbValid())
+ {
+ ui->ipRadio->setChecked(true);
+ ui->usbRadio->setEnabled(false);
+ ui->shellRadio->setEnabled(false);
+ }
+ else
+ {
+ refreshDevices();
+ connect(plugin->getAdbManager(), SIGNAL(deviceDetailsChanged(QList<Device>)), this, SLOT(updateDeviceList()));
+ }
+
+ connect(ui->ipRadio, SIGNAL(toggled(bool)), this, SLOT(modeChanged(bool)));
+ connect(ui->usbRadio, SIGNAL(toggled(bool)), this, SLOT(modeChanged(bool)));
+ connect(ui->shellRadio, SIGNAL(toggled(bool)), this, SLOT(modeChanged(bool)));
+ connect(ui->ipEdit, SIGNAL(textChanged(QString)), this, SLOT(scheduleDbListUpdate()));
+ setDbListUpdatesEnabled(true);
+
+ handleDbCreationUpdate(false);
+ updateState();
+ adjustSize();
+}
+
+void DbAndroidPathDialog::updateUrl()
+{
+ DbAndroidMode mode = getSelectedMode();
+ dbUrl.setEnforcedMode(mode);
+ switch (mode)
+ {
+ case DbAndroidMode::NETWORK:
+ dbUrl.setHost(ui->ipEdit->text());
+ dbUrl.setPort(ui->portSpin->value());
+ break;
+ case DbAndroidMode::USB:
+ dbUrl.setDevice(ui->deviceCombo->currentData().toString());
+ dbUrl.setPort(ui->portSpin->value());
+ break;
+ case DbAndroidMode::SHELL:
+ dbUrl.setDevice(ui->deviceCombo->currentData().toString());
+ dbUrl.setApplication(ui->appCombo->currentText());
+ break;
+ case DbAndroidMode::null:
+ qCritical() << "Unknown mode in DbAndroidPathDialog::updateUrl()";
+ return;
+ }
+
+ dbUrl.setDbName(ui->databaseCombo->currentText());
+ if (ui->passwordGroup->isChecked())
+ dbUrl.setPassword(ui->passwordEdit->text());
+ else
+ dbUrl.setPassword(QString());
+}
+
+void DbAndroidPathDialog::loadUrl()
+{
+ if (!dbUrl.isValid())
+ return;
+
+ switch (dbUrl.getMode())
+ {
+ case DbAndroidMode::NETWORK:
+ ui->ipRadio->setChecked(true);
+ ui->ipEdit->setText(dbUrl.getHost());
+ break;
+ case DbAndroidMode::SHELL:
+ ui->shellRadio->setChecked(true);
+ ui->deviceCombo->setCurrentIndex(ui->deviceCombo->findData(dbUrl.getDevice()));
+ setDbListUpdatesEnabled(false);
+ if (ui->appCombo->findText(dbUrl.getApplication()) == -1)
+ ui->appCombo->addItem(dbUrl.getApplication());
+
+ ui->appCombo->setCurrentText(dbUrl.getApplication());
+ setDbListUpdatesEnabled(true);
+ break;
+ case DbAndroidMode::USB:
+ ui->usbRadio->setChecked(true);
+ ui->deviceCombo->setCurrentIndex(ui->deviceCombo->findData(dbUrl.getDevice()));
+ break;
+ case DbAndroidMode::null:
+ qCritical() << "Cannot load URL of mode 'null' in DbAndroidPathDialog::loadUrl().";
+ return;
+ }
+
+ ui->portSpin->setValue(dbUrl.getPort());
+ if (ui->databaseCombo->findText(dbUrl.getDbName()) == -1)
+ ui->databaseCombo->addItem(dbUrl.getDbName());
+
+ ui->databaseCombo->setCurrentText(dbUrl.getDbName());
+
+ if (!dbUrl.getPassword().isNull())
+ {
+ ui->passwordGroup->setChecked(true);
+ ui->passwordEdit->setText(dbUrl.getPassword());
+ }
+}
+
+void DbAndroidPathDialog::scheduleDbListUpdate()
+{
+ if (suspendDbListUpdates)
+ return;
+
+ bool startCover = true;
+ if (dbListUpdateTimer->isActive())
+ {
+ dbListUpdateTimer->stop();
+ startCover = false;
+ }
+
+ dbListUpdateTimer->start();
+ if (startCover)
+ dbListCover->show();
+
+ handleDbCreationUpdate(false);
+ updateValidations();
+}
+
+void DbAndroidPathDialog::scheduleAppListUpdate()
+{
+ if (getSelectedMode() != DbAndroidMode::SHELL)
+ return;
+
+ if (suspendAppListUpdates)
+ return;
+
+ bool startCover = true;
+ if (appListUpdateTimer->isActive())
+ {
+ appListUpdateTimer->stop();
+ startCover = false;
+ }
+
+ appListUpdateTimer->start();
+ if (startCover)
+ appListCover->show();
+
+ updateValidations();
+}
+
+void DbAndroidPathDialog::refreshDbList()
+{
+ if (updatingDbList)
+ {
+ // Already busy, schedule next update afterwards.
+ scheduleDbListUpdate();
+ return;
+ }
+
+ updateUrl();
+ ui->databaseCombo->clear();
+
+ if (!dbUrl.isValid(false))
+ {
+ dbListCover->hide();
+ return;
+ }
+
+ updatingDbList = true;
+ QtConcurrent::run(this, &DbAndroidPathDialog::asyncDbUpdate, dbUrl.toUrlString(), dbUrl.getMode());
+}
+
+void DbAndroidPathDialog::refreshAppList()
+{
+ if (updatingAppList)
+ {
+ // Already busy, schedule next update afterwards.
+ scheduleAppListUpdate();
+ return;
+ }
+
+ updateUrl();
+ setDbListUpdatesEnabled(false);
+ ui->appCombo->clear();
+ setDbListUpdatesEnabled(true);
+
+ if (!dbUrl.isValid(false))
+ {
+ appListCover->hide();
+ return;
+ }
+
+ updatingAppList = true;
+ QtConcurrent::run(this, &DbAndroidPathDialog::asyncAppUpdate, dbUrl.toUrlString(), dbUrl.getMode());
+}
+
+void DbAndroidPathDialog::asyncDbUpdate(const QString& connectionUrl, DbAndroidMode enforcedMode)
+{
+ DbAndroidUrl url(connectionUrl);
+ url.setEnforcedMode(enforcedMode);
+
+ QScopedPointer<DbAndroidConnection> connection(plugin->getConnectionFactory()->create(url));
+ if (!connection->connectToAndroid(url))
+ {
+ qDebug() << "Could not open db connection" << connectionUrl;
+ emit asyncDbListUpdatingFinished(connection->isAppOkay());
+ emit callForValidations();
+ return;
+ }
+
+ QStringList dbList = connection->getDbList();
+ bool appOk = connection->isAppOkay();
+
+ connection->disconnectFromAndroid();
+
+ emit callForDbCreationUpdate(appOk);
+ emit callForDbListUpdate(dbList);
+ emit asyncDbListUpdatingFinished(appOk);
+ emit callForValidations();
+}
+
+void DbAndroidPathDialog::asyncAppUpdate(const QString& connectionUrl, DbAndroidMode enforcedMode)
+{
+ DbAndroidUrl url(connectionUrl);
+ url.setEnforcedMode(enforcedMode);
+
+ QScopedPointer<DbAndroidConnection> connection(plugin->getConnectionFactory()->create(url));
+ QStringList appList = connection->getAppList();
+ emit callForAppListUpdate(appList);
+ emit asyncAppListUpdatingFinished();
+ emit callForValidations();
+}
+
+void DbAndroidPathDialog::refreshDevices()
+{
+ static_qstring(displayNameTpl, "%1 (%2)");
+ ui->deviceCombo->clear();
+
+ QString displayName;
+ QList<AdbManager::Device> deviceDetails = plugin->getAdbManager()->getDeviceDetails();
+ for (const AdbManager::Device& details : deviceDetails)
+ {
+ if (details.fullName.isEmpty())
+ displayName = details.id;
+ else
+ displayName = displayNameTpl.arg(details.fullName, details.id);
+
+ ui->deviceCombo->addItem(displayName, details.id);
+ }
+}
+
+DbAndroidMode DbAndroidPathDialog::getSelectedMode() const
+{
+ if (ui->ipRadio->isChecked())
+ return DbAndroidMode::NETWORK;
+
+ if (ui->usbRadio->isChecked())
+ return DbAndroidMode::USB;
+
+ return DbAndroidMode::SHELL;
+}
+
+void DbAndroidPathDialog::setDbListUpdatesEnabled(bool enabled)
+{
+ suspendDbListUpdates = !enabled;
+ if (enabled)
+ {
+ connect(ui->deviceCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(scheduleDbListUpdate()));
+ connect(ui->appCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(scheduleDbListUpdate()));
+ }
+ else
+ {
+ disconnect(ui->deviceCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(scheduleDbListUpdate()));
+ disconnect(ui->appCombo, SIGNAL(currentTextChanged(QString)), this, SLOT(scheduleDbListUpdate()));
+ }
+}
+
+void DbAndroidPathDialog::updateDeviceList()
+{
+ suspendDbListUpdates = true;
+
+ bool dbListNeedsUpdate = false;
+ QString oldValue = ui->deviceCombo->currentData().toString();
+
+ refreshDevices();
+ int idx = ui->deviceCombo->findData(oldValue);
+ if (idx > -1)
+ ui->deviceCombo->setCurrentIndex(idx);
+ else
+ dbListNeedsUpdate = true;
+
+ suspendDbListUpdates = false;
+
+ updateValidations();
+
+ if (dbListNeedsUpdate)
+ scheduleDbListUpdate();
+}
+
+void DbAndroidPathDialog::updateValidations()
+{
+ bool isUpdating = dbListUpdateTimer->isActive();
+ bool ipOk = true;
+ bool deviceOk = true;
+ if (ui->ipRadio->isChecked())
+ {
+ ipOk = IpValidator::check(ui->ipEdit->text());
+ setValidState(ui->ipEdit, ipOk, tr("Enter valid IP address."));
+ }
+ else
+ {
+ deviceOk = !ui->deviceCombo->currentData().toString().isEmpty();
+ setValidState(ui->deviceCombo, deviceOk, tr("Pick Android device."));
+ }
+
+ bool dbOk = !ui->databaseCombo->currentText().isEmpty();
+ setValidState(ui->databaseCombo, dbOk, tr("Pick Android database."));
+
+ ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(ipOk && deviceOk && dbOk && !isUpdating);
+}
+
+void DbAndroidPathDialog::handleUpdateDbList(const QStringList& dbList)
+{
+ ui->databaseCombo->addItems(dbList);
+ if (dbList.contains(dbUrl.getDbName()))
+ ui->databaseCombo->setCurrentText(dbUrl.getDbName());
+}
+
+void DbAndroidPathDialog::handleUpdateAppList(const QStringList& apps)
+{
+ fullAppList = apps;
+ QStringList filtered = apps.filter(ui->appFilterEdit->text(), Qt::CaseInsensitive);
+ ui->appCombo->addItems(filtered);
+ if (filtered.contains(dbUrl.getApplication()))
+ ui->appCombo->setCurrentText(dbUrl.getApplication());
+}
+
+void DbAndroidPathDialog::handleFinishedAsyncDbListUpdate(bool appOkay)
+{
+ if (getSelectedMode() == DbAndroidMode::SHELL)
+ setValidState(ui->appCombo, appOkay, tr("Selected Android application is unknown, or not debuggable."));
+
+ dbListCover->hide();
+ updatingDbList = false;
+}
+
+void DbAndroidPathDialog::handleFinishedAsyncAppListUpdate()
+{
+ appListCover->hide();
+ updatingAppList = false;
+}
+
+void DbAndroidPathDialog::handleDbCreationUpdate(bool canCreateDatabases)
+{
+ ui->createDatabaseButton->setEnabled(canCreateDatabases);
+}
+
+void DbAndroidPathDialog::createNewDatabase()
+{
+ DbAndroidUrl tmpUrl(dbUrl);
+ tmpUrl.setDbName(QString());
+
+ DbAndroidConnection::ExecutionResult results;
+ QString name;
+ bool ok = false;
+ while (!ok)
+ {
+ name = QInputDialog::getText(this, tr("Create new database"), tr("Please provide name for the new database.\n"
+ "It's the name which Android application will use to connect to the database:"));
+
+ if (name.isNull())
+ break;
+
+ if (ui->databaseCombo->findText(name) > -1)
+ {
+ QMessageBox::warning(this, tr("Invalid name"), tr("Database with the same name (%1) already exists on the device.\n"
+ "The name must be unique."));
+ continue;
+ }
+
+ tmpUrl.setDbName(name);
+ QScopedPointer<DbAndroidConnection> connection(plugin->getConnectionFactory()->create(tmpUrl));
+ if (!connection->connectToAndroid(tmpUrl))
+ {
+ QMessageBox::warning(this, tr("Invalid name"), tr("Could not create database '%1', because could not connect to the device.").arg(name));
+ continue;
+ }
+
+ results = connection->executeQuery("PRAGMA encoding;");
+ ok = !results.wasError && results.resultDataList.size() > 0;
+ connection->disconnectFromAndroid();
+
+ if (!ok)
+ QMessageBox::warning(this, tr("Invalid name"), tr("Could not create database '%1'.\nDetails: %2").arg(name, results.errorMsg));
+ }
+
+ if (ok)
+ {
+ ui->databaseCombo->addItem(name);
+ ui->databaseCombo->setCurrentText(name);
+ }
+}
+
+void DbAndroidPathDialog::deleteSelectedDatabase()
+{
+ updateUrl();
+ QString dbName = dbUrl.getDbName();
+
+ QMessageBox::StandardButton res = QMessageBox::question(this, tr("Delete database"), tr("Are you sure you want to delete database '%1' from %2?")
+ .arg(dbName, dbUrl.getDisplayName()));
+
+ if (res != QMessageBox::Yes)
+ return;
+
+ int idx = ui->databaseCombo->findText(dbName);
+ if (idx < 0)
+ {
+ QStringList dbList;
+ for (int i = 0, total = ui->databaseCombo->count(); i < total; ++i)
+ dbList << ui->databaseCombo->itemText(i);
+
+ qCritical() << "Tried to delete database, but it's not in the list of databases:" << dbName << "and the list is:" << dbList;
+ return;
+ }
+
+ // Local db instance, will close on deletion.
+ QScopedPointer<DbAndroidConnection> connection(plugin->getConnectionFactory()->create(dbUrl));
+ if (!connection->connectToAndroid(dbUrl))
+ {
+ QMessageBox::critical(this, tr("Error deleting"), tr("Could not connect to %1 in order to delete database '%2'.").arg(dbUrl.getDisplayName(), dbName));
+ return;
+ }
+
+ if (!connection->deleteDatabase(dbName))
+ {
+ QMessageBox::critical(this, tr("Error deleting"), tr("Could not delete database named '%1' from the device.\n"
+ "Android device refused deletion, or it was impossible.").arg(dbName));
+
+ connection->disconnectFromAndroid();
+ return;
+ }
+ connection->disconnectFromAndroid();
+
+ ui->databaseCombo->removeItem(idx);
+ if (ui->databaseCombo->count() > 0)
+ {
+ if (idx < ui->databaseCombo->count())
+ ui->databaseCombo->setCurrentIndex(idx);
+ else
+ ui->databaseCombo->setCurrentIndex(ui->databaseCombo->count() - 1);
+ }
+}
+
+void DbAndroidPathDialog::modeChanged(bool checked)
+{
+ if (!checked)
+ return;
+
+ updateState();
+ adjustSize();
+ scheduleAppListUpdate();
+
+ if (getSelectedMode() != DbAndroidMode::SHELL)
+ scheduleDbListUpdate();
+}
+
+void DbAndroidPathDialog::applyAppFilter(const QString& value)
+{
+ QString selectedApp = ui->appCombo->currentText();
+ QStringList filtered = fullAppList.filter(value, Qt::CaseInsensitive);
+ bool callDbListUpdate = false;
+
+ setDbListUpdatesEnabled(false);
+ ui->appCombo->clear();
+ ui->appCombo->addItems(filtered);
+ if (filtered.contains(selectedApp))
+ ui->appCombo->setCurrentText(selectedApp);
+ else
+ callDbListUpdate = true;
+
+ setDbListUpdatesEnabled(true);
+
+ if (callDbListUpdate)
+ scheduleDbListUpdate();
+}
+
+void DbAndroidPathDialog::accept()
+{
+ updateUrl();
+ QDialog::accept();
+}
+
+void DbAndroidPathDialog::updateState()
+{
+ DbAndroidMode mode = getSelectedMode();
+
+ ui->deviceGroup->setVisible(mode == DbAndroidMode::SHELL || mode == DbAndroidMode::USB);
+ ui->ipGroup->setVisible(mode == DbAndroidMode::NETWORK);
+ ui->portGroup->setVisible(mode == DbAndroidMode::NETWORK || mode == DbAndroidMode::USB);
+ ui->appGroup->setVisible(mode == DbAndroidMode::SHELL);
+ ui->passwordGroup->setVisible(mode == DbAndroidMode::NETWORK || mode == DbAndroidMode::USB);
+
+ ui->deleteDatabaseButton->setEnabled(ui->databaseCombo->currentIndex() > -1);
+ ui->passwordEdit->setEnabled(ui->passwordGroup->isChecked());
+ updateValidations();
+}
diff --git a/Plugins/DbAndroid/dbandroidpathdialog.h b/Plugins/DbAndroid/dbandroidpathdialog.h
new file mode 100644
index 0000000..4c4496f
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidpathdialog.h
@@ -0,0 +1,80 @@
+#ifndef DBANDROIDPATHDIALOG_H
+#define DBANDROIDPATHDIALOG_H
+
+#include "dbandroidurl.h"
+#include <QDialog>
+
+namespace Ui {
+ class DbAndroidPathDialog;
+}
+
+class DbAndroid;
+class QTimer;
+class WidgetCover;
+class DbAndroidInstance;
+
+class DbAndroidPathDialog : public QDialog
+{
+ Q_OBJECT
+
+ public:
+ DbAndroidPathDialog(const DbAndroid* plugin, QWidget *parent = 0);
+ ~DbAndroidPathDialog();
+ void setUrl(const QString& url);
+ void setUrl(const DbAndroidUrl& url);
+ const DbAndroidUrl& getUrl() const;
+
+ private:
+ void init();
+ void updateUrl();
+ void loadUrl();
+ void asyncDbUpdate(const QString& connectionUrl, DbAndroidMode enforcedMode);
+ void asyncAppUpdate(const QString& connectionUrl, DbAndroidMode enforcedMode);
+ void refreshDevices();
+ DbAndroidMode getSelectedMode() const;
+ void setDbListUpdatesEnabled(bool enabled);
+
+ const DbAndroid* plugin = nullptr;
+ DbAndroidUrl dbUrl;
+ Ui::DbAndroidPathDialog *ui;
+ QTimer* dbListUpdateTimer = nullptr;
+ QTimer* appListUpdateTimer = nullptr;
+ WidgetCover* dbListCover = nullptr;
+ WidgetCover* appListCover = nullptr;
+ bool updatingDbList = false;
+ bool updatingAppList = false;
+ bool suspendDbListUpdates = false;
+ bool suspendAppListUpdates = false;
+ QStringList fullAppList;
+
+ private slots:
+ void scheduleDbListUpdate();
+ void scheduleAppListUpdate();
+ void updateState();
+ void refreshDbList();
+ void refreshAppList();
+ void updateDeviceList();
+ void updateValidations();
+ void handleUpdateDbList(const QStringList& dbList);
+ void handleUpdateAppList(const QStringList& apps);
+ void handleFinishedAsyncDbListUpdate(bool appOkay);
+ void handleFinishedAsyncAppListUpdate();
+ void handleDbCreationUpdate(bool canCreateDatabases);
+ void createNewDatabase();
+ void deleteSelectedDatabase();
+ void modeChanged(bool checked);
+ void applyAppFilter(const QString& value);
+
+ public slots:
+ void accept();
+
+ signals:
+ void callForValidations();
+ void callForDbCreationUpdate(bool canCreateDatabases);
+ void asyncDbListUpdatingFinished(bool appOkay);
+ void asyncAppListUpdatingFinished();
+ void callForDbListUpdate(const QStringList& newList);
+ void callForAppListUpdate(const QStringList& newList);
+};
+
+#endif // DBANDROIDPATHDIALOG_H
diff --git a/Plugins/DbAndroid/dbandroidpathdialog.ui b/Plugins/DbAndroid/dbandroidpathdialog.ui
new file mode 100644
index 0000000..3643a9c
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidpathdialog.ui
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>DbAndroidPathDialog</class>
+ <widget class="QDialog" name="DbAndroidPathDialog">
+ <property name="geometry">
+ <rect>
+ <x>0</x>
+ <y>0</y>
+ <width>402</width>
+ <height>546</height>
+ </rect>
+ </property>
+ <property name="minimumSize">
+ <size>
+ <width>400</width>
+ <height>0</height>
+ </size>
+ </property>
+ <property name="windowTitle">
+ <string>Android database URL</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_2">
+ <item>
+ <widget class="QGroupBox" name="groupBox">
+ <property name="title">
+ <string>Connection method</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_3">
+ <item>
+ <widget class="QRadioButton" name="usbRadio">
+ <property name="text">
+ <string>USB cable - port forwarding</string>
+ </property>
+ <property name="checked">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="shellRadio">
+ <property name="text">
+ <string>USB cable - sqlite3 command</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QRadioButton" name="ipRadio">
+ <property name="text">
+ <string>Network (IP address)</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="deviceGroup">
+ <property name="title">
+ <string>Device</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout">
+ <item>
+ <widget class="QComboBox" name="deviceCombo"/>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="ipGroup">
+ <property name="title">
+ <string>IP address</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_6">
+ <item>
+ <widget class="QLineEdit" name="ipEdit">
+ <property name="maxLength">
+ <number>15</number>
+ </property>
+ <property name="placeholderText">
+ <string notr="true">???.???.???.???</string>
+ </property>
+ <property name="clearButtonEnabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="portGroup">
+ <property name="title">
+ <string>Port</string>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_7">
+ <item>
+ <widget class="QSpinBox" name="portSpin">
+ <property name="minimum">
+ <number>1</number>
+ </property>
+ <property name="maximum">
+ <number>65535</number>
+ </property>
+ <property name="value">
+ <number>12121</number>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="passwordGroup">
+ <property name="title">
+ <string>Remote access password</string>
+ </property>
+ <property name="checkable">
+ <bool>true</bool>
+ </property>
+ <property name="checked">
+ <bool>false</bool>
+ </property>
+ <layout class="QVBoxLayout" name="verticalLayout_8">
+ <item>
+ <widget class="QLineEdit" name="passwordEdit">
+ <property name="toolTip">
+ <string>&lt;p&gt;This is password configured in the SQLiteStudio service being embeded in the Android application.&lt;/p&gt;</string>
+ </property>
+ <property name="echoMode">
+ <enum>QLineEdit::Password</enum>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="appGroup">
+ <property name="title">
+ <string>Application</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout_2">
+ <item>
+ <widget class="QComboBox" name="appCombo"/>
+ </item>
+ <item>
+ <widget class="QLineEdit" name="appFilterEdit">
+ <property name="maximumSize">
+ <size>
+ <width>100</width>
+ <height>16777215</height>
+ </size>
+ </property>
+ <property name="placeholderText">
+ <string>Filter</string>
+ </property>
+ <property name="clearButtonEnabled">
+ <bool>true</bool>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QGroupBox" name="databaseGroup">
+ <property name="title">
+ <string>Database</string>
+ </property>
+ <layout class="QHBoxLayout" name="horizontalLayout">
+ <item>
+ <widget class="QComboBox" name="databaseCombo"/>
+ </item>
+ <item>
+ <widget class="QToolButton" name="createDatabaseButton">
+ <property name="toolTip">
+ <string>Create a new database directly on the device.</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="deleteDatabaseButton">
+ <property name="toolTip">
+ <string>Delete currently selected database from the device. The currently selected database is the one picked in the list on the left of this button.</string>
+ </property>
+ <property name="text">
+ <string/>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
+ <widget class="QDialogButtonBox" name="buttonBox">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
+ </property>
+ <property name="standardButtons">
+ <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ <resources/>
+ <connections>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>accepted()</signal>
+ <receiver>DbAndroidPathDialog</receiver>
+ <slot>accept()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>248</x>
+ <y>254</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>157</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ <connection>
+ <sender>buttonBox</sender>
+ <signal>rejected()</signal>
+ <receiver>DbAndroidPathDialog</receiver>
+ <slot>reject()</slot>
+ <hints>
+ <hint type="sourcelabel">
+ <x>316</x>
+ <y>260</y>
+ </hint>
+ <hint type="destinationlabel">
+ <x>286</x>
+ <y>274</y>
+ </hint>
+ </hints>
+ </connection>
+ </connections>
+</ui>
diff --git a/Plugins/DbAndroid/dbandroidshellconnection.cpp b/Plugins/DbAndroid/dbandroidshellconnection.cpp
new file mode 100644
index 0000000..1a76f8d
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidshellconnection.cpp
@@ -0,0 +1,363 @@
+#include "dbandroidshellconnection.h"
+#include "adbmanager.h"
+#include "dbandroid.h"
+#include "services/notifymanager.h"
+#include "common/utils_sql.h"
+#include "csvserializer.h"
+#include <QMutexLocker>
+
+const CsvFormat DbAndroidShellConnection::CSV_FORMAT = CsvFormat(",", "\r\n", true, true);
+
+DbAndroidShellConnection::DbAndroidShellConnection(DbAndroid* plugin, QObject* parent) :
+ DbAndroidConnection(parent), plugin(plugin)
+{
+ this->adbManager = plugin->getAdbManager();
+ connect(adbManager, SIGNAL(deviceListChanged(QStringList)), this, SLOT(checkForDisconnection(QStringList)));
+}
+
+DbAndroidShellConnection::~DbAndroidShellConnection()
+{
+
+}
+
+bool DbAndroidShellConnection::connectToAndroid(const DbAndroidUrl& url)
+{
+ if (url.getMode() != DbAndroidMode::SHELL)
+ return false;
+
+ if (!adbManager->getDevices().contains(url.getDevice()))
+ {
+ notifyWarn(tr("Cannot connect to device %1, because it's not visible to your computer.").arg(url.getDevice()));
+ return false;
+ }
+
+ // Check if application is correct
+ if (url.getApplication().isEmpty())
+ {
+ qCritical() << "Tried to connect to an empty application in DbAndroidShellConnection::connectToAndroid()";
+ return false;
+ }
+
+ QString stdOut;
+ bool res = adbManager->exec(QStringList({"shell", "run-as", url.getApplication(), "echo", "1"}), &stdOut);
+ if (!res)
+ {
+ notifyWarn(tr("Cannot connect to device %1, because the application %2 doesn't seem to be installed on the device.").arg(url.getDevice(), url.getApplication()));
+ return false;
+ }
+
+ QMutexLocker lock(&appOkMutex);
+ appOkay = true;
+ if (stdOut.startsWith("run-as:"))
+ {
+ appOkay = false;
+ qWarning() << "Cannot connect to device" << url.getDevice() << "/" << url.getApplication() << "\nDetails:\n" << stdOut.trimmed();
+ notifyWarn(tr("Cannot connect to device %1, because the application %2 is not debuggable.")
+ .arg(url.getDevice(), url.getApplication()));
+ return false;
+ }
+
+ // Check if sqlite3 is available
+ res = adbManager->exec(QStringList({"shell", "run-as", url.getApplication(), "sqlite3", "--version"}));
+ if (!res)
+ {
+ notifyWarn(tr("Cannot connect to device %1, because '%2' command doesn't seem to be available on the device.").arg(url.getDevice(), "sqlite3"));
+ return false;
+ }
+
+ // Check if databases directory exists
+ res = adbManager->exec(QStringList({"shell", "run-as", url.getApplication(), "ls", "databases"}));
+ if (!res)
+ {
+ // Doesn't exist. Create if possible.
+ res = adbManager->exec(QStringList({"shell", "run-as", url.getApplication(), "mkdir", "databases"}));
+ if (!res)
+ {
+ notifyWarn(tr("Cannot connect to device %1, because '%2' database cannot be accessed on the device.").arg(url.getDevice(), "sqlite3"));
+ return false;
+ }
+ }
+
+ // Try to connect to target database.
+ connectionUrl = url;
+ connected = true;
+
+ ExecutionResult response = executeQuery("select sqlite_version()");
+ if (response.wasError)
+ {
+ disconnectFromAndroid();
+ notifyWarn(tr("Cannot connect to device %1, because '%2' database cannot be accessed on the device. Details: %3")
+ .arg(url.getDevice(), "sqlite3", response.errorMsg));
+ return false;
+ }
+
+ return true;
+}
+
+void DbAndroidShellConnection::disconnectFromAndroid()
+{
+ connectionUrl = DbAndroidUrl();
+ connected = false;
+}
+
+bool DbAndroidShellConnection::isConnected() const
+{
+ return connected;
+}
+
+QString DbAndroidShellConnection::getDbName() const
+{
+ return connectionUrl.getDbName();
+}
+
+QStringList DbAndroidShellConnection::getDbList()
+{
+ QMutexLocker lock(&appOkMutex);
+ appOkay = true;
+ QString out;
+ bool res = adbManager->exec(QStringList({"shell", "run-as", connectionUrl.getApplication(), "ls", "databases"}), &out);
+ if (!res)
+ return QStringList();
+
+ if (out.startsWith("run-as:")) // means error
+ {
+ appOkay = false;
+ notifyWarn(tr("Cannot get list of databases for application %1. Details: %2").arg(connectionUrl.getApplication(), out.trimmed()));
+ qWarning() << "DbAndroidShellConnection::getDbList():" << out;
+ return QStringList();
+ }
+
+ QStringList finalList;
+ for (const QString& dbName : out.trimmed().split("\n", QString::SkipEmptyParts))
+ {
+ if (dbName.trimmed().endsWith("-journal"))
+ continue;
+
+ finalList << dbName.trimmed();
+ }
+
+ return finalList;
+}
+
+QStringList DbAndroidShellConnection::getAppList()
+{
+ QString out;
+ bool res = adbManager->exec(QStringList({"shell", "pm list packages -3"}), &out);
+ if (!res)
+ return QStringList();
+
+ QStringList appList;
+ for (const QString& line : out.trimmed().split("\n", QString::SkipEmptyParts))
+ appList << line.mid(8).trimmed(); // skip "package:" prefix
+
+ return appList;
+}
+
+bool DbAndroidShellConnection::isAppOkay() const
+{
+ QMutexLocker lock(&appOkMutex);
+ return appOkay;
+}
+
+bool DbAndroidShellConnection::deleteDatabase(const QString& dbName)
+{
+ return adbManager->exec(QStringList({"shell", "run-as", connectionUrl.getApplication(), "rm", "-f", "databases/" + dbName, "databases/" + dbName + "-journal"}));
+}
+
+DbAndroidConnection::ExecutionResult DbAndroidShellConnection::executeQuery(const QString& query)
+{
+ const static QStringList stdArguments = QStringList({"shell", "run-as", "", "sqlite3", "-csv", "-separator", ",", "-batch", "-header"});
+
+ // Prepare usual arguments
+ QStringList args = stdArguments;
+ args.replace(2, connectionUrl.getApplication());
+ args << "databases/" + connectionUrl.getDbName();
+ args << AdbManager::encode(query);
+
+ // In case of SELECT we want to union typeof() for all columns first, then original query
+ bool isSelect = false;
+ getQueryAccessMode(query, Dialect::Sqlite3, &isSelect);
+ QStringList columnNames;
+ bool firstHalfForTypes = false;
+ if (isSelect)
+ {
+ columnNames = findColumns(args, query);
+ if (columnNames.size() > 0)
+ {
+ firstHalfForTypes = true;
+ args.removeLast();
+ args << appendTypeQueryPart(query, columnNames);
+ }
+ }
+
+ // Execute query and handle results
+ DbAndroidConnection::ExecutionResult results;
+ QByteArray out;
+ QByteArray err;
+ bool res = adbManager->execBytes(args, &out, &err);
+ if (!res)
+ {
+ results.wasError = true;
+ results.errorMsg = tr("Could not execute query on database '%1': %2").arg(connectionUrl.getDbName(), AdbManager::decode(err));
+ return results;
+ }
+
+ if (out.startsWith("run-as:")) // means error
+ {
+ results.wasError = true;
+ results.errorMsg = tr("Could not execute query on database '%1': %2").arg(connectionUrl.getDbName(), AdbManager::decode(out).trimmed());
+ return results;
+ }
+
+
+ QList<QList<QByteArray>> deserialized = CsvSerializer::deserialize(out, CSV_FORMAT);
+ if (deserialized.size() == 0)
+ return results; // no results
+
+ extractResultData(deserialized, firstHalfForTypes, results);
+ return results;
+}
+
+QStringList DbAndroidShellConnection::findColumns(const QStringList& originalArgs, const QString& query)
+{
+ static_qstring(colQueryTpl, "SELECT * FROM (%1) LIMIT 1");
+
+ QStringList tmpArgs = originalArgs;
+ QString tmpQuery = query.trimmed();
+ if (tmpQuery.endsWith(";"))
+ tmpQuery.chop(1);
+
+ tmpQuery = colQueryTpl.arg(tmpQuery);
+
+ tmpArgs.removeLast();
+ tmpArgs << tmpQuery;
+
+ QString out;
+ QString err;
+ bool res = adbManager->exec(tmpArgs, &out, &err);
+ if (!res)
+ {
+ qCritical() << "Error querying columns in DbAndroidShellConnection::findColumns(): " << out << "\n" << err;
+ return QStringList();
+ }
+
+ QList<QStringList> deserialized = CsvSerializer::deserialize(out, CSV_FORMAT);
+ if (deserialized.size() < 1)
+ {
+ // There will be no results.
+ return QStringList();
+ }
+
+ return deserialized.first();
+}
+
+QString DbAndroidShellConnection::appendTypeQueryPart(const QString& query, const QStringList& columnNames)
+{
+ static_qstring(typeTpl, "typeof(%1)");
+ static_qstring(hexTpl, "hex(%1) AS %1");
+ static_qstring(finalQueryTpl, "SELECT %3 FROM (%2) UNION ALL SELECT %1 FROM (%2)");
+
+ QString tmpQuery = query.trimmed();
+ if (tmpQuery.endsWith(";"))
+ tmpQuery.chop(1);
+
+ QStringList hexColumns;
+ QStringList typeColumns;
+ QString wrappedCol;
+ for (const QString& colName : columnNames)
+ {
+ wrappedCol = wrapObjIfNeeded(colName, Dialect::Sqlite3);
+ typeColumns << typeTpl.arg(wrappedCol);
+ hexColumns << hexTpl.arg(wrappedCol);
+ }
+
+ return finalQueryTpl.arg(typeColumns.join(", "), tmpQuery, hexColumns.join(", "));
+}
+
+void DbAndroidShellConnection::extractResultData(const QList<QList<QByteArray>>& deserialized, bool firstHalfForTypes, DbAndroidConnection::ExecutionResult& results)
+{
+ for (const QByteArray& cell : deserialized.first())
+ results.resultColumns << AdbManager::decode(cell);
+
+ QList<QList<QByteArray>> data = deserialized.mid(1); // first row are column names
+ QList<QList<QByteArray>> types;
+ if (firstHalfForTypes)
+ {
+ types = data.mid(data.size() / 2);
+ data = data.mid(0, data.size() / 2);
+
+ QVariantList rowDataList;
+ QVariantHash rowDataMap;
+ QList<QByteArray> rowData;
+ QList<QByteArray> rowTypes;
+ QVariant value;
+ for (int rowIdx = 0, totalRows = data.size(); rowIdx < totalRows; ++rowIdx)
+ {
+ rowData = data[rowIdx];
+ rowTypes = types[rowIdx];
+
+ rowDataList.clear();
+ rowDataMap.clear();
+ for (int i = 0, total = rowData.size(); i < total; ++i)
+ {
+ value = valueFromString(rowData[i], rowTypes[i]);
+ rowDataList << value;
+ rowDataMap[results.resultColumns[i]] = value;
+ }
+ results.resultDataList << rowDataList;
+ results.resultDataMap << rowDataMap;
+ }
+ }
+ else
+ {
+ QVariantList rowDataList;
+ QVariantHash rowDataMap;
+ for (const QList<QByteArray>& row : data)
+ {
+ rowDataList.clear();
+ rowDataMap.clear();
+ for (int i = 0, total = row.size(); i < total; ++i)
+ {
+ rowDataList << AdbManager::decode(row[i]);
+ rowDataMap[results.resultColumns[i]] = row[i];
+ }
+ results.resultDataList << rowDataList;
+ results.resultDataMap << rowDataMap;
+ }
+ }
+}
+
+QVariant DbAndroidShellConnection::valueFromString(const QByteArray& bytes, const QByteArray& type)
+{
+ static const QStringList types = QStringList({"null", "integer", "real", "text", "blob"});
+
+ DataType dataType = static_cast<DataType>(types.indexOf(AdbManager::decode(type)));
+ QByteArray decodedBytes = QByteArray::fromHex(bytes);
+ switch (dataType)
+ {
+ case DataType::BLOB:
+ return decodedBytes;
+ case DataType::INTEGER:
+ return QString::fromLatin1(decodedBytes).toLongLong();
+ case DataType::REAL:
+ return QString::fromLatin1(decodedBytes).toDouble();
+ case DataType::TEXT:
+ return QString::fromUtf8(decodedBytes);
+ case DataType::_NULL:
+ break;
+ case DataType::UNKNOWN:
+ qCritical() << "Unknown type passed to DbAndroidShellConnection::valueFromString():" << type;
+ break;
+ }
+ return QVariant(QString::null);
+}
+
+void DbAndroidShellConnection::checkForDisconnection(const QStringList& devices)
+{
+ if (connected && !devices.contains(connectionUrl.getDevice()))
+ {
+ disconnectFromAndroid();
+ emit disconnected();
+ }
+}
+
diff --git a/Plugins/DbAndroid/dbandroidshellconnection.h b/Plugins/DbAndroid/dbandroidshellconnection.h
new file mode 100644
index 0000000..1c0ae0f
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidshellconnection.h
@@ -0,0 +1,59 @@
+#ifndef DBANDROIDSHELLCONNECTION_H
+#define DBANDROIDSHELLCONNECTION_H
+
+#include "dbandroidconnection.h"
+#include "csvformat.h"
+
+#include <QMutex>
+
+class DbAndroid;
+class AdbManager;
+
+class DbAndroidShellConnection : public DbAndroidConnection
+{
+ Q_OBJECT
+
+ public:
+ DbAndroidShellConnection(DbAndroid* plugin, QObject *parent = 0);
+ ~DbAndroidShellConnection();
+
+ bool connectToAndroid(const DbAndroidUrl& url);
+ void disconnectFromAndroid();
+ bool isConnected() const;
+ QString getDbName() const;
+ QStringList getDbList();
+ QStringList getAppList();
+ bool isAppOkay() const;
+ bool deleteDatabase(const QString& dbName);
+ ExecutionResult executeQuery(const QString& query);
+
+ private:
+ enum class DataType
+ {
+ UNKNOWN = -1,
+ _NULL = 0,
+ INTEGER = 1,
+ REAL = 2,
+ TEXT = 3,
+ BLOB = 4
+ };
+
+ QStringList findColumns(const QStringList& originalArgs, const QString& query);
+ QString appendTypeQueryPart(const QString& query, const QStringList& columnNames);
+ void extractResultData(const QList<QList<QByteArray> >& deserialized, bool firstHalfForTypes, ExecutionResult& results);
+ QVariant valueFromString(const QByteArray& bytes, const QByteArray& type);
+
+ DbAndroid* plugin = nullptr;
+ AdbManager* adbManager = nullptr;
+ bool connected = false;
+ DbAndroidUrl connectionUrl;
+ bool appOkay = false;
+ mutable QMutex appOkMutex;
+
+ static const CsvFormat CSV_FORMAT;
+
+ private slots:
+ void checkForDisconnection(const QStringList& devices);
+};
+
+#endif // DBANDROIDSHELLCONNECTION_H
diff --git a/Plugins/DbAndroid/dbandroidurl.cpp b/Plugins/DbAndroid/dbandroidurl.cpp
new file mode 100644
index 0000000..766d810
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidurl.cpp
@@ -0,0 +1,217 @@
+#include "dbandroidurl.h"
+#include "common/ipvalidator.h"
+#include <QStringList>
+
+DbAndroidUrl::DbAndroidUrl()
+{
+}
+
+DbAndroidUrl::DbAndroidUrl(DbAndroidMode enforcedMode) :
+ enforcedMode(enforcedMode)
+{
+}
+
+DbAndroidUrl::DbAndroidUrl(const DbAndroidUrl& other) :
+ enforcedMode(other.enforcedMode), host(other.host), device(other.device), port(other.port), dbName(other.dbName), password(other.password),
+ application(other.application)
+{
+}
+
+DbAndroidUrl::DbAndroidUrl(const QString& path, bool obfuscatedPassword)
+{
+ parse(path, obfuscatedPassword);
+}
+
+DbAndroidUrl::~DbAndroidUrl()
+{
+}
+
+QString DbAndroidUrl::toUrlString(bool obfuscatedPassword) const
+{
+ return toUrl(obfuscatedPassword).toString();
+}
+
+QUrl DbAndroidUrl::toUrl(bool obfuscatedPassword) const
+{
+ QUrl url;
+ url.setScheme(SCHEME);
+ url.setHost(host);
+ url.setUserName(device);
+ url.setPort(port);
+ url.setPassword(getPassword(obfuscatedPassword));
+ url.setPath("/" + (application.isEmpty() ? "!" : application) + "/" + dbName);
+ return url;
+}
+
+QString DbAndroidUrl::getDisplayName() const
+{
+ if (!device.isNull())
+ return device;
+
+ return host;
+}
+
+void DbAndroidUrl::parse(const QString& path, bool obfuscatedPassword)
+{
+ QUrl url(path);
+ if (url.scheme() != SCHEME)
+ return;
+
+ host = url.host();
+ device = url.userName();
+ port = url.port();
+
+ QString urlPath = url.path();
+ if (urlPath.startsWith("/"))
+ urlPath = urlPath.mid(1);
+
+ QStringList pathParts = urlPath.split("/");
+
+ application = QString();
+ if (pathParts.first() != "!")
+ application = pathParts.first();
+
+ dbName = QStringList(pathParts.mid(1)).join("/");
+ if (!url.password().isEmpty())
+ setPassword(url.password(), obfuscatedPassword);
+ else
+ setPassword(QString());
+}
+
+QString DbAndroidUrl::getApplication() const
+{
+ return application;
+}
+
+void DbAndroidUrl::setApplication(const QString& value)
+{
+ application = value;
+}
+
+QString DbAndroidUrl::getDevice() const
+{
+ return device;
+}
+
+void DbAndroidUrl::setDevice(const QString& value)
+{
+ device = value;
+}
+
+QString DbAndroidUrl::getHost() const
+{
+ return host;
+}
+
+void DbAndroidUrl::setHost(const QString& value)
+{
+ host = value;
+}
+
+
+QString DbAndroidUrl::getPassword(bool obfuscated) const
+{
+ if (obfuscated)
+ return QString::fromLatin1(password.toUtf8().toHex().toBase64());
+
+ return password;
+}
+
+void DbAndroidUrl::setPassword(const QString& value, bool obfuscated)
+{
+ if (obfuscated)
+ {
+ password = QString::fromUtf8(QByteArray::fromHex(QByteArray::fromBase64(value.toLatin1())));
+ return;
+ }
+
+ password = value;
+}
+
+
+QString DbAndroidUrl::getDbName() const
+{
+ return dbName;
+}
+
+void DbAndroidUrl::setDbName(const QString& value)
+{
+ dbName = value;
+}
+
+DbAndroidMode DbAndroidUrl::getMode() const
+{
+ if (enforcedMode != DbAndroidMode::null)
+ return enforcedMode;
+
+ if (!application.isEmpty())
+ return DbAndroidMode::SHELL;
+
+ return host.isEmpty() ? DbAndroidMode::USB : DbAndroidMode::NETWORK;
+}
+
+void DbAndroidUrl::setEnforcedMode(DbAndroidMode mode)
+{
+ enforcedMode = mode;
+}
+
+bool DbAndroidUrl::isValid(bool validateConnectionIrrelevantParts) const
+{
+ if (isNull())
+ return false;
+
+ if (validateConnectionIrrelevantParts && dbName.isEmpty())
+ return false;
+
+ switch (getMode())
+ {
+ case DbAndroidMode::NETWORK:
+ {
+ if (!isHostValid())
+ return false;
+
+ if (port <= 0)
+ return false;
+
+ break;
+ }
+ case DbAndroidMode::USB:
+ {
+ if (port <= 0)
+ return false;
+
+ break;
+ }
+ case DbAndroidMode::SHELL:
+ {
+ if (validateConnectionIrrelevantParts && application.isEmpty())
+ return false;
+
+ break;
+ }
+ case DbAndroidMode::null:
+ return false;
+ }
+
+ return true;
+}
+
+bool DbAndroidUrl::isHostValid() const
+{
+ return IpValidator::check(host);
+}
+
+bool DbAndroidUrl::isNull() const
+{
+ return host.isEmpty() && device.isEmpty();
+}
+
+int DbAndroidUrl::getPort() const
+{
+ return port;
+}
+
+void DbAndroidUrl::setPort(int value)
+{
+ port = value;
+}
diff --git a/Plugins/DbAndroid/dbandroidurl.h b/Plugins/DbAndroid/dbandroidurl.h
new file mode 100644
index 0000000..594b21c
--- /dev/null
+++ b/Plugins/DbAndroid/dbandroidurl.h
@@ -0,0 +1,59 @@
+#ifndef DBANDROIDURL_H
+#define DBANDROIDURL_H
+
+#include "dbandroidmode.h"
+#include <QString>
+#include <QUrl>
+
+class DbAndroidUrl
+{
+ public:
+ DbAndroidUrl();
+ DbAndroidUrl(const DbAndroidUrl& other);
+ explicit DbAndroidUrl(DbAndroidMode enforcedMode);
+ explicit DbAndroidUrl(const QString& path, bool obfuscatedPassword = true);
+ ~DbAndroidUrl();
+
+ QString toUrlString(bool obfuscatedPassword = true) const;
+ QUrl toUrl(bool obfuscatedPassword = true) const;
+ QString getDisplayName() const;
+
+ int getPort() const;
+ void setPort(int value);
+
+ QString getDbName() const;
+ void setDbName(const QString& value);
+
+ DbAndroidMode getMode() const;
+ void setEnforcedMode(DbAndroidMode mode);
+ bool isValid(bool validateConnectionIrrelevantParts = true) const;
+ bool isHostValid() const;
+ bool isNull() const;
+
+ QString getPassword(bool obfuscated = false) const;
+ void setPassword(const QString& value, bool obfuscated = false);
+
+ QString getHost() const;
+ void setHost(const QString& value);
+
+ QString getDevice() const;
+ void setDevice(const QString& value);
+
+ QString getApplication() const;
+ void setApplication(const QString& value);
+
+ private:
+ void parse(const QString& path, bool obfuscatedPassword = false);
+
+ static const constexpr char* SCHEME = "android";
+
+ DbAndroidMode enforcedMode = DbAndroidMode::null;
+ QString host;
+ QString device;
+ int port = -1;
+ QString dbName;
+ QString password;
+ QString application;
+};
+
+#endif // DBANDROIDURL_H
diff --git a/Plugins/DbAndroid/sqlqueryandroid.cpp b/Plugins/DbAndroid/sqlqueryandroid.cpp
new file mode 100644
index 0000000..08fe5cc
--- /dev/null
+++ b/Plugins/DbAndroid/sqlqueryandroid.cpp
@@ -0,0 +1,160 @@
+#include "dbandroidconnection.h"
+#include "sqlqueryandroid.h"
+#include "sqlresultrowandroid.h"
+#include "parser/lexer.h"
+#include "db/sqlerrorcodes.h"
+#include "common/utils_sql.h"
+#include "log.h"
+#include "dbandroidinstance.h"
+#include <QDebug>
+
+SqlQueryAndroid::SqlQueryAndroid(DbAndroidInstance* db, DbAndroidConnection* connection, const QString& query) :
+ db(db), connection(connection), queryString(query)
+{
+ tokenizedQuery = Lexer::tokenize(query, Dialect::Sqlite3);
+}
+
+SqlQueryAndroid::~SqlQueryAndroid()
+{
+}
+
+QString SqlQueryAndroid::getErrorText()
+{
+ return errorText;
+}
+
+int SqlQueryAndroid::getErrorCode()
+{
+ return errorCode;
+}
+
+QStringList SqlQueryAndroid::getColumnNames()
+{
+ return resultColumns;
+}
+
+int SqlQueryAndroid::columnCount()
+{
+ return resultColumns.size();
+}
+
+void SqlQueryAndroid::rewind()
+{
+ currentRow = -1;
+}
+
+SqlResultsRowPtr SqlQueryAndroid::nextInternal()
+{
+ if (resultDataList.size() == 0)
+ return SqlResultsRowPtr();
+
+ currentRow++;
+ SqlResultRowAndroid* resultRow = new SqlResultRowAndroid(resultDataMap[currentRow], resultDataList[currentRow]);
+ return SqlResultsRowPtr(resultRow);
+}
+
+bool SqlQueryAndroid::hasNextInternal()
+{
+ return (currentRow + 1 < resultDataList.size());
+}
+
+bool SqlQueryAndroid::execInternal(const QList<QVariant>& args)
+{
+ resetResponse();
+ logSql(db, queryString, args, flags);
+
+ int argIdx = 0;
+ QString query;
+ for (const TokenPtr& token : tokenizedQuery)
+ {
+ if (token->type != Token::BIND_PARAM)
+ {
+ query += token->value;
+ continue;
+ }
+
+ query += convertArg(args[argIdx++]);
+ }
+
+ return executeAndHandleResponse(query);
+}
+
+bool SqlQueryAndroid::execInternal(const QHash<QString, QVariant>& args)
+{
+ resetResponse();
+ logSql(db, queryString, args, flags);
+
+ QString argName;
+ QString query;
+ for (const TokenPtr& token : tokenizedQuery)
+ {
+ if (token->type != Token::BIND_PARAM)
+ {
+ query += token->value;
+ continue;
+ }
+
+ argName = token->value;
+ if (!args.contains(argName))
+ {
+ errorCode = SqlErrorCode::OTHER_EXECUTION_ERROR;
+ errorText = QObject::tr("Cannot bind argument '%1' of the query, because it's value is missing.").arg(argName);
+ return false;
+ }
+
+ query += convertArg(args[argName]);
+ }
+
+ return executeAndHandleResponse(query);
+}
+
+QString SqlQueryAndroid::convertArg(const QVariant& value)
+{
+ if (value.isNull() || !value.isValid())
+ return "NULL";
+
+ switch (value.type())
+ {
+ case QVariant::Int:
+ case QVariant::UInt:
+ case QVariant::LongLong:
+ case QVariant::ULongLong:
+ case QVariant::Double:
+ return value.toString();
+ case QVariant::String:
+ return "'" + value.toString().replace("'", "''") + "'";
+ case QVariant::ByteArray:
+ return "x'" + value.toByteArray().toHex() + "'";
+ default:
+ break;
+ }
+
+ qCritical() << "Unhandled argument type in SqlQueryAndroid::convertArg():" << value.type();
+ return "";
+}
+
+bool SqlQueryAndroid::executeAndHandleResponse(const QString& query)
+{
+ DbAndroidConnection::ExecutionResult results = connection->executeQuery(query);
+ if (results.wasError)
+ {
+ errorCode = (results.errorCode != 0) ? results.errorCode : SqlErrorCode::OTHER_EXECUTION_ERROR;
+ errorText = results.errorMsg;
+ return false;
+ }
+
+ resultColumns = results.resultColumns;
+ resultDataMap = results.resultDataMap;
+ resultDataList = results.resultDataList;
+ return true;
+}
+
+void SqlQueryAndroid::resetResponse()
+{
+ resultColumns.clear();
+ resultDataMap.clear();
+ resultDataList.clear();
+ currentRow = -1;
+ errorCode = 0;
+ errorText = QString();
+}
diff --git a/Plugins/DbAndroid/sqlqueryandroid.h b/Plugins/DbAndroid/sqlqueryandroid.h
new file mode 100644
index 0000000..3944c21
--- /dev/null
+++ b/Plugins/DbAndroid/sqlqueryandroid.h
@@ -0,0 +1,47 @@
+#ifndef SQLQUERYANDROID_H
+#define SQLQUERYANDROID_H
+
+#include "db/sqlquery.h"
+#include "parser/token.h"
+#include <QJsonDocument>
+
+class DbAndroidConnection;
+class DbAndroidInstance;
+
+class SqlQueryAndroid : public SqlQuery
+{
+ public:
+ SqlQueryAndroid(DbAndroidInstance* db, DbAndroidConnection* connection, const QString& query);
+ ~SqlQueryAndroid();
+
+ QString getErrorText();
+ int getErrorCode();
+ QStringList getColumnNames();
+ int columnCount();
+ void rewind();
+
+ protected:
+ SqlResultsRowPtr nextInternal();
+ bool hasNextInternal();
+ bool execInternal(const QList<QVariant>& args);
+ bool execInternal(const QHash<QString, QVariant>& args);
+
+ private:
+ bool executeAndHandleResponse(const QString& query);
+ void resetResponse();
+
+ static QString convertArg(const QVariant& value);
+
+ DbAndroidInstance* db = nullptr;
+ DbAndroidConnection* connection = nullptr;
+ QString queryString;
+ TokenList tokenizedQuery;
+ int errorCode = 0;
+ QString errorText;
+ QStringList resultColumns;
+ QList<QVariantHash> resultDataMap;
+ QList<QVariantList> resultDataList;
+ int currentRow = -1;
+};
+
+#endif // SQLQUERYANDROID_H
diff --git a/Plugins/DbAndroid/sqlresultrowandroid.cpp b/Plugins/DbAndroid/sqlresultrowandroid.cpp
new file mode 100644
index 0000000..cc08fa5
--- /dev/null
+++ b/Plugins/DbAndroid/sqlresultrowandroid.cpp
@@ -0,0 +1,12 @@
+#include "sqlresultrowandroid.h"
+
+SqlResultRowAndroid::SqlResultRowAndroid(const QVariantHash& resultMap, const QVariantList& resultList)
+{
+ valuesMap = resultMap;
+ values = resultList;
+}
+
+SqlResultRowAndroid::~SqlResultRowAndroid()
+{
+}
+
diff --git a/Plugins/DbAndroid/sqlresultrowandroid.h b/Plugins/DbAndroid/sqlresultrowandroid.h
new file mode 100644
index 0000000..5acc95a
--- /dev/null
+++ b/Plugins/DbAndroid/sqlresultrowandroid.h
@@ -0,0 +1,13 @@
+#ifndef SQLRESULTROWANDROID_H
+#define SQLRESULTROWANDROID_H
+
+#include "db/sqlresultsrow.h"
+
+class SqlResultRowAndroid : public SqlResultsRow
+{
+ public:
+ SqlResultRowAndroid(const QVariantHash& resultMap, const QVariantList& resultList);
+ ~SqlResultRowAndroid();
+};
+
+#endif // SQLRESULTROWANDROID_H
diff --git a/Plugins/DbSqlite2/DbSqlite2.pro b/Plugins/DbSqlite2/DbSqlite2.pro
index de31058..b254ca5 100644
--- a/Plugins/DbSqlite2/DbSqlite2.pro
+++ b/Plugins/DbSqlite2/DbSqlite2.pro
@@ -35,3 +35,4 @@ OTHER_FILES += \
+
diff --git a/Plugins/HtmlExport/HtmlExport.pro b/Plugins/HtmlExport/HtmlExport.pro
index 8f3578e..3ef30d0 100644
--- a/Plugins/HtmlExport/HtmlExport.pro
+++ b/Plugins/HtmlExport/HtmlExport.pro
@@ -29,7 +29,8 @@ FORMS += \
htmlexport.ui
-TRANSLATIONS += HtmlExport_zh_CN.ts \
+TRANSLATIONS += HtmlExport_it.ts \
+ HtmlExport_zh_CN.ts \
HtmlExport_sk.ts \
HtmlExport_de.ts \
HtmlExport_ru.ts \
@@ -49,3 +50,4 @@ TRANSLATIONS += HtmlExport_zh_CN.ts \
+
diff --git a/Plugins/HtmlExport/HtmlExport_it.ts b/Plugins/HtmlExport/HtmlExport_it.ts
new file mode 100644
index 0000000..208900c
--- /dev/null
+++ b/Plugins/HtmlExport/HtmlExport_it.ts
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>HtmlExport</name>
+ <message>
+ <location filename="htmlexport.cpp" line="46"/>
+ <source>SQL query results</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="78"/>
+ <location filename="htmlexport.cpp" line="155"/>
+ <source>no type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="115"/>
+ <location filename="htmlexport.cpp" line="243"/>
+ <source>Exported table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="127"/>
+ <location filename="htmlexport.cpp" line="255"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="255"/>
+ <source>virtual</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="308"/>
+ <source>Exported database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="324"/>
+ <source>Index: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="330"/>
+ <source>For table:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="337"/>
+ <source>Unique:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="338"/>
+ <source>Yes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="338"/>
+ <source>No</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="344"/>
+ <source>Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="345"/>
+ <source>Collating</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="346"/>
+ <source>Sort order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="377"/>
+ <source>Trigger: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="383"/>
+ <source>Activated:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="391"/>
+ <source>Action:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="398"/>
+ <source>On view:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="400"/>
+ <source>On table:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="411"/>
+ <source>Activate condition:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="418"/>
+ <source>Code executed:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="452"/>
+ <source>View: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.cpp" line="477"/>
+ <source>Document generated by SQLiteStudio v%1 on %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>HtmlExportConfig</name>
+ <message>
+ <location filename="htmlexport.ui" line="36"/>
+ <source>Maximum number of characters per cell:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="43"/>
+ <source>Include data types in first row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="53"/>
+ <source>Column names as first row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="63"/>
+ <source>Row numbers as first column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="73"/>
+ <source>Output format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="79"/>
+ <source>Format document (new lines, indentation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="92"/>
+ <source>Compress (everything in one line)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="108"/>
+ <source>&lt;p&gt;When enabled, HTML characters such as &amp;lt;, &amp;gt; and &amp;amp; are not escaped in exported values. This allows you for example to export hyper-link enabled documents, but it also may result in incorrect HTML document (unmatched pairs of &amp;lt; and &amp;gt; characters). Be warned.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="htmlexport.ui" line="111"/>
+ <source>Don&apos;t escape HTML characters</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/JsonExport/JsonExport.pro b/Plugins/JsonExport/JsonExport.pro
index 6f8ae18..47fcb05 100644
--- a/Plugins/JsonExport/JsonExport.pro
+++ b/Plugins/JsonExport/JsonExport.pro
@@ -28,7 +28,8 @@ RESOURCES += \
jsonexport.qrc
-TRANSLATIONS += JsonExport_zh_CN.ts \
+TRANSLATIONS += JsonExport_it.ts \
+ JsonExport_zh_CN.ts \
JsonExport_sk.ts \
JsonExport_de.ts \
JsonExport_ru.ts \
@@ -48,3 +49,4 @@ TRANSLATIONS += JsonExport_zh_CN.ts \
+
diff --git a/Plugins/JsonExport/JsonExport_it.ts b/Plugins/JsonExport/JsonExport_it.ts
new file mode 100644
index 0000000..74b0169
--- /dev/null
+++ b/Plugins/JsonExport/JsonExport_it.ts
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>JsonExportConfig</name>
+ <message>
+ <location filename="jsonexport.ui" line="20"/>
+ <source>Output format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="jsonexport.ui" line="26"/>
+ <source>Format document (new lines, indentation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="jsonexport.ui" line="42"/>
+ <source>Compress (everything in one line)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/JsonExport/JsonExport_zh_CN.ts b/Plugins/JsonExport/JsonExport_zh_CN.ts
index be101c4..82b3b1d 100644
--- a/Plugins/JsonExport/JsonExport_zh_CN.ts
+++ b/Plugins/JsonExport/JsonExport_zh_CN.ts
@@ -6,17 +6,17 @@
<message>
<location filename="jsonexport.ui" line="20"/>
<source>Output format</source>
- <translation type="unfinished"></translation>
+ <translation>输出格式</translation>
</message>
<message>
<location filename="jsonexport.ui" line="26"/>
<source>Format document (new lines, indentation)</source>
- <translation type="unfinished"></translation>
+ <translation>格式化的文本(多行,缩进)</translation>
</message>
<message>
<location filename="jsonexport.ui" line="42"/>
<source>Compress (everything in one line)</source>
- <translation type="unfinished"></translation>
+ <translation>压缩(产生单行文件)</translation>
</message>
</context>
</TS>
diff --git a/Plugins/PdfExport/PdfExport.pro b/Plugins/PdfExport/PdfExport.pro
index ff86d24..95848c1 100644
--- a/Plugins/PdfExport/PdfExport.pro
+++ b/Plugins/PdfExport/PdfExport.pro
@@ -26,7 +26,8 @@ RESOURCES += \
pdfexport.qrc
-TRANSLATIONS += PdfExport_zh_CN.ts \
+TRANSLATIONS += PdfExport_it.ts \
+ PdfExport_zh_CN.ts \
PdfExport_sk.ts \
PdfExport_de.ts \
PdfExport_ru.ts \
@@ -46,3 +47,4 @@ TRANSLATIONS += PdfExport_zh_CN.ts \
+
diff --git a/Plugins/PdfExport/PdfExport_de.ts b/Plugins/PdfExport/PdfExport_de.ts
index 7e5d8e6..7498c43 100644
--- a/Plugins/PdfExport/PdfExport_de.ts
+++ b/Plugins/PdfExport/PdfExport_de.ts
@@ -6,164 +6,165 @@
<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>SQL Abfragenergebnis</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>Exportierte Tabelle: %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>Tabelle: %1</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="94"/>
<location filename="pdfexport.cpp" line="230"/>
<source>Column</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="94"/>
<source>Data type</source>
- <translation type="unfinished"></translation>
+ <translation>Datentyp</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="94"/>
<source>Constraints</source>
- <translation type="unfinished"></translation>
+ <translation>Bedingungen</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="125"/>
<source>Global table constraints</source>
- <translation type="unfinished"></translation>
+ <translation>Globale Tabellenbedingungen</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="214"/>
<source>Exported database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Exportierte Datenbank: %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>Eigenschaft</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="224"/>
<source>Value</source>
<comment>index header</comment>
- <translation type="unfinished"></translation>
+ <translation>Wert</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="227"/>
<source>Indexed table</source>
- <translation type="unfinished"></translation>
+ <translation>Indexierte Tabelle</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="228"/>
<source>Unique index</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Singularer Index? Fuer Unique finde ich keine richtige Übersetzung.</translatorcomment>
+ <translation>Index (duplikatfrei)</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="228"/>
<source>Yes</source>
- <translation type="unfinished"></translation>
+ <translation>Ja</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="228"/>
<source>No</source>
- <translation type="unfinished"></translation>
+ <translation>Nein</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="230"/>
<source>Collation</source>
- <translation type="unfinished"></translation>
+ <translation>Kollation</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="230"/>
<source>Sort order</source>
- <translation type="unfinished"></translation>
+ <translation>Sortierreihenfolge</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="246"/>
<source>Partial index condition</source>
- <translation type="unfinished"></translation>
+ <translation>Teilindexbedingung</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="260"/>
<source>Trigger: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Trigger: %1</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="262"/>
<source>Property</source>
<comment>trigger header</comment>
- <translation type="unfinished"></translation>
+ <translation>Eigenschaft</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="262"/>
<source>Value</source>
<comment>trigger header</comment>
- <translation type="unfinished"></translation>
+ <translation>Wert</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="264"/>
<source>Activation time</source>
- <translation type="unfinished"></translation>
+ <translation>Ausführungszeit</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="267"/>
<source>For action</source>
- <translation type="unfinished"></translation>
+ <translation>Für Aktion</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="271"/>
<source>On view</source>
- <translation type="unfinished"></translation>
+ <translation>auf Index</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="273"/>
<source>On table</source>
- <translation type="unfinished"></translation>
+ <translation>auf Tabelle</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="278"/>
<source>Activation condition</source>
- <translation type="unfinished"></translation>
+ <translation>Ausführungskondition</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="284"/>
<source>Code executed</source>
- <translation type="unfinished"></translation>
+ <translation>Code ausgeführt</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="296"/>
<source>View: %1</source>
- <translation type="unfinished"></translation>
+ <translation>View: %1</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="297"/>
<source>Query:</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage:</translation>
</message>
<message>
<location filename="pdfexport.cpp" line="649"/>
<source>Document generated with SQLiteStudio v%1</source>
- <translation type="unfinished"></translation>
+ <translation>Dokument mit SQLiteStudio v%1 generiert</translation>
</message>
</context>
<context>
@@ -171,32 +172,33 @@
<message>
<location filename="pdfexport.ui" line="20"/>
<source>Size and layout</source>
- <translation type="unfinished"></translation>
+ <translation>Format und Layout</translation>
</message>
<message>
<location filename="pdfexport.ui" line="36"/>
<source>Page size:</source>
- <translation type="unfinished"></translation>
+ <translation>Format:
+</translation>
</message>
<message>
<location filename="pdfexport.ui" line="63"/>
<source>Right margin:</source>
- <translation type="unfinished"></translation>
+ <translation>Seitenabstand Rechts:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="70"/>
<source>Left margin:</source>
- <translation type="unfinished"></translation>
+ <translation>Seitenabstand Links:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="77"/>
<source>Cell padding:</source>
- <translation type="unfinished"></translation>
+ <translation>Zellenabstand:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="84"/>
<source>Limit characters in single cell:</source>
- <translation type="unfinished"></translation>
+ <translation>Maximale Anzahl an Zeichen pro Zelle:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="91"/>
@@ -205,52 +207,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>Seitenabstand Unten:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="163"/>
<source>Top margin:</source>
- <translation type="unfinished"></translation>
+ <translation>Seitenabstand oben:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="183"/>
<source>Font</source>
- <translation type="unfinished"></translation>
+ <translation>Schriftart</translation>
</message>
<message>
<location filename="pdfexport.ui" line="206"/>
<source>Colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farben</translation>
</message>
<message>
<location filename="pdfexport.ui" line="212"/>
<source>Headers background:</source>
- <translation type="unfinished"></translation>
+ <translation>Hintergrundfarbe Kopfzeile:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="235"/>
<source>NULL value color:</source>
- <translation type="unfinished"></translation>
+ <translation>NULL Wert Farbe:</translation>
</message>
<message>
<location filename="pdfexport.ui" line="261"/>
<source>Other settings</source>
- <translation type="unfinished"></translation>
+ <translation>Sonstige Einstellungen</translation>
</message>
<message>
<location filename="pdfexport.ui" line="267"/>
<source>Print row numbers for data</source>
- <translation type="unfinished"></translation>
+ <translation>Zeilennummerierung drucken</translation>
</message>
<message>
<location filename="pdfexport.ui" line="277"/>
<source>Print page numbers</source>
- <translation type="unfinished"></translation>
+ <translation>Seitenzahl drucken</translation>
</message>
</context>
</TS>
diff --git a/Plugins/PdfExport/PdfExport_it.ts b/Plugins/PdfExport/PdfExport_it.ts
new file mode 100644
index 0000000..913432b
--- /dev/null
+++ b/Plugins/PdfExport/PdfExport_it.ts
@@ -0,0 +1,256 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>PdfExport</name>
+ <message>
+ <location filename="pdfexport.cpp" line="28"/>
+ <source>SQLiteStudio v%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="60"/>
+ <source>SQL query results</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="89"/>
+ <location filename="pdfexport.cpp" line="143"/>
+ <source>Exported table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="92"/>
+ <location filename="pdfexport.cpp" line="158"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="94"/>
+ <location filename="pdfexport.cpp" line="230"/>
+ <source>Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="94"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="94"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="125"/>
+ <source>Global table constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="214"/>
+ <source>Exported database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="222"/>
+ <source>Index: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="224"/>
+ <source>Property</source>
+ <comment>index header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="224"/>
+ <source>Value</source>
+ <comment>index header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="227"/>
+ <source>Indexed table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="228"/>
+ <source>Unique index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="228"/>
+ <source>Yes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="228"/>
+ <source>No</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="230"/>
+ <source>Collation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="230"/>
+ <source>Sort order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="246"/>
+ <source>Partial index condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="260"/>
+ <source>Trigger: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="262"/>
+ <source>Property</source>
+ <comment>trigger header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="262"/>
+ <source>Value</source>
+ <comment>trigger header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="264"/>
+ <source>Activation time</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="267"/>
+ <source>For action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="271"/>
+ <source>On view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="273"/>
+ <source>On table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="278"/>
+ <source>Activation condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="284"/>
+ <source>Code executed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="296"/>
+ <source>View: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="297"/>
+ <source>Query:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.cpp" line="649"/>
+ <source>Document generated with SQLiteStudio v%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PdfExportConfig</name>
+ <message>
+ <location filename="pdfexport.ui" line="20"/>
+ <source>Size and layout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="36"/>
+ <source>Page size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="63"/>
+ <source>Right margin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="70"/>
+ <source>Left margin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="77"/>
+ <source>Cell padding:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="84"/>
+ <source>Limit characters in single cell:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="91"/>
+ <location filename="pdfexport.ui" line="108"/>
+ <location filename="pdfexport.ui" line="115"/>
+ <location filename="pdfexport.ui" line="132"/>
+ <location filename="pdfexport.ui" line="156"/>
+ <source>mm</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="139"/>
+ <source>Bottom margin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="163"/>
+ <source>Top margin:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="183"/>
+ <source>Font</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="206"/>
+ <source>Colors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="212"/>
+ <source>Headers background:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="235"/>
+ <source>NULL value color:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="261"/>
+ <source>Other settings</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="267"/>
+ <source>Print row numbers for data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="pdfexport.ui" line="277"/>
+ <source>Print page numbers</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/Plugins.pro b/Plugins/Plugins.pro
index 805521a..81b2337 100644
--- a/Plugins/Plugins.pro
+++ b/Plugins/Plugins.pro
@@ -16,4 +16,5 @@ SUBDIRS += \
Printing \
SqlEnterpriseFormatter \
ConfigMigration \
- ScriptingTcl
+ ScriptingTcl \
+ DbAndroid
diff --git a/Plugins/Printing/Printing.pro b/Plugins/Printing/Printing.pro
index c1afb9f..5006d60 100644
--- a/Plugins/Printing/Printing.pro
+++ b/Plugins/Printing/Printing.pro
@@ -35,7 +35,8 @@ RESOURCES += \
printing.qrc
-TRANSLATIONS += Printing_zh_CN.ts \
+TRANSLATIONS += Printing_it.ts \
+ Printing_zh_CN.ts \
Printing_sk.ts \
Printing_de.ts \
Printing_ru.ts \
@@ -55,3 +56,4 @@ TRANSLATIONS += Printing_zh_CN.ts \
+
diff --git a/Plugins/Printing/Printing_de.ts b/Plugins/Printing/Printing_de.ts
index 6a165a2..fb45beb 100644
--- a/Plugins/Printing/Printing_de.ts
+++ b/Plugins/Printing/Printing_de.ts
@@ -6,27 +6,27 @@
<message>
<location filename="printing.cpp" line="35"/>
<source>Print data</source>
- <translation type="unfinished"></translation>
+ <translation>Daten drucken</translation>
</message>
<message>
<location filename="printing.cpp" line="37"/>
<source>Print query</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage drucken</translation>
</message>
<message>
<location filename="printing.cpp" line="75"/>
<source>No data to print.</source>
- <translation type="unfinished"></translation>
+ <translation>Keine Daten, die gedruckt werden müssen.</translation>
</message>
<message>
<location filename="printing.cpp" line="84"/>
<source>Printing data.</source>
- <translation type="unfinished"></translation>
+ <translation>Drucke Daten.</translation>
</message>
<message>
<location filename="printing.cpp" line="110"/>
<source>Printing query.</source>
- <translation type="unfinished"></translation>
+ <translation>Drucke Abfrage.</translation>
</message>
</context>
<context>
@@ -34,7 +34,7 @@
<message>
<location filename="printingexport.cpp" line="34"/>
<source>Printing</source>
- <translation type="unfinished"></translation>
+ <translation>Drucken</translation>
</message>
</context>
</TS>
diff --git a/Plugins/Printing/Printing_it.ts b/Plugins/Printing/Printing_it.ts
new file mode 100644
index 0000000..0a21af2
--- /dev/null
+++ b/Plugins/Printing/Printing_it.ts
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>Printing</name>
+ <message>
+ <location filename="printing.cpp" line="35"/>
+ <source>Print data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="printing.cpp" line="37"/>
+ <source>Print query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="printing.cpp" line="75"/>
+ <source>No data to print.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="printing.cpp" line="84"/>
+ <source>Printing data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="printing.cpp" line="110"/>
+ <source>Printing query.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PrintingExport</name>
+ <message>
+ <location filename="printingexport.cpp" line="34"/>
+ <source>Printing</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/Printing/Printing_zh_CN.ts b/Plugins/Printing/Printing_zh_CN.ts
index 0b1b255..e3a7a2d 100644
--- a/Plugins/Printing/Printing_zh_CN.ts
+++ b/Plugins/Printing/Printing_zh_CN.ts
@@ -6,27 +6,27 @@
<message>
<location filename="printing.cpp" line="35"/>
<source>Print data</source>
- <translation type="unfinished"></translation>
+ <translation>打印数据</translation>
</message>
<message>
<location filename="printing.cpp" line="37"/>
<source>Print query</source>
- <translation type="unfinished"></translation>
+ <translation>打印 query</translation>
</message>
<message>
<location filename="printing.cpp" line="75"/>
<source>No data to print.</source>
- <translation type="unfinished"></translation>
+ <translation>没有数据可打印。</translation>
</message>
<message>
<location filename="printing.cpp" line="84"/>
<source>Printing data.</source>
- <translation type="unfinished"></translation>
+ <translation>打印数据中。</translation>
</message>
<message>
<location filename="printing.cpp" line="110"/>
<source>Printing query.</source>
- <translation type="unfinished"></translation>
+ <translation>打印query中。</translation>
</message>
</context>
<context>
@@ -34,7 +34,7 @@
<message>
<location filename="printingexport.cpp" line="34"/>
<source>Printing</source>
- <translation type="unfinished"></translation>
+ <translation>打印</translation>
</message>
</context>
</TS>
diff --git a/Plugins/RegExpImport/RegExpImport.pro b/Plugins/RegExpImport/RegExpImport.pro
index aa790b2..8ef5298 100644
--- a/Plugins/RegExpImport/RegExpImport.pro
+++ b/Plugins/RegExpImport/RegExpImport.pro
@@ -28,7 +28,8 @@ RESOURCES += \
regexpimport.qrc
-TRANSLATIONS += RegExpImport_zh_CN.ts \
+TRANSLATIONS += RegExpImport_it.ts \
+ RegExpImport_zh_CN.ts \
RegExpImport_sk.ts \
RegExpImport_de.ts \
RegExpImport_ru.ts \
@@ -48,3 +49,4 @@ TRANSLATIONS += RegExpImport_zh_CN.ts \
+
diff --git a/Plugins/RegExpImport/RegExpImport_it.ts b/Plugins/RegExpImport/RegExpImport_it.ts
new file mode 100644
index 0000000..00869f1
--- /dev/null
+++ b/Plugins/RegExpImport/RegExpImport_it.ts
@@ -0,0 +1,83 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>RegExpImport</name>
+ <message>
+ <location filename="regexpimport.cpp" line="37"/>
+ <source>Text files (*.txt);;All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.cpp" line="53"/>
+ <source>Cannot read file %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.cpp" line="161"/>
+ <source>Enter the regular expression pattern.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.cpp" line="169"/>
+ <source>Invalid pattern: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.cpp" line="189"/>
+ <source>Requested capture index %1 is out of range.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.cpp" line="196"/>
+ <source>&lt;p&gt;Requested capture group name &apos;%1&apos;, but it&apos;s not defined in the pattern: &lt;pre&gt;%2&lt;/pre&gt;&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>RegExpImportConfig</name>
+ <message>
+ <location filename="regexpimport.ui" line="20"/>
+ <source>Capture groups</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="26"/>
+ <source>Treat all RegExp capture groups as columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="39"/>
+ <source>Import only following groups:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="52"/>
+ <source>&lt;p&gt;Enter comma separated list of capture group indexes. The 0 index refers to the entire matched string.&lt;/p&gt;
+&lt;p&gt;If you used named groups in the pattern, you can use names instead of indexes. You can mix indexes and names in this list.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="56"/>
+ <source>Example: 1, 3, 4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="69"/>
+ <source>Pattern:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="76"/>
+ <source>&lt;p&gt;Use Regular Expression groups to enclose parts of the expression that you want to import. If you want to use a group, that you don&apos;t want to import, then use &quot;import only following groups&quot; option below.
+
+You can use named groups and refer to them in group list below. To name a group use: &lt;pre&gt;(?&amp;lt;myGroupName&amp;gt;\s+\d+\s+)&lt;/pre&gt;&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="regexpimport.ui" line="81"/>
+ <source>Example: (\d+)\s+((\d+)\w+)\s+(\w+)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/ScriptingTcl/ScriptingTcl.pro b/Plugins/ScriptingTcl/ScriptingTcl.pro
index fc5cf5b..d888a32 100644
--- a/Plugins/ScriptingTcl/ScriptingTcl.pro
+++ b/Plugins/ScriptingTcl/ScriptingTcl.pro
@@ -38,6 +38,10 @@ linux: {
TCL_CONFIG = $$TCL_CONFIG_DIR/tclConfig.sh
message("Looking for $$TCL_CONFIG")
!exists($$TCL_CONFIG) {
+ TCL_CONFIG = $$TCL_CONFIG_DIR/../tclConfig.sh
+ message("Looking for $$TCL_CONFIG")
+ }
+ !exists($$TCL_CONFIG) {
# Debian case
DEBIAN_ARCH_PATH=$$system(dpkg-architecture -qDEB_HOST_MULTIARCH)
TCL_CONFIG = /usr/lib/$$DEBIAN_ARCH_PATH/tcl$$TCL_VERSION/tclConfig.sh
@@ -138,7 +142,8 @@ RESOURCES += \
scriptingtcl.qrc
-TRANSLATIONS += ScriptingTcl_zh_CN.ts \
+TRANSLATIONS += ScriptingTcl_it.ts \
+ ScriptingTcl_zh_CN.ts \
ScriptingTcl_sk.ts \
ScriptingTcl_de.ts \
ScriptingTcl_ru.ts \
@@ -158,3 +163,4 @@ TRANSLATIONS += ScriptingTcl_zh_CN.ts \
+
diff --git a/Plugins/ScriptingTcl/ScriptingTcl_it.ts b/Plugins/ScriptingTcl/ScriptingTcl_it.ts
new file mode 100644
index 0000000..dc735d6
--- /dev/null
+++ b/Plugins/ScriptingTcl/ScriptingTcl_it.ts
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>ScriptingTcl</name>
+ <message>
+ <location filename="scriptingtcl.cpp" line="411"/>
+ <source>No database available in current context, while called Tcl&apos;s &apos;%1&apos; command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="scriptingtcl.cpp" line="433"/>
+ <source>Invalid &apos;%1&apos; command sytax. Should be: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="scriptingtcl.cpp" line="554"/>
+ <source>Error from Tcl&apos;s&apos; &apos;%1&apos; command: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter.pro b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter.pro
index 965767b..5af5bfa 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter.pro
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter.pro
@@ -100,7 +100,8 @@ RESOURCES += \
sqlenterpriseformatter.qrc
-TRANSLATIONS += SqlEnterpriseFormatter_zh_CN.ts \
+TRANSLATIONS += SqlEnterpriseFormatter_it.ts \
+ SqlEnterpriseFormatter_zh_CN.ts \
SqlEnterpriseFormatter_sk.ts \
SqlEnterpriseFormatter_de.ts \
SqlEnterpriseFormatter_ru.ts \
@@ -120,3 +121,4 @@ TRANSLATIONS += SqlEnterpriseFormatter_zh_CN.ts \
+
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts
index a83f5df..37751d0 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_de.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation type="unfinished"></translation>
@@ -200,7 +200,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts
index 4d873e5..b0b5eed 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_es.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation type="unfinished"></translation>
@@ -200,7 +200,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts
index 8a9178b..d0e62f7 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_fr.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation>Nom</translation>
@@ -200,7 +200,32 @@
<translation>Mots clé en majuscule</translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation>Aperçu</translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_it.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_it.ts
new file mode 100644
index 0000000..9e721a4
--- /dev/null
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_it.ts
@@ -0,0 +1,233 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
+ <source>name</source>
+ <comment>example name wrapper</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlEnterpriseFormatter</name>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="46"/>
+ <source>Indentation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="58"/>
+ <source>Line up keywords in multi-line queries</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="68"/>
+ <source>Indent contents of parenthesis block</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="91"/>
+ <source>Tab size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="106"/>
+ <source>New lines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="160"/>
+ <source>Before opening parenthesis in column definitions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="170"/>
+ <source>After opening parenthesis in column definitions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="180"/>
+ <source>Before closing parenthesis in column definitions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="190"/>
+ <source>After closing parenthesis in column definitions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="200"/>
+ <source>Before opening parenthesis in expressions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="210"/>
+ <source>After opening parenthesis in expressions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="220"/>
+ <source>Before closing parenthesis in expressions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="230"/>
+ <source>After closing parenthesis in expressions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="240"/>
+ <source>After JOIN keywords in FROM clause</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="250"/>
+ <source>Put each column constraint in CREATE TABLE into new line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="260"/>
+ <source>After comma</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="270"/>
+ <source>After comma in expressions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="280"/>
+ <source>After semicolon</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="290"/>
+ <location filename="sqlenterpriseformatter.ui" line="512"/>
+ <source>Never before semicolon</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="338"/>
+ <source>White spaces</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="392"/>
+ <source>Before comma in lists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="402"/>
+ <source>After comma in lists</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="412"/>
+ <source>Before opening parenthesis</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="422"/>
+ <source>After opening parenthesis</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="432"/>
+ <source>Before closing parenthesis</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="442"/>
+ <source>After closing parenthesis</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="452"/>
+ <source>No space between SQL function name and opening parenthesis</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="462"/>
+ <source>Before dot operator (in path to database object)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="472"/>
+ <source>After dot operator (in path to database object)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="482"/>
+ <source>Before mathematical operator</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="492"/>
+ <source>After mathematical operator</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="502"/>
+ <source>Never before comma</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="558"/>
+ <source>Names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="583"/>
+ <source>Preferred name wrapper</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="600"/>
+ <source>Always use name wrapping</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="610"/>
+ <source>Uppercase data type names</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="620"/>
+ <source>Uppercase keywords</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
+ <source>Preview</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts
index 5cfbf32..2c03a46 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pl.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation>nazwa</translation>
@@ -201,7 +201,32 @@
<translation>Zmieniaj litery słów kluczowych na duże</translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation>Podgląd</translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts
index b89804a..a408ffc 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_pt_BR.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation type="unfinished"></translation>
@@ -200,7 +200,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts
index a5656d8..4e5e98d 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_ru.ts
@@ -1,11 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="ru_RU">
+<TS version="2.0" language="ru_RU">
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation>имя</translation>
@@ -200,7 +200,32 @@
<translation>Приводить ключевые слова к верхнему регистру</translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation>Комментарии</translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation>Предпочитаемый символ комментирования (где применимо):</translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation>SqlEnterpriseFormatter.CommentMarkers</translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation>Перемещать все комментарии в конец строки</translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation>Выравнивать комментарии в конце строки</translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation>Предпросмотр</translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts
index 407cc6e..37a42a4 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_sk.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation type="unfinished"></translation>
@@ -200,7 +200,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts
index 3c80603..d1a361b 100644
--- a/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts
+++ b/Plugins/SqlEnterpriseFormatter/SqlEnterpriseFormatter_zh_CN.ts
@@ -4,8 +4,8 @@
<context>
<name>QObject</name>
<message>
- <location filename="sqlenterpriseformatter.cpp" line="82"/>
- <location filename="sqlenterpriseformatter.cpp" line="89"/>
+ <location filename="sqlenterpriseformatter.cpp" line="91"/>
+ <location filename="sqlenterpriseformatter.cpp" line="98"/>
<source>name</source>
<comment>example name wrapper</comment>
<translation type="unfinished"></translation>
@@ -200,7 +200,32 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="sqlenterpriseformatter.ui" line="638"/>
+ <location filename="sqlenterpriseformatter.ui" line="631"/>
+ <source>Comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="637"/>
+ <source>Preferred comment marker (where possible):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="647"/>
+ <source>SqlEnterpriseFormatter.CommentMarkers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="654"/>
+ <source>Move all comments to the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="664"/>
+ <source>Line up comments at the line end</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlenterpriseformatter.ui" line="695"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
diff --git a/Plugins/SqlEnterpriseFormatter/formatempty.cpp b/Plugins/SqlEnterpriseFormatter/formatempty.cpp
index 976694e..d0696e0 100644
--- a/Plugins/SqlEnterpriseFormatter/formatempty.cpp
+++ b/Plugins/SqlEnterpriseFormatter/formatempty.cpp
@@ -1,8 +1,9 @@
#include "formatempty.h"
+#include "common/unused.h"
-FormatEmpty::FormatEmpty(SqliteEmptyQuery* eq) :
- eq(eq)
+FormatEmpty::FormatEmpty(SqliteEmptyQuery* eq)
{
+ UNUSED(eq);
}
void FormatEmpty::formatInternal()
diff --git a/Plugins/SqlEnterpriseFormatter/formatempty.h b/Plugins/SqlEnterpriseFormatter/formatempty.h
index 3279925..2fa3d01 100644
--- a/Plugins/SqlEnterpriseFormatter/formatempty.h
+++ b/Plugins/SqlEnterpriseFormatter/formatempty.h
@@ -12,9 +12,6 @@ class FormatEmpty : public FormatStatement
protected:
void formatInternal();
-
- private:
- SqliteEmptyQuery* eq = nullptr;
};
#endif // FORMATEMPTY_H
diff --git a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.cpp b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.cpp
index 8f75960..a08f95c 100644
--- a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.cpp
+++ b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.cpp
@@ -3,6 +3,7 @@
#include "common/unused.h"
#include "common/global.h"
#include <QDebug>
+#include <parser/lexer.h>
#include <parser/parser.h>
SqlEnterpriseFormatter::SqlEnterpriseFormatter()
@@ -11,6 +12,8 @@ SqlEnterpriseFormatter::SqlEnterpriseFormatter()
QString SqlEnterpriseFormatter::format(SqliteQueryPtr query)
{
+ QList<Comment*> comments = collectComments(query->tokens);
+
int wrapperIdx = cfg.SqlEnterpriseFormatter.Wrappers.get().indexOf(cfg.SqlEnterpriseFormatter.PrefferedWrapper.get());
NameWrapper wrapper = getAllNameWrappers()[wrapperIdx];
@@ -24,7 +27,11 @@ QString SqlEnterpriseFormatter::format(SqliteQueryPtr query)
QString formatted = formatStmt->format();
delete formatStmt;
- return formatted;
+ QString formattedWithComments = applyComments(formatted, comments, query->dialect);
+ for (Comment* c : comments)
+ delete c;
+
+ return formattedWithComments;
}
bool SqlEnterpriseFormatter::init()
@@ -34,7 +41,9 @@ bool SqlEnterpriseFormatter::init()
static_qstring(query1, "SELECT (2 + 4) AND (3 + 5), 4 NOT IN (SELECT t1.'some[_]name' + t2.[some'name2] FROM xyz t1 JOIN zxc t2 ON (t1.aaa = t2.aaa)) "
"FROM a, (SELECT id FROM table2);");
static_qstring(query2, "INSERT INTO table1 (id, value1, value2) VALUES (1, (2 + 5), (SELECT id FROM table2));");
- static_qstring(query3, "CREATE TABLE tab (id INTEGER PRIMARY KEY, value1 VARCHAR(6), value2 NUMBER(8,2) NOT NULL DEFAULT 1.0);");
+ static_qstring(query3, "CREATE TABLE tab (id INTEGER PRIMARY KEY, /*a primary key column*/ value1 VARCHAR(6), "
+ "value2 /*column with constraints*/ NUMBER(8,2) NOT NULL DEFAULT 1.0"
+ ");");
static_qstring(query4, "CREATE UNIQUE INDEX IF NOT EXISTS dbName.idx1 ON [messages column] (id COLLATE x ASC, lang DESC, description);");
Parser parser(Dialect::Sqlite3);
@@ -110,3 +119,196 @@ void SqlEnterpriseFormatter::configDialogClosed()
{
disconnect(&cfg.SqlEnterpriseFormatter, SIGNAL(changed(CfgEntry*)), this, SLOT(configModified(CfgEntry*)));
}
+
+QList<SqlEnterpriseFormatter::Comment *> SqlEnterpriseFormatter::collectComments(const TokenList &tokens)
+{
+ QList<Comment*> results;
+
+ QList<TokenList> tokensInLines = tokensByLines(tokens);
+ Comment* prevCommentInThisLine = nullptr;
+ Comment* cmt = nullptr;
+ bool tokensBefore = false;
+ int pos = 0;
+ int line = 0;
+ for (const TokenList& tokensInLine : tokensInLines)
+ {
+ tokensBefore = true;
+ prevCommentInThisLine = nullptr;
+ for (const TokenPtr& token : tokensInLine)
+ {
+ if (token->type == Token::Type::SPACE)
+ continue;
+
+ if (prevCommentInThisLine)
+ prevCommentInThisLine->tokensAfter = true;
+
+ if (token->type == Token::Type::COMMENT)
+ {
+ cmt = new Comment;
+ cmt->tokensBefore = tokensBefore;
+ cmt->position = pos;
+ cmt->multiline = token->value.startsWith("/*");
+ if (cmt->multiline)
+ cmt->contents = token->value.mid(2, token->value.length() - 4).trimmed();
+ else
+ cmt->contents = token->value.mid(2).trimmed();
+
+ results << cmt;
+ prevCommentInThisLine = cmt;
+ continue;
+ }
+
+ tokensBefore = true;
+ pos++;
+ }
+ line++;
+ }
+
+ return results;
+}
+
+QList<TokenList> SqlEnterpriseFormatter::tokensByLines(const TokenList &tokens, bool includeSpaces)
+{
+ QList<TokenList> tokensInLines;
+ TokenList tokensInLine;
+ for (const TokenPtr& token : tokens)
+ {
+ if (includeSpaces || token->type != Token::Type::SPACE)
+ tokensInLine << token;
+
+ if (token->type == Token::Type::SPACE && token->value.contains('\n'))
+ {
+ tokensInLines << tokensInLine;
+ tokensInLine.clear();
+ }
+ }
+ if (tokensInLine.size() > 0)
+ tokensInLines << tokensInLine;
+
+ return tokensInLines;
+}
+
+TokenList SqlEnterpriseFormatter::adjustCommentsToEnd(const TokenList &inputTokens)
+{
+ QList<TokenList> tokensInLines = tokensByLines(inputTokens, true);
+ TokenList newTokens;
+ TokenList commentTokensForLine;
+ TokenPtr newLineToken;
+ for (const TokenList& tokensInLine : tokensInLines)
+ {
+ commentTokensForLine.clear();
+ newLineToken.clear();
+ for (const TokenPtr& token : tokensInLine)
+ {
+ if (token->type == Token::Type::COMMENT)
+ {
+ wrapComment(token, true);
+ //token->value = " " + endLineCommentTpl.arg(token->value);
+ commentTokensForLine << token;
+ }
+ else if (token->type == Token::Type::SPACE && token->value.contains("\n"))
+ newLineToken = token;
+ else
+ newTokens << token;
+ }
+
+ newTokens += commentTokensForLine;
+ if (newLineToken)
+ newTokens << newLineToken;
+ }
+ return newTokens;
+}
+
+TokenList SqlEnterpriseFormatter::wrapOnlyComments(const TokenList &inputTokens)
+{
+ QList<TokenList> tokensInLines = tokensByLines(inputTokens, true);
+ TokenList newTokens;
+ bool lineEnd = true;
+ for (const TokenList& tokensInLine : reverse(tokensInLines))
+ {
+ lineEnd = true;
+ for (const TokenPtr& token : reverse(tokensInLine))
+ {
+ if (!token->isWhitespace())
+ lineEnd = false;
+
+ if (token->type == Token::Type::COMMENT)
+ wrapComment(token, lineEnd);
+
+ newTokens << token;
+ }
+ }
+ return reverse(newTokens);
+}
+
+TokenList SqlEnterpriseFormatter::optimizeInnerComments(const TokenList &inputTokens)
+{
+ // TODO
+ return inputTokens;
+}
+
+TokenList SqlEnterpriseFormatter::optimizeEndLineComments(const TokenList &inputTokens)
+{
+ // TODO
+ return inputTokens;
+}
+
+void SqlEnterpriseFormatter::indentMultiLineComments(const TokenList &inputTokens)
+{
+ // TODO
+}
+
+void SqlEnterpriseFormatter::wrapComment(const TokenPtr &token, bool isAtLineEnd)
+{
+ static_qstring(multiCommentTpl, "/* %1 */");
+ static_qstring(endLineCommentTpl, "-- %1");
+
+ bool isMultiLine = token->value.contains("\n");
+ if (isAtLineEnd && !isMultiLine && cfg.SqlEnterpriseFormatter.PreferredCommentMarker.get() == "--")
+ token->value = endLineCommentTpl.arg(token->value);
+ else
+ token->value = multiCommentTpl.arg(token->value);
+}
+
+QString SqlEnterpriseFormatter::applyComments(const QString& formatted, QList<SqlEnterpriseFormatter::Comment*> comments, Dialect dialect)
+{
+ if (comments.size() == 0)
+ return formatted;
+
+ int currentCommentPosition = comments.first()->position;
+
+ TokenList allTokens = Lexer::tokenize(formatted, dialect);
+ TokenList newTokens;
+ int currentTokenPosition = 0;
+ for (const TokenPtr& token : allTokens)
+ {
+ if (currentTokenPosition == currentCommentPosition)
+ {
+ newTokens << TokenPtr::create(Token::Type::COMMENT, comments.first()->contents);
+ comments.removeFirst();
+ if (comments.size() > 0)
+ currentCommentPosition = comments.first()->position;
+ else
+ currentCommentPosition = -1;
+ }
+
+ newTokens << token;
+ if (token->type != Token::Type::SPACE)
+ currentTokenPosition++;
+ }
+
+ // Any remaining comments
+ for (Comment* cmt : comments)
+ newTokens << TokenPtr::create(Token::Type::COMMENT, cmt->contents);
+
+ if (cfg.SqlEnterpriseFormatter.MoveAllCommentsToLineEnd.get())
+ newTokens = adjustCommentsToEnd(newTokens);
+ else
+ newTokens = wrapOnlyComments(newTokens);
+
+ newTokens = optimizeInnerComments(newTokens);
+ newTokens = optimizeEndLineComments(newTokens);
+ indentMultiLineComments(newTokens);
+
+ return newTokens.detokenize();
+}
diff --git a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.h b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.h
index 2701745..1f9b6d8 100644
--- a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.h
+++ b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.h
@@ -53,6 +53,10 @@ CFG_CATEGORIES(SqlEnterpriseFormatterConfig,
CFG_ENTRY(QString, PrefferedWrapper, getNameWrapperStr(NameWrapper::BRACKET))
CFG_ENTRY(QStringList, Wrappers, getNameWrapperStrings(), false)
CFG_ENTRY(QString, PreviewCode, QString(), false)
+ CFG_ENTRY(bool, MoveAllCommentsToLineEnd, false)
+ CFG_ENTRY(bool, LineUpCommentsAtLineEnd, true)
+ CFG_ENTRY(QString, PreferredCommentMarker, "--")
+ CFG_ENTRY(QStringList, CommentMarkers, QStringList({"--", "/* */"}))
)
)
@@ -73,6 +77,25 @@ class SQLENTERPRISEFORMATTERSHARED_EXPORT SqlEnterpriseFormatter : public Generi
void configDialogClosed();
private:
+ struct Comment
+ {
+ int position = 0;
+ QString contents;
+ bool tokensBefore = false;
+ bool tokensAfter = false;
+ bool multiline = false;
+ };
+
+ QList<Comment*> collectComments(const TokenList& tokens);
+ QString applyComments(const QString& formatted, QList<Comment *> comments, Dialect dialect);
+ QList<TokenList> tokensByLines(const TokenList& tokens, bool includeSpaces = false);
+ TokenList adjustCommentsToEnd(const TokenList& inputTokens);
+ TokenList wrapOnlyComments(const TokenList& inputTokens);
+ TokenList optimizeInnerComments(const TokenList& inputTokens);
+ TokenList optimizeEndLineComments(const TokenList& inputTokens);
+ void indentMultiLineComments(const TokenList& inputTokens);
+ void wrapComment(const TokenPtr& token, bool isAtLineEnd);
+
QList<SqliteQueryPtr> previewQueries;
CFG_LOCAL_PERSISTABLE(SqlEnterpriseFormatterConfig, cfg)
diff --git a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.ui b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.ui
index 2ebfbdf..b21de64 100644
--- a/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.ui
+++ b/Plugins/SqlEnterpriseFormatter/sqlenterpriseformatter.ui
@@ -39,7 +39,7 @@
</sizepolicy>
</property>
<property name="currentIndex">
- <number>1</number>
+ <number>0</number>
</property>
<widget class="QWidget" name="indentTab">
<attribute name="title">
@@ -133,9 +133,9 @@
<property name="geometry">
<rect>
<x>0</x>
- <y>-166</y>
- <width>578</width>
- <height>350</height>
+ <y>0</y>
+ <width>390</width>
+ <height>299</height>
</rect>
</property>
<property name="styleSheet">
@@ -366,8 +366,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>424</width>
- <height>325</height>
+ <width>418</width>
+ <height>278</height>
</rect>
</property>
<property name="styleSheet">
@@ -626,6 +626,63 @@
</item>
</layout>
</widget>
+ <widget class="QWidget" name="commentsTab">
+ <attribute name="title">
+ <string>Comments</string>
+ </attribute>
+ <layout class="QGridLayout" name="gridLayout_3">
+ <item row="2" column="0">
+ <widget class="QLabel" name="label_3">
+ <property name="text">
+ <string>Preferred comment marker (where possible):</string>
+ </property>
+ </widget>
+ </item>
+ <item row="2" column="1">
+ <widget class="ConfigComboBox" name="comboBox_2">
+ <property name="cfg" stdset="0">
+ <string notr="true">SqlEnterpriseFormatter.PreferredCommentMarker</string>
+ </property>
+ <property name="modelName" stdset="0">
+ <string>SqlEnterpriseFormatter.CommentMarkers</string>
+ </property>
+ </widget>
+ </item>
+ <item row="0" column="0" colspan="2">
+ <widget class="QCheckBox" name="checkBox_33">
+ <property name="text">
+ <string>Move all comments to the line end</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">SqlEnterpriseFormatter.MoveAllCommentsToLineEnd</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0" colspan="2">
+ <widget class="QCheckBox" name="checkBox_34">
+ <property name="text">
+ <string>Line up comments at the line end</string>
+ </property>
+ <property name="cfg" stdset="0">
+ <string notr="true">SqlEnterpriseFormatter.LineUpCommentsAtLineEnd</string>
+ </property>
+ </widget>
+ </item>
+ <item row="3" column="0" colspan="2">
+ <spacer name="verticalSpacer_5">
+ <property name="orientation">
+ <enum>Qt::Vertical</enum>
+ </property>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>20</width>
+ <height>40</height>
+ </size>
+ </property>
+ </spacer>
+ </item>
+ </layout>
+ </widget>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="sizePolicy">
diff --git a/Plugins/SqlExport/SqlExport.pro b/Plugins/SqlExport/SqlExport.pro
index 30e4632..eb18a7c 100644
--- a/Plugins/SqlExport/SqlExport.pro
+++ b/Plugins/SqlExport/SqlExport.pro
@@ -29,7 +29,8 @@ RESOURCES += \
sqlexport.qrc
-TRANSLATIONS += SqlExport_zh_CN.ts \
+TRANSLATIONS += SqlExport_it.ts \
+ SqlExport_zh_CN.ts \
SqlExport_sk.ts \
SqlExport_de.ts \
SqlExport_ru.ts \
@@ -49,3 +50,4 @@ TRANSLATIONS += SqlExport_zh_CN.ts \
+
diff --git a/Plugins/SqlExport/SqlExport_it.ts b/Plugins/SqlExport/SqlExport_it.ts
new file mode 100644
index 0000000..7f5368b
--- /dev/null
+++ b/Plugins/SqlExport/SqlExport_it.ts
@@ -0,0 +1,98 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>SqlExport</name>
+ <message>
+ <location filename="sqlexport.cpp" line="57"/>
+ <source>-- Results of query:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlexport.cpp" line="122"/>
+ <source>-- Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlexport.cpp" line="168"/>
+ <source>-- Index: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlexport.cpp" line="185"/>
+ <source>-- Trigger: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlexport.cpp" line="202"/>
+ <source>-- View: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="220"/>
+ <source>-- Text encoding used: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="sqlexport.cpp" line="312"/>
+ <source>Table name for INSERT statements is mandatory.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>sqlExportCommonConfig</name>
+ <message>
+ <location filename="SqlExportCommon.ui" line="20"/>
+ <source>Generate &quot;DROP IF EXISTS&quot; statement before &quot;CREATE&quot; statement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportCommon.ui" line="30"/>
+ <source>Format DDL statements only (excludes &quot;INSERT&quot; statements)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportCommon.ui" line="40"/>
+ <source>Use SQL formatter to format exported SQL statements</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>sqlExportQueryConfig</name>
+ <message>
+ <location filename="SqlExportQuery.ui" line="20"/>
+ <source>Use SQL formatter to format exported SQL statements</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportQuery.ui" line="30"/>
+ <source>Table name to use for INSERT statements:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportQuery.ui" line="37"/>
+ <source>Generate &quot;CREATE TABLE&quot; statement at the begining</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportQuery.ui" line="47"/>
+ <source>Include the query in comments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportQuery.ui" line="57"/>
+ <source>Generate &quot;DROP IF EXISTS&quot; statement before &quot;CREATE&quot; statement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlExportQuery.ui" line="74"/>
+ <source>Format DDL statements only (excludes &quot;INSERT&quot; statements)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/SqlExport/SqlExport_zh_CN.ts b/Plugins/SqlExport/SqlExport_zh_CN.ts
index d29cae8..c6c72de 100644
--- a/Plugins/SqlExport/SqlExport_zh_CN.ts
+++ b/Plugins/SqlExport/SqlExport_zh_CN.ts
@@ -6,37 +6,37 @@
<message>
<location filename="sqlexport.cpp" line="57"/>
<source>-- Results of query:</source>
- <translation type="unfinished"></translation>
+ <translation>-- 执行结果:</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="122"/>
<source>-- Table: %1</source>
- <translation type="unfinished"></translation>
+ <translation>-- 表:%1</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="168"/>
<source>-- Index: %1</source>
- <translation type="unfinished"></translation>
+ <translation>-- 索引:%1</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="185"/>
<source>-- Trigger: %1</source>
- <translation type="unfinished"></translation>
+ <translation>-- 触发器:%1</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="202"/>
<source>-- View: %1</source>
- <translation type="unfinished"></translation>
+ <translation>-- 视图:%1</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="216"/>
<source>-- File generated with SQLiteStudio v%1 on %2</source>
- <translation type="unfinished"></translation>
+ <translation>-- 由SQLiteStudio v%1 产生的文件 %2</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="220"/>
<source>-- Text encoding used: %1</source>
- <translation type="unfinished"></translation>
+ <translation>-- 文本编码:%1</translation>
</message>
<message>
<location filename="sqlexport.cpp" line="312"/>
diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple.pro b/Plugins/SqlFormatterSimple/SqlFormatterSimple.pro
index 61ec27a..7329f93 100644
--- a/Plugins/SqlFormatterSimple/SqlFormatterSimple.pro
+++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple.pro
@@ -28,7 +28,8 @@ RESOURCES += \
sqlformattersimple.qrc
-TRANSLATIONS += SqlFormatterSimple_zh_CN.ts \
+TRANSLATIONS += SqlFormatterSimple_it.ts \
+ SqlFormatterSimple_zh_CN.ts \
SqlFormatterSimple_sk.ts \
SqlFormatterSimple_de.ts \
SqlFormatterSimple_ru.ts \
@@ -48,3 +49,4 @@ TRANSLATIONS += SqlFormatterSimple_zh_CN.ts \
+
diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_it.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_it.ts
new file mode 100644
index 0000000..91208f1
--- /dev/null
+++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_it.ts
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>SqlFormatterSimplePlugin</name>
+ <message>
+ <location filename="SqlFormatterSimple.ui" line="20"/>
+ <source>Upper case keywords</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="SqlFormatterSimple.ui" line="30"/>
+ <source>Reduce multiple whitespaces to single whitespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts b/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts
index aaa7f79..40c7f1e 100644
--- a/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts
+++ b/Plugins/SqlFormatterSimple/SqlFormatterSimple_zh_CN.ts
@@ -6,12 +6,12 @@
<message>
<location filename="SqlFormatterSimple.ui" line="20"/>
<source>Upper case keywords</source>
- <translation type="unfinished"></translation>
+ <translation>大写关键字</translation>
</message>
<message>
<location filename="SqlFormatterSimple.ui" line="30"/>
<source>Reduce multiple whitespaces to single whitespace</source>
- <translation type="unfinished"></translation>
+ <translation>将多个空白转换为一个空白</translation>
</message>
</context>
</TS>
diff --git a/Plugins/XmlExport/XmlExport.pro b/Plugins/XmlExport/XmlExport.pro
index e22c320..bf34076 100644
--- a/Plugins/XmlExport/XmlExport.pro
+++ b/Plugins/XmlExport/XmlExport.pro
@@ -27,7 +27,8 @@ RESOURCES += \
xmlexport.qrc
-TRANSLATIONS += XmlExport_zh_CN.ts \
+TRANSLATIONS += XmlExport_it.ts \
+ XmlExport_zh_CN.ts \
XmlExport_sk.ts \
XmlExport_de.ts \
XmlExport_ru.ts \
@@ -47,3 +48,4 @@ TRANSLATIONS += XmlExport_zh_CN.ts \
+
diff --git a/Plugins/XmlExport/XmlExport_it.ts b/Plugins/XmlExport/XmlExport_it.ts
new file mode 100644
index 0000000..58265f6
--- /dev/null
+++ b/Plugins/XmlExport/XmlExport_it.ts
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>XmlExport</name>
+ <message>
+ <location filename="xmlexport.cpp" line="38"/>
+ <source>Enter the namespace to use (for example: http://my.namespace.org)</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>XmlExportConfig</name>
+ <message>
+ <location filename="XmlExport.ui" line="20"/>
+ <source>Output format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="26"/>
+ <source>Format document (new lines, indentation)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="42"/>
+ <source>Compress (everything in one line)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="58"/>
+ <source>Special characters escaping</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="64"/>
+ <source>&lt;p&gt;Ampersands will be used for shorter values and CDATA will be used for larger values. This applies only to values that require character escaping. Other values will be exported as they are.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="67"/>
+ <source>Use CDATA and ampersands</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="83"/>
+ <source>&lt;p&gt;Every value requiring character escepe will be enclosed in CDATA block.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="86"/>
+ <source>Always use CDATA</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="99"/>
+ <source>&lt;p&gt;Every character that require esceping will be replaced with its ampersand escape sequence. No CDATA blocks will be used.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="102"/>
+ <source>Always use ampersand</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="XmlExport.ui" line="118"/>
+ <source>Define XML namespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp b/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp
index cd8c4b2..4cec515 100644
--- a/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp
+++ b/SQLiteStudio3/Tests/ParserTest/tst_parsertest.cpp
@@ -20,6 +20,7 @@ class ParserTest : public QObject
Parser* parser3 = nullptr;
private Q_SLOTS:
+ void testUniqConflict();
void testGetTableTokens();
void testGetTableTokens2();
void testGetDatabaseTokens();
@@ -354,6 +355,16 @@ void ParserTest::testBigNum()
QVERIFY(res);
}
+void ParserTest::testUniqConflict()
+{
+ QString sql = "CREATE TABLE test (x UNIQUE ON CONFLICT FAIL);";
+ bool res = parser3->parse(sql);
+ QVERIFY(res);
+ SqliteQueryPtr q = parser3->getQueries().first();
+ TokenList tokens = q->tokens;
+ QVERIFY(tokens[16]->type == Token::Type::PAR_RIGHT);
+}
+
void ParserTest::initTestCase()
{
initKeywords();
diff --git a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
index a94955a..38c2289 100644
--- a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
+++ b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt
@@ -1,3 +1,12 @@
+[3.0.7]
+ * [ADDED]: #2951 Implemented dropdown value picking for foreign key columns in grid view.
+ * [ADDED]: Context menu entry to go to row in referenced table by current foreign key cell value.
+ * [BUGFIX]: #2875 Fixed font misconfiguration after Qt update.
+ * [BUGFIX]: #2879 Fixed View updating after table modification, when view uses SELECT with table alias same as table name.
+ * [BUGFIX]: #2885 Fixed tokens parsing, causing random problems, such as incorrect formatting performed by the simple formatter.
+ * [BUGFIX]: Fixed preventing of setting null or empty value on query results that don't come directly from table.
+ * [BUGFIX]: Fixed duplicates while copying mupltiple lines from status field.
+
[3.0.6]
* [ADDED]: #2740 Option to configure whether bottom dock area (with status field) should extend to left border, or should it leave space for database list.
* [ADDED]: #2819 Introduced "compact layout" as an option (enabled by default) to minimize all margins on the interface.
diff --git a/SQLiteStudio3/coreSQLiteStudio/TODO.txt b/SQLiteStudio3/coreSQLiteStudio/TODO.txt
index e6f699e..5c0f35c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/TODO.txt
+++ b/SQLiteStudio3/coreSQLiteStudio/TODO.txt
@@ -1,3 +1,15 @@
+Thread 5 Crashed:: Thread (pooled)
+0 libcoreSQLiteStudio.1.0.0.dylib 0x0000000101f24ba7 QHash<QString, QVariant>::value(QString const&) const + 23
+1 libcoreSQLiteStudio.1.0.0.dylib 0x0000000101f24ad4 QHash<QString, QVariant>::operator[](QString const&) const + 36
+2 libcoreSQLiteStudio.1.0.0.dylib 0x0000000101f24936 SqlResultsRow::value(QString const&) const + 54
+3 libcoreSQLiteStudio.1.0.0.dylib 0x0000000101f06c1a SchemaResolver::getAllObjects(QString const&) + 1178
+4 libcoreSQLiteStudio.1.0.0.dylib 0x0000000101f06746 SchemaResolver::getAllObjects() + 70
+5 libguiSQLiteStudio.1.0.0.dylib 0x000000010252f428 SqlEditor::refreshValidObjects()::$_0::operator()() const + 456 (sqleditor.cpp:529)
+6 libguiSQLiteStudio.1.0.0.dylib 0x000000010252f1ec QtConcurrent::StoredFunctorCall0<void, SqlEditor::refreshValidObjects()::$_0>::runFunctor() + 28 (qtconcurrentstoredfunctioncall.h:72)
+7 libguiSQLiteStudio.1.0.0.dylib 0x0000000102534ca1 QtConcurrent::RunFunctionTask<void>::run() + 81 (qtconcurrentrunbase.h:132)
+8 libguiSQLiteStudio.1.0.0.dylib 0x0000000102534dbc non-virtual thunk to QtConcurrent::RunFunctionTask<void>::run() + 28 (qtconcurrentrśunbase.h:141)
+
+
* Outstanding features for 3.1:
- migrate updates engine to Qt Install Framework
- loadable extensions full support
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
index 3ace551..eba10fa 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.cpp
@@ -159,6 +159,19 @@ QList<NameWrapper> getAllNameWrappers(Dialect dialect)
return {NameWrapper::DOUBLE_QUOTE, NameWrapper::BRACKET, NameWrapper::QUOTE};
}
+QString wrapValueIfNeeded(const QString& str)
+{
+ return wrapValueIfNeeded(QVariant::fromValue(str));
+}
+
+QString wrapValueIfNeeded(const QVariant& value)
+{
+ if (value.canConvert(QMetaType::LongLong) || value.canConvert(QMetaType::Double))
+ return value.toString();
+
+ return wrapString(value.toString());
+}
+
QString wrapString(const QString& str)
{
QString result = str;
diff --git a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h
index 945b7cc..038c146 100644
--- a/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h
+++ b/SQLiteStudio3/coreSQLiteStudio/common/utils_sql.h
@@ -56,6 +56,8 @@ API_EXPORT QPair<QChar,QChar> getQuoteCharacter(QString& obj, Dialect dialect,
API_EXPORT QList<QString> wrapObjNames(const QList<QString>& objList, Dialect dialect = Dialect::Sqlite3, NameWrapper favWrapper = NameWrapper::null);
API_EXPORT QList<QString> wrapObjNamesIfNeeded(const QList<QString>& objList, Dialect dialect, NameWrapper favWrapper = NameWrapper::null);
API_EXPORT QList<NameWrapper> getAllNameWrappers(Dialect dialect = Dialect::Sqlite3);
+API_EXPORT QString wrapValueIfNeeded(const QString& str);
+API_EXPORT QString wrapValueIfNeeded(const QVariant& value);
API_EXPORT int qHash(NameWrapper wrapper);
API_EXPORT QString getPrefixDb(const QString& origDbName, Dialect dialect);
API_EXPORT bool isSystemTable(const QString& name);
diff --git a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro
index e21ee8b..886678d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro
+++ b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro
@@ -51,7 +51,8 @@ portable {
CONFIG += c++11
QMAKE_CXXFLAGS += -pedantic
-TRANSLATIONS += translations/coreSQLiteStudio_zh_CN.ts \
+TRANSLATIONS += translations/coreSQLiteStudio_it.ts \
+ translations/coreSQLiteStudio_zh_CN.ts \
translations/coreSQLiteStudio_sk.ts \
translations/coreSQLiteStudio_de.ts \
translations/coreSQLiteStudio_ru.ts \
@@ -455,3 +456,4 @@ RESOURCES += \
+
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
index b790ffa..f8d7fd2 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp
@@ -201,6 +201,12 @@ void QueryExecutor::run()
void QueryExecutor::execInternal()
{
+ if (forceSimpleMode)
+ {
+ executeSimpleMethod();
+ return;
+ }
+
simpleExecution = false;
interrupted = false;
@@ -456,7 +462,8 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results)
context->resultsHandler = nullptr;
}
- notifyWarn(tr("SQLiteStudio was unable to extract metadata from the query. Results won't be editable."));
+ if (!forceSimpleMode)
+ notifyWarn(tr("SQLiteStudio was unable to extract metadata from the query. Results won't be editable."));
emit executionFinished(results);
}
@@ -551,6 +558,16 @@ bool QueryExecutor::handleRowCountingResults(quint32 asyncId, SqlQueryPtr result
return true;
}
+bool QueryExecutor::getForceSimpleMode() const
+{
+ return forceSimpleMode;
+}
+
+void QueryExecutor::setForceSimpleMode(bool value)
+{
+ forceSimpleMode = value;
+}
+
const QStringList& QueryExecutor::getRequiredDbAttaches() const
{
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
index 83d0436..95c6a0c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h
@@ -1029,6 +1029,9 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
const QStringList& getRequiredDbAttaches() const;
+ bool getForceSimpleMode() const;
+ void setForceSimpleMode(bool value);
+
private:
/**
* @brief Executes query.
@@ -1322,6 +1325,8 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable
*/
Db::QueryResultsHandler resultsHandler = nullptr;
+ bool forceSimpleMode = false;
+
signals:
/**
* @brief Emitted on successful query execution.
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
index ea42baf..8cc344c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp
@@ -59,16 +59,6 @@ QHash<SelectResolver::Table,QHash<QString,QString>> QueryExecutorAddRowIds::addR
return rowIdColsMap;
}
- bool hasStar = false;
- for (SqliteSelect::Core::ResultColumn* resCol : core->resultColumns)
- {
- if (resCol->star)
- {
- hasStar = true;
- break;
- }
- }
-
// Getting all tables we need to get ROWID for
SelectResolver resolver(db, select->tokens.detokenize(), context->dbNameToAttach);
resolver.resolveMultiCore = false; // multicore subselects result in not editable columns, skip them
@@ -79,7 +69,7 @@ QHash<SelectResolver::Table,QHash<QString,QString>> QueryExecutorAddRowIds::addR
if (table.flags & (SelectResolver::FROM_COMPOUND_SELECT | SelectResolver::FROM_DISTINCT_SELECT | SelectResolver::FROM_GROUPED_SELECT))
continue; // we don't get ROWID from compound, distinct or aggregated subselects
- if (!addResultColumns(core, table, rowIdColsMap, isTopSelect, hasStar))
+ if (!addResultColumns(core, table, rowIdColsMap, isTopSelect))
{
ok = false;
return rowIdColsMap;
@@ -156,7 +146,7 @@ QHash<QString,QString> QueryExecutorAddRowIds::getNextColNames(const SelectResol
}
bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const SelectResolver::Table& table,
- QHash<SelectResolver::Table,QHash<QString,QString>>& rowIdColsMap, bool isTopSelect, bool hasStar)
+ QHash<SelectResolver::Table,QHash<QString,QString>>& rowIdColsMap, bool isTopSelect)
{
QHash<QString, QString> executorToRealColumns;
bool aliasOnlyAsSelectColumn = false;
diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h
index fa2167f..61bc302 100644
--- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h
+++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.h
@@ -31,7 +31,7 @@ class QueryExecutorAddRowIds : public QueryExecutorStep
* Finds columns representing ROWID for the \p table and adds them to result columns and to the context.
*/
bool addResultColumns(SqliteSelect::Core* core, const SelectResolver::Table& table,
- QHash<SelectResolver::Table, QHash<QString, QString> >& rowIdColsMap, bool isTopSelect, bool hasStar);
+ QHash<SelectResolver::Table, QHash<QString, QString> >& rowIdColsMap, bool isTopSelect);
/**
* @brief Adds the column to result columns list.
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c b/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
index 4f9cd5c..2d0e610 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/lempar.c
@@ -717,7 +717,11 @@ static void yy_reduce(
{
tokens.clear();
const char* fieldName = yyTokenName[yypParser->yystack[i].major];
- if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0))
+
+ // Adding token being subject of this reduction. It's usually not includes in the inherited tokens,
+ // although if inheriting from simple statements, like "FAIL" or "ROLLBACK", this tends to be redundant with the inherited tokens.
+ // That's why we're checking if it's not contained in the inherited tokens and add it only then.
+ if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0) && !yypParser->yystack[i].tokens->contains(yypParser->yystack[i].minor.yy0))
tokens += yypParser->yystack[i].minor.yy0;
tokens += *(yypParser->yystack[i].tokens);
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp
index ffc1fab..81e242d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp
@@ -4354,7 +4354,11 @@ static void yy_reduce(
{
tokens.clear();
const char* fieldName = yyTokenName[yypParser->yystack[i].major];
- if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0))
+
+ // Adding token being subject of this reduction. It's usually not includes in the inherited tokens,
+ // although if inheriting from simple statements, like "FAIL" or "ROLLBACK", this tends to be redundant with the inherited tokens.
+ // That's why we're checking if it's not contained in the inherited tokens and add it only then.
+ if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0) && !yypParser->yystack[i].tokens->contains(yypParser->yystack[i].minor.yy0))
tokens += yypParser->yystack[i].minor.yy0;
tokens += *(yypParser->yystack[i].tokens);
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
index fa8a9d1..9ff6487 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp
@@ -4973,7 +4973,11 @@ static void yy_reduce(
{
tokens.clear();
const char* fieldName = yyTokenName[yypParser->yystack[i].major];
- if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0))
+
+ // Adding token being subject of this reduction. It's usually not includes in the inherited tokens,
+ // although if inheriting from simple statements, like "FAIL" or "ROLLBACK", this tends to be redundant with the inherited tokens.
+ // That's why we're checking if it's not contained in the inherited tokens and add it only then.
+ if (parserContext->isManagedToken(yypParser->yystack[i].minor.yy0) && !yypParser->yystack[i].tokens->contains(yypParser->yystack[i].minor.yy0))
tokens += yypParser->yystack[i].minor.yy0;
tokens += *(yypParser->yystack[i].tokens);
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
index d3e05f1..f2102c3 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.cpp
@@ -140,9 +140,9 @@ Range Token::getRange()
return Range(start, end);
}
-bool Token::isWhitespace() const
+bool Token::isWhitespace(bool includeComments) const
{
- return (type == SPACE || type == COMMENT);
+ return (type == SPACE || (includeComments && type == COMMENT));
}
bool Token::isSeparating() const
@@ -490,11 +490,11 @@ TokenList TokenList::filter(Token::Type type) const
return filtered;
}
-TokenList TokenList::filterWhiteSpaces() const
+TokenList TokenList::filterWhiteSpaces(bool includeComments) const
{
TokenList filtered;
foreach (TokenPtr token, *this)
- if (!token->isWhitespace())
+ if (!token->isWhitespace(includeComments))
filtered << token;
return filtered;
diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/token.h b/SQLiteStudio3/coreSQLiteStudio/parser/token.h
index 222ce1a..aecc7ec 100644
--- a/SQLiteStudio3/coreSQLiteStudio/parser/token.h
+++ b/SQLiteStudio3/coreSQLiteStudio/parser/token.h
@@ -190,7 +190,7 @@ struct API_EXPORT Token
*
* Note, that from SQL perspective also comments are whitespaces.
*/
- bool isWhitespace() const;
+ bool isWhitespace(bool includeComments = true) const;
/**
* @brief Tests whether this token represents separating value (like an operator, or parenthesis) in SQL understanding.
@@ -633,7 +633,7 @@ class API_EXPORT TokenList : public QList<TokenPtr>
*
* The condition to test if tokens is a whitespace is a call to Token::isWhitespace().
*/
- TokenList filterWhiteSpaces() const;
+ TokenList filterWhiteSpaces(bool includeComments = true) const;
/**
* @brief Returns sub-list of tokens from this list.
diff --git a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
index 8d62b44..46486e8 100644
--- a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp
@@ -39,7 +39,7 @@
DEFINE_SINGLETON(SQLiteStudio)
-static const int sqlitestudioVersion = 30006;
+static const int sqlitestudioVersion = 30007;
SQLiteStudio::SQLiteStudio()
{
diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
index 97e1fb3..3e23239 100644
--- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
+++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp
@@ -2,7 +2,6 @@
#include "common/utils_sql.h"
#include "parser/parser.h"
#include "schemaresolver.h"
-#include "selectresolver.h"
#include "parser/ast/sqlitecreateindex.h"
#include "parser/ast/sqlitecreatetrigger.h"
#include "parser/ast/sqlitecreateview.h"
@@ -530,17 +529,32 @@ SqliteQuery* TableModifier::handleTriggerQuery(SqliteQuery* query, const QString
SqliteSelect* TableModifier::handleSelect(SqliteSelect* select, const QString& trigTable)
{
+ SelectResolver selectResolver(db, select->detokenize());
+
// Table name
- TokenList tableTokens = select->getContextTableTokens(false);
- foreach (TokenPtr token, tableTokens)
+ QList<SqliteSelect::Core::SingleSource*> selSources = select->getAllTypedStatements<SqliteSelect::Core::SingleSource>();
+ TokenList tableTokens;
+ StrHash<SelectResolver::Table> resolvedTables;
+ for (SqliteSelect::Core* core : select->coreSelects)
{
- if (token->value.compare(originalTable, Qt::CaseInsensitive) == 0)
+ resolvedTables = tablesAsNameHash(selectResolver.resolveTables(core));
+
+ tableTokens = core->getContextTableTokens(false);
+ foreach (TokenPtr token, tableTokens)
+ {
+ if (token->value.compare(originalTable, Qt::CaseInsensitive) != 0)
+ continue;
+
+ // Check if that table name is the same as its alias name, so we use alias name and we don't rename it here, cause it's alias, not table
+ if (isTableAliasUsedForColumn(token, resolvedTables, selSources))
+ continue;
+
token->value = newName;
+ }
}
// Column names
TokenList columnTokens = select->getContextColumnTokens(false);
- SelectResolver selectResolver(db, select->detokenize());
QList<SelectResolver::Column> columns = selectResolver.translateToColumns(select, columnTokens);
TokenList columnTokensToChange;
@@ -577,6 +591,41 @@ SqliteSelect* TableModifier::handleSelect(SqliteSelect* select, const QString& t
return new SqliteSelect(*selectPtr.data());
}
+StrHash<SelectResolver::Table> TableModifier::tablesAsNameHash(const QSet<SelectResolver::Table>& resolvedTables)
+{
+ StrHash<SelectResolver::Table> result;
+ for (const SelectResolver::Table& tab : resolvedTables)
+ result[tab.table] = tab;
+
+ return result;
+}
+
+bool TableModifier::isTableAliasUsedForColumn(const TokenPtr &token, const StrHash<SelectResolver::Table> &resolvedTables, const QList<SqliteSelect::Core::SingleSource *> &selSources)
+{
+ // If we don't have the table token on the list of resolved select tables, we don't consider it as aliased
+ if (!resolvedTables.contains(token->value, Qt::CaseInsensitive))
+ {
+ qWarning() << "Table" << token->value << "in table tokens processed by TableModifier, but not in resolved SELECT tables.";
+ return false;
+ }
+
+ SelectResolver::Table table = resolvedTables.value(token->value, Qt::CaseInsensitive);
+ if (table.alias.isNull())
+ return false;
+
+ if (table.alias.compare(token->value), Qt::CaseInsensitive != 0)
+ return false;
+
+ // If the table token is mentioned in FROM clause, it's not a subject for aliased usage, cuase it defines alias, not uses it.
+ for (SqliteSelect::Core::SingleSource* src : selSources)
+ {
+ if (src->tokens.contains(token))
+ return false;
+ }
+
+ return true;
+}
+
SqliteUpdate* TableModifier::handleTriggerUpdate(SqliteUpdate* update, const QString& trigName, const QString& trigTable)
{
if (update->table.compare(originalTable, Qt::CaseInsensitive) == 0)
diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h
index f063693..675202d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h
+++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h
@@ -2,6 +2,7 @@
#define TABLEMODIFIER_H
#include "db/db.h"
+#include "selectresolver.h"
#include "parser/ast/sqlitecreatetable.h"
#include "parser/ast/sqliteupdate.h"
#include "parser/ast/sqliteinsert.h"
@@ -9,6 +10,7 @@
#include "parser/ast/sqlitecreateindex.h"
#include "parser/ast/sqlitecreatetrigger.h"
#include "parser/ast/sqlitecreateview.h"
+#include "common/strhash.h"
class API_EXPORT TableModifier
{
@@ -50,6 +52,8 @@ class API_EXPORT TableModifier
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);
+ StrHash<SelectResolver::Table> tablesAsNameHash(const QSet<SelectResolver::Table> &resolvedTables);
+ bool isTableAliasUsedForColumn(const TokenPtr& token, const StrHash<SelectResolver::Table>& resolvedTables, const QList<SqliteSelect::Core::SingleSource*>& selSources);
bool handleSubSelects(SqliteStatement* stmt, const QString& trigTable);
bool handleExprWithSelect(SqliteExpr* expr, const QString& trigTable);
bool handleAllExprWithTrigTable(SqliteStatement* stmt, const QString& contextTable);
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
index 7d61000..51b496d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts
@@ -7,12 +7,12 @@
<location filename="../db/abstractdb.cpp" line="306"/>
<location filename="../db/abstractdb.cpp" line="323"/>
<source>Cannot execute query on closed database.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Abfrage kann nicht auf einer ungeöffneten Datenbank ausgeführt werden.</translation>
</message>
<message>
<location filename="../db/abstractdb.cpp" line="603"/>
<source>Error attaching database %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Anhängen der Datenbank %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>Ungültiger Nutzername oder Passwort</translation>
</message>
</context>
<context>
@@ -29,31 +29,31 @@
<location filename="../db/chainexecutor.cpp" line="35"/>
<source>The database for executing queries was not defined.</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Es wurde keine Datenbank zur Ausführung von Abfragen festgelegt.</translation>
</message>
<message>
<location filename="../db/chainexecutor.cpp" line="41"/>
<source>The database for executing queries was not open.</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank ist zur Ausführung von Abfragen nicht geöffnet worden.</translation>
</message>
<message>
<location filename="../db/chainexecutor.cpp" line="47"/>
<source>Could not start a database transaction. Details: %1</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Es kann keine Datenbanktransaktion gestartet werden. Details: %1</translation>
</message>
<message>
<location filename="../db/chainexecutor.cpp" line="74"/>
<source>Interrupted</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Abgebrochen</translation>
</message>
<message>
<location filename="../db/chainexecutor.cpp" line="134"/>
<source>Could not commit a database transaction. Details: %1</source>
<comment>chain executor</comment>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbanktransaktion kann nicht &apos;committet&apos; werden. Details: %1</translation>
</message>
</context>
<context>
@@ -61,82 +61,83 @@
<message>
<location filename="../completionhelper.cpp" line="196"/>
<source>New row reference</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Zeilenreferenz</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="203"/>
<source>Old row reference</source>
- <translation type="unfinished"></translation>
+ <translation>Alte Zeilenreferenz</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="208"/>
<source>New table name</source>
- <translation type="unfinished"></translation>
+ <translation>Neuer Tabellenname</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="211"/>
<source>New index name</source>
- <translation type="unfinished"></translation>
+ <translation>Neuer Indizename</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="214"/>
<source>New view name</source>
- <translation type="unfinished"></translation>
+ <translation>Neuer Viewname</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="217"/>
<source>New trigger name</source>
- <translation type="unfinished"></translation>
+ <translation>Neuer Triggername</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="220"/>
<source>Table or column alias</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellen- oder Spaltenalias</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="223"/>
<source>transaction name</source>
- <translation type="unfinished"></translation>
+ <translation>Transaktionsname</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="226"/>
<source>New column name</source>
- <translation type="unfinished"></translation>
+ <translation>Neuer Spaltenname</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="229"/>
<source>Column data type</source>
- <translation type="unfinished"></translation>
+ <translation>Spaltendatentyp</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="232"/>
<source>Constraint name</source>
- <translation type="unfinished"></translation>
+ <translation>Abhängigkeitsname</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="245"/>
<source>Error message</source>
- <translation type="unfinished"></translation>
+ <translation>Fehlermeldung</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="289"/>
<source>Collation name</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Hier weiß ich nicht wie man das sprechend übersetzen kann.</translatorcomment>
+ <translation>Kollationsname</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="304"/>
<source>Any word</source>
- <translation type="unfinished"></translation>
+ <translation>Beliebiges Wort</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="485"/>
<source>Default database</source>
- <translation type="unfinished"></translation>
+ <translation>Standarddatenbank</translation>
</message>
<message>
<location filename="../completionhelper.cpp" line="486"/>
<source>Temporary objects database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank für temporäre Objekte</translation>
</message>
</context>
<context>
@@ -144,35 +145,35 @@
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="63"/>
<source>Could not add database %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank %1 kann nicht hinzugefügt werden: %2</translation>
</message>
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank %1 kann nicht aktualisiert werden. Grund: %2</translation>
</message>
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
<location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
<source>Database file doesn&apos;t exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbankdatei existiert nicht.</translation>
</message>
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
<location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
<location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
<source>No supporting plugin loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurde kein passendes plugin geladen.</translation>
</message>
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
<source>Database could not be initialized.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank kann nicht initialisiert werden.</translation>
</message>
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
<source>No suitable database driver plugin found.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurde kein passender Datenbanktreiber (plugin) gefunden.</translation>
</message>
</context>
<context>
@@ -181,50 +182,51 @@
<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>Fehler beim Erstellen einer Tabelle in der Zieldatenbank %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="380"/>
<source>Could not parse table.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Tabelle konnte nicht verarbeitet werden.</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="426"/>
<source>Database %1 could not be attached to database %2, so the data of table %3 will be copied with SQLiteStudio as a mediator. This method can be slow for huge tables, so please be patient.</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank %1 konnte nicht mit Datenbank %2 verbunden werden, daher werden die Daten der Tabelle %3 durch SQLiteStudio kopiert. Diese Methode kann bei großen Tabellen sehr lange dauern, bitte haben Sie Geduld.</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="447"/>
<source>Error while copying data for table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Kopieren von Daten für Tabelle %1: %2</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="466"/>
<location filename="../dbobjectorganizer.cpp" line="473"/>
<location filename="../dbobjectorganizer.cpp" line="496"/>
<source>Error while copying data to table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Kopieren von Daten in die Tabelle %1: %2</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="535"/>
<source>Error while dropping source view %1: %2
Tables, indexes, triggers and views copied to database %3 will remain.</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Entfernen des Quellviews %1: %2
+Tabellen, Indizes, Trigger und Views die in Datenbank %3 kopiert wurden, werden auf der Quelldatenbank verbleiben.</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="542"/>
<source>Error while creating view in target database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Erstellen eines Views in der Zieldatenbank %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="547"/>
<source>Error while creating index in target database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Erstellen eines Indizes in der Zieldatenbank %1</translation>
</message>
<message>
<location filename="../dbobjectorganizer.cpp" line="552"/>
<source>Error while creating trigger in target database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Erstellen eines Triggers in der Zieldatenbank %1</translation>
</message>
</context>
<context>
@@ -232,17 +234,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>Die Zieldatei existiert zwar, konnte aber nicht überschrieben werden.</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>Es konnte kein geeignetes Datenbankplugin gefunden werden, um die Zieldatenbank zu erzeugen.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="1176"/>
<source>Error while converting database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Konvertieren der Datenbank: %1</translation>
</message>
</context>
<context>
@@ -251,25 +253,25 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<location filename="../ddlhistorymodel.cpp" line="65"/>
<source>Database name</source>
<comment>ddl history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Datenbankname</translation>
</message>
<message>
<location filename="../ddlhistorymodel.cpp" line="67"/>
<source>Database file</source>
<comment>ddl history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Datenbankdatei</translation>
</message>
<message>
<location filename="../ddlhistorymodel.cpp" line="69"/>
<source>Date of execution</source>
<comment>ddl history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Datum der Ausführung</translation>
</message>
<message>
<location filename="../ddlhistorymodel.cpp" line="71"/>
<source>Changes</source>
<comment>ddl history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Änderungen</translation>
</message>
</context>
<context>
@@ -277,42 +279,42 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../services/exportmanager.cpp" line="72"/>
<source>Export plugin %1 doesn&apos;t support exporing query results.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Exportplugin %1 unterstützt das Exportieren der Abfrageergebnisse nicht.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="98"/>
<source>Export plugin %1 doesn&apos;t support exporing tables.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Exportplugin %1 unterstützt das Exportieren von Tabellen nicht.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="122"/>
<source>Export plugin %1 doesn&apos;t support exporing databases.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Exportplugin %1 unterstützt das Exportieren von Datenbanken nicht.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="155"/>
<source>Export format &apos;%1&apos; is not supported. Supported formats are: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Exportformat %1 wird nicht unterstützt. Unterstützte Formate sind: %2.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="218"/>
<source>Export to the clipboard was successful.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Export in die Zwischenablage war erfolgreich.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="222"/>
<source>Export to the file &apos;%1&apos; was successful.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Export in die Datei %1 war erfolgreich.</translation>
</message>
<message>
<location filename="../services/exportmanager.cpp" line="224"/>
<source>Export was successful.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Export war erfolgreich.</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>Es kann nicht in die Datei %1 exportiert werden. Die Datei lässt sich nicht für Schreibzugriffe öffnen.</translation>
</message>
</context>
<context>
@@ -320,33 +322,33 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../exportworker.cpp" line="121"/>
<source>Error while exporting query results: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Exportieren der Abfrageergebnisse: %1</translation>
</message>
<message>
<location filename="../exportworker.cpp" line="201"/>
<source>Error while counting data column width to export from query results: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ermitteln der Spaltenbreite für den Export der Abfrageergebnisse: %1</translation>
</message>
<message>
<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>
+ <translation>%1 konnte zum Exportieren nicht korrekt verarbeitet werden. Diese Daten werden nicht exportiert.</translation>
</message>
<message>
<location filename="../exportworker.cpp" line="612"/>
<source>Error while reading data to export from table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Lesen der zu exportierenden Daten aus der Tabelle %1: %2</translation>
</message>
<message>
<location filename="../exportworker.cpp" line="620"/>
<source>Error while counting data to export from table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ermitteln der zu exportierenden Daten aus der Tabelle %1: %2</translation>
</message>
<message>
<location filename="../exportworker.cpp" line="636"/>
<source>Error while counting data column width to export from table %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ermitteln der Spaltenbreite für den Export aus Tabelle %1: %2</translation>
</message>
</context>
<context>
@@ -354,43 +356,44 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
<source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
- <translation type="unfinished"></translation>
+ <translation>Falsche Anzahl an Parametern für Funktion &apos;%1&apos;. Erwartet wurden %2, angegeben wurden jedoch %3.</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
<source>No such function registered in SQLiteStudio: %1(%2)</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Funktion ist in SQLiteStudio nicht verfügbar: %1(%2)</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
<source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Auch hier ist sicherlich eine Überarbeitung nötig, wenn der Kontext der Meldung bekannt ist.</translatorcomment>
+ <translation>Die Funktion %1(%2) wurde für die Sprache %3 erstellt, jedoch ist das Plugin, welches diese Sprache unterstützt, derzeit nicht geladen.</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
<source>Invalid regular expression pattern: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Ungültiges Muster für die regulären Ausdrücke: %1</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
<location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
<source>Could not open file %1 for reading: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Datei %1 kann nicht für Lesezugriffe geöffnet werden: %2</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
<source>Could not open file %1 for writting: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Datei %1 kann nicht für Schreibzugriffe geöffnet werden: %2</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
<source>Error while writting to file %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Schreiben in Datei %1: %2</translation>
</message>
<message>
<location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
<source>Unsupported scripting language: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht unterstützte Skriptsprache: %1</translation>
</message>
</context>
<context>
@@ -398,7 +401,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../plugins/genericexportplugin.cpp" line="20"/>
<source>Could not initialize text codec for exporting. Using default codec: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Der &apos;Export Textcodec&apos; konnte nicht initialisiert werden. Es wird der Standardcodec genutzt: %1</translation>
</message>
</context>
<context>
@@ -406,7 +409,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../services/importmanager.cpp" line="93"/>
<source>Imported data to the table &apos;%1&apos; successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Daten wurden erfolgreich in Tabelle %1 importiert.</translation>
</message>
</context>
<context>
@@ -414,51 +417,51 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../importworker.cpp" line="24"/>
<source>No columns provided by the import plugin.</source>
- <translation type="unfinished"></translation>
+ <translation>Dieses Importplugin stellt keine Spalten zur Verfügung.</translation>
</message>
<message>
<location filename="../importworker.cpp" line="30"/>
<source>Could not start transaction in order to import a data: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann keine Transaktion zum Import der Daten gestartet werden: %1</translation>
</message>
<message>
<location filename="../importworker.cpp" line="48"/>
<source>Could not commit transaction for imported data: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Transaktion für die importierten Daten kann nicht &apos;committet&apos; werden: %1</translation>
</message>
<message>
<location filename="../importworker.cpp" line="94"/>
<source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Tabelle %1 hat weniger Spalten als die zu importierenden Daten liefern. Überschüssige Spalten werden daher ignoriert.</translation>
</message>
<message>
<location filename="../importworker.cpp" line="99"/>
<source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Tabelle %1 hat mehr Spalten als die zu importierenden Daten liefern. Einige Tabellenspalten werden deshalb leer bleiben.</translation>
</message>
<message>
<location filename="../importworker.cpp" line="117"/>
<source>Could not create table to import to: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Tabelle, in die importiert werden soll, kann nicht erstellt werden: %1</translation>
</message>
<message>
<location filename="../importworker.cpp" line="126"/>
<location filename="../importworker.cpp" line="163"/>
<location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Import der Daten: %1</translation>
</message>
<message>
<location filename="../importworker.cpp" line="126"/>
<location filename="../importworker.cpp" line="170"/>
<source>Interrupted.</source>
<comment>import process status update</comment>
- <translation type="unfinished"></translation>
+ <translation>Abgebrochen.</translation>
</message>
<message>
<location filename="../importworker.cpp" line="158"/>
<source>Could not import data row number %1. The row was ignored. Problem details: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Datenzeile %1 konnte nicht importiert werden. Die Zeile wurde ignoriert. Problembeschreibung: %2</translation>
</message>
</context>
<context>
@@ -466,34 +469,34 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
<source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Plugin %1 konnte nicht geladen werden, weil ein Konflikt besteht mit Plugin %2.</translation>
</message>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
<source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Plugin %1 konnte nicht geladen werden, da dessen Abhängigkeiten nicht geladen worden sind: %2.</translation>
</message>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
<source>Cannot load plugin %1. Error details: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Plugin %1 konnte nicht geladen. Problembeschreibung: %2</translation>
</message>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
<source>Cannot load plugin %1 (error while initializing plugin).</source>
- <translation type="unfinished"></translation>
+ <translation>Plugin %1 konnte wegen eines Fehlers bei der Initialisierung nicht geladen werden.</translation>
</message>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
<source>min: %1</source>
<comment>plugin dependency version</comment>
- <translation type="unfinished"></translation>
+ <translation>Min: %1</translation>
</message>
<message>
<location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
<source>max: %1</source>
<comment>plugin dependency version</comment>
- <translation type="unfinished"></translation>
+ <translation>Max: %1</translation>
</message>
</context>
<context>
@@ -502,7 +505,8 @@ 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>
+ <translatorcomment>Hier bin ich mir absolut nicht sicher was genau gemeint ist.</translatorcomment>
+ <translation>konstanten</translation>
</message>
</context>
<context>
@@ -510,7 +514,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>Konstanter Wert:</translation>
</message>
</context>
<context>
@@ -519,7 +523,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>Wörterbuch</translation>
</message>
</context>
<context>
@@ -527,42 +531,42 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../plugins/populatedictionary.ui" line="20"/>
<source>Dictionary file</source>
- <translation type="unfinished"></translation>
+ <translation>Wörterbuchdatei</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="29"/>
<source>Pick dictionary file</source>
- <translation type="unfinished"></translation>
+ <translation>Wähle Wörterbuchdatei aus</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="39"/>
<source>Word separator</source>
- <translation type="unfinished"></translation>
+ <translation>Wortseperator</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="45"/>
<source>Whitespace</source>
- <translation type="unfinished"></translation>
+ <translation>Leerzeichen</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="58"/>
<source>Line break</source>
- <translation type="unfinished"></translation>
+ <translation>Zeilenumbruch</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="74"/>
<source>Method of using words</source>
- <translation type="unfinished"></translation>
+ <translation>Methode der Wortverwendung</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="80"/>
<source>Ordered</source>
- <translation type="unfinished"></translation>
+ <translation>Sortiert</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.ui" line="93"/>
<source>Randomly</source>
- <translation type="unfinished"></translation>
+ <translation>Zufällig</translation>
</message>
</context>
<context>
@@ -570,7 +574,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../services/populatemanager.cpp" line="89"/>
<source>Table &apos;%1&apos; populated successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle %1 wurde erfolgreich gefüllt.</translation>
</message>
</context>
<context>
@@ -578,7 +582,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>Zufällige Nummer</translation>
</message>
</context>
<context>
@@ -586,32 +590,32 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../plugins/populaterandom.ui" line="20"/>
<source>Constant prefix</source>
- <translation type="unfinished"></translation>
+ <translation>Konstanter Präfix</translation>
</message>
<message>
<location filename="../plugins/populaterandom.ui" line="26"/>
<source>No prefix</source>
- <translation type="unfinished"></translation>
+ <translation>Kein Präfix</translation>
</message>
<message>
<location filename="../plugins/populaterandom.ui" line="39"/>
<source>Minimum value</source>
- <translation type="unfinished"></translation>
+ <translation>Kleinster Wert</translation>
</message>
<message>
<location filename="../plugins/populaterandom.ui" line="61"/>
<source>Maximum value</source>
- <translation type="unfinished"></translation>
+ <translation>Größter Wert</translation>
</message>
<message>
<location filename="../plugins/populaterandom.ui" line="86"/>
<source>Constant suffix</source>
- <translation type="unfinished"></translation>
+ <translation>Konstanter Suffix</translation>
</message>
<message>
<location filename="../plugins/populaterandom.ui" line="92"/>
<source>No suffix</source>
- <translation type="unfinished"></translation>
+ <translation>Kein Suffix</translation>
</message>
</context>
<context>
@@ -619,7 +623,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>Zufälliger Text</translation>
</message>
</context>
<context>
@@ -627,67 +631,68 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../plugins/populaterandomtext.ui" line="20"/>
<source>Use characters from common sets:</source>
- <translation type="unfinished"></translation>
+ <translation>Benutze Zeichen von den gebräuchlichsten Sets:</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="36"/>
<source>Minimum length</source>
- <translation type="unfinished"></translation>
+ <translation>Mindestlänge</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="64"/>
<source>Letters from a to z.</source>
- <translation type="unfinished"></translation>
+ <translation>Buchstaben von a bis z.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="67"/>
<source>Alpha</source>
- <translation type="unfinished"></translation>
+ <translation>Alphanumerisch</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="77"/>
<source>Numbers from 0 to 9.</source>
- <translation type="unfinished"></translation>
+ <translation>Ziffern von 0 bis 9.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="80"/>
<source>Numeric</source>
- <translation type="unfinished"></translation>
+ <translation>Numerisch</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="90"/>
<source>A whitespace, a tab and a new line character.</source>
- <translation type="unfinished"></translation>
+ <translation>Ein Leerzeichen, ein Tab und ein Zeilenumbruchzeichen.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="93"/>
<source>Whitespace</source>
- <translation type="unfinished"></translation>
+ <translation>Leerzeichen</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="103"/>
<source>Includes all above and all others.</source>
- <translation type="unfinished"></translation>
+ <translation>Alle obigen und auch andere.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="106"/>
<source>Binary</source>
- <translation type="unfinished"></translation>
+ <translation>Binär</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="119"/>
<source>Use characters from my custom set:</source>
- <translation type="unfinished"></translation>
+ <translation>Benutze Zeichen von meinem benutzerdefinierten Set:</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="132"/>
<source>Maximum length</source>
- <translation type="unfinished"></translation>
+ <translation>Maximallänge</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.ui" line="160"/>
<source>If you type some character multiple times, it&apos;s more likely to be used.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Auch hier kann man besser übersetzen, wenn man den Kontext kennt.</translatorcomment>
+ <translation>Wenn Sie einige Buchstaben mehrmals eingeben, dann ist es wahrscheinlicher, dass sie genutzt werden.</translation>
</message>
</context>
<context>
@@ -695,7 +700,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>
@@ -703,22 +708,22 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../plugins/populatescript.ui" line="26"/>
<source>Initialization code (optional)</source>
- <translation type="unfinished"></translation>
+ <translation>Initialisierungscode (optional)</translation>
</message>
<message>
<location filename="../plugins/populatescript.ui" line="45"/>
<source>Per step code</source>
- <translation type="unfinished"></translation>
+ <translation>Einzelschrittcode</translation>
</message>
<message>
<location filename="../plugins/populatescript.ui" line="70"/>
<source>Language</source>
- <translation type="unfinished"></translation>
+ <translation>Sprache</translation>
</message>
<message>
<location filename="../plugins/populatescript.ui" line="89"/>
<source>Help</source>
- <translation type="unfinished"></translation>
+ <translation>Hilfe</translation>
</message>
</context>
<context>
@@ -726,7 +731,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>Sequenz</translation>
</message>
</context>
<context>
@@ -734,12 +739,12 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../plugins/populatesequence.ui" line="33"/>
<source>Start value:</source>
- <translation type="unfinished"></translation>
+ <translation>Startwert:</translation>
</message>
<message>
<location filename="../plugins/populatesequence.ui" line="56"/>
<source>Step:</source>
- <translation type="unfinished"></translation>
+ <translation>Schritt:</translation>
</message>
</context>
<context>
@@ -747,17 +752,17 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../populateworker.cpp" line="23"/>
<source>Could not start transaction in order to perform table populating. Error details: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann keine Transaktion zum Füllen der Tabelle gestartet werden. Problembeschreibung: %1</translation>
</message>
<message>
<location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Füllen der Tabelle: %1</translation>
</message>
<message>
<location filename="../populateworker.cpp" line="74"/>
<source>Could not commit transaction after table populating. Error details: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Transaktion zum Füllen der Tabelle kann nicht &apos;committet&apos; werden. Problembeschreibung: %1</translation>
</message>
</context>
<context>
@@ -766,18 +771,18 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<location filename="../db/abstractdb2.h" line="199"/>
<location filename="../db/abstractdb3.h" line="356"/>
<source>Could not open database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank %1 kann nicht geöffnet werden.</translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Abfrageergebniss ist ungültig oder es ist keine Datenzeile verfügbar.</translation>
</message>
<message>
<location filename="../db/abstractdb3.h" line="376"/>
<source>Could not close database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank %1 kann nicht geschlossen werden.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="137"/>
@@ -788,18 +793,19 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<location filename="../dbversionconverter.cpp" line="253"/>
<location filename="../dbversionconverter.cpp" line="331"/>
<source>SQLite %1 does not support &apos;%2&apos; statement.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite %1 unterstützt keine &apos;%2&apos; Abfrage.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="201"/>
<source>SQLite %1 does not support &apos;%2&apos; statement, but the regular table can be created instead if you proceed.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite %1 unterstützt keine &apos;%2&apos; Abfrage, aber die normale Tabelle kann stattdessen erzeugt werden, wenn Sie fortfahren.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="424"/>
<source>Could not parse statement: %1
Error details: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Abfrage kann nicht verarbeitet werden: %1
+Problembeschreibung: %2</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="435"/>
@@ -807,202 +813,204 @@ Error details: %2</source>
<location filename="../dbversionconverter.cpp" line="482"/>
<location filename="../dbversionconverter.cpp" line="515"/>
<source>SQLite %1 does not support the &apos;%2&apos; clause. Cannot convert &apos;%3&apos; statement with that clause.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite %1 unterstützt keine &apos;%2&apos; Klausel. Die %3 Abfrage kann mit dieser Klausel nicht konvertiert werden.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="488"/>
<source>SQLite %1 does not support the &apos;%2&apos; clause in the &apos;%3&apos; statement.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite %1 unterstützt keine &apos;%2&apos; Klausel in der %3 Abfrage.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="756"/>
<source>SQLite %1 does not support current date or time clauses in expressions.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite %1 unterstützt keine current date&apos; oder &apos;time&apos; Klauseln in Ausdrücken.</translation>
</message>
<message>
<location filename="../dbversionconverter.cpp" line="767"/>
<location filename="../dbversionconverter.cpp" line="770"/>
<location filename="../dbversionconverter.cpp" line="781"/>
<source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite %1 unterstützt keine &apos;%2&apos; Klausel Ausdrücken.</translation>
</message>
<message>
<location filename="../impl/dbattacherimpl.cpp" line="109"/>
<source>Could not attach database %1: %2</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Generell muss in den Übersetzungen das &apos;attached&apos; genauer analysiert werden.</translatorcomment>
+ <translation>Die Datenbank %1 kann nicht angefügt werden: %2</translation>
</message>
<message>
<location filename="../parser/parsercontext.cpp" line="108"/>
<location filename="../parser/parsercontext.cpp" line="110"/>
<source>Incomplete query.</source>
- <translation type="unfinished"></translation>
+ <translation>Unvollständige Abfrage.</translation>
</message>
<message>
<location filename="../parser/sqlite2_parse.cpp" line="1904"/>
<location filename="../parser/sqlite3_parse.cpp" line="2167"/>
<source>Parser stack overflow</source>
- <translation type="unfinished"></translation>
+ <translation>Stacküberlauf bei Verarbeitung</translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
- <translation type="unfinished"></translation>
+ <translation>Syntaxfehler</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.cpp" line="30"/>
<source>Could not open dictionary file %1 for reading.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Wörterbuchdatei %1 kann für den Lesezugriff nicht geöffnet werden.</translation>
</message>
<message>
<location filename="../plugins/populatedictionary.cpp" line="91"/>
<source>Dictionary file must exist and be readable.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Wörterbuchdatei muss vorhanden sein und Leserechte besitzen.</translation>
</message>
<message>
<location filename="../plugins/populaterandom.cpp" line="53"/>
<source>Maximum value cannot be less than minimum value.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Maximalwert kann nicht kleiner sein als der Minimalwert.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.cpp" line="77"/>
<source>Maximum length cannot be less than minimum length.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Maximallänge kann nicht kleiner sein als die Minimallänge.</translation>
</message>
<message>
<location filename="../plugins/populaterandomtext.cpp" line="88"/>
<source>Custom character set cannot be empty.</source>
- <translation type="unfinished"></translation>
+ <translation>Ein benutzerdefiniertes Zeichenset darf nicht leer sein.</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="40"/>
<source>Could not find plugin to support scripting language: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Das Plugin zur Unterstützung der folgenden Skriptsprache kann nicht gefunden werden: %1</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="58"/>
<source>Error while executing populating initial code: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ausführen des Initialisierungsprozesses: %1</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="80"/>
<source>Error while executing populating code: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ausführen des Auffüllprozesses: %1</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="112"/>
<source>Select implementation language.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Implementationssprache.</translation>
</message>
<message>
<location filename="../plugins/populatescript.cpp" line="113"/>
<source>Implementation code cannot be empty.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Implementationscode darf nicht leer sein.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenquelle für Spalte %1 kann nicht aufgelöst werden.</translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Ich hoffe, dass ich &quot;to initialize&quot; hier richtig mit &quot;erstellt&quot; übersetzt habe.</translatorcomment>
+ <translation>Die Konfigurationsdatei kann nicht erstellt werden. Alle Änderungen an der Konfiguration sowie die Abfragehistorie sind nach einem Programmneustart verloren. Es wurde versucht die Konfigurationsdatei in folgendem Verzeichnis zu erstellen: %1</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="291"/>
<source>General purpose</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Allgemeine Verwendung</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="292"/>
<source>Database support</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Datenbankunterstützung</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="293"/>
<source>Code formatter</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Codeformatierer</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="294"/>
<source>Scripting languages</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Skriptsprachen</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="295"/>
<source>Exporting</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Exportieren</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="296"/>
<source>Importing</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Importieren</translation>
</message>
<message>
<location filename="../sqlitestudio.cpp" line="297"/>
<source>Table populating</source>
<comment>plugin category name</comment>
- <translation type="unfinished"></translation>
+ <translation>Tabellen füllen</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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>
+ <translation>Tabelle %1 referenziert Tabelle %2, jedoch wird die &apos;foreign key&apos;-Definition für die neue Tabellendefinition nicht aktualisiert, da es Probleme bei der DDL-Analyse von Tabelle %3 gibt.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Spalten, die von Index %1 indiziert wurden, sind verloren. Der Index wird nach der Tabellenmodifikation nicht neu erstellt.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<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>Es ist ein Problem bei der korrekten Verarbeitung des Triggers %1 aufgetreten. Er wird möglicherweise nicht vollständig aktualisert werden und sollte geprüft werden.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Aktualisierung des Triggers %1, resultierend aus der Änderung der Tabelle %2, kann nicht ausgeführt werden.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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>
+ <translation>Es ist ein Problem beim Aktualisieren einer %1 Abfrage innerhalb eines %2 Triggers aufgetreten. Eine der %1 Unterabfragen, welche möglicherweise die Tabelle %3 referenziert, kann nicht geändert werden. Eine manuelle Anpassung des Triggers wird nötig sein.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="434"/>
+ <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>
- <translation type="unfinished"></translation>
+ <translation>Alle Spalten, die durch den Trigger %1 abgedeckt wurden, sind verloren. Der Trigger wird nach der Änderung nicht wiederhergestellt.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="484"/>
+ <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>
- <translation type="unfinished"></translation>
+ <translation>Die Aktualisierung des Views %1, resultierend aus der Änderung der Tabelle %2, kann nicht ausgeführt werden. Der View wird daher nicht geändert.</translation>
</message>
<message>
<location filename="../viewmodifier.cpp" line="25"/>
<source>Could not parse DDL of the view to be created. Details: %1</source>
- <translation type="unfinished"></translation>
+ <translation>DDL des zu erzeugenden Views kann nicht verarbeitet werden. Details: %1</translation>
</message>
<message>
<location filename="../viewmodifier.cpp" line="34"/>
<source>Parsed query is not CREATE VIEW. It&apos;s: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die zu verarbeitende Abfrage ist nicht CREATE VIEW, es ist: %1</translation>
</message>
<message>
<location filename="../viewmodifier.cpp" line="82"/>
<source>SQLiteStudio was unable to resolve columns returned by the new view, therefore it won&apos;t be able to tell which triggers might fail during the recreation process.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLiteStudio konnte die vom View zurückgegebenen Spalten nicht auflösen, daher kann nicht ermittelt werden, welcher Trigger beim Wiederherstelllungsprozess einen Fehler verusracht haben könnte.</translation>
</message>
</context>
<context>
@@ -1010,28 +1018,29 @@ The view will remain as it is.</source>
<message>
<location filename="../db/queryexecutor.cpp" line="133"/>
<source>Execution interrupted.</source>
- <translation type="unfinished"></translation>
+ <translation>Ausführung abgebrochen.</translation>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="174"/>
<source>Database is not open.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank ist nicht geöffnet.</translation>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="182"/>
<source>Only one query can be executed simultaneously.</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann nur eine Abfrage gleichzeitig ausgeführt werden.</translation>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Hier muss ggf. noch das &apos;data paging&apos; korrekt übersetzt werden.</translatorcomment>
+ <translation>Beim Ausführen der count(*) Abfrage ist ein Fehler aufgetreten, daher wird das data paging abgeschaltet. Problemdetails der Datenbank: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
- <translation type="unfinished"></translation>
+ <translation>SQLiteStudio konnte keine Metadaten aus der Abfrage extrahieren. Die Ergebnismenge kann daher nicht editiert werden.</translation>
</message>
</context>
<context>
@@ -1039,12 +1048,12 @@ The view will remain as it is.</source>
<message>
<location filename="../plugins/scriptingqtdbproxy.cpp" line="48"/>
<source>No database available in current context, while called QtScript&apos;s %1 command.</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Aufruf des QtSkript Kommandos %1 ist im zugehörigen Kontext keine Datenbank verfügbar.</translation>
</message>
<message>
<location filename="../plugins/scriptingqtdbproxy.cpp" line="65"/>
<source>Error from %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler von %1: %2</translation>
</message>
</context>
<context>
@@ -1053,31 +1062,31 @@ 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>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../sqlhistorymodel.cpp" line="32"/>
<source>Execution date</source>
<comment>sql history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Ausführungsdatum</translation>
</message>
<message>
<location filename="../sqlhistorymodel.cpp" line="34"/>
<source>Time spent</source>
<comment>sql history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Dauer</translation>
</message>
<message>
<location filename="../sqlhistorymodel.cpp" line="36"/>
<source>Rows affected</source>
<comment>sql history header</comment>
- <translation type="unfinished"></translation>
+ <translation>Anzahl Zeilen</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>
@@ -1085,99 +1094,101 @@ The view will remain as it is.</source>
<message>
<location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Prüfen auf Updates trat folgender Fehler auf: %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="144"/>
<source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
- <translation type="unfinished"></translation>
+ <translation>Es konnte nicht auf neue Updates geprüft werden, da der Updateserver in einem ungültigen Nachrichtenformat antwortet. Diese Meldung kann gefahrlos ignoriert werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="175"/>
<source>An error occurred while reading updates metadata: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Lesen der Update-Metadaten ist ein Fehler aufgetreten: %1.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="188"/>
<source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Update konnte nicht heruntergeladen werden, da der Updateserver in einem ungültigen Nachrichtenformat antwortet. Sie können es später noch einmal versuchen oder das Update und die Installation manuell ausführen. Weitere Infoamtionen hierzu finden Sie in der &lt;a href=&quot;%1&quot;&gt;Programmdokumentation&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="195"/>
<source>Could not create temporary directory for downloading the update. Updating aborted.</source>
- <translation type="unfinished"></translation>
+ <translation>Das temporäre Verzeichnis zum Herunterladen des Updates konnte nicht erstellt werden. Der Updatevorgang wird abgebrochen.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="206"/>
<source>There was no updates to download. Updating aborted.</source>
- <translation type="unfinished"></translation>
+ <translation>Keine neuen Updates vorhanden. Der Updatevorgang wird beendet.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Herunterladen von: %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="247"/>
<source>Could not determinate file name from update URL: %1. Updating aborted.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Dateiname der Update-URL %1 konnte nicht ermittelt werden. Der Updatevorgang wird abgebrochen.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="255"/>
<source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Schreiben in die Datei &apos;%1&apos; trat folgender Fehler auf: %2. Der Updatevorgang wird abgebrochen.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
- <translation type="unfinished"></translation>
+ <translation>Update wird installiert.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="287"/>
<source>Could not copy current application directory into %1 directory.</source>
- <translation type="unfinished"></translation>
+ <translation>Das aktuelle Programmverzeichnis konnte nicht in das Verzeichnis %1 kopiert werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="340"/>
<source>Could not create directory %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis %1 konnte nicht erstellt werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="348"/>
<source>Could not rename directory %1 to %2.
Details: %3</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis %1 konnte nicht in %2 umbenannt werden.
+Details: %3</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="352"/>
<source>Cannot not rename directory %1 to %2.
Details: %3</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis %1 kann nicht in %2 umbenannt werden.
+Details: %3</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="360"/>
<source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis %1 konnte nicht nach %2 verschoben werden. Ebenso schlug das Wiederherstellen des originalen Verzeichnissses fehlt, daher befindet sich das SQLiteStudio Verzeichnis nun hier: %3</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="365"/>
<source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Das Verzeichnis %1 konnte nicht nach %2 umbenannt werden.SQLiteStudio wird auf den Ursprungszustand zurückgesetzt.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="444"/>
<source>Could not unpack component %1 into %2 directory.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Komponente %1 konnte nicht in das Verzeichnis %2 extrahiert werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="555"/>
<source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Rechteerweiterung zum Ausführen des Updates als &apos;root&apos; konnte nicht gefunden werden. Es wurde gesucht nach: %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="562"/>
<source>Could not execute final updating steps as root: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die abschließenden Aktualisierungsschritte konnten nicht als &apos;root&apos; ausgeführt werden: %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="591"/>
@@ -1185,99 +1196,100 @@ Details: %3</source>
<location filename="../services/updatemanager.cpp" line="613"/>
<location filename="../services/updatemanager.cpp" line="623"/>
<source>Could not execute final updating steps as admin: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die abschließenden Aktualisierungsschritte konnten nicht als &apos;admin&apos; ausgeführt werden: %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="591"/>
<source>Cannot create temporary directory for updater.</source>
- <translation type="unfinished"></translation>
+ <translation>Das temporäre Verzeichnis für den Updater konnte nicht erstellt werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="600"/>
<source>Cannot create updater script file.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Skriptdatei für den Updater konnte nicht erstellt werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="633"/>
<source>Updating canceled.</source>
- <translation type="unfinished"></translation>
+ <translation>Updatevorgang abgebrochen.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="661"/>
<source>Could not execute final updating steps as administrator.</source>
- <translation type="unfinished"></translation>
+ <translation>Die abschließenden Aktualisierungsschritte konnten nicht als &apos;administrator&apos; ausgeführt werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="673"/>
<source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
- <translation type="unfinished"></translation>
+ <translation>Die abschließenden Aktualisierungsschritte konnten nicht als &apos;administrator&apos; ausgeführt werden. Die Updatevorbereitungen liefen auf Zeitüberschreitung.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="679"/>
<source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
- <translation type="unfinished"></translation>
+ <translation>Die abschließenden Aktualisierungsschritte konnten nicht als &apos;administrator&apos; ausgeführt werden. Der Updatevorgang lief auf Zeitüberschreitung.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="696"/>
<source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
- <translation type="unfinished"></translation>
+ <translation>Das temporäre Verzeichnis %1 konnte nicht aufgeräumt werden. Sie können es später manuell löschen.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="732"/>
<source>Could not run new version for continuing update.</source>
- <translation type="unfinished"></translation>
+ <translation>Die neue Version zum Fortführen des Updates kann nicht gestartet werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="817"/>
<source>Package not in tar.gz format, cannot install: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Das Paket liegt nicht im tar.gz Format vor. %1 kann nicht installiert werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="824"/>
<source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Das Paket %1 kann nicht installiert werden, weil es nicht in das Verzeichnis %2 verschoben werden kann.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="833"/>
<source>Package %1 cannot be installed, because cannot unpack it: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Das Paket %1 kann nicht installiert werden, weil es nicht extrahiert werden kann: %2</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="852"/>
<source>Package not in zip format, cannot install: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Das Paket liegt nicht im zip Format vor. %1 kann nicht installiert werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="859"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
- <translation type="unfinished"></translation>
+ <translation>Das Paket %1 kann nicht installiert werden, weil es nicht in das Verzeichnis %2: %3 extrahiert werden kann.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="873"/>
<source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Das Paket %1 kann nicht installiert werden, weil es nicht in das Verzeichnis %2 entzippt werden kann.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="923"/>
<location filename="../services/updatemanager.cpp" line="932"/>
<source>Could not rename directory %1 to %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis %1 konnte nicht in %2 umbenannt werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="945"/>
<source>Could not delete directory %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis %1 konnte nicht gelöscht werden.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="961"/>
<source>Error executing update command: %1
Error message: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ausführen des Updatekommandos %1.
+Fehlerbeschreibung: %2</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Herunterladen des Updates %1 ist ein fehelr aufgetreten. Der Updatevorgang wurde abgebrochen.</translation>
</message>
</context>
</TS>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
index 054d1dc..8131da9 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts
@@ -769,7 +769,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
@@ -844,8 +844,8 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -900,12 +900,12 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -952,39 +952,39 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<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="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<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="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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"/>
+ <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>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="484"/>
+ <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>
<translation type="unfinished"></translation>
@@ -1024,12 +1024,12 @@ The view will remain as it is.</source>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
index 2931eff..5d6090c 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts
@@ -770,7 +770,7 @@ Tables, index, déclencheurs et vues copiés de la base de données %3 seront ma
<translation>Impossible d&apos;ouvrir la base de données: %1</translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation>Terminé ou aucune ligne valide.</translation>
@@ -846,8 +846,8 @@ Détails erreur: %2</translation>
<translation>Analyse dépassement pile</translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
<translation>Erreur de syntaxe </translation>
</message>
@@ -902,12 +902,12 @@ Détails erreur: %2</translation>
<translation>L&apos;application de code ne peut être vide.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
<translation>Impossible de résoudre la source de données pour la colonnes: %1</translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
<translation>Impossible d&apos;initialiser le fichier de configuration. Aucune modification et les requêtes seront perdues après redémarrage. Essayez d&apos;initialiser le fichier avec cette localisation: %1.</translation>
</message>
@@ -954,39 +954,39 @@ Détails erreur: %2</translation>
<translation>Peuplement de la table</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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&apos;analyse DDL de la table %3.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<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&apos;indexe %1 sont faites. L&apos;indexe ne sera pas recréé après la modification de la table.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<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="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<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="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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"/>
+ <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>
<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="484"/>
+ <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>
<translation>Impossible de mettre à jour les modifications de la vue %1 issue de la table %2
@@ -1031,12 +1031,12 @@ La vue restera telque.</translation>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation>Une erreur s&apos;est produite à l&apos;exécution de la requête count(*), la recherche des données est arrêtée. Erreur de la base de données:%1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation>SQLiteStudio ne peut extraire des métadonnées d&apos;une requête. Les résultats ne peut être affichés.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts
new file mode 100644
index 0000000..27d4349
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_it.ts
@@ -0,0 +1,1283 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>AbstractDb</name>
+ <message>
+ <location filename="../db/abstractdb.cpp" line="306"/>
+ <location filename="../db/abstractdb.cpp" line="323"/>
+ <source>Cannot execute query on closed database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/abstractdb.cpp" line="603"/>
+ <source>Error attaching database %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BugReporter</name>
+ <message>
+ <location filename="../services/bugreporter.cpp" line="46"/>
+ <source>Invalid login or password</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ChainExecutor</name>
+ <message>
+ <location filename="../db/chainexecutor.cpp" line="35"/>
+ <source>The database for executing queries was not defined.</source>
+ <comment>chain executor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/chainexecutor.cpp" line="41"/>
+ <source>The database for executing queries was not open.</source>
+ <comment>chain executor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/chainexecutor.cpp" line="47"/>
+ <source>Could not start a database transaction. Details: %1</source>
+ <comment>chain executor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/chainexecutor.cpp" line="74"/>
+ <source>Interrupted</source>
+ <comment>chain executor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/chainexecutor.cpp" line="134"/>
+ <source>Could not commit a database transaction. Details: %1</source>
+ <comment>chain executor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CompletionHelper</name>
+ <message>
+ <location filename="../completionhelper.cpp" line="196"/>
+ <source>New row reference</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="203"/>
+ <source>Old row reference</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="208"/>
+ <source>New table name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="211"/>
+ <source>New index name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="214"/>
+ <source>New view name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="217"/>
+ <source>New trigger name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="220"/>
+ <source>Table or column alias</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="223"/>
+ <source>transaction name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="226"/>
+ <source>New column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="229"/>
+ <source>Column data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="232"/>
+ <source>Constraint name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="245"/>
+ <source>Error message</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="289"/>
+ <source>Collation name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="304"/>
+ <source>Any word</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="485"/>
+ <source>Default database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completionhelper.cpp" line="486"/>
+ <source>Temporary objects database</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbManagerImpl</name>
+ <message>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="63"/>
+ <source>Could not add database %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
+ <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="312"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="341"/>
+ <source>Database file doesn&apos;t exist.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="314"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="343"/>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="565"/>
+ <source>No supporting plugin loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="484"/>
+ <source>Database could not be initialized.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/dbmanagerimpl.cpp" line="494"/>
+ <source>No suitable database driver plugin found.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbObjectOrganizer</name>
+ <message>
+ <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>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="380"/>
+ <source>Could not parse table.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="426"/>
+ <source>Database %1 could not be attached to database %2, so the data of table %3 will be copied with SQLiteStudio as a mediator. This method can be slow for huge tables, so please be patient.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="447"/>
+ <source>Error while copying data for table %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="466"/>
+ <location filename="../dbobjectorganizer.cpp" line="473"/>
+ <location filename="../dbobjectorganizer.cpp" line="496"/>
+ <source>Error while copying data to table %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="535"/>
+ <source>Error while dropping source view %1: %2
+Tables, indexes, triggers and views copied to database %3 will remain.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="542"/>
+ <source>Error while creating view in target database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="547"/>
+ <source>Error while creating index in target database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectorganizer.cpp" line="552"/>
+ <source>Error while creating trigger in target database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbVersionConverter</name>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="923"/>
+ <source>Target file exists, but could not be overwritten.</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="1176"/>
+ <source>Error while converting database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DdlHistoryModel</name>
+ <message>
+ <location filename="../ddlhistorymodel.cpp" line="65"/>
+ <source>Database name</source>
+ <comment>ddl history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ddlhistorymodel.cpp" line="67"/>
+ <source>Database file</source>
+ <comment>ddl history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ddlhistorymodel.cpp" line="69"/>
+ <source>Date of execution</source>
+ <comment>ddl history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../ddlhistorymodel.cpp" line="71"/>
+ <source>Changes</source>
+ <comment>ddl history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ExportManager</name>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="72"/>
+ <source>Export plugin %1 doesn&apos;t support exporing query results.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="98"/>
+ <source>Export plugin %1 doesn&apos;t support exporing tables.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="122"/>
+ <source>Export plugin %1 doesn&apos;t support exporing databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="155"/>
+ <source>Export format &apos;%1&apos; is not supported. Supported formats are: %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="218"/>
+ <source>Export to the clipboard was successful.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="222"/>
+ <source>Export to the file &apos;%1&apos; was successful.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/exportmanager.cpp" line="224"/>
+ <source>Export was successful.</source>
+ <translation type="unfinished"></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>
+ </message>
+</context>
+<context>
+ <name>ExportWorker</name>
+ <message>
+ <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="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="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="612"/>
+ <source>Error while reading data to export from table %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="636"/>
+ <source>Error while counting data column width to export from table %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FunctionManagerImpl</name>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/>
+ <source>Invalid number of arguments to function &apos;%1&apos;. Expected %2, but got %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/>
+ <source>No such function registered in SQLiteStudio: %1(%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="347"/>
+ <source>Function %1(%2) was registered with language %3, but the plugin supporting that language is not currently loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/>
+ <source>Invalid regular expression pattern: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="384"/>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="417"/>
+ <source>Could not open file %1 for reading: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/>
+ <source>Could not open file %1 for writting: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/>
+ <source>Error while writting to file %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/>
+ <source>Unsupported scripting language: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>GenericExportPlugin</name>
+ <message>
+ <location filename="../plugins/genericexportplugin.cpp" line="20"/>
+ <source>Could not initialize text codec for exporting. Using default codec: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ImportManager</name>
+ <message>
+ <location filename="../services/importmanager.cpp" line="93"/>
+ <source>Imported data to the table &apos;%1&apos; successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ImportWorker</name>
+ <message>
+ <location filename="../importworker.cpp" line="24"/>
+ <source>No columns provided by the import plugin.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="30"/>
+ <source>Could not start transaction in order to import a data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="48"/>
+ <source>Could not commit transaction for imported data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="94"/>
+ <source>Table &apos;%1&apos; has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="99"/>
+ <source>Table &apos;%1&apos; has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="117"/>
+ <source>Could not create table to import to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="163"/>
+ <location filename="../importworker.cpp" line="170"/>
+ <source>Error while importing data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="126"/>
+ <location filename="../importworker.cpp" line="170"/>
+ <source>Interrupted.</source>
+ <comment>import process status update</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../importworker.cpp" line="158"/>
+ <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>
+ <message>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="543"/>
+ <source>Cannot load plugin %1, because it&apos;s in conflict with plugin %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="554"/>
+ <source>Cannot load plugin %1, because its dependency was not loaded: %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="563"/>
+ <source>Cannot load plugin %1. Error details: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="579"/>
+ <source>Cannot load plugin %1 (error while initializing plugin).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="732"/>
+ <source>min: %1</source>
+ <comment>plugin dependency version</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/pluginmanagerimpl.cpp" line="733"/>
+ <source>max: %1</source>
+ <comment>plugin dependency version</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateConstant</name>
+ <message>
+ <location filename="../plugins/populateconstant.cpp" line="10"/>
+ <source>Constant</source>
+ <comment>populate constant plugin name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateConstantConfig</name>
+ <message>
+ <location filename="../plugins/populateconstant.ui" line="20"/>
+ <source>Constant value:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateDictionary</name>
+ <message>
+ <location filename="../plugins/populatedictionary.cpp" line="15"/>
+ <source>Dictionary</source>
+ <comment>dictionary populating plugin name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateDictionaryConfig</name>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="20"/>
+ <source>Dictionary file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="29"/>
+ <source>Pick dictionary file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="39"/>
+ <source>Word separator</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="45"/>
+ <source>Whitespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="58"/>
+ <source>Line break</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="74"/>
+ <source>Method of using words</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="80"/>
+ <source>Ordered</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.ui" line="93"/>
+ <source>Randomly</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateManager</name>
+ <message>
+ <location filename="../services/populatemanager.cpp" line="89"/>
+ <source>Table &apos;%1&apos; populated successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateRandom</name>
+ <message>
+ <location filename="../plugins/populaterandom.cpp" line="12"/>
+ <source>Random number</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateRandomConfig</name>
+ <message>
+ <location filename="../plugins/populaterandom.ui" line="20"/>
+ <source>Constant prefix</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandom.ui" line="26"/>
+ <source>No prefix</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandom.ui" line="39"/>
+ <source>Minimum value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandom.ui" line="61"/>
+ <source>Maximum value</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandom.ui" line="86"/>
+ <source>Constant suffix</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandom.ui" line="92"/>
+ <source>No suffix</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateRandomText</name>
+ <message>
+ <location filename="../plugins/populaterandomtext.cpp" line="12"/>
+ <source>Random text</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateRandomTextConfig</name>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="20"/>
+ <source>Use characters from common sets:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="36"/>
+ <source>Minimum length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="64"/>
+ <source>Letters from a to z.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="67"/>
+ <source>Alpha</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="77"/>
+ <source>Numbers from 0 to 9.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="80"/>
+ <source>Numeric</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="90"/>
+ <source>A whitespace, a tab and a new line character.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="93"/>
+ <source>Whitespace</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="103"/>
+ <source>Includes all above and all others.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="106"/>
+ <source>Binary</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="119"/>
+ <source>Use characters from my custom set:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="132"/>
+ <source>Maximum length</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.ui" line="160"/>
+ <source>If you type some character multiple times, it&apos;s more likely to be used.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateScript</name>
+ <message>
+ <location filename="../plugins/populatescript.cpp" line="13"/>
+ <source>Script</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateScriptConfig</name>
+ <message>
+ <location filename="../plugins/populatescript.ui" line="26"/>
+ <source>Initialization code (optional)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.ui" line="45"/>
+ <source>Per step code</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.ui" line="70"/>
+ <source>Language</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.ui" line="89"/>
+ <source>Help</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateSequence</name>
+ <message>
+ <location filename="../plugins/populatesequence.cpp" line="13"/>
+ <source>Sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateSequenceConfig</name>
+ <message>
+ <location filename="../plugins/populatesequence.ui" line="33"/>
+ <source>Start value:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatesequence.ui" line="56"/>
+ <source>Step:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateWorker</name>
+ <message>
+ <location filename="../populateworker.cpp" line="23"/>
+ <source>Could not start transaction in order to perform table populating. Error details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../populateworker.cpp" line="63"/>
+ <source>Error while populating table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../populateworker.cpp" line="74"/>
+ <source>Could not commit transaction after table populating. Error details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../db/abstractdb2.h" line="199"/>
+ <location filename="../db/abstractdb3.h" line="356"/>
+ <source>Could not open database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/abstractdb2.h" line="805"/>
+ <location filename="../db/abstractdb3.h" line="1100"/>
+ <source>Result set expired or no row available.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/abstractdb3.h" line="376"/>
+ <source>Could not close database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="137"/>
+ <location filename="../dbversionconverter.cpp" line="142"/>
+ <location filename="../dbversionconverter.cpp" line="195"/>
+ <location filename="../dbversionconverter.cpp" line="240"/>
+ <location filename="../dbversionconverter.cpp" line="245"/>
+ <location filename="../dbversionconverter.cpp" line="253"/>
+ <location filename="../dbversionconverter.cpp" line="331"/>
+ <source>SQLite %1 does not support &apos;%2&apos; statement.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="201"/>
+ <source>SQLite %1 does not support &apos;%2&apos; statement, but the regular table can be created instead if you proceed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="424"/>
+ <source>Could not parse statement: %1
+Error details: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="435"/>
+ <location filename="../dbversionconverter.cpp" line="461"/>
+ <location filename="../dbversionconverter.cpp" line="482"/>
+ <location filename="../dbversionconverter.cpp" line="515"/>
+ <source>SQLite %1 does not support the &apos;%2&apos; clause. Cannot convert &apos;%3&apos; statement with that clause.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="488"/>
+ <source>SQLite %1 does not support the &apos;%2&apos; clause in the &apos;%3&apos; statement.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="756"/>
+ <source>SQLite %1 does not support current date or time clauses in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbversionconverter.cpp" line="767"/>
+ <location filename="../dbversionconverter.cpp" line="770"/>
+ <location filename="../dbversionconverter.cpp" line="781"/>
+ <source>SQLite %1 does not support &apos;%2&apos; clause in expressions.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../impl/dbattacherimpl.cpp" line="109"/>
+ <source>Could not attach database %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../parser/parsercontext.cpp" line="108"/>
+ <location filename="../parser/parsercontext.cpp" line="110"/>
+ <source>Incomplete query.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../parser/sqlite2_parse.cpp" line="1904"/>
+ <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="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
+ <source>Syntax error</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.cpp" line="30"/>
+ <source>Could not open dictionary file %1 for reading.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatedictionary.cpp" line="91"/>
+ <source>Dictionary file must exist and be readable.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandom.cpp" line="53"/>
+ <source>Maximum value cannot be less than minimum value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.cpp" line="77"/>
+ <source>Maximum length cannot be less than minimum length.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populaterandomtext.cpp" line="88"/>
+ <source>Custom character set cannot be empty.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.cpp" line="40"/>
+ <source>Could not find plugin to support scripting language: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.cpp" line="58"/>
+ <source>Error while executing populating initial code: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.cpp" line="80"/>
+ <source>Error while executing populating code: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.cpp" line="112"/>
+ <source>Select implementation language.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/populatescript.cpp" line="113"/>
+ <source>Implementation code cannot be empty.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../selectresolver.cpp" line="317"/>
+ <source>Could not resolve data source for column: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
+ <source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="291"/>
+ <source>General purpose</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="292"/>
+ <source>Database support</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="293"/>
+ <source>Code formatter</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="294"/>
+ <source>Scripting languages</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="295"/>
+ <source>Exporting</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="296"/>
+ <source>Importing</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlitestudio.cpp" line="297"/>
+ <source>Table populating</source>
+ <comment>plugin category name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../tablemodifier.cpp" line="107"/>
+ <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"/>
+ <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"/>
+ <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="433"/>
+ <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="465"/>
+ <source>Cannot not update trigger %1 according to table %2 modification.</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>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
+ <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="../viewmodifier.cpp" line="25"/>
+ <source>Could not parse DDL of the view to be created. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../viewmodifier.cpp" line="34"/>
+ <source>Parsed query is not CREATE VIEW. It&apos;s: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../viewmodifier.cpp" line="82"/>
+ <source>SQLiteStudio was unable to resolve columns returned by the new view, therefore it won&apos;t be able to tell which triggers might fail during the recreation process.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QueryExecutor</name>
+ <message>
+ <location filename="../db/queryexecutor.cpp" line="133"/>
+ <source>Execution interrupted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/queryexecutor.cpp" line="174"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/queryexecutor.cpp" line="182"/>
+ <source>Only one query can be executed simultaneously.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/queryexecutor.cpp" line="264"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
+ <source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
+ <source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ScriptingQtDbProxy</name>
+ <message>
+ <location filename="../plugins/scriptingqtdbproxy.cpp" line="48"/>
+ <source>No database available in current context, while called QtScript&apos;s %1 command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../plugins/scriptingqtdbproxy.cpp" line="65"/>
+ <source>Error from %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlHistoryModel</name>
+ <message>
+ <location filename="../sqlhistorymodel.cpp" line="30"/>
+ <source>Database</source>
+ <comment>sql history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlhistorymodel.cpp" line="32"/>
+ <source>Execution date</source>
+ <comment>sql history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlhistorymodel.cpp" line="34"/>
+ <source>Time spent</source>
+ <comment>sql history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlhistorymodel.cpp" line="36"/>
+ <source>Rows affected</source>
+ <comment>sql history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqlhistorymodel.cpp" line="38"/>
+ <source>SQL</source>
+ <comment>sql history header</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>UpdateManager</name>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="131"/>
+ <source>An error occurred while checking for updates: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="144"/>
+ <source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="175"/>
+ <source>An error occurred while reading updates metadata: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="188"/>
+ <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See &lt;a href=&quot;%1&quot;&gt;User Manual&lt;/a&gt; for details.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="195"/>
+ <source>Could not create temporary directory for downloading the update. Updating aborted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="206"/>
+ <source>There was no updates to download. Updating aborted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="241"/>
+ <source>Downloading: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="247"/>
+ <source>Could not determinate file name from update URL: %1. Updating aborted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="255"/>
+ <source>Failed to open file &apos;%1&apos; for writting: %2. Updating aborted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="276"/>
+ <source>Installing updates.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="287"/>
+ <source>Could not copy current application directory into %1 directory.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="340"/>
+ <source>Could not create directory %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="348"/>
+ <source>Could not rename directory %1 to %2.
+Details: %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="352"/>
+ <source>Cannot not rename directory %1 to %2.
+Details: %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="360"/>
+ <source>Could not move directory %1 to %2 and also failed to restore original directory, so the original SQLiteStudio directory is now located at: %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="365"/>
+ <source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="444"/>
+ <source>Could not unpack component %1 into %2 directory.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="555"/>
+ <source>Could not find permissions elevator application to run update as a root. Looked for: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="562"/>
+ <source>Could not execute final updating steps as root: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <location filename="../services/updatemanager.cpp" line="613"/>
+ <location filename="../services/updatemanager.cpp" line="623"/>
+ <source>Could not execute final updating steps as admin: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="591"/>
+ <source>Cannot create temporary directory for updater.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="600"/>
+ <source>Cannot create updater script file.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="633"/>
+ <source>Updating canceled.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="661"/>
+ <source>Could not execute final updating steps as administrator.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="673"/>
+ <source>Could not execute final updating steps as administrator. Updater startup timed out.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="679"/>
+ <source>Could not execute final updating steps as administrator. Updater operation timed out.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="696"/>
+ <source>Could not clean up temporary directory %1. You can delete it manually at any time.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="732"/>
+ <source>Could not run new version for continuing update.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="817"/>
+ <source>Package not in tar.gz format, cannot install: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="824"/>
+ <source>Package %1 cannot be installed, because cannot move it to directory: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="833"/>
+ <source>Package %1 cannot be installed, because cannot unpack it: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="852"/>
+ <source>Package not in zip format, cannot install: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="859"/>
+ <source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="873"/>
+ <source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="923"/>
+ <location filename="../services/updatemanager.cpp" line="932"/>
+ <source>Could not rename directory %1 to %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="945"/>
+ <source>Could not delete directory %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="961"/>
+ <source>Error executing update command: %1
+Error message: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../services/updatemanager.cpp" line="1028"/>
+ <source>An error occurred while downloading updates: %1. Updating aborted.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts
index 85cfca2..a89ea4d 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.1" language="pl_PL">
+<TS version="2.0" language="pl_PL">
<context>
<name>AbstractDb</name>
<message>
@@ -748,7 +748,7 @@ Tabele, indeksy, wyzwalacze i widoki skopiowane do bazy danych %3 pozostaną na
<message>
<location filename="../plugins/populatesequence.ui" line="56"/>
<source>Step:</source>
- <translation>Wartość końcowa:</translation>
+ <translation>Krok:</translation>
</message>
</context>
<context>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
index 64f66a5..bb040e6 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts
@@ -769,7 +769,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
@@ -844,8 +844,8 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -900,12 +900,12 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -952,39 +952,39 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<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="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<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="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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"/>
+ <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>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="484"/>
+ <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>
<translation type="unfinished"></translation>
@@ -1024,12 +1024,12 @@ The view will remain as it is.</source>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
index 8bbab69..83ba986 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_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>AbstractDb</name>
<message>
@@ -771,7 +771,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation>Невозможно открыть базу данных: %1</translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation>Результирующая выборка устарела или ни одна строка не доступна.</translation>
@@ -846,8 +846,8 @@ Error details: %2</source>
<translation>Переполнение стека анализатора</translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
<translation>Синтаксическая ошибка</translation>
</message>
@@ -902,12 +902,12 @@ Error details: %2</source>
<translation>Заполняющий код не может быть пустым.</translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
<translation>Невозможно определить источник данных для столбца: %1</translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
<translation>Невозможно инициализировать файл конфигурации. Любые изменения конфигурации и история запросов будут утеряны после перезапуска приложения. Попытки инициализации файла предпринимались в следующих местах: %1.</translation>
</message>
@@ -954,39 +954,39 @@ Error details: %2</source>
<translation>Заполнение таблиц</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<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="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source>
<translation>Возникла проблема при обработке триггера %1. Впоследствии он не будет полностью обновлён и потребует вашего внимания.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
<translation>Невозможно обновить триггер %1 в соответствии с модификацией таблицы %2.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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"/>
+ <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>
<translation>Все столбцы, затронутые в триггере %1, удалены. Триггер не будет воссоздан после модификации таблицы.</translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="484"/>
+ <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>
<translation>Невозможно обновить представление %1 в соответствии с модификациями таблицы %2.
@@ -1031,12 +1031,12 @@ The view will remain as it is.</source>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation>Возникла ошибка при выполнении запроса count(*), поэтому разбивка данных по страницам отключена. Детали ошибки из базы данных: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation>SQLiteStudio не удалось извлечь метаданные из запроса. Результаты нельзя будет редактировать.</translation>
</message>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
index e953940..1c29a80 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="sk_SK">
+<TS version="2.0" language="sk_SK">
<context>
<name>AbstractDb</name>
<message>
@@ -149,7 +149,7 @@
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="138"/>
<source>Database %1 could not be updated, because of an error: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Databáza %1 nemôže byť aktualizovaná kvôli chybe: %2</translation>
</message>
<message>
<location filename="../services/impl/dbmanagerimpl.cpp" line="312"/>
@@ -446,7 +446,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<location filename="../importworker.cpp" line="163"/>
<location filename="../importworker.cpp" line="170"/>
<source>Error while importing data: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Vyskytla sa chyba počas importu dát: %1</translation>
</message>
<message>
<location filename="../importworker.cpp" line="126"/>
@@ -752,7 +752,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<message>
<location filename="../populateworker.cpp" line="63"/>
<source>Error while populating table: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Vyskytla sa chyba počas napĺňania tabuľky: %1</translation>
</message>
<message>
<location filename="../populateworker.cpp" line="74"/>
@@ -769,7 +769,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
@@ -844,8 +844,8 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
<translation>Chyba syntaxe</translation>
</message>
@@ -900,12 +900,12 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -952,39 +952,39 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<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="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<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="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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"/>
+ <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>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="484"/>
+ <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>
<translation type="unfinished"></translation>
@@ -1024,12 +1024,12 @@ The view will remain as it is.</source>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Vyskytla sa chyba počas vykonávania dotazu count(*), dôsledkom čoho bolo zablokované stránkovanie. Detail chyby: %1</translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
@@ -1086,7 +1086,7 @@ The view will remain as it is.</source>
<message>
<location filename="../services/updatemanager.cpp" line="131"/>
<source>An error occurred while checking for updates: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Vyskytla sa chyba počas kontroly aktualizácii: %1.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="144"/>
@@ -1116,7 +1116,7 @@ The view will remain as it is.</source>
<message>
<location filename="../services/updatemanager.cpp" line="241"/>
<source>Downloading: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Sťahujem: %1</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="247"/>
@@ -1131,7 +1131,7 @@ The view will remain as it is.</source>
<message>
<location filename="../services/updatemanager.cpp" line="276"/>
<source>Installing updates.</source>
- <translation type="unfinished"></translation>
+ <translation>Inštalujem aktualizácie.</translation>
</message>
<message>
<location filename="../services/updatemanager.cpp" line="287"/>
@@ -1278,7 +1278,7 @@ Error message: %2</source>
<message>
<location filename="../services/updatemanager.cpp" line="1028"/>
<source>An error occurred while downloading updates: %1. Updating aborted.</source>
- <translation type="unfinished"></translation>
+ <translation>Vyskytla sa chyba počas sťahovani aktualizácií:%1. Aktualizácia zrušená.</translation>
</message>
</context>
</TS>
diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
index 32cf3b8..448558d 100644
--- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
+++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts
@@ -20,7 +20,7 @@
<message>
<location filename="../services/bugreporter.cpp" line="46"/>
<source>Invalid login or password</source>
- <translation type="unfinished"></translation>
+ <translation>用户名或密码错误</translation>
</message>
</context>
<context>
@@ -769,7 +769,7 @@ Tables, indexes, triggers and views copied to database %3 will remain.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/abstractdb2.h" line="803"/>
+ <location filename="../db/abstractdb2.h" line="805"/>
<location filename="../db/abstractdb3.h" line="1100"/>
<source>Result set expired or no row available.</source>
<translation type="unfinished"></translation>
@@ -844,8 +844,8 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../parser/sqlite2_parse.cpp" line="4461"/>
- <location filename="../parser/sqlite3_parse.cpp" line="5080"/>
+ <location filename="../parser/sqlite2_parse.cpp" line="4465"/>
+ <location filename="../parser/sqlite3_parse.cpp" line="5084"/>
<source>Syntax error</source>
<translation type="unfinished"></translation>
</message>
@@ -900,12 +900,12 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../selectresolver.cpp" line="307"/>
+ <location filename="../selectresolver.cpp" line="317"/>
<source>Could not resolve data source for column: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../services/impl/configimpl.cpp" line="617"/>
+ <location filename="../services/impl/configimpl.cpp" line="612"/>
<source>Could not initialize configuration file. Any configuration changes and queries history will be lost after application restart. Tried to initialize the file at following localizations: %1.</source>
<translation type="unfinished"></translation>
</message>
@@ -952,39 +952,39 @@ Error details: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="108"/>
+ <location filename="../tablemodifier.cpp" line="107"/>
<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="380"/>
+ <location filename="../tablemodifier.cpp" line="379"/>
<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="419"/>
+ <location filename="../tablemodifier.cpp" line="418"/>
<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="466"/>
+ <location filename="../tablemodifier.cpp" line="465"/>
<source>Cannot not update trigger %1 according to table %2 modification.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="587"/>
- <location filename="../tablemodifier.cpp" line="611"/>
- <location filename="../tablemodifier.cpp" line="630"/>
+ <location filename="../tablemodifier.cpp" line="645"/>
+ <location filename="../tablemodifier.cpp" line="669"/>
+ <location filename="../tablemodifier.cpp" line="688"/>
<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"/>
+ <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>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../tablemodifier.cpp" line="484"/>
+ <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>
<translation type="unfinished"></translation>
@@ -1024,12 +1024,12 @@ The view will remain as it is.</source>
</message>
<message>
<location filename="../db/queryexecutor.cpp" line="264"/>
- <location filename="../db/queryexecutor.cpp" line="538"/>
+ <location filename="../db/queryexecutor.cpp" line="548"/>
<source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../db/queryexecutor.cpp" line="449"/>
+ <location filename="../db/queryexecutor.cpp" line="459"/>
<source>SQLiteStudio was unable to extract metadata from the query. Results won&apos;t be editable.</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/create_source_dist.sh b/SQLiteStudio3/create_source_dist.sh
index 646e493..7c56e94 100755
--- a/SQLiteStudio3/create_source_dist.sh
+++ b/SQLiteStudio3/create_source_dist.sh
@@ -1,11 +1,16 @@
#!/bin/sh
+path=trunk
+if [ "$1" != "" ]; then
+ path=branches/$1
+fi
+
OLDDIR=`pwd`
TEMP=`mktemp -d`
cd $TEMP
-svn co svn://sqlitestudio.pl/sqlitestudio3/trunk sqlitestudio
+svn co svn://sqlitestudio.pl/sqlitestudio3/$path sqlitestudio
cd sqlitestudio
rm -rf .svn
diff --git a/SQLiteStudio3/create_win32_portable.bat b/SQLiteStudio3/create_win32_portable.bat
index c688dc0..3dfa147 100644
--- a/SQLiteStudio3/create_win32_portable.bat
+++ b/SQLiteStudio3/create_win32_portable.bat
@@ -1,7 +1,7 @@
@echo off
set QT_DIR=c:\Qt\5.4\mingw491_32\bin
-set ZIP="c:\Program Files (x86)\7-Zip\7z.exe"
+set ZIP="c:\Program Files\7-Zip\7z.exe"
set QMAKE=%QT_DIR%\qmake.exe
set OLDDIR=%CD%
diff --git a/SQLiteStudio3/guiSQLiteStudio/common/tablewidget.cpp b/SQLiteStudio3/guiSQLiteStudio/common/tablewidget.cpp
index c9e1446..847f4c5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/common/tablewidget.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/common/tablewidget.cpp
@@ -29,6 +29,7 @@ void TableWidget::copy()
if (!item(i, 0)->isSelected())
continue;
+ cols.clear();
for (int c = 1; c <= 2; c++)
{
if (cellWidget(i, c))
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
index 6741d08..920ddda 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.cpp
@@ -3,11 +3,15 @@
#include "sqlqueryitem.h"
#include "common/unused.h"
#include "services/notifymanager.h"
+#include "sqlqueryview.h"
#include "uiconfig.h"
+#include "common/utils_sql.h"
+#include <QHeaderView>
#include <QPainter>
#include <QEvent>
#include <QLineEdit>
#include <QDebug>
+#include <QComboBox>
SqlQueryItemDelegate::SqlQueryItemDelegate(QObject *parent) :
QStyledItemDelegate(parent)
@@ -51,6 +55,9 @@ QWidget* SqlQueryItemDelegate::createEditor(QWidget* parent, const QStyleOptionV
if (item->isLimitedValue())
item->loadFullData();
+ if (!item->getColumn()->getFkConstraints().isEmpty())
+ return getFkEditor(item, parent);
+
return getEditor(item->getValue().userType(), parent);
}
@@ -64,6 +71,55 @@ QString SqlQueryItemDelegate::displayText(const QVariant& value, const QLocale&
return QStyledItemDelegate::displayText(value, locale);
}
+void SqlQueryItemDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const
+{
+ QComboBox* cb = dynamic_cast<QComboBox*>(editor);
+ if (!cb) {
+ QStyledItemDelegate::setEditorData(editor, index);
+ return;
+ }
+
+ setEditorDataForFk(cb, index);
+}
+
+void SqlQueryItemDelegate::setEditorDataForFk(QComboBox* cb, const QModelIndex& index) const
+{
+ const SqlQueryModel* queryModel = dynamic_cast<const SqlQueryModel*>(index.model());
+ SqlQueryItem* item = queryModel->itemFromIndex(index);
+ QVariant modelData = item->getValue();
+ int idx = cb->findData(modelData, Qt::UserRole);
+ if (idx == -1 )
+ {
+ cb->addItem(modelData.toString(), modelData);
+ idx = cb->count() - 1;
+
+ QTableView* view = dynamic_cast<QTableView*>(cb->view());
+ view->resizeColumnsToContents();
+ view->setMinimumWidth(view->horizontalHeader()->length());
+ }
+ cb->setCurrentIndex(idx);
+}
+
+void SqlQueryItemDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const
+{
+ QComboBox* cb = dynamic_cast<QComboBox*>(editor);
+ if (!cb) {
+ QStyledItemDelegate::setModelData(editor, model, index);
+ return;
+ }
+
+ setModelDataForFk(cb, model, index);
+}
+
+void SqlQueryItemDelegate::setModelDataForFk(QComboBox* cb, QAbstractItemModel* model, const QModelIndex& index) const
+{
+ QVariant comboData = cb->currentData();
+ if (cb->currentText() != cb->itemText(cb->currentIndex()))
+ comboData = cb->currentText();
+
+ model->setData(index, comboData);
+}
+
SqlQueryItem* SqlQueryItemDelegate::getItem(const QModelIndex &index) const
{
const SqlQueryModel* queryModel = dynamic_cast<const SqlQueryModel*>(index.model());
@@ -78,3 +134,120 @@ QWidget* SqlQueryItemDelegate::getEditor(int type, QWidget* parent) const
return editor;
}
+
+QString SqlQueryItemDelegate::getSqlForFkEditor(SqlQueryItem* item) const
+{
+ QString sql = QStringLiteral("SELECT %1 FROM %2%3");
+ QStringList selCols;
+ QStringList fkTables;
+ QStringList fkCols;
+ Db* db = item->getModel()->getDb();
+ Dialect dialect = db->getDialect();
+
+ QList<SqlQueryModelColumn::ConstraintFk*> fkList = item->getColumn()->getFkConstraints();
+ int i = 0;
+ QString src;
+ QString col;
+ for (SqlQueryModelColumn::ConstraintFk* fk : fkList)
+ {
+ col = wrapObjIfNeeded(fk->foreignColumn, dialect);
+ src = wrapObjIfNeeded(fk->foreignTable, dialect);
+ if (i == 0)
+ {
+ selCols << QString("%1.%2 AS %3").arg(src, col,
+ wrapObjIfNeeded(item->getColumn()->column, dialect));
+ }
+
+ selCols << src + ".*";
+ fkCols << col;
+ fkTables << src;
+
+ i++;
+ }
+
+ QStringList conditions;
+ QString firstSrc = wrapObjIfNeeded(fkTables.first(), dialect);
+ QString firstCol = wrapObjIfNeeded(fkCols.first(), dialect);
+ for (i = 1; i < fkTables.size(); i++)
+ {
+ src = wrapObjIfNeeded(fkTables[i], dialect);
+ col = wrapObjIfNeeded(fkCols[i], dialect);
+ conditions << QString("%1.%2 = %3.%4").arg(firstSrc, firstCol, src, col);
+ }
+
+ QString conditionsStr;
+ if (!conditions.isEmpty()) {
+ conditionsStr = " WHERE " + conditions.join(", ");
+ }
+
+ return sql.arg(selCols.join(", "), fkTables.join(", "), conditionsStr);
+}
+
+void SqlQueryItemDelegate::copyToModel(const SqlQueryPtr& results, QStandardItemModel* model) const
+{
+ QList<SqlResultsRowPtr> rows = results->getAll();
+ int colCount = results->columnCount();
+ int rowCount = rows.size() + 1;
+
+ model->setColumnCount(colCount);
+ model->setRowCount(rowCount);
+ int colIdx = 0;
+ int rowIdx = 0;
+ for (const QString& colName : results->getColumnNames())
+ {
+ model->setHeaderData(colIdx, Qt::Horizontal, colName);
+
+ QStandardItem *item = new QStandardItem();
+ QFont font = item->font();
+ font.setItalic(true);
+ item->setFont(font);
+ item->setForeground(QBrush(CFG_UI.Colors.DataNullFg.get()));
+ item->setData(QVariant(QVariant::String), Qt::EditRole);
+ item->setData(QVariant(QVariant::String), Qt::UserRole);
+ model->setItem(0, colIdx, item);
+ colIdx++;
+ }
+ rowIdx++;
+
+ for (const SqlResultsRowPtr& row : rows)
+ {
+ colIdx = 0;
+ for (const QVariant& val : row->valueList())
+ {
+ QStandardItem *item = new QStandardItem();
+ item->setText(val.toString());
+ item->setData(val, Qt::UserRole);
+ model->setItem(rowIdx, colIdx, item);
+ colIdx++;
+ }
+ rowIdx++;
+ }
+}
+
+QWidget* SqlQueryItemDelegate::getFkEditor(SqlQueryItem* item, QWidget* parent) const
+{
+ QString sql = getSqlForFkEditor(item);
+
+ QComboBox *cb = new QComboBox(parent);
+ cb->setEditable(true);
+ QTableView* queryView = new QTableView();
+ QStandardItemModel* model = new QStandardItemModel(queryView);
+
+ Db* db = item->getModel()->getDb();
+ SqlQueryPtr results = db->exec(sql);
+ copyToModel(results, model);
+
+ cb->setModel(model);
+ cb->setView(queryView);
+ cb->setModelColumn(0);
+
+ queryView->verticalHeader()->setVisible(false);
+ queryView->horizontalHeader()->setVisible(true);
+ queryView->setSelectionMode(QAbstractItemView::SingleSelection);
+ queryView->setSelectionBehavior(QAbstractItemView::SelectRows);
+ queryView->resizeColumnsToContents();
+ queryView->resizeRowsToContents();
+ queryView->setMinimumWidth(queryView->horizontalHeader()->length());
+
+ return cb;
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
index 8b894ed..d79ebaf 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryitemdelegate.h
@@ -2,9 +2,12 @@
#define SQLQUERYITEMDELEGATE_H
#include "guiSQLiteStudio_global.h"
+#include "db/sqlquery.h"
#include <QStyledItemDelegate>
class SqlQueryItem;
+class QComboBox;
+class QStandardItemModel;
class GUI_API_EXPORT SqlQueryItemDelegate : public QStyledItemDelegate
{
@@ -15,10 +18,17 @@ class GUI_API_EXPORT SqlQueryItemDelegate : public QStyledItemDelegate
void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const;
QWidget* createEditor(QWidget* parent, const QStyleOptionViewItem& option, const QModelIndex& index) const;
QString displayText(const QVariant & value, const QLocale & locale) const;
+ void setEditorData(QWidget * editor, const QModelIndex & index) const;
+ void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const;
private:
SqlQueryItem* getItem(const QModelIndex &index) const;
QWidget* getEditor(int type, QWidget* parent) const;
+ QWidget* getFkEditor(SqlQueryItem* item, QWidget* parent) const;
+ void setEditorDataForFk(QComboBox* cb, const QModelIndex& index) const;
+ void setModelDataForFk(QComboBox* editor, QAbstractItemModel* model, const QModelIndex& index) const;
+ QString getSqlForFkEditor(SqlQueryItem* item) const;
+ void copyToModel(const SqlQueryPtr& results, QStandardItemModel* model) const;
};
#endif // SQLQUERYITEMDELEGATE_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
index bb3a711..6717c14 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.cpp
@@ -68,6 +68,7 @@ void SqlQueryModel::executeQuery()
queryExecutor->setSkipRowCounting(false);
queryExecutor->setSortOrder(sortOrder);
queryExecutor->setPage(0);
+ queryExecutor->setForceSimpleMode(simpleExecutionMode);
reloading = false;
executeQueryInternal();
@@ -1439,6 +1440,16 @@ int SqlQueryModel::getInsertRowIndex()
return row;
}
+bool SqlQueryModel::getSimpleExecutionMode() const
+{
+ return simpleExecutionMode;
+}
+
+void SqlQueryModel::setSimpleExecutionMode(bool value)
+{
+ simpleExecutionMode = value;
+}
+
void SqlQueryModel::addNewRow()
{
addNewRowInternal(getInsertRowIndex());
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
index a4e7898..f55185a 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlquerymodel.h
@@ -122,6 +122,9 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
static QList<QList<SqlQueryItem*>> groupItemsByRows(const QList<SqlQueryItem*>& items);
static QHash<AliasedTable, QList<SqlQueryItem*> > groupItemsByTable(const QList<SqlQueryItem*>& items);
+ bool getSimpleExecutionMode() const;
+ void setSimpleExecutionMode(bool value);
+
protected:
class CommitUpdateQueryBuilder : public RowIdConditionBuilder
{
@@ -263,6 +266,7 @@ class GUI_API_EXPORT SqlQueryModel : public QStandardItemModel
QString query;
bool explain = false;
+ bool simpleExecutionMode = false;
/**
* @brief reloadAvailable
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
index 23a4991..e610431 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.cpp
@@ -12,6 +12,9 @@
#include "uiconfig.h"
#include "dialogs/sortdialog.h"
#include "services/notifymanager.h"
+#include "windows/editorwindow.h"
+#include "mainwindow.h"
+#include "common/utils_sql.h"
#include <QHeaderView>
#include <QPushButton>
#include <QProgressBar>
@@ -47,6 +50,7 @@ void SqlQueryView::init()
setContextMenuPolicy(Qt::CustomContextMenu);
contextMenu = new QMenu(this);
+ referencedTablesMenu = new QMenu(tr("Go to referenced row in..."), contextMenu);
connect(this, &QWidget::customContextMenuRequested, this, &SqlQueryView::customContextMenuRequested);
connect(CFG_UI.Fonts.DataView, SIGNAL(changed(QVariant)), this, SLOT(updateFont()));
@@ -137,6 +141,9 @@ void SqlQueryView::setupActionsForMenu(SqlQueryItem* currentItem, const QList<Sq
contextMenu->addSeparator();
}
+ if (selectedItems.size() == 1 && selectedItems.first() == currentItem)
+ addFkActionsToContextMenu(currentItem);
+
if (selCount > 0)
{
contextMenu->addAction(actionMap[COPY]);
@@ -197,7 +204,8 @@ SqlQueryModel* SqlQueryView::getModel()
void SqlQueryView::setModel(QAbstractItemModel* model)
{
QTableView::setModel(model);
- connect(widgetCover, SIGNAL(cancelClicked()), getModel(), SLOT(interrupt()));
+ SqlQueryModel* m = getModel();
+ connect(widgetCover, SIGNAL(cancelClicked()), m, SLOT(interrupt()));
connect(getModel(), &SqlQueryModel::commitStatusChanged, this, &SqlQueryView::updateCommitRollbackActions);
connect(getModel(), &SqlQueryModel::sortingUpdated, this, &SqlQueryView::sortingUpdated);
}
@@ -301,6 +309,59 @@ void SqlQueryView::paste(const QList<QList<QVariant> >& data)
}
}
+void SqlQueryView::addFkActionsToContextMenu(SqlQueryItem* currentItem)
+{
+ QList<SqlQueryModelColumn::ConstraintFk*> fkList = currentItem->getColumn()->getFkConstraints();
+ if (fkList.isEmpty())
+ return;
+
+ QAction* act;
+ if (fkList.size() == 1)
+ {
+ SqlQueryModelColumn::ConstraintFk* fk = fkList.first();
+ act = contextMenu->addAction(tr("Go to referenced row in table '%1'").arg(fk->foreignTable));
+ connect(act, &QAction::triggered, [this, fk, currentItem](bool) {
+ goToReferencedRow(fk->foreignTable, fk->foreignColumn, currentItem->getValue());
+ });
+ contextMenu->addSeparator();
+ return;
+ }
+
+ referencedTablesMenu->clear();
+ contextMenu->addMenu(referencedTablesMenu);
+ for (SqlQueryModelColumn::ConstraintFk* fk : fkList)
+ {
+ act = referencedTablesMenu->addAction(tr("table '%1'").arg(fk->foreignTable));
+ connect(act, &QAction::triggered, [this, fk, currentItem](bool) {
+ goToReferencedRow(fk->foreignTable, fk->foreignColumn, currentItem->getValue());
+ });
+ }
+ contextMenu->addSeparator();
+}
+
+void SqlQueryView::goToReferencedRow(const QString& table, const QString& column, const QVariant& value)
+{
+ Db* db = getModel()->getDb();
+ if (!db || !db->isValid())
+ return;
+
+ EditorWindow* win = MAINWINDOW->openSqlEditor();
+ if (!win->setCurrentDb(db))
+ {
+ qCritical() << "Created EditorWindow had not got requested database:" << db->getName();
+ win->close();
+ return;
+ }
+
+ static QString sql = QStringLiteral("SELECT * FROM %1 WHERE %2 = %3");
+
+ QString valueStr = wrapValueIfNeeded(value.toString());
+
+ win->getMdiWindow()->rename(tr("Referenced row (%1)").arg(table));
+ win->setContents(sql.arg(table, column, valueStr));
+ win->execute();
+}
+
void SqlQueryView::updateCommitRollbackActions(bool enabled)
{
actionMap[COMMIT]->setEnabled(enabled);
@@ -468,14 +529,22 @@ void SqlQueryView::pasteAs()
void SqlQueryView::setNull()
{
- foreach (SqlQueryItem* selItem, getSelectedItems())
+ for (SqlQueryItem* selItem : getSelectedItems()) {
+ if (selItem->getColumn()->editionForbiddenReason.size() > 0)
+ continue;
+
selItem->setValue(QVariant(QString::null), false, false);
+ }
}
void SqlQueryView::erase()
{
- foreach (SqlQueryItem* selItem, getSelectedItems())
+ for (SqlQueryItem* selItem : getSelectedItems()) {
+ if (selItem->getColumn()->editionForbiddenReason.size() > 0)
+ continue;
+
selItem->setValue("", false, false);
+ }
}
void SqlQueryView::commit()
diff --git a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h
index f409559..a1c84bb 100644
--- a/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h
+++ b/SQLiteStudio3/guiSQLiteStudio/datagrid/sqlqueryview.h
@@ -81,12 +81,15 @@ class GUI_API_EXPORT SqlQueryView : public QTableView, public ExtActionContainer
void setupHeaderMenu();
bool editInEditorIfNecessary(SqlQueryItem* item);
void paste(const QList<QList<QVariant>>& data);
+ void addFkActionsToContextMenu(SqlQueryItem* currentItem);
+ void goToReferencedRow(const QString& table, const QString& column, const QVariant& value);
constexpr static const char* mimeDataId = "application/x-sqlitestudio-data-view-data";
SqlQueryItemDelegate* itemDelegate = nullptr;
QMenu* contextMenu = nullptr;
QMenu* headerContextMenu = nullptr;
+ QMenu* referencedTablesMenu = nullptr;
WidgetCover* widgetCover = nullptr;
QPushButton* cancelButton = nullptr;
QProgressBar* busyBar = nullptr;
diff --git a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
index 3010dca..ff07990 100644
--- a/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
+++ b/SQLiteStudio3/guiSQLiteStudio/guiSQLiteStudio.pro
@@ -31,7 +31,8 @@ QMAKE_CXXFLAGS += -pedantic
DEFINES += GUISQLITESTUDIO_LIBRARY
-TRANSLATIONS += translations/guiSQLiteStudio_zh_CN.ts \
+TRANSLATIONS += translations/guiSQLiteStudio_it.ts \
+ translations/guiSQLiteStudio_zh_CN.ts \
translations/guiSQLiteStudio_sk.ts \
translations/guiSQLiteStudio_de.ts \
translations/guiSQLiteStudio_ru.ts \
@@ -405,3 +406,4 @@ DISTFILES += \
+
diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
index 4691dda..fb5c7b5 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.cpp
@@ -156,6 +156,8 @@ void MainWindow::init()
#endif
connect(CFG_CORE.General.Language, SIGNAL(changed(QVariant)), this, SLOT(notifyAboutLanguageChange()));
+
+ fixFonts();
}
void MainWindow::cleanUp()
@@ -843,6 +845,17 @@ BugReportHistoryWindow* MainWindow::openReportHistory()
return openMdiWindow<BugReportHistoryWindow>();
}
+void MainWindow::fixFonts()
+{
+ CfgTypedEntry<QFont>* typed = nullptr;
+ for (CfgEntry* cfg : CFG_UI.Fonts.getEntries())
+ {
+ typed = dynamic_cast<CfgTypedEntry<QFont>*>(cfg);
+ if (typed->get().pointSize() == 0)
+ cfg->set(cfg->getDefultValue());
+ }
+}
+
bool MainWindow::confirmQuit(const QList<Committable*>& instances)
{
QuitConfirmDialog dialog(MAINWINDOW);
diff --git a/SQLiteStudio3/guiSQLiteStudio/mainwindow.h b/SQLiteStudio3/guiSQLiteStudio/mainwindow.h
index 46c729b..10d7a9d 100644
--- a/SQLiteStudio3/guiSQLiteStudio/mainwindow.h
+++ b/SQLiteStudio3/guiSQLiteStudio/mainwindow.h
@@ -140,6 +140,7 @@ class GUI_API_EXPORT MainWindow : public QMainWindow, public ExtActionContainer
FunctionsEditor* openFunctionEditor();
CollationsEditor* openCollationEditor();
BugReportHistoryWindow* openReportHistory();
+ void fixFonts();
template <class T>
T* openMdiWindow();
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
index 076894a..4b0628b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.cpp
@@ -40,6 +40,9 @@ SqlEditor::SqlEditor(QWidget *parent) :
SqlEditor::~SqlEditor()
{
+ if (objectsInNamedDbFuture.isRunning())
+ objectsInNamedDbFuture.waitForFinished();
+
if (queryParser)
{
delete queryParser;
@@ -515,7 +518,7 @@ void SqlEditor::refreshValidObjects()
if (!db || !db->isValid())
return;
- QtConcurrent::run([this]()
+ objectsInNamedDbFuture = QtConcurrent::run([this]()
{
QMutexLocker lock(&objectsInNamedDbMutex);
objectsInNamedDb.clear();
@@ -526,7 +529,7 @@ void SqlEditor::refreshValidObjects()
QStringList objects;
foreach (const QString& dbName, databases)
{
- objects = resolver.getAllObjects();
+ objects = resolver.getAllObjects(dbName);
objectsInNamedDb[dbName] << objects;
}
});
diff --git a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h
index f465dcf..28fbb39 100644
--- a/SQLiteStudio3/guiSQLiteStudio/sqleditor.h
+++ b/SQLiteStudio3/guiSQLiteStudio/sqleditor.h
@@ -10,6 +10,7 @@
#include <QFont>
#include <QHash>
#include <QMutex>
+#include <QFuture>
class CompleterWindow;
class QTimer;
@@ -234,6 +235,7 @@ class GUI_API_EXPORT SqlEditor : public QPlainTextEdit, public ExtActionContaine
bool virtualSqlCompleteSemicolon = false;
QString createTriggerTable;
QString loadedFile;
+ QFuture<void> objectsInNamedDbFuture;
static const int autoCompleterDelay = 300;
static const int queryParserDelay = 500;
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
index 01b2d5f..f3822d6 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_de.ts
@@ -1,92 +1,94 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="de_DE">
+<TS version="2.0" language="de_DE">
<context>
<name>AboutDialog</name>
<message>
<location filename="../dialogs/aboutdialog.ui" line="14"/>
<source>About SQLiteStudio and licenses</source>
- <translation type="unfinished"></translation>
+ <translation>Über SQLiteStudio und deren Lizenzen</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="24"/>
<source>About</source>
- <translation type="unfinished"></translation>
+ <translation>Über SQLiteStudio</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="30"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;SQLiteStudio v%1&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Free, open-source, cross-platform SQLite database manager.&lt;br/&gt;&lt;a href=&quot;http://sqlitestudio.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://sqlitestudio.pl&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;%2&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Author and active maintainer:&lt;br/&gt;SalSoft (&lt;a href=&quot;http://salsoft.com.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://salsoft.com.pl&lt;/span&gt;&lt;/a&gt;)&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;SQLiteStudio v%1&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Freier, open-source, multiplattformfähiger SQLite Datenbankmanager.&lt;br/&gt;&lt;a href=&quot;http://sqlitestudio.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://sqlitestudio.pl&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;%2&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Autor und aktiver Verantwortlicher:&lt;br/&gt;SalSoft (&lt;a href=&quot;http://salsoft.com.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://salsoft.com.pl&lt;/span&gt;&lt;/a&gt;)&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="41"/>
<source>Licenses</source>
- <translation type="unfinished"></translation>
+ <translation>Lizenzen</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="55"/>
<source>Environment</source>
- <translation type="unfinished"></translation>
+ <translation>Programmumgebung</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="61"/>
<source>Icon directories</source>
- <translation type="unfinished"></translation>
+ <translation>Icon Verzeichnisse</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="81"/>
<source>Form directories</source>
- <translation type="unfinished"></translation>
+ <translation>Formular Verzeichnisse</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="101"/>
<source>Plugin directories</source>
- <translation type="unfinished"></translation>
+ <translation>Plugin Verzeichnisse</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="121"/>
<source>Application directory</source>
- <translation type="unfinished"></translation>
+ <translation>Programmverzeichnis</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="172"/>
<source>SQLite 3 version:</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite 3 Version:</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="111"/>
<source>Configuration directory</source>
- <translation type="unfinished"></translation>
+ <translation>Konfigurationsverzeichnis</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.ui" line="148"/>
<source>Qt version:</source>
- <translation type="unfinished"></translation>
+ <translation>Qt Version:</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="39"/>
<source>Portable distribution.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Sollte hier vermutlich &quot;Portable Version&quot; heißen?</translatorcomment>
+ <translation>Portable Version</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="42"/>
<source>MacOS X application boundle distribution.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Das müsste mal genauer übersetzt werden.</translatorcomment>
+ <translation>MacOS X Programmbundle-Version</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="45"/>
<source>Operating system managed distribution.</source>
- <translation type="unfinished"></translation>
+ <translation>Betriebssystemverwaltete Version.</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="89"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Kopie</translation>
</message>
<message>
<location filename="../dialogs/aboutdialog.cpp" line="102"/>
<source>&lt;h3&gt;Table of contents:&lt;/h3&gt;&lt;ol&gt;%2&lt;/ol&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;h3&gt;Inhaltsverzeichnis:&lt;/h3&gt;&lt;ol&gt;%2&lt;/ol&gt;</translation>
</message>
</context>
<context>
@@ -94,156 +96,156 @@
<message>
<location filename="../dialogs/bugdialog.ui" line="14"/>
<source>Bugs and ideas</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler und Anregungen</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="20"/>
<source>Reporter</source>
- <translation type="unfinished"></translation>
+ <translation>Gemeldet von</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="36"/>
<source>E-mail address</source>
- <translation type="unfinished"></translation>
+ <translation>Ihre E-mail Adresse oder Ihr &apos;bugtracker&apos; Login</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>Anmelden</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="68"/>
<source>Short description</source>
- <translation type="unfinished"></translation>
+ <translation>Kurzbeschreibung</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="80"/>
<source>Detailed description</source>
- <translation type="unfinished"></translation>
+ <translation>Ausführliche Fehlerbeschreibung</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="92"/>
<source>Show more details</source>
- <translation type="unfinished"></translation>
+ <translation>Mehr Details</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="119"/>
<source>SQLiteStudio version</source>
- <translation type="unfinished"></translation>
+ <translation>SQLiteStudio Version</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="131"/>
<source>Operating system</source>
- <translation type="unfinished"></translation>
+ <translation>Betriebssystem</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="143"/>
<source>Loaded plugins</source>
- <translation type="unfinished"></translation>
+ <translation>Geladene Plugins</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="39"/>
<source>Send</source>
- <translation type="unfinished"></translation>
+ <translation>Absenden</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="66"/>
<source>You can see all your reported bugs and ideas by selecting menu &apos;%1&apos; and then &apos;%2&apos;.</source>
- <translation type="unfinished"></translation>
+ <translation>Sie können Ihre gemeldeten Fehler und Anregungen sehen, wenn Sie im Menü &apos;%1&apos; den Eintrag &apos;%2&apos; auswählen.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="74"/>
<source>A bug report sent successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>Ihr Fehlerbericht wurde erfolgreich versendet.</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>Beim Absenden des Fehlerberichts ist ein Fehler aufgetreten: %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>Sie können versuchen den Bericht erneut abzusenden. Ihr eingegebener Text wird nach einem Fehler wie diesem wieder hergestellt.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="88"/>
<source>An idea proposal sent successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>Ihre Anregung wurde erfolgreich versendet.</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>Beim Absenden der Anregung ist ein Fehler aufgetreten: %1 %2</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="105"/>
<source>A bug report</source>
- <translation type="unfinished"></translation>
+ <translation>Fehlerbericht erfassen</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="106"/>
<source>Describe problem in few words</source>
- <translation type="unfinished"></translation>
+ <translation>Beschreiben Sie das Problem mit wenigen Worten</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="107"/>
<source>Describe problem and how to reproduce it</source>
- <translation type="unfinished"></translation>
+ <translation>Beschreiben Sie das Problem hier genauer und die Schritte, um es zu reproduzieren</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="111"/>
<source>A new feature idea</source>
- <translation type="unfinished"></translation>
+ <translation>Anregung zu einer neuen Funktion erfassen</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="112"/>
<source>A title for your idea</source>
- <translation type="unfinished"></translation>
+ <translation>Ein kurzer Titel für ihre Anregung</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="113"/>
<source>Describe your idea in more details</source>
- <translation type="unfinished"></translation>
+ <translation>Beschreiben Sie hier Ihre Anregung ausführlich</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>Versenden als nicht registrierter Benutzer mittels E-mail Adresse</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="127"/>
<source>Reporting as a registered user.</source>
- <translation type="unfinished"></translation>
+ <translation>Versenden als registrierter Benutzer</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="131"/>
<source>Log out</source>
- <translation type="unfinished"></translation>
+ <translation>Abmelden</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 &apos;help&apos; button on the right side.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Angabe Ihrer echten E-mail Adresse ermöglicht es uns Sie bzgl. Ihres Berichts zu kontaktieren. Erfahren Sie mehr dazu und klicken Sie den &apos;Hilfe&apos; Knopf auf der rechtehn Seite.</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>Geben Sie Ihre gültige E-mail Adresse oder Ihre Anmeldedaten an.</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>Eine Kurzbeschreibung benötigt mindestens 10 Zeichen, maximal jedoch 100 Zeichen. Eine ausführlichere Beschreibung kann in dem Feld unten erfasst werden.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="151"/>
<source>Long description requires at least 30 characters.</source>
- <translation type="unfinished"></translation>
+ <translation>Eine ausführliche Beschreibung benötigt mindestens 30 Zeichen.</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>Titel</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>Gemeldet am</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>Berichtsverlauf</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="50"/>
<source>Clear reports history</source>
- <translation type="unfinished"></translation>
+ <translation>Lösche Berichtsverlauf</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="51"/>
<source>Delete selected entry</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Eintrag löschen</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.cpp" line="90"/>
<source>Invalid response from server.</source>
- <translation type="unfinished"></translation>
+ <translation>Ungültige Antwort vom Server</translation>
</message>
</context>
<context>
@@ -292,57 +294,58 @@
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="14"/>
<source>Log in</source>
- <translation type="unfinished"></translation>
+ <translation>Anmelden</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="20"/>
<source>Credentials</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Hier fehlt mir der Kontext!!!</translatorcomment>
+ <translation>Überprüfung</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="26"/>
<source>Login:</source>
- <translation type="unfinished"></translation>
+ <translation>Login:</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="36"/>
<source>Password:</source>
- <translation type="unfinished"></translation>
+ <translation>Passwort:</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="53"/>
<source>Validation</source>
- <translation type="unfinished"></translation>
+ <translation>Überprüfung</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="59"/>
<source>Validate</source>
- <translation type="unfinished"></translation>
+ <translation>Überprüfe</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.ui" line="73"/>
<source>Validation result message</source>
- <translation type="unfinished"></translation>
+ <translation>Ergebnis der Überprüfung</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.cpp" line="45"/>
<source>Abort</source>
- <translation type="unfinished"></translation>
+ <translation>Abbrechen</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>Ein Login Kürzel muss mindestens 2 Zeichen lang sein</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>Ein Passwort muss mindestens 5 Zeichen lang sein</translation>
</message>
<message>
<location filename="../dialogs/bugreportlogindialog.cpp" line="91"/>
<source>Valid</source>
- <translation type="unfinished"></translation>
+ <translation>Gültig</translation>
</message>
</context>
<context>
@@ -350,87 +353,87 @@
<message>
<location filename="../windows/collationseditor.ui" line="75"/>
<source>Filter collations</source>
- <translation type="unfinished"></translation>
+ <translation>Kollationen filtern</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="194"/>
<source>Collation name:</source>
- <translation type="unfinished"></translation>
+ <translation>Kollationsname:</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="204"/>
<source>Implementation language:</source>
- <translation type="unfinished"></translation>
+ <translation>Sprache</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="132"/>
<source>Databases</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbanken</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="138"/>
<source>Register in all databases</source>
- <translation type="unfinished"></translation>
+ <translation>In allen Datenbanken registrieren</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="145"/>
<source>Register in following databases:</source>
- <translation type="unfinished"></translation>
+ <translation>In den folgenden Datenbanken registrieren</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="166"/>
<source>Implementation code:</source>
- <translation type="unfinished"></translation>
+ <translation>Anweisungen</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="52"/>
<source>Collations editor</source>
- <translation type="unfinished"></translation>
+ <translation>Editor für Kollationen</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="57"/>
<source>Commit all collation changes</source>
- <translation type="unfinished"></translation>
+ <translation>Speichern aller Änderungen an Kollationen</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="58"/>
<source>Rollback all collation changes</source>
- <translation type="unfinished"></translation>
+ <translation>Zurücknehmen aller Änderungen an Kollationen</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="60"/>
<source>Create new collation</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Kollation erstellen</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="61"/>
<source>Delete selected collation</source>
- <translation type="unfinished"></translation>
+ <translation>Markierte Kollationen löschen</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="63"/>
<source>Editing collations manual</source>
- <translation type="unfinished"></translation>
+ <translation>Kollationen manuell editieren</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>Geben Sie einen eindeutigen Namen für die Kollation ein.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="291"/>
<source>Pick the implementation language.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Sprache aus.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="294"/>
<source>Enter a non-empty implementation code.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie eine eindeutige Vergleichsoperatorendefinition ein.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
<source>Collations editor window has uncommited modifications.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Editorfür Kollationen enthält nicht gespeicherte Änderungen.</translation>
</message>
</context>
<context>
@@ -438,7 +441,7 @@
<message>
<location filename="../common/colorbutton.cpp" line="29"/>
<source>Pick a color</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie eine Farbe aus.</translation>
</message>
</context>
<context>
@@ -446,22 +449,22 @@
<message>
<location filename="../constraints/columncollatepanel.ui" line="41"/>
<source>Collation name:</source>
- <translation type="unfinished"></translation>
+ <translation>Name der Kollation:</translation>
</message>
<message>
<location filename="../constraints/columncollatepanel.ui" line="73"/>
<source>Named constraint:</source>
- <translation type="unfinished"></translation>
+ <translation>Name der Bedingung:</translation>
</message>
<message>
<location filename="../constraints/columncollatepanel.cpp" line="80"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
<message>
<location filename="../constraints/columncollatepanel.cpp" line="81"/>
<source>Enter a collation name.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Kollation ein.</translation>
</message>
</context>
<context>
@@ -469,27 +472,27 @@
<message>
<location filename="../constraints/columndefaultpanel.ui" line="20"/>
<source>Default value:</source>
- <translation type="unfinished"></translation>
+ <translation>Standardwert:</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.ui" line="35"/>
<source>Named constraint:</source>
- <translation type="unfinished"></translation>
+ <translation>Benannte Bedingung:</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="39"/>
<source>Enter a default value expression.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Standardwert für den Ausdruck an</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="78"/>
<source>Invalid default value expression: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Ungültiger Standardwert für Ausdruck: %1</translation>
</message>
<message>
<location filename="../constraints/columndefaultpanel.cpp" line="90"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
</context>
<context>
@@ -497,47 +500,47 @@
<message>
<location filename="../dialogs/columndialog.ui" line="14"/>
<source>Column</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="23"/>
<source>Name and type</source>
- <translation type="unfinished"></translation>
+ <translation>Name und Typ</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="35"/>
<source>Scale</source>
- <translation type="unfinished"></translation>
+ <translation>Skalierung</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="55"/>
<source>Precision</source>
- <translation type="unfinished"></translation>
+ <translation>Präzision</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="62"/>
<source>Data type:</source>
- <translation type="unfinished"></translation>
+ <translation>Datentyp:</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="69"/>
<source>Column name:</source>
- <translation type="unfinished"></translation>
+ <translation>Spaltenname:</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="79"/>
<source>Size:</source>
- <translation type="unfinished"></translation>
+ <translation>Größe:</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="102"/>
<source>Constraints</source>
- <translation type="unfinished"></translation>
+ <translation>Bedingungen</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="115"/>
<source>Unique</source>
- <translation type="unfinished"></translation>
+ <translation>Eindeutigkeit</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="122"/>
@@ -548,132 +551,132 @@
<location filename="../dialogs/columndialog.ui" line="199"/>
<location filename="../dialogs/columndialog.ui" line="206"/>
<source>Configure</source>
- <translation type="unfinished"></translation>
+ <translation>Konfigurieren</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="129"/>
<source>Foreign Key</source>
- <translation type="unfinished"></translation>
+ <translation>Fremdschlüssel</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="143"/>
<source>Collate</source>
- <translation type="unfinished"></translation>
+ <translation>Kollationieren</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="150"/>
<source>Not NULL</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht NULL</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="157"/>
<source>Check condition</source>
- <translation type="unfinished"></translation>
+ <translation>Zustandsprüfung</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="164"/>
<source>Primary Key</source>
- <translation type="unfinished"></translation>
+ <translation>Primärer Schlüssel</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="171"/>
<source>Default</source>
- <translation type="unfinished"></translation>
+ <translation>Standard</translation>
</message>
<message>
<location filename="../dialogs/columndialog.ui" line="270"/>
<source>Advanced mode</source>
- <translation type="unfinished"></translation>
+ <translation>Erweiterter Modus</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="83"/>
<source>Add constraint</source>
<comment>column dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Bedingung hinzufügen</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="84"/>
<source>Edit constraint</source>
<comment>column dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Bedingung editieren</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>Bedingung löschen</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="86"/>
<source>Move constraint up</source>
<comment>column dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Bedingung nach oben verschieben</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="87"/>
<source>Move constraint down</source>
<comment>column dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Bedingung nach unten verschieben</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>Primärschlüssel zufügen</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>Fremdschlüssel zufügen</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>Eindeutige Bedingung hinzufügen</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>Prüfungsbedingung hinzufügen</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>Nicht-NULL Bedingung hinzufügen</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>Kollationsbedingung hinzufügen</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>Standardbedingung hinzufügen</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="228"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie die folgende Bedingung löschen wollen: &apos;%1&apos;?</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="290"/>
<source>Correct the constraint&apos;s configuration.</source>
- <translation type="unfinished"></translation>
+ <translation>Korrigiert die Konfiguration der Bedingung.</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="293"/>
<source>This constraint is not officially supported by SQLite 2,
but it&apos;s okay to use it.</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Bedingung wird von SQLite 2 offiziell nicht unterstützt, aber sie kann dennoch benutzt werden.</translation>
</message>
</context>
<context>
@@ -682,19 +685,19 @@ but it&apos;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>Name</translation>
</message>
<message>
<location filename="../dialogs/columndialogconstraintsmodel.cpp" line="332"/>
<source>Details</source>
<comment>column dialog constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Details</translation>
</message>
</context>
<context>
@@ -702,47 +705,47 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="29"/>
<source>Foreign table:</source>
- <translation type="unfinished"></translation>
+ <translation>Fremde Tabelle:</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="45"/>
<source>Foreign column:</source>
- <translation type="unfinished"></translation>
+ <translation>Fremde Spalte:</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="58"/>
<source>Reactions</source>
- <translation type="unfinished"></translation>
+ <translation>Reaktionen</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="97"/>
<source>Deferred foreign key</source>
- <translation type="unfinished"></translation>
+ <translation>Verzögerter Fremdschlüssel</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="115"/>
<source>Named constraint</source>
- <translation type="unfinished"></translation>
+ <translation>Benannte Bedingung</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.ui" line="122"/>
<source>Constraint name</source>
- <translation type="unfinished"></translation>
+ <translation>Name der Bedingung</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.cpp" line="40"/>
<source>Pick the foreign table.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Fremdtabelle aus.</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.cpp" line="41"/>
<source>Pick the foreign column.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Fremdspalte aus.</translation>
</message>
<message>
<location filename="../constraints/columnforeignkeypanel.cpp" line="42"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
</context>
<context>
@@ -750,33 +753,33 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="26"/>
<source>Autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation>Automatisch hochzählend</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="48"/>
<source>Sort order:</source>
- <translation type="unfinished"></translation>
+ <translation>Sortierfolge:</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="83"/>
<source>Named constraint:</source>
- <translation type="unfinished"></translation>
+ <translation>Benannte Bedingung:</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="111"/>
<source>On conflict:</source>
- <translation type="unfinished"></translation>
+ <translation>Bei Konflikt:</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.cpp" line="87"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Bedingung ein.</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>Automatische Zählung (nur für %1 Spaltentypen)</translation>
</message>
</context>
<context>
@@ -784,17 +787,17 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../constraints/columnuniqueandnotnullpanel.ui" line="41"/>
<source>Named constraint:</source>
- <translation type="unfinished"></translation>
+ <translation>Benannte Bedingung:</translation>
</message>
<message>
<location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/>
<source>On conflict:</source>
- <translation type="unfinished"></translation>
+ <translation>Bei Konflikt:</translation>
</message>
<message>
<location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
</context>
<context>
@@ -803,85 +806,85 @@ but it&apos;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>Spalte: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="161"/>
<source>Table: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Tabelle: %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>Trigger: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="167"/>
<source>View: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>View: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="169"/>
<source>Database: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Datenbank: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="181"/>
<source>Keyword: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Schlüsselwort: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="183"/>
<source>Function: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Funktion: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="185"/>
<source>Operator: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Operator: %1</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="187"/>
<source>String</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeichenkette</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="189"/>
<source>Number</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Nummer</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="191"/>
<source>Binary data</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Binäre Daten</translation>
</message>
<message>
<location filename="../completer/completerwindow.cpp" line="193"/>
<source>Collation: %1</source>
<comment>completer statusbar</comment>
- <translation type="unfinished"></translation>
+ <translation>Kollation: %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 Funktion: %1</translation>
</message>
</context>
<context>
@@ -890,618 +893,618 @@ but it&apos;s okay to use it.</source>
<location filename="../dialogs/configdialog.ui" line="14"/>
<location filename="../dialogs/configdialog.ui" line="1293"/>
<source>Configuration</source>
- <translation type="unfinished"></translation>
+ <translation>Konfiguration</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="73"/>
<source>Search</source>
- <translation type="unfinished"></translation>
+ <translation>Suchen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="104"/>
<source>General</source>
- <translation type="unfinished"></translation>
+ <translation>Allgemein</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="116"/>
<source>Keyboard shortcuts</source>
- <translation type="unfinished"></translation>
+ <translation>Tastaturkürzel</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="128"/>
<source>Look &amp; feel</source>
- <translation type="unfinished"></translation>
+ <translation>Aussehen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="139"/>
<source>Style</source>
- <translation type="unfinished"></translation>
+ <translation>Stil</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="151"/>
<source>Fonts</source>
- <translation type="unfinished"></translation>
+ <translation>Schriftarten</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="163"/>
<source>Colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farben</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="176"/>
<source>Plugins</source>
- <translation type="unfinished"></translation>
+ <translation>Plugins</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="187"/>
<source>Code formatters</source>
- <translation type="unfinished"></translation>
+ <translation>Codeformatierer</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="196"/>
<source>Data browsing</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbearbeitung</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="207"/>
<source>Data editors</source>
- <translation type="unfinished"></translation>
+ <translation>Dateneditoren</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="237"/>
<source>Data browsing and editing</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbearbeitung</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="243"/>
<source>Number of data rows per page:</source>
- <translation type="unfinished"></translation>
+ <translation>Anzahl an Datenzeilen pro Seite:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="269"/>
<location filename="../dialogs/configdialog.ui" line="279"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Wenn Daten in das Ergebnisfenster eingelesen werden, dann wird die Breite der Spalten dabei automatisch angepasst. Dieser Wert begrenzt maximale Breite für die automatische Breitenanpassung. Der Anwender kann die Spaltenbreite jedoch manuell über dieses Limit verbreitern.&lt;/p&gt;</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>Begrenze die initiale Spaltenbreite im Ergebnisfenster auf (Pixel):</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="328"/>
<source>Data types</source>
- <translation type="unfinished"></translation>
+ <translation>Datentypen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="366"/>
<source>Available editors:</source>
- <translation type="unfinished"></translation>
+ <translation>Verfügbare Editoren:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="382"/>
<source>Editors selected for this data type:</source>
- <translation type="unfinished"></translation>
+ <translation>Für diesen Datentyp ausgewählte Editoren:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="418"/>
<source>Schema editing</source>
- <translation type="unfinished"></translation>
+ <translation>Schema</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="430"/>
<source>Number of DDL changes kept in history.</source>
- <translation type="unfinished"></translation>
+ <translation>Maximale Anzahl an DDL Änderungen im Verlauf.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="443"/>
<source>DDL history size:</source>
- <translation type="unfinished"></translation>
+ <translation>DDL Verlaufsgröße</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="450"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
- <translation type="unfinished"></translation>
+ <translation>Zeige keine DDL Vorschau, wenn Schemaänderungen committed werden.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="463"/>
<source>SQL queries</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Abfragen</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>Maximale Anzahl an SQL Abfragen im Verlauf.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="491"/>
<source>History size:</source>
- <translation type="unfinished"></translation>
+ <translation>Verlaufsgröße</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="498"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Wenn diese Option aktiviert ist und sich mehrere SQL Abfragen im Editorfenster befinden, dann wird nur die SQL Abfrage ausgeführt, in der sich der Cursor befindet. Ist diese Option nicht gesetzt, dann werden alle SQL Abfragen ausgeführt. Sie können die auszuführenden SQL Abfragen selbst bestimmen, indem Sie diese vor der Ausführung mit der Maus oder Tastatur markieren.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="501"/>
<source>Execute only the query under the cursor</source>
- <translation type="unfinished"></translation>
+ <translation>Führt nur die Abfrage unter dem Cursor aus.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="514"/>
<source>Updates</source>
- <translation type="unfinished"></translation>
+ <translation>Updates</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="520"/>
<source>Automatically check for updates at startup</source>
- <translation type="unfinished"></translation>
+ <translation>Prüfe vor dem Start automatisch auf Updates</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="533"/>
<source>Session</source>
- <translation type="unfinished"></translation>
+ <translation>Sitzung</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>Stelle letzte Sitzung nach dem Start wieder her (aktive MDI Fenster)</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="581"/>
<source>Filter shortcuts by name or key combination</source>
- <translation type="unfinished"></translation>
+ <translation>Filtere Tastaturkürzel nach Name oder Tastenkombination</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="622"/>
<source>Action</source>
- <translation type="unfinished"></translation>
+ <translation>Aktion</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="627"/>
<source>Key combination</source>
- <translation type="unfinished"></translation>
+ <translation>Tastenkombination</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="671"/>
<location filename="../dialogs/configdialog.ui" line="1283"/>
<source>Language</source>
- <translation type="unfinished"></translation>
+ <translation>Sprache</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="677"/>
<source>Changing language requires application restart to take effect.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Änderung der Sprache erfordert einen Neustart des Programms.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="694"/>
<source>Compact layout</source>
- <translation type="unfinished"></translation>
+ <translation>Kompaktes Layout</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="700"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Das kompakte Layout reduziert alle Lücken und Abstände der Oberfläche auf ein Minimum, um mehr Platz für die Darstellung der Daten zu schaffen. Die Oberfläche sieht dann zwar nicht mehr sehr ästhetisch aus, aber man hat mehr Daten im Überblick.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="703"/>
<source>Use compact layout</source>
- <translation type="unfinished"></translation>
+ <translation>Benutze kompaktes Layout</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="709"/>
<source>General.CompactLayout</source>
- <translation type="unfinished"></translation>
+ <translation>Standard.KompaktesLayout</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="719"/>
<source>Database list</source>
- <translation type="unfinished"></translation>
+ <translation>Liste der Datenbanken</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="725"/>
<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>Wenn die Option deaktiviert ist, werden die Spalten in der Reihenfolge sortiert in der sie im CREATE TABLE Statement angegeben wurden.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="728"/>
<source>Sort table columns alphabetically</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellenspalten alphabetisch sortieren</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="738"/>
<source>Expand tables node when connected to a database</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellenknoten aufklappen, wenn eine Datenbank verbunden ist</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="748"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Zusätzliche Bezeichnungen sind jene, die neben den Namen der Datenbankliste angezeigt werden (sie sind normalerweise blau gefärbt, es sei denn dies wurde umkonfiguriert). Ist diese Option aktiviert, dann werden diese Bezeichnungen angezeigt für Datenbanken, ungültige Datenbanken und zusammengefasste Knoten (Spalten-, Index- und Triggergruppen). Für mehr Details siehe die folgenden optionen.&lt;p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="751"/>
<source>Display additional labels on the list</source>
- <translation type="unfinished"></translation>
+ <translation>Zeige zusätzliche Bezeichnungen in der Liste an</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="766"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
- <translation type="unfinished"></translation>
+ <translation>Für normale Tabellen enthält die Bezeichnung die Anzahl der Spalten, Indizes und Trigger einer jeden Tabelle.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="769"/>
<source>Display labels for regular tables</source>
- <translation type="unfinished"></translation>
+ <translation>Zeigt Bezeichnungen für normale Tabellen an</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="779"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
- <translation type="unfinished"></translation>
+ <translation>Virtuelle Tabellen werden mit einem &apos;virtuell&apos; Kürzel versehen.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="782"/>
<source>Display labels for virtual tables</source>
- <translation type="unfinished"></translation>
+ <translation>Zeige Bezeichnungen für virtuelle Tabellen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="795"/>
<source>Expand views node when connected to a database</source>
- <translation type="unfinished"></translation>
+ <translation>Knoten aufklappen, wenn eine Datenbank verbunden ist</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="805"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
- <translation type="unfinished"></translation>
+ <translation>Wenn die Option deaktiviert ist, werden die Objekte in der Reihenfolge sortiert in der sie in der sqlite_master Tabelle angezeigt werden (entspricht der Reihenfolge in der sie angelegt worden sind)</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="808"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
- <translation type="unfinished"></translation>
+ <translation>Objekte alphabetisch sortieren</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="818"/>
<source>Display system tables and indexes on the list</source>
- <translation type="unfinished"></translation>
+ <translation>Zeige Systemtabellen und Indizes in der Liste an</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="831"/>
<source>Table windows</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellenfenster</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="837"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
+ <translation>Wenn die Option aktiviert ist, dann wird im Tabellenfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="840"/>
<source>Open Table Windows with the data tab for start</source>
- <translation type="unfinished"></translation>
+ <translation>Öffnet das Tabellenfenster mit dem Reiter &quot;Daten&quot; im Vordergrund</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="853"/>
<source>View windows</source>
- <translation type="unfinished"></translation>
+ <translation>Viewfenster</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="859"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
- <translation type="unfinished"></translation>
+ <translation>Wenn die Option aktiviert ist, dann wird im Viewfenster der Reiter &quot;Daten&quot; angezeigt statt &quot;Strukturen&quot;.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="862"/>
<source>Open View Windows with the data tab for start</source>
- <translation type="unfinished"></translation>
+ <translation>Öffnet das Viewfenster mit dem Reiter &quot;Daten&quot; im Vordergrund</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="875"/>
<source>Main window dock areas</source>
- <translation type="unfinished"></translation>
+ <translation>Dockingbereiche des Hauptfensters</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="881"/>
<source>Left and right areas occupy corners</source>
- <translation type="unfinished"></translation>
+ <translation>Linke und rechte Bereiche belegen die Ecken</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="901"/>
<source>Top and bottom areas occupy corners</source>
- <translation type="unfinished"></translation>
+ <translation>Obere und untere Bereiche belegen die Ecken</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1010"/>
<source>Hide built-in plugins</source>
- <translation type="unfinished"></translation>
+ <translation>Verberge eingebaute Plugins</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1039"/>
<source>Current style:</source>
- <translation type="unfinished"></translation>
+ <translation>Aktueller Stil:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1056"/>
<source>Preview</source>
- <translation type="unfinished"></translation>
+ <translation>Vorschau</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1066"/>
<source>Enabled</source>
- <translation type="unfinished"></translation>
+ <translation>Aktiviert</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1239"/>
<source>Disabled</source>
- <translation type="unfinished"></translation>
+ <translation>Deaktiviert</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1288"/>
<source>Active formatter plugin</source>
- <translation type="unfinished"></translation>
+ <translation>Aktives Formatierungsplugin</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1326"/>
<source>SQL editor font</source>
- <translation type="unfinished"></translation>
+ <translation>Schriftart des SQL Editors</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1342"/>
<source>Database list font</source>
- <translation type="unfinished"></translation>
+ <translation>Schriftart der Datenbankliste</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1358"/>
<source>Database list additional label font</source>
- <translation type="unfinished"></translation>
+ <translation>Zusätzliche Bezeichnungen in der Datenbankliste</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1374"/>
<source>Data view font</source>
- <translation type="unfinished"></translation>
+ <translation>Schriftart der Ergebnisansicht</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1390"/>
<source>Status field font</source>
- <translation type="unfinished"></translation>
+ <translation>Schriftart des Statusfelds</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1448"/>
<source>SQL editor colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farben des SQL Editors</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1454"/>
<source>Current line background</source>
- <translation type="unfinished"></translation>
+ <translation>Hintergrundfarbe der aktuellen Zeile</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1461"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;SQL Zeichenketten sind mit einfachen Anführungszeichen umschlossen.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1464"/>
<source>String foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von Zeichenketten</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1567"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Bind Parameter sind Platzhalter für Werte, die der Anwender eingibt. Sie haben dabei eine der folgenden Formen:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1570"/>
<source>Bind parameter foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von Bind Parametern</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1593"/>
<source>Highlighted parenthesis background</source>
- <translation type="unfinished"></translation>
+ <translation>Hintergrundfarbe von hervorgehobener Klammern</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1600"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;BLOB Werte sind hexadezimale Werte wie z.B.:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1603"/>
<source>BLOB value foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von BLOB Werten</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1610"/>
<source>Regular foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Reguläre Vordergrundfarbe</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1617"/>
<source>Line numbers area background</source>
- <translation type="unfinished"></translation>
+ <translation>Hintergrundfarbe der Zeilennummernleiste</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1640"/>
<source>Keyword foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von Schlüsselwörtern</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1647"/>
<source>Number foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von Ziffern</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1654"/>
<source>Comment foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von Kommentaren</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1693"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Gültige Objekte sind Namen von Tabellen, Indizes, Triggern oder Views die in der SQLite Datenbank existieren.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1696"/>
<source>Valid objects foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe von gültigen Objekten</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1722"/>
<source>Data view colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farben der Ergebnisansicht</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1728"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Jede Datenänderung wird mit dieser Farbe kenntlich gemacht, bis die geänderten Daten in die Datenbank zurückgeschrieben worden sind.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1731"/>
<source>Uncommited data outline color</source>
- <translation type="unfinished"></translation>
+ <translation>Rahmenfarbe von nicht gespeicherten Daten</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1754"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Tritt beim Speichern einer Änderung ein Problem auf, dann wird die problematische Zelle mit dieser Farbe markiert.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1757"/>
<source>Commit error outline color</source>
- <translation type="unfinished"></translation>
+ <translation>Rahmenfarbe für fehlerhafte Daten</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1780"/>
<source>NULL value foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe für NULL Werte</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1803"/>
<source>Deleted row background</source>
- <translation type="unfinished"></translation>
+ <translation>Hintergrundfarbe von gelöschten Zeilen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1829"/>
<source>Database list colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farben der Datenbankliste</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1835"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Zusätzliche Bezeichnungen sind solche, die z.B. die SQLite Version oder die Anzahl an Einträgen in einer Baumliste usw. anzeigen.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1838"/>
<source>Additional labels foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe für zusätzliche Bezeichnungen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1864"/>
<source>Status field colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farben des Statusfelds</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1870"/>
<source>Information message foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe für Infomeldungen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1893"/>
<source>Warning message foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe für Warnmeldungen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1916"/>
<source>Error message foreground</source>
- <translation type="unfinished"></translation>
+ <translation>Vordergrundfarbe für Fehlermeldungen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="785"/>
<source>Description:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Bezeichnung:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="786"/>
<source>Category:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Kategorie:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="787"/>
<source>Version:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Version:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="788"/>
<source>Author:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Autor:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="790"/>
<source>Internal name:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Interner Name:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="791"/>
<source>Dependencies:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Abhängigkeiten:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="792"/>
<source>Conflicts:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>Konflikte:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="796"/>
<source>Plugin details</source>
- <translation type="unfinished"></translation>
+ <translation>Plugin Details</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1202"/>
<source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source>
- <translation type="unfinished"></translation>
+ <translation>Plugins werden direkt beim Aktivieren/Deaktivieren geladen bzw. entfernt, die modifizierte Pluginliste wird jedoch erst beim Bestätigen und Schließen des Konfigurationsfensters gespeichert.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1266"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>%1 (eingebaut)</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1279"/>
<source>Details</source>
- <translation type="unfinished"></translation>
+ <translation>Details</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1291"/>
<source>No plugins in this category.</source>
- <translation type="unfinished"></translation>
+ <translation>Keine Plugins in dieser Kategorie.</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1387"/>
<source>Add new data type</source>
- <translation type="unfinished"></translation>
+ <translation>Neuen Datentypen zufügen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1391"/>
<source>Rename selected data type</source>
- <translation type="unfinished"></translation>
+ <translation>Markierten Datentypen umbenennen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1395"/>
<source>Delete selected data type</source>
- <translation type="unfinished"></translation>
+ <translation>Markierten Datentypen löschen</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1399"/>
<source>Help for configuring data type editors</source>
- <translation type="unfinished"></translation>
+ <translation>Hilfe zur Konfiguration des Datentypen Editors</translation>
</message>
</context>
<context>
@@ -1509,27 +1512,27 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../constraints/constraintcheckpanel.ui" line="20"/>
<source>The condition</source>
- <translation type="unfinished"></translation>
+ <translation>Der Zustand:</translation>
</message>
<message>
<location filename="../constraints/constraintcheckpanel.ui" line="35"/>
<source>Named constraint:</source>
- <translation type="unfinished"></translation>
+ <translation>Benannte Bedingung:</translation>
</message>
<message>
<location filename="../constraints/constraintcheckpanel.ui" line="51"/>
<source>On conflict</source>
- <translation type="unfinished"></translation>
+ <translation>Bei Konflikt</translation>
</message>
<message>
<location filename="../constraints/constraintcheckpanel.cpp" line="46"/>
<source>Enter a valid condition.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen gültigen Zustand ein.</translation>
</message>
<message>
<location filename="../constraints/constraintcheckpanel.cpp" line="47"/>
<source>Enter a name of the constraint.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Namen für die Bedingung ein.</translation>
</message>
</context>
<context>
@@ -1538,67 +1541,67 @@ but it&apos;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>Neue Bedingung</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="63"/>
<source>Create</source>
<comment>constraint dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Erstellen</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="66"/>
<source>Edit constraint</source>
<comment>dialog window</comment>
- <translation type="unfinished"></translation>
+ <translation>Bedingung editieren</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="67"/>
<source>Apply</source>
<comment>constraint dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Übernehmen</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="170"/>
<source>Primary key</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Primärer Schlüssel</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="174"/>
<source>Foreign key</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Fremdschlüssel</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="178"/>
<source>Unique</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Eindeutigkeit</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="182"/>
<source>Not NULL</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Nicht NULL</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="186"/>
<source>Check</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Prüfung</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="190"/>
<source>Collate</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Kollation</translation>
</message>
<message>
<location filename="../dialogs/constraintdialog.cpp" line="194"/>
<source>Default</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Standard</translation>
</message>
</context>
<context>
@@ -1607,37 +1610,37 @@ but it&apos;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>Tabelle</translation>
</message>
<message>
<location filename="../windows/constrainttabmodel.cpp" line="109"/>
<source>Column (%1)</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Spalte (%1)</translation>
</message>
<message>
<location filename="../windows/constrainttabmodel.cpp" line="153"/>
<source>Scope</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Bereich</translation>
</message>
<message>
<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>Details</translation>
</message>
<message>
<location filename="../windows/constrainttabmodel.cpp" line="159"/>
<source>Name</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Name</translation>
</message>
</context>
<context>
@@ -1645,7 +1648,7 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/cssdebugdialog.ui" line="14"/>
<source>SQLiteStudio CSS console</source>
- <translation type="unfinished"></translation>
+ <translation>SQLiteStudio CSS Konsole</translation>
</message>
</context>
<context>
@@ -1654,118 +1657,119 @@ but it&apos;s okay to use it.</source>
<location filename="../dataview.cpp" line="98"/>
<source>Filter data</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Daten filtern</translation>
</message>
<message>
<location filename="../dataview.cpp" line="107"/>
<source>Grid view</source>
- <translation type="unfinished"></translation>
+ <translation>Gitteransicht</translation>
</message>
<message>
<location filename="../dataview.cpp" line="108"/>
<source>Form view</source>
- <translation type="unfinished"></translation>
+ <translation>Formularansicht</translation>
</message>
<message>
<location filename="../dataview.cpp" line="165"/>
<source>Refresh table data</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Aktualisiere Tabellendaten</translation>
</message>
<message>
<location filename="../dataview.cpp" line="179"/>
<source>First page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Erste Seite</translation>
</message>
<message>
<location filename="../dataview.cpp" line="180"/>
<source>Previous page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Vorherige Seite</translation>
</message>
<message>
<location filename="../dataview.cpp" line="182"/>
<source>Next page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Nächste Seite</translation>
</message>
<message>
<location filename="../dataview.cpp" line="183"/>
<source>Last page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Letzte Seite</translation>
</message>
<message>
<location filename="../dataview.cpp" line="188"/>
<source>Apply filter</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Filter anwenden</translation>
</message>
<message>
<location filename="../dataview.cpp" line="203"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Änderungen für die selektierten Zellen speichern</translation>
</message>
<message>
<location filename="../dataview.cpp" line="204"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Änderungen für die selektierten Zellen zurücknehmen</translation>
</message>
<message>
<location filename="../dataview.cpp" line="205"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeige Ergebnismenge in der Gitteransicht</translation>
</message>
<message>
<location filename="../dataview.cpp" line="206"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeige Ergebnismenge in der Formularansicht</translation>
</message>
<message>
<location filename="../dataview.cpp" line="275"/>
<source>Filter by text</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Nach Text filtern</translation>
</message>
<message>
<location filename="../dataview.cpp" line="276"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Nach regulärem Ausdruck filtern</translation>
</message>
<message>
<location filename="../dataview.cpp" line="277"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Nach einem SQL Ausdruck filtern</translation>
</message>
<message>
<location filename="../dataview.cpp" line="308"/>
<source>Tabs on top</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Reiterleiste oben</translation>
</message>
<message>
<location filename="../dataview.cpp" line="309"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Reiterleiste unten</translation>
</message>
<message>
<location filename="../dataview.cpp" line="555"/>
<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>Gesamtanzahl der Zeilen wird ermittelt.
+Das Aufrufen anderer Seiten ist erst nach Abschluss der Zählung möglich.</translation>
</message>
<message>
<location filename="../dataview.cpp" line="566"/>
<source>Row: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Zeile: %1</translation>
</message>
</context>
<context>
@@ -1773,97 +1777,97 @@ 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>Konvertiere Datenbank</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="20"/>
<source>Source database</source>
- <translation type="unfinished"></translation>
+ <translation>Quelldatenbank</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="29"/>
<source>Source database version:</source>
- <translation type="unfinished"></translation>
+ <translation>Version der Quelldatenbank:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="46"/>
<source>Target database</source>
- <translation type="unfinished"></translation>
+ <translation>Zieldatenbank</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="52"/>
<source>Target version:</source>
- <translation type="unfinished"></translation>
+ <translation>Version der Zieldatenbank:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="59"/>
<source>This is the file that will be created as a result of the conversion.</source>
- <translation type="unfinished"></translation>
+ <translation>Dies ist die Datei, die durch die Konvertierung erzeut werden wird.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="66"/>
<source>Target file:</source>
- <translation type="unfinished"></translation>
+ <translation>Zieldatei:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="73"/>
<source>Name of the new database:</source>
- <translation type="unfinished"></translation>
+ <translation>Name der neuen Datenbank:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="90"/>
<source>This is the name that the converted database will be added to SQLiteStudio with.</source>
- <translation type="unfinished"></translation>
+ <translation>Mit diesem Namen wird die konvertierte Datenbank SQLiteStudio zugefügt werden.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="123"/>
<source>Select source database</source>
- <translation type="unfinished"></translation>
+ <translation>Quelldatenbank auswählen</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="129"/>
<source>Enter valid and writable file path.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen gültigen und beschreibbaren Dateipfad ein.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="131"/>
<source>Entered file exists and will be overwritten.</source>
- <translation type="unfinished"></translation>
+ <translation>Die angegebene Datei existiert bereits und wird überschrieben werden.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="135"/>
<source>Enter a not empty, unique name (as in the list of databases on the left).</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen eindeutigen Namen an (so wie links in der Datenbankliste)</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="140"/>
<source>No valid target dialect available. Conversion not possible.</source>
- <translation type="unfinished"></translation>
+ <translation>Es ist kein gültiger Zieldialekt verfügbar. Die Konvertierung kann nicht durchgeführt werden.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="142"/>
<source>Select valid target dialect.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie einen gültigen Zieldialekt aus.</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="194"/>
<source>Database %1 has been successfully converted and now is available under new name: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank %1 wurde erfolgreich konvertiert und ist verfügbar unter dem neuen Namen: %2</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="206"/>
<source>SQL statements conversion</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Statements Konvertierung</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="214"/>
<source>Following error occurred while converting SQL statements to the target SQLite version:</source>
- <translation type="unfinished"></translation>
+ <translation>Folgender Fehler ist aufgetreten, während der Konvertierung von SQL Statements in die Ziel-SQLite Version:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="215"/>
<source>Would you like to ignore those errors and proceed?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie diese Fehler ignorieren und fortfahren?</translation>
</message>
</context>
<context>
@@ -1871,109 +1875,109 @@ 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>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="26"/>
<source>Database type</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbanktyp</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="32"/>
<source>Database driver</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbanktreiber</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="95"/>
<source>Generate automatically</source>
- <translation type="unfinished"></translation>
+ <translation>Automatisch generieren</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="108"/>
<source>Options</source>
- <translation type="unfinished"></translation>
+ <translation>Optionen</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="117"/>
<source>Permanent (keep it in configuration)</source>
- <translation type="unfinished"></translation>
+ <translation>Permanent (in der Konfiguration behalten)</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="161"/>
<source>Test connection</source>
- <translation type="unfinished"></translation>
+ <translation>Verbindung testen</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="51"/>
<source>Create new database file</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Datenbank erzeugen</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
<location filename="../dialogs/dbdialog.cpp" line="149"/>
<source>File</source>
- <translation type="unfinished"></translation>
+ <translation>Datei</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="79"/>
<source>Name (on the list)</source>
- <translation type="unfinished"></translation>
+ <translation>Name (in der Liste)</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="92"/>
<source>Generate name basing on file path</source>
- <translation type="unfinished"></translation>
+ <translation>Leitet den Namen vom Dateipfad ab</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="114"/>
<source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
<extracomment>aasfd</extracomment>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Wenn diese Option aktiviert ist, wird die Datenbank in der Konfiguration gespeichert und bei jedem Start von SQLiteStudio wieder hergestellt.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>Browse for existing database file on local computer</source>
- <translation type="unfinished"></translation>
+ <translation>Lokalen Computer nach Datenbankdateien durchsuchen</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="283"/>
<source>Browse</source>
- <translation type="unfinished"></translation>
+ <translation>Durchsuchen</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="483"/>
<source>Enter an unique database name.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen eindeutigen Datenbanknamen ein.</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="492"/>
<source>This name is already in use. Please enter unique name.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Name wird bereits benutzt, bitte geben Sie einen freien, eindeutigen Namen ein.</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="500"/>
<source>Enter a database file path.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen Dateipfad für die Datenbank ein.</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="507"/>
<source>This database is already on the list under name: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank ist bereits unter folgendem Namen in der Liste enthalten: %1</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="523"/>
<source>Select a database type.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie einen Datebanktypen aus.</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="580"/>
<source>Auto-generated</source>
- <translation type="unfinished"></translation>
+ <translation>Automatisch generiert</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.cpp" line="585"/>
<source>Type the name</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie den Namen ein</translation>
</message>
</context>
<context>
@@ -1981,47 +1985,47 @@ 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>Tabelle löschen</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>Sind Sie sicher, dass Sie die Tabelle %1 löschen möchten?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="179"/>
<source>Delete index</source>
- <translation type="unfinished"></translation>
+ <translation>Index löschen</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>Sind Sie sicher, dass Sie den Index %1 löschen möchten?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="184"/>
<source>Delete trigger</source>
- <translation type="unfinished"></translation>
+ <translation>Trigger löschen</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>Sind Sie sicher, dass Sie den Trigger %1 löschen möchten?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="189"/>
<source>Delete view</source>
- <translation type="unfinished"></translation>
+ <translation>View löschen</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="190"/>
<source>Are you sure you want to delete view %1?</source>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie den View %1 löschen möchten?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
<source>Error while dropping %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Löschen: %1 %2</translation>
</message>
</context>
<context>
@@ -2029,353 +2033,355 @@ 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>Datenbanken</translation>
</message>
<message>
<location filename="../dbtree/dbtree.ui" line="73"/>
<source>Filter by name</source>
- <translation type="unfinished"></translation>
+ <translation>Nach Name filtern</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="102"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Kopieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="103"/>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>Einfügen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Select all</source>
- <translation type="unfinished"></translation>
+ <translation>Alles auswählen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Create a group</source>
- <translation type="unfinished"></translation>
+ <translation>Gruppe erstellen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Delete the group</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Gruppe löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Rename the group</source>
- <translation type="unfinished"></translation>
+ <translation>Gruppe umbenennen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Add a database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank hinzufügen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Edit the database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank editieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Remove the database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank entfernen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Connect to the database</source>
- <translation type="unfinished"></translation>
+ <translation>Mit der Datenbank verbinden</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Disconnect from the database</source>
- <translation type="unfinished"></translation>
+ <translation>Verbindung zur Datenbank trennen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Import</source>
- <translation type="unfinished"></translation>
+ <translation>Import</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Export the database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank exportieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Convert database type</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbanktyp konvertieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Vacuum</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>???</translatorcomment>
+ <translation>Vakuum</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Integrity check</source>
- <translation type="unfinished"></translation>
+ <translation>Integritätsprüfung</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Create a table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle erstellen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Edit the table</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank editieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Delete the table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Export the table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle exportieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Import into the table</source>
- <translation type="unfinished"></translation>
+ <translation>In die Tabelle importieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Populate table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle füllen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Create similar table</source>
- <translation type="unfinished"></translation>
+ <translation>Erzeuge identische Tabelle</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Reset autoincrement sequence</source>
- <translation type="unfinished"></translation>
+ <translation>Automatischen Zähler zurücksetzen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create an index</source>
- <translation type="unfinished"></translation>
+ <translation>Index erstellen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Edit the index</source>
- <translation type="unfinished"></translation>
+ <translation>Index editieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Delete the index</source>
- <translation type="unfinished"></translation>
+ <translation>Index löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Create a trigger</source>
- <translation type="unfinished"></translation>
+ <translation>Trigger erstellen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Edit the trigger</source>
- <translation type="unfinished"></translation>
+ <translation>Trigger editieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Delete the trigger</source>
- <translation type="unfinished"></translation>
+ <translation>Trigger löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Create a view</source>
- <translation type="unfinished"></translation>
+ <translation>View erstellen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Edit the view</source>
- <translation type="unfinished"></translation>
+ <translation>View editieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Delete the view</source>
- <translation type="unfinished"></translation>
+ <translation>View löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Add a column</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte zufügen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Edit the column</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte editieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Delete the column</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Delete selected items</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Einträge löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Clear filter</source>
- <translation type="unfinished"></translation>
+ <translation>Filter zurücksetzen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Refresh all database schemas</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Datenbankschemen aktualisieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Refresh selected database schema</source>
- <translation type="unfinished"></translation>
+ <translation>Alle markierten Datenbankschemen aktualisieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="142"/>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
<source>Erase table data</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellendaten löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="312"/>
<location filename="../dbtree/dbtree.cpp" line="317"/>
<source>Database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="327"/>
<source>Grouping</source>
- <translation type="unfinished"></translation>
+ <translation>Gruppieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="937"/>
<location filename="../dbtree/dbtree.cpp" line="940"/>
<source>Create group</source>
- <translation type="unfinished"></translation>
+ <translation>Gruppe erstellen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="937"/>
<source>Group name</source>
- <translation type="unfinished"></translation>
+ <translation>Gruppenname</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="940"/>
<source>Entry with name %1 already exists in group %2.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Eintrag mit Namen %1 existiert bereits in der Gruppe %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="958"/>
<source>Delete group</source>
- <translation type="unfinished"></translation>
+ <translation>Gruppe löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="959"/>
<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>Sind Sie sicher, dass Sie die Gruppe %1 löschen möchten?
+Alle Objekte in dieser Gruppe werden in die übergeordnete Gruppe verschoben.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Delete database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie die Datenbank &apos;%1&apos; löschen möchten?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1055"/>
<location filename="../dbtree/dbtree.cpp" line="1265"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Import kann nicht durchgeführt werden, da kein Import Plugin geladen ist.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1075"/>
<location filename="../dbtree/dbtree.cpp" line="1240"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>Export fehlgeschlagen, da kein Export Plugins geladen sind.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ausführen des VACUUM-Befehls auf die Datenbank %1: %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>VACUUM erfolgreich abgeschlossen.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1358"/>
<source>Integrity check (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>Integritätsprüfung (%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1395"/>
<source>Reset autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation>Autoincrement zurücksetzen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1395"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie den Autoincrement Wert für die Tabelle &apos;%1&apos; zurücksetzen möchten?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1402"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Ein Fehler ist aufgetreten beim Zurücksetzen des Autoincrementwertes für die Tabelle &apos;%1&apos;: %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1404"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
+ <translation>Autoincrementwert für die Tabelle &apos;%1&apos; wurde erfolgreich zurückgesetzt.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie alle Daten aus Tabelle &apos;%1&apos; löschen möchten?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1429"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Löschen von Daten aus Tabelle &apos;%1&apos; ist folgender Fehelr aufgetreten: %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1433"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurden alle Daten aus Tabelle &apos;%1&apos; gelöscht.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1535"/>
<source>Following objects will be deleted: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Folgende Objekte werden gelöscht: %1.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1538"/>
<source>Following databases will be removed from list: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Folgende Datenbanken werden aus der Liste entfernt: %1.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1541"/>
<source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
- <translation type="unfinished"></translation>
+ <translation>Die aus der gelöschten Gruppe verbleibenden Objekte werden an die Position der gelöschten Gruppe verschoben.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1543"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
- <translation type="unfinished"></translation>
+ <translation>%1&lt;br&gt;&lt;br&gt;Sind Sie sicher, dass Sie fortfahren möchten?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>Delete objects</source>
- <translation type="unfinished"></translation>
+ <translation>Objekte löschen</translation>
</message>
</context>
<context>
@@ -2384,25 +2390,25 @@ All objects from this group will be moved to parent group.</source>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="92"/>
<source>error</source>
<comment>dbtree labels</comment>
- <translation type="unfinished"></translation>
+ <translation>Fehler</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="109"/>
<source>(system table)</source>
<comment>database tree label</comment>
- <translation type="unfinished"></translation>
+ <translation>(Systemtabelle)</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="127"/>
<source>(virtual)</source>
<comment>virtual table label</comment>
- <translation type="unfinished"></translation>
+ <translation>(Virtual)</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="139"/>
<source>(system index)</source>
<comment>database tree label</comment>
- <translation type="unfinished"></translation>
+ <translation>(Systemindex)</translation>
</message>
</context>
<context>
@@ -2411,122 +2417,123 @@ All objects from this group will be moved to parent group.</source>
<location filename="../dbtree/dbtreemodel.cpp" line="422"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Datenbank: %1</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="427"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Version:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="430"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Dateigröße:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="433"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Kodierung:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="438"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Fehlerbeschreibung:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="448"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Tabelle: %1</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="471"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Spalten (%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="474"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Indizes (%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="477"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Trigger (%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Kopieren</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
<source>Move</source>
- <translation type="unfinished"></translation>
+ <translation>Verschieben</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
<source>Include data</source>
- <translation type="unfinished"></translation>
+ <translation>Inklusive Daten</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Include indexes</source>
- <translation type="unfinished"></translation>
+ <translation>Inklusive Indizes</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Include triggers</source>
- <translation type="unfinished"></translation>
+ <translation>Inklusive Trigger</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Abort</source>
- <translation type="unfinished"></translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
<source>Referenced tables</source>
- <translation type="unfinished"></translation>
+ <translation>Referenzierte Tabellen</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
<source>Do you want to include following referenced tables as well:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie die folgenden referenzierten Tabellen mit einbeziehen? %1</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1185"/>
<source>Name conflict</source>
- <translation type="unfinished"></translation>
+ <translation>Namenskonflikt</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
<source>Following object already exists in the target database.
Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
- <translation type="unfinished"></translation>
+ <translation>Folgende Objekte existieren bereits in der Datenbank.
+Bitte geben Sie einen neuen, eindeutigen Namen an oder drücken Sie %1, um den Vorgang abzubrechen:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
<source>SQL statements conversion</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Statement Konvertierung</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
<source>Following error occurred while converting SQL statements to the target SQLite version:</source>
- <translation type="unfinished"></translation>
+ <translation>Folgender Fehler trat auf bei der Konvertierung von SQL Statements in die SQLite Zielversion:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1208"/>
<source>Would you like to ignore those errors and proceed?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie diese Fehler ignorieren und fortfahren?</translation>
</message>
</context>
<context>
@@ -2534,19 +2541,21 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/ddlhistorywindow.ui" line="35"/>
<source>Filter by database:</source>
- <translation type="unfinished"></translation>
+ <translation>Nach Datenbank filtern</translation>
</message>
<message>
<location filename="../windows/ddlhistorywindow.cpp" line="73"/>
<source>-- Queries executed on database %1 (%2)
-- Date and time of execution: %3
%4</source>
- <translation type="unfinished"></translation>
+ <translation>-- Abfragen werden ausgeführt auf Datenbank %1 (%2)
+-- Datum und Ausführungszeitpunkt: %3
+%4</translation>
</message>
<message>
<location filename="../windows/ddlhistorywindow.cpp" line="124"/>
<source>DDL history</source>
- <translation type="unfinished"></translation>
+ <translation>DDL Verlauf</translation>
</message>
</context>
<context>
@@ -2554,12 +2563,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/ddlpreviewdialog.ui" line="14"/>
<source>Queries to be executed</source>
- <translation type="unfinished"></translation>
+ <translation>Auszuführende Abfragen</translation>
</message>
<message>
<location filename="../dialogs/ddlpreviewdialog.ui" line="42"/>
<source>Don&apos;t show again</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht wieder anzeigen</translation>
</message>
</context>
<context>
@@ -2567,7 +2576,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../debugconsole.ui" line="14"/>
<source>SQLiteStudio Debug Console</source>
- <translation type="unfinished"></translation>
+ <translation>SQLiteStudio Debug Konsole</translation>
</message>
</context>
<context>
@@ -2575,135 +2584,135 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/editorwindow.ui" line="42"/>
<source>Query</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage</translation>
</message>
<message>
<location filename="../windows/editorwindow.ui" line="112"/>
<source>History</source>
- <translation type="unfinished"></translation>
+ <translation>Verlauf</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="137"/>
<source>Results in the separate tab</source>
- <translation type="unfinished"></translation>
+ <translation>Ergebnisse in separatem Reiter</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="138"/>
<source>Results below the query</source>
- <translation type="unfinished"></translation>
+ <translation>Ergebnisse unter der Abfrage</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="171"/>
<location filename="../windows/editorwindow.cpp" line="173"/>
<source>SQL editor %1</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Editor %1</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="331"/>
<source>Results</source>
- <translation type="unfinished"></translation>
+ <translation>Ergebnisse</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="364"/>
<source>Execute query</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage ausführen</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="365"/>
<source>Explain query</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage ausführen (explain)</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="368"/>
<source>Clear execution history</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Ausführungsverlauf löschen</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="370"/>
<source>Export results</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Ergebnisse exportieren</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="372"/>
<source>Create view from query</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>View aus der Abfrage erstellen</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="382"/>
<source>Previous database</source>
- <translation type="unfinished"></translation>
+ <translation>Vorherige Datenbank</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="383"/>
<source>Next database</source>
- <translation type="unfinished"></translation>
+ <translation>Nächste Datenbank</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="386"/>
<source>Show next tab</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Nächsten Reiter zeigen</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="387"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Vorherigen Reiter zeigen</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="388"/>
<source>Focus results below</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Fokus auf die Ergebnisse unten</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="389"/>
<source>Focus SQL editor above</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Fokus auf den SQL Editor oben</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="463"/>
<source>Active database (%1/%2)</source>
- <translation type="unfinished"></translation>
+ <translation>Aktive Datenbank (%1/%2)</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="503"/>
<source>Query finished in %1 second(s). Rows affected: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage in %1 Sekunde(n) abgeschlossen. %2 Zeile(n) betroffen</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="507"/>
<source>Query finished in %1 second(s).</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage in %1 Sekunde(n) abgeschlossen.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="609"/>
<source>Clear execution history</source>
- <translation type="unfinished"></translation>
+ <translation>Lösche Ausführungsverlauf</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="609"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie den gesamten SQL Ausführungsverlauf löschen möchten? Dieser Vorgang kann nicht rückgängig gemacht werden.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="621"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann nicht exportiert werden, da kein Export Plugin geladen ist.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="642"/>
<source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
- <translation type="unfinished"></translation>
+ <translation>Es ist keine Datenbank im SQL Editor selektiert. Für eine unbekannte Datenbank kann kein View erzeugt werden.</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="672"/>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Editorfenster &quot;%1&quot; hat ungespeicherte Daten.</translation>
</message>
</context>
<context>
@@ -2711,17 +2720,17 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="14"/>
<source>Errors</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler</translation>
</message>
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="20"/>
<source>Following errors occured:</source>
- <translation type="unfinished"></translation>
+ <translation>Folgende Fehler sind aufgetreten:</translation>
</message>
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="34"/>
<source>Would you like to proceed?</source>
- <translation type="unfinished"></translation>
+ <translation>Möchten Sie fortsetzen?</translation>
</message>
</context>
<context>
@@ -2729,210 +2738,213 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/exportdialog.ui" line="14"/>
<source>Export</source>
- <translation type="unfinished"></translation>
+ <translation>Exportieren</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="21"/>
<source>What do you want to export?</source>
- <translation type="unfinished"></translation>
+ <translation>Was möchten Sie exportieren?</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="36"/>
<source>A database</source>
- <translation type="unfinished"></translation>
+ <translation>Eine Datenbank</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="46"/>
<source>A single table</source>
- <translation type="unfinished"></translation>
+ <translation>Eine einzelne Tabelle</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="53"/>
<source>Query results</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrageergebnisse</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="65"/>
<source>Table to export</source>
- <translation type="unfinished"></translation>
+ <translation>Zu exportierende Tabelle</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="100"/>
<source>Database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="107"/>
<source>Table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="124"/>
<source>Options</source>
- <translation type="unfinished"></translation>
+ <translation>Optionen</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>Wenn die Option deaktiviert ist, dann wird nur das Tabellen DDL (CREATE TABLE Statement) exportiert.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="133"/>
<source>Export table data</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellendaten exportieren</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="143"/>
<source>Export table indexes</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellenindizes exportieren</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="153"/>
<source>Export table triggers</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellentrigger exportieren</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>Hinweis: Das Exportieren von Tabellen, Indizes und Triggern könnte von einigen Ausgabeformaten nicht unterstützt werden.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="189"/>
<source>Select database objects to export</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die zu exportierenden Datebankobjekte aus.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="202"/>
<source>Export data from tables</source>
- <translation type="unfinished"></translation>
+ <translation>Daten aus Tabellen exportieren</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="212"/>
<source>Select all</source>
- <translation type="unfinished"></translation>
+ <translation>Alles auswählen</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="219"/>
<source>Deselect all</source>
- <translation type="unfinished"></translation>
+ <translation>Auswahl aufheben</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>Datenbank:</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="237"/>
<source>Query to export results for</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage deren Ergebnisse exportiert werden sollen</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="256"/>
<source>Query to be executed for results:</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>???</translatorcomment>
+ <translation>Auszuführende Abfrage... :</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="264"/>
<source>Export format and options</source>
- <translation type="unfinished"></translation>
+ <translation>Exportformat und Optionen</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="318"/>
<source>Export format</source>
- <translation type="unfinished"></translation>
+ <translation>Exportformat</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="330"/>
<source>Output</source>
- <translation type="unfinished"></translation>
+ <translation>Ausgabe</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="336"/>
<source>Exported file path</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>???</translatorcomment>
+ <translation>Exportverzeichnis</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="343"/>
<source>Clipboard</source>
- <translation type="unfinished"></translation>
+ <translation>Zwischenablage</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="357"/>
<source>File</source>
- <translation type="unfinished"></translation>
+ <translation>Datei</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="382"/>
<source>Exported text encoding:</source>
- <translation type="unfinished"></translation>
+ <translation>Exportierte Textkodierung</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.ui" line="398"/>
<source>Export format options</source>
- <translation type="unfinished"></translation>
+ <translation>Optionen des Exportformats</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="51"/>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<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>Wählen Sie die zu exportierenden Datebank aus.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="150"/>
<source>Select table to export.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die zu exportierenden Tabellen aus.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="175"/>
<source>Enter valid query to export.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>???</translatorcomment>
+ <translation>Geben Sie eine gültige Abfrage für den Export an.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="198"/>
<source>Select at least one object to export.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie ein zu exportierendes Datebankobjekt aus.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="221"/>
<source>You must provide a file name to export to.</source>
- <translation type="unfinished"></translation>
+ <translation>Sie müssen einen Namen für die Exportdatei angeben.</translation>
</message>
<message>
<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>Das von Ihnen angegebene Verzeichnis existiert bereits. Es kann nicht überschrieben werden.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="234"/>
<source>The directory &apos;%1&apos; does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Verzeichnis &apos;%1&apos; existiert nicht.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="240"/>
<source>The file &apos;%1&apos; exists and will be overwritten.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; existiert bereits und wird überschrieben werden.</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="417"/>
<source>All files (*)</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Dateien (*)</translation>
</message>
<message>
<location filename="../dialogs/exportdialog.cpp" line="420"/>
<source>Pick file to export to</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie eine Datei aus in die exportiert werden soll.</translation>
</message>
<message>
<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>Es trat ein interner Fehler während des Exportvorgangs auf. Dies ist ein Fehler, bitte melden Sie ihn dem Programmautor.</translation>
</message>
</context>
<context>
@@ -2941,7 +2953,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../common/fontedit.cpp" line="61"/>
<source>Choose font</source>
<comment>font configuration</comment>
- <translation type="unfinished"></translation>
+ <translation>Schriftart auswählen</translation>
</message>
</context>
<context>
@@ -2949,7 +2961,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../forms/sqlformatterplugin.ui" line="20"/>
<source>Active SQL formatter plugin</source>
- <translation type="unfinished"></translation>
+ <translation>Aktives SQL Formatierungsplugin</translation>
</message>
</context>
<context>
@@ -2958,49 +2970,49 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../formview.cpp" line="241"/>
<source>Commit row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeile speichern (Commit)</translation>
</message>
<message>
<location filename="../formview.cpp" line="242"/>
<source>Rollback row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeile rückgängig (Rollback)</translation>
</message>
<message>
<location filename="../formview.cpp" line="243"/>
<source>First row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Erste Zeile</translation>
</message>
<message>
<location filename="../formview.cpp" line="244"/>
<source>Previous row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Vorherige Zeile</translation>
</message>
<message>
<location filename="../formview.cpp" line="245"/>
<source>Next row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Nächste Zeile</translation>
</message>
<message>
<location filename="../formview.cpp" line="246"/>
<source>Last row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Letzte Zeile</translation>
</message>
<message>
<location filename="../formview.cpp" line="247"/>
<source>Insert new row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Neue Zeile einfügen</translation>
</message>
<message>
<location filename="../formview.cpp" line="248"/>
<source>Delete current row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>Aktuelle Zeile löschen</translation>
</message>
</context>
<context>
@@ -3008,159 +3020,160 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.ui" line="81"/>
<source>Filter funtions</source>
- <translation type="unfinished"></translation>
+ <translation>Filterfunktionen</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="260"/>
<source>Function name:</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsname:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="273"/>
<source>Implementation language:</source>
- <translation type="unfinished"></translation>
+ <translation>Implementationssprache:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="253"/>
<source>Type:</source>
- <translation type="unfinished"></translation>
+ <translation>Typ:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="157"/>
<source>Input arguments</source>
- <translation type="unfinished"></translation>
+ <translation>Eingabeargumente</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="163"/>
<source>Undefined</source>
- <translation type="unfinished"></translation>
+ <translation>Undefiniert</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="205"/>
<source>Databases</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbanken</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="211"/>
<source>Register in all databases</source>
- <translation type="unfinished"></translation>
+ <translation>In allen Datenbanken registrieren</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="218"/>
<source>Register in following databases:</source>
- <translation type="unfinished"></translation>
+ <translation>In den folgenden Datenbanken registrieren:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="293"/>
<source>Initialization code:</source>
- <translation type="unfinished"></translation>
+ <translation>Initialisierungsanweisungen:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="309"/>
<location filename="../windows/functionseditor.cpp" line="426"/>
<source>Function implementation code:</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsanweisungen:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="325"/>
<source>Final step implementation code:</source>
- <translation type="unfinished"></translation>
+ <translation>Abschlussanweisungen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="54"/>
<source>SQL function editor</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Funktionseditor</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="59"/>
<source>Commit all function changes</source>
- <translation type="unfinished"></translation>
+ <translation>Speichern aller Funktionsänderungen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="60"/>
<source>Rollback all function changes</source>
- <translation type="unfinished"></translation>
+ <translation>Zurücknehmen aller Funktionsänderungen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="62"/>
<source>Create new function</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Funktion erstellen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="63"/>
<source>Delete selected function</source>
- <translation type="unfinished"></translation>
+ <translation>Ausgewählte Funktion löschen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="65"/>
<source>Custom SQL functions manual</source>
- <translation type="unfinished"></translation>
+ <translation>Anleitung zu &apos;Benutzerdefinierte SQL Funktionen&apos;</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="68"/>
<source>Add function argument</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsargument zufügen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="69"/>
<source>Rename function argument</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsargument umbenennen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="70"/>
<source>Delete function argument</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsargument löschen</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="72"/>
<source>Move function argument up</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsargument hochschieben</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="73"/>
<source>Move function argument down</source>
- <translation type="unfinished"></translation>
+ <translation>Funktionsargument runterschieben</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="111"/>
<source>Scalar</source>
- <translation type="unfinished"></translation>
+ <translation>Skalar</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="112"/>
<source>Aggregate</source>
- <translation type="unfinished"></translation>
+ <translation>Aggregat</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="410"/>
<source>Enter a non-empty, unique name of the function.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen eindeutigen Namen für die Funktion ein.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="422"/>
<source>Pick the implementation language.</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Sprache aus.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="426"/>
<source>Per step code:</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>evtl. Einzelschrittanweisung???</translatorcomment>
+ <translation>Pro Schritt Anweisung</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="432"/>
<source>Enter a non-empty implementation code.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie die Anweisungen ein.</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="505"/>
<source>argument</source>
<comment>new function argument name in function editor window</comment>
- <translation type="unfinished"></translation>
+ <translation>Argument</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="631"/>
<source>Functions editor window has uncommited modifications.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Editorfür Funktionen enthält nicht gespeicherte Änderungen.</translation>
</message>
</context>
<context>
@@ -3168,102 +3181,102 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/importdialog.ui" line="14"/>
<source>Import data</source>
- <translation type="unfinished"></translation>
+ <translation>Daten importieren</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="21"/>
<source>Table to import to</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle in die importiert werden soll</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="36"/>
<source>Table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="43"/>
<source>Database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="84"/>
<source>Data source to import from</source>
- <translation type="unfinished"></translation>
+ <translation>Datenquelle von der aus importiert werden soll</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="129"/>
<source>Data source type</source>
- <translation type="unfinished"></translation>
+ <translation>Datenquellentyp</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="141"/>
<source>Options</source>
- <translation type="unfinished"></translation>
+ <translation>Optionen</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="182"/>
<source>Input file:</source>
- <translation type="unfinished"></translation>
+ <translation>Eingabedatei:</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="175"/>
<source>Text encoding:</source>
- <translation type="unfinished"></translation>
+ <translation>Textkodierung:</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="192"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Wenn diese Option aktiviert ist, wird jede Verletzung von Bedingungen oder ein ungültiges Datenformat (falsche Anzahl an Spalten) oder jedes andere Problem, das während des Imports auftritt, ignoriert und der Import wird fortgesetzt.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="195"/>
<source>Ignore errors</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler ignorieren</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="205"/>
<source>Data source options</source>
- <translation type="unfinished"></translation>
+ <translation>Datenquellenoptionen</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="71"/>
<source>Cancel</source>
- <translation type="unfinished"></translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="102"/>
<source>If you type table name that doesn&apos;t exist, it will be created.</source>
- <translation type="unfinished"></translation>
+ <translation>Wenn Sie einen Tabellenname eingeben, der noch nicht existiert, dann wird diese neue Tabelle erzeugt werden.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="102"/>
<source>Enter the table name</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbankname eingeben</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="120"/>
<source>Select import plugin.</source>
- <translation type="unfinished"></translation>
+ <translation>Importplugin auswählen</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="129"/>
<source>You must provide a file to import from.</source>
- <translation type="unfinished"></translation>
+ <translation>Sie müssen den Namen der Importdatei angeben.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="136"/>
<source>The file &apos;%1&apos; does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; existiert nicht.</translation>
</message>
<message>
<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>Der von Ihnen angegebene Pfad ist ein Verzeichnis. Es wird jedoch eine Datei benötigt.</translation>
</message>
<message>
<location filename="../dialogs/importdialog.cpp" line="318"/>
<source>Pick file to import from</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie eine Datei aus von der importiert werden soll.</translation>
</message>
</context>
<context>
@@ -3272,102 +3285,103 @@ Please enter new, unique name, or press &apos;%1&apos; 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>Auf Tabelle:</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="43"/>
<source>Index name:</source>
- <translation type="unfinished"></translation>
+ <translation>Indexname:</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="50"/>
<source>Partial index condition</source>
- <translation type="unfinished"></translation>
+ <translation>Partieller Indexzustand</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="67"/>
<source>Unique index</source>
- <translation type="unfinished"></translation>
+ <translation>Einzigartiger Index</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="90"/>
<source>Column</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="95"/>
<source>Collation</source>
- <translation type="unfinished"></translation>
+ <translation>Kollation</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.ui" line="100"/>
<source>Sort</source>
- <translation type="unfinished"></translation>
+ <translation>Sortierung</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"/>
<source>Tried to open index dialog for closed or inexisting database.</source>
- <translation type="unfinished"></translation>
+ <translation>Es wurde versucht den Index-Dialog für eine geschlossene oder nicht existente Datenbank zu öffnen.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="131"/>
<source>Could not process index %1 correctly. Unable to open an index dialog.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Index %1 kann nicht vollständig bearbeitet werden, da der Index-Dialog nicht geöffnet werden kann.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="185"/>
<source>Pick the table for the index.</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle für den Index auswählen.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="186"/>
<source>Select at least one column.</source>
- <translation type="unfinished"></translation>
+ <translation>Mindestens eine Spalte auswählen.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="187"/>
<source>Enter a valid condition.</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen gültigen Zustand ein.</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="236"/>
<source>default</source>
<comment>index dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Standard</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="247"/>
<source>Sort order</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>Sortierung</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="453"/>
<location filename="../dialogs/indexdialog.cpp" line="466"/>
<source>Error</source>
<comment>index dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Fehler</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="454"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
- <translation type="unfinished"></translation>
+ <translation>Der eindeutige Index kann nicht erzeigt werden, da Werte in den selektierten Spalten nicht eundeutig sind. Möchten Sie die zugehörige SELECT Abfrage ausführen, um die uneindeutigen Werte zu sehen?</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="466"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ausführen des folgenden SQL Statments:
+%1</translation>
</message>
</context>
<context>
@@ -3375,12 +3389,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/languagedialog.ui" line="14"/>
<source>Language</source>
- <translation type="unfinished"></translation>
+ <translation>Sprache</translation>
</message>
<message>
<location filename="../dialogs/languagedialog.ui" line="20"/>
<source>Please choose language:</source>
- <translation type="unfinished"></translation>
+ <translation>Bitte Sprache auswählen:</translation>
</message>
</context>
<context>
@@ -3388,298 +3402,298 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.ui" line="81"/>
<source>Database toolbar</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbankleiste</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="92"/>
<source>Structure toolbar</source>
- <translation type="unfinished"></translation>
+ <translation>Bearbeitungsleiste</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="103"/>
<source>Tools</source>
- <translation type="unfinished"></translation>
+ <translation>Werkzeuge</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="120"/>
<source>Window list</source>
- <translation type="unfinished"></translation>
+ <translation>Fensterliste</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="134"/>
<source>View toolbar</source>
- <translation type="unfinished"></translation>
+ <translation>Ansichtenleiste</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="107"/>
<source>Configuration widgets</source>
- <translation type="unfinished"></translation>
+ <translation>Konfigurationshelfer</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="108"/>
<source>Syntax highlighting engines</source>
- <translation type="unfinished"></translation>
+ <translation>Syntaxhervorhebungen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="109"/>
<source>Data editors</source>
- <translation type="unfinished"></translation>
+ <translation>Dateneditoren</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="121"/>
<source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
- <translation type="unfinished"></translation>
+ <translation>Ablauf im Debugmodus. Zum Öffnen der Debugkonsole drücken Sie %1 oder wählen Menü &apos;Hilfe&apos; den Eintrag &apos;Debugkonsole öffnen&apos; aus.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="123"/>
<source>Running in debug mode. Debug messages are printed to the standard output.</source>
- <translation type="unfinished"></translation>
+ <translation>Ablauf im Debugmodus. Debugmeldungen werden in der Standardausgabe angezeigt..</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="211"/>
<source>You need to restart application to make the language change take effect.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Programm muss neu gestartet werden, damit die Änderung der Sprache wirksam wird.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="254"/>
<source>Open SQL editor</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Editor öffnen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="255"/>
<source>Open DDL history</source>
- <translation type="unfinished"></translation>
+ <translation>DDL Verlauf öffnen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL functions editor</source>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="257"/>
<source>Open collations editor</source>
- <translation type="unfinished"></translation>
+ <translation>Editor für Kollationen öffnen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="258"/>
<source>Import</source>
- <translation type="unfinished"></translation>
+ <translation>Importieren</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="259"/>
<source>Export</source>
- <translation type="unfinished"></translation>
+ <translation>Exportieren</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="261"/>
<source>Open configuration dialog</source>
- <translation type="unfinished"></translation>
+ <translation>Einstellungen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="263"/>
<source>Tile windows</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Fenster aufteilen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="264"/>
<source>Tile windows horizontally</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Fenster horizontal aufteilen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows vertically</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Fenster vertikal aufteilen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="266"/>
<source>Cascade windows</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Fenster kaskadiert aufteilen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="267"/>
<source>Next window</source>
- <translation type="unfinished"></translation>
+ <translation>Nächstes Fenster</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="268"/>
<source>Previous window</source>
- <translation type="unfinished"></translation>
+ <translation>Vorheriges Fenster</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="269"/>
<source>Hide status field</source>
- <translation type="unfinished"></translation>
+ <translation>Statusfeld verbergen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="271"/>
<source>Close selected window</source>
- <translation type="unfinished"></translation>
+ <translation>Ausgewähltes Fenster schließen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="272"/>
<source>Close all windows but selected</source>
- <translation type="unfinished"></translation>
+ <translation>Alle anderen Fenster schließen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="273"/>
<source>Close all windows</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Fenster schließen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="274"/>
<source>Restore recently closed window</source>
- <translation type="unfinished"></translation>
+ <translation>Zuletzt geöffnetes Fenster wiederherstellen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="275"/>
<source>Rename selected window</source>
- <translation type="unfinished"></translation>
+ <translation>Ausgewähltes Fenster umbenennen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="277"/>
<source>Open Debug Console</source>
- <translation type="unfinished"></translation>
+ <translation>Debug Konsole öffnen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="278"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>CSS Konsole öffnen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="279"/>
<source>Report a bug</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler melden</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="280"/>
<source>Propose a new feature</source>
- <translation type="unfinished"></translation>
+ <translation>Eine neue Programmfunktion vorschlagen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="281"/>
<source>About</source>
- <translation type="unfinished"></translation>
+ <translation>Über SQLiteStudio</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="282"/>
<source>Licenses</source>
- <translation type="unfinished"></translation>
+ <translation>Lizenzen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="283"/>
<source>Open home page</source>
- <translation type="unfinished"></translation>
+ <translation>Homepage aufrufen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="284"/>
<source>Open forum page</source>
- <translation type="unfinished"></translation>
+ <translation>Forum aufrufen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="285"/>
<source>User Manual</source>
- <translation type="unfinished"></translation>
+ <translation>Bedienungsanleitung</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="286"/>
<source>SQLite documentation</source>
- <translation type="unfinished"></translation>
+ <translation>SQLite Dokumentation</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="287"/>
<source>Report history</source>
- <translation type="unfinished"></translation>
+ <translation>Verlauf gemeldeter Fehler</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="289"/>
<source>Check for updates</source>
- <translation type="unfinished"></translation>
+ <translation>Auf Updates prüfen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="327"/>
<source>Database</source>
<comment>menubar</comment>
- <translation type="unfinished"></translation>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="347"/>
<source>Structure</source>
<comment>menubar</comment>
- <translation type="unfinished"></translation>
+ <translation>Struktur</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="368"/>
<source>View</source>
<comment>menubar</comment>
- <translation type="unfinished"></translation>
+ <translation>Ansicht</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="372"/>
<source>Window list</source>
<comment>menubar view menu</comment>
- <translation type="unfinished"></translation>
+ <translation>Fensterliste</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="393"/>
<source>Tools</source>
<comment>menubar</comment>
- <translation type="unfinished"></translation>
+ <translation>Werkzeuge</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="407"/>
<source>Help</source>
- <translation type="unfinished"></translation>
+ <translation>Hilfe</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="569"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
- <translation type="unfinished"></translation>
+ <translation>Der folgende Stil kann nicht gesetzt werden: %1</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="642"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann nicht exportiert werden, da kein Export Plugin geladen ist.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="658"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann nicht importiert werden, da kein Import Plugin geladen ist.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="691"/>
<source>Rename window</source>
- <translation type="unfinished"></translation>
+ <translation>Fenster umbenennen</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="691"/>
<source>Enter new name for the window:</source>
- <translation type="unfinished"></translation>
+ <translation>Geben Sie einen neuen Namen für das Fenster ein.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="777"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
- <translation type="unfinished"></translation>
+ <translation>Neues Update verfügbar. &lt;a href=&quot;%1&quot;&gt;Weitere Details&lt;/a&gt;.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="785"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
- <translation type="unfinished"></translation>
+ <translation>Sie haben bereits die aktuellste Version. Keine Update verfügbar.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="891"/>
<source>Database passed in command line parameters (%1) was already on the list under name: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank, die mittels Programmparameter übergeben wurde (%1), war bereits in der Liste unter dem Namen %2 vorhanden.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="898"/>
<source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank, die mittels Programmparameter übergeben wurde (%1), wurde in der Liste termporär unter dem Namen %2 zugefügt.</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="903"/>
<source>Could not add database %1 to list.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datenbank %1 konnte nicht hinzugefügt werden.</translation>
</message>
</context>
<context>
@@ -3687,17 +3701,17 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mdiwindow.cpp" line="199"/>
<source>Uncommited changes</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht gespeicherte Änderungen</translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="204"/>
<source>Close anyway</source>
- <translation type="unfinished"></translation>
+ <translation>Trotzdem schließen</translation>
</message>
<message>
<location filename="../mdiwindow.cpp" line="206"/>
<source>Don&apos;t close</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht schließen</translation>
</message>
</context>
<context>
@@ -3706,29 +3720,29 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../multieditor/multieditor.cpp" line="62"/>
<source>Null value</source>
<comment>multieditor</comment>
- <translation type="unfinished"></translation>
+ <translation>NULL Wert</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="77"/>
<source>Configure editors for this data type</source>
- <translation type="unfinished"></translation>
+ <translation>Konfigurationseditoren für diesen Datentyp</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="287"/>
<source>Data editor plugin &apos;%1&apos; not loaded, while it is defined for editing &apos;%1&apos; data type.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Dateneditor Plugin &apos;%1&apos; ist nicht geladen, obwohl es für den &apos;%1&apos; Datentypen als Editor definiert ist.</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="372"/>
<source>Deleted</source>
<comment>multieditor</comment>
- <translation type="unfinished"></translation>
+ <translation>Gelöscht</translation>
</message>
<message>
<location filename="../multieditor/multieditor.cpp" line="374"/>
<source>Read only</source>
<comment>multieditor</comment>
- <translation type="unfinished"></translation>
+ <translation>Nur lesend</translation>
</message>
</context>
<context>
@@ -3736,7 +3750,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditorbool.cpp" line="130"/>
<source>Boolean</source>
- <translation type="unfinished"></translation>
+ <translation>Boolean</translation>
</message>
</context>
<context>
@@ -3744,7 +3758,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditordate.cpp" line="14"/>
<source>Date</source>
- <translation type="unfinished"></translation>
+ <translation>Datum</translation>
</message>
</context>
<context>
@@ -3752,7 +3766,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditordatetime.cpp" line="181"/>
<source>Date &amp; time</source>
- <translation type="unfinished"></translation>
+ <translation>Datum &amp; Zeit</translation>
</message>
</context>
<context>
@@ -3760,7 +3774,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditorhex.cpp" line="39"/>
<source>Hex</source>
- <translation type="unfinished"></translation>
+ <translation>Hexadezimal</translation>
</message>
</context>
<context>
@@ -3769,7 +3783,7 @@ Please enter new, unique name, or press &apos;%1&apos; 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>Nummer</translation>
</message>
</context>
<context>
@@ -3777,42 +3791,43 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditortext.cpp" line="45"/>
<source>Text</source>
- <translation type="unfinished"></translation>
+ <translation>Text</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="106"/>
<source>Tab changes focus</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Hier fehlt mir der Kontext... Nacharbeiten nötig.</translatorcomment>
+ <translation>Reiter Änderungen Fokus</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="107"/>
<source>Cut</source>
- <translation type="unfinished"></translation>
+ <translation>Ausschneiden</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="108"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Kopieren</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="109"/>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>Einfügen</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="110"/>
<source>Delete</source>
- <translation type="unfinished"></translation>
+ <translation>Löschen</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="111"/>
<source>Undo</source>
- <translation type="unfinished"></translation>
+ <translation>Rückgängig</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="112"/>
<source>Redo</source>
- <translation type="unfinished"></translation>
+ <translation>Wiederholen</translation>
</message>
</context>
<context>
@@ -3820,7 +3835,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditortime.cpp" line="16"/>
<source>Time</source>
- <translation type="unfinished"></translation>
+ <translation>Zeit</translation>
</message>
</context>
<context>
@@ -3828,53 +3843,53 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/newconstraintdialog.ui" line="20"/>
<source>New constraint</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Bedingung</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ärschlüssel</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>Fremdschlüssel</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>Einzigartig</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>Prüfung</translation>
</message>
<message>
<location filename="../dialogs/newconstraintdialog.cpp" line="103"/>
<source>Not NULL</source>
<comment>new constraint dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Nicht NULL</translation>
</message>
<message>
<location filename="../dialogs/newconstraintdialog.cpp" line="105"/>
<source>Collate</source>
<comment>new constraint dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Kollation</translation>
</message>
<message>
<location filename="../dialogs/newconstraintdialog.cpp" line="107"/>
<source>Default</source>
<comment>new constraint dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Standard</translation>
</message>
</context>
<context>
@@ -3882,52 +3897,52 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/newversiondialog.ui" line="14"/>
<source>SQLiteStudio updates</source>
- <translation type="unfinished"></translation>
+ <translation>SQLiteStudio Updates</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="26"/>
<source>New updates are available!</source>
- <translation type="unfinished"></translation>
+ <translation>Neues Update verfügbar!</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="70"/>
<source>Component</source>
- <translation type="unfinished"></translation>
+ <translation>Komponente</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="75"/>
<source>Current version</source>
- <translation type="unfinished"></translation>
+ <translation>Derzeitige Version</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="80"/>
<source>Update version</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Version</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="91"/>
<source>Check for updates on startup</source>
- <translation type="unfinished"></translation>
+ <translation>Beim Programmstart auf Updates prüfen</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="101"/>
<source>Update to new version!</source>
- <translation type="unfinished"></translation>
+ <translation>Auf neue Version aktualisieren!</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>Das Update wird automatisch heruntergeladen und installiert. Die Anwendung wird daraufhin neugestartet.</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="121"/>
<source>Not now.</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht jetzt.</translation>
</message>
<message>
<location filename="../dialogs/newversiondialog.ui" line="134"/>
<source>Don&apos;t install the update and close this window.</source>
- <translation type="unfinished"></translation>
+ <translation>Update nicht installieren und Fenster schließen.</translation>
</message>
</context>
<context>
@@ -3935,12 +3950,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populateconfigdialog.ui" line="14"/>
<source>Populating configuration</source>
- <translation type="unfinished"></translation>
+ <translation>Konfiguration auffüllen</translation>
</message>
<message>
<location filename="../dialogs/populateconfigdialog.cpp" line="54"/>
<source>Configuring &lt;b&gt;%1&lt;/b&gt; for column &lt;b&gt;%2&lt;/b&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>Konfiguriere &lt;b&gt;%1&lt;/b&gt; für Spalte &lt;b&gt;%2&lt;/b&gt;</translation>
</message>
</context>
<context>
@@ -3948,63 +3963,63 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populatedialog.ui" line="14"/>
<source>Populate table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle füllen</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.ui" line="26"/>
<source>Database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.ui" line="44"/>
<source>Table</source>
- <translation type="unfinished"></translation>
+ <translation>Tabelle</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.ui" line="72"/>
<source>Columns</source>
- <translation type="unfinished"></translation>
+ <translation>Spalten</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.ui" line="102"/>
<source>Number of rows to populate:</source>
- <translation type="unfinished"></translation>
+ <translation>Anzahl an Datenzeilen zum Auffüllen:</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="42"/>
<source>Populate</source>
<comment>populate dialog button</comment>
- <translation type="unfinished"></translation>
+ <translation>Füllen</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="54"/>
<source>Abort</source>
- <translation type="unfinished"></translation>
+ <translation>Abbrechen</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="161"/>
<source>Configure</source>
- <translation type="unfinished"></translation>
+ <translation>Konfigurieren</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="259"/>
<source>Populating configuration for this column is invalid or incomplete.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Konfigurationsauffüllung für diese Spalte ist ungültig oder unvollständig.</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="290"/>
<source>Select database with table to populate</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Datebank und Tabelle zum Auffüllen aus.</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="291"/>
<source>Select table to populate</source>
- <translation type="unfinished"></translation>
+ <translation>Wählen Sie die Tabelle zum Auffüllen aus.</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="292"/>
<source>You have to select at least one column.</source>
- <translation type="unfinished"></translation>
+ <translation>Sie müssen mindestens eine Spalte auswählen.</translation>
</message>
</context>
<context>
@@ -4012,42 +4027,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<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>
+ <translation>Spalten, die das Ergebnis von verbundenen %1 Abfragen sind (solche, die %2, %3 oder %4 Schlüsselwörter enthalten), können nicht editiert werden.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="70"/>
<source>The query execution mechanism had problems with extracting ROWID&apos;s properly. This might be a bug in the application. You may want to report this.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Ausführungsmechanismus hat Probleme die ROWID korrekt zu extrahieren. Dies könnte ein Programmfehler sein, den Sie evtl. melden möchten.</translation>
</message>
<message>
<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>
+ <translation>Die betreffende Spalte ist das Ergebnis eines SQL-Ausdrucks statt einer einfachen Spaltenselektion. Solche Spalten können nicht editiert werden.</translation>
</message>
<message>
<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>
+ <translation>Die betreffende Spalte gehört zu einer eingeschränkten SQLite Tabelle. Solche Tabellen können nicht direkt editiert werden.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="76"/>
<source>Cannot edit results of query other than %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Es können keine Ergebnisse von einer von %1 abweichenden Abfrage editiert werden.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="78"/>
<source>Cannot edit columns that are result of aggregated %1 statements.</source>
- <translation type="unfinished"></translation>
+ <translation>Es können keine Spalten editiert werden, die das Ergebnis einer aggregierten %1 Abfrage sind.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="80"/>
<source>Cannot edit columns that are result of %1 statement.</source>
- <translation type="unfinished"></translation>
+ <translation>Es können keine Spalten editiert werden, die das Ergebnis von %1 Abfragen sind.</translation>
</message>
<message>
<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>
+ <translation>Es können keine Spalten editiert werden, die das Ergebnis von allgemeinen Tabellenausdrücken sind (%1).</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="357"/>
@@ -4056,558 +4071,560 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="447"/>
<source>on conflict: %1</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Bei Konfikt: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="377"/>
<source>references table %1, column %2</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Referenztabelle %1, Zeile %2</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="444"/>
<source>condition: %1</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Zustand: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/>
<source>collation name: %1</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Name der Kollation: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="19"/>
<source>Data grid view</source>
- <translation type="unfinished"></translation>
+ <translation>Ergebnisansicht</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="20"/>
<source>Copy cell(s) contents to clipboard</source>
- <translation type="unfinished"></translation>
+ <translation>Kopiert Zelleninhalt(e) in die Zwischenablage</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="22"/>
<source>Paste cell(s) contents from clipboard</source>
- <translation type="unfinished"></translation>
+ <translation>Fügt Zelleninhalt(e) von der Zwischenablage ein</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="24"/>
<source>Set empty value to selected cell(s)</source>
- <translation type="unfinished"></translation>
+ <translation>Fügt einen leeren Wert in die selektierte(n) Zelle(n) ein</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="25"/>
<source>Set NULL value to selected cell(s)</source>
- <translation type="unfinished"></translation>
+ <translation>Fügt den NULL Wert in die selektierte(n) Zelle(n) ein</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="26"/>
<source>Commit changes to cell(s) contents</source>
- <translation type="unfinished"></translation>
+ <translation>Änderungen der Zellenninhalte speichern</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="27"/>
<source>Rollback changes to cell(s) contents</source>
- <translation type="unfinished"></translation>
+ <translation>Änderungen der Zelleninhalte zurücknehmen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="28"/>
<source>Delete selected data row</source>
- <translation type="unfinished"></translation>
+ <translation>Markierte Datenzeile löschen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.h" line="29"/>
<source>Insert new data row</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Datenzeile einfügen</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>Inhalt der markierten Zelle im separaten Editor öffnen</translation>
</message>
<message>
<location filename="../dataview.cpp" line="532"/>
<source>Total pages available: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Verfügbare Gesamtseiten: %1</translation>
</message>
<message>
<location filename="../dataview.cpp" line="542"/>
<source>Total rows loaded: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Insgesamt geladene Zeilen: %1</translation>
</message>
<message>
<location filename="../dataview.h" line="18"/>
<source>Data view (both grid and form)</source>
- <translation type="unfinished"></translation>
+ <translation>Ergebnisansicht (tabellarisch und Formular)</translation>
</message>
<message>
<location filename="../dataview.h" line="19"/>
<source>Refresh data</source>
- <translation type="unfinished"></translation>
+ <translation>Daten aktualisieren</translation>
</message>
<message>
<location filename="../dataview.h" line="20"/>
<source>Switch to grid view of the data</source>
- <translation type="unfinished"></translation>
+ <translation>Zur tabellarischen Ergebnisansicht wechseln</translation>
</message>
<message>
<location filename="../dataview.h" line="21"/>
<source>Switch to form view of the data</source>
- <translation type="unfinished"></translation>
+ <translation>Zur Formularansicht wechseln</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="26"/>
<source>Database list</source>
- <translation type="unfinished"></translation>
+ <translation>Liste der Datenbanken</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="27"/>
<source>Delete selected item</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Eintrag löschen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="28"/>
<source>Clear filter contents</source>
- <translation type="unfinished"></translation>
+ <translation>Filter zurücksetzen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="29"/>
<source>Refresh schema</source>
- <translation type="unfinished"></translation>
+ <translation>Schema aktualisieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="30"/>
<source>Refresh all schemas</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Schemas aktualisieren</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="31"/>
<source>Add database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank hinzufügen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="32"/>
<source>Select all items</source>
- <translation type="unfinished"></translation>
+ <translation>Alles auswählen</translation>
</message>
<message>
<location filename="../dbtree/dbtree.h" line="33"/>
<source>Copy selected item(s)</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Einträge kopieren</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>Von der Zwischenablage einfügen</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="47"/>
<source>Tables</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellen</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="52"/>
<source>Indexes</source>
- <translation type="unfinished"></translation>
+ <translation>Indizes</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="57"/>
<source>Triggers</source>
- <translation type="unfinished"></translation>
+ <translation>Trigger</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="62"/>
<source>Views</source>
- <translation type="unfinished"></translation>
+ <translation>Views</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="67"/>
<source>Columns</source>
- <translation type="unfinished"></translation>
+ <translation>Spalten</translation>
</message>
<message>
<location filename="../formview.h" line="16"/>
<source>Data form view</source>
- <translation type="unfinished"></translation>
+ <translation>Formularansicht der Ergebnisse</translation>
</message>
<message>
<location filename="../formview.h" line="17"/>
<source>Commit changes for current row</source>
- <translation type="unfinished"></translation>
+ <translation>Änderungen der aktuellen Zeile speichern</translation>
</message>
<message>
<location filename="../formview.h" line="18"/>
<source>Rollback changes for current row</source>
- <translation type="unfinished"></translation>
+ <translation>Änderungen der aktuellen Zeile zurücknehmen</translation>
</message>
<message>
<location filename="../formview.h" line="19"/>
<source>Go to first row on current page</source>
- <translation type="unfinished"></translation>
+ <translation>Springe zur ersten Zeile dieser Seite</translation>
</message>
<message>
<location filename="../formview.h" line="20"/>
<source>Go to next row</source>
- <translation type="unfinished"></translation>
+ <translation>Springe zur nächsten Zeile</translation>
</message>
<message>
<location filename="../formview.h" line="21"/>
<source>Go to previous row</source>
- <translation type="unfinished"></translation>
+ <translation>Springe zur vorherigen Zeile</translation>
</message>
<message>
<location filename="../formview.h" line="22"/>
<source>Go to last row on current page</source>
- <translation type="unfinished"></translation>
+ <translation>Springe zur letzten Zeile dieser Seite</translation>
</message>
<message>
<location filename="../formview.h" line="23"/>
<source>Insert new row</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Zeile einfügen</translation>
</message>
<message>
<location filename="../formview.h" line="24"/>
<source>Delete current row</source>
- <translation type="unfinished"></translation>
+ <translation>Derzeitige Zeile löschen</translation>
</message>
<message>
<location filename="../mainwindow.h" line="43"/>
<source>Main window</source>
- <translation type="unfinished"></translation>
+ <translation>Hauptfenster</translation>
</message>
<message>
<location filename="../mainwindow.h" line="44"/>
<source>Open SQL editor</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Editor öffnen</translation>
</message>
<message>
<location filename="../mainwindow.h" line="45"/>
<source>Previous window</source>
- <translation type="unfinished"></translation>
+ <translation>Vorheriges Fenster</translation>
</message>
<message>
<location filename="../mainwindow.h" line="46"/>
<source>Next window</source>
- <translation type="unfinished"></translation>
+ <translation>Nächstes Fenster</translation>
</message>
<message>
<location filename="../mainwindow.h" line="47"/>
<source>Hide status area</source>
- <translation type="unfinished"></translation>
+ <translation>Statusfeld verbergen</translation>
</message>
<message>
<location filename="../mainwindow.h" line="48"/>
<source>Open configuration dialog</source>
- <translation type="unfinished"></translation>
+ <translation>Konfigurationsdialog öffnen</translation>
</message>
<message>
<location filename="../mainwindow.h" line="49"/>
<source>Open Debug Console</source>
- <translation type="unfinished"></translation>
+ <translation>Debug Konsole öffnen</translation>
</message>
<message>
<location filename="../mainwindow.h" line="50"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>CSS Konsole öffnen</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="12"/>
<source>Cell text value editor</source>
- <translation type="unfinished"></translation>
+ <translation>Editor für Textwerte in Zellen</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
<location filename="../sqleditor.h" line="22"/>
<source>Cut selected text</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Text ausschneiden</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>Gewählten Text kopieren</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>Gewählten Text löschen</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
<location filename="../sqleditor.h" line="27"/>
<source>Undo</source>
- <translation type="unfinished"></translation>
+ <translation>Rückgängig</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
<location filename="../sqleditor.h" line="28"/>
<source>Redo</source>
- <translation type="unfinished"></translation>
+ <translation>Wiederholen</translation>
</message>
<message>
<location filename="../sqleditor.h" line="21"/>
<source>SQL editor input field</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Editor Eingabefeld</translation>
</message>
<message>
<location filename="../sqleditor.h" line="26"/>
<source>Select whole editor contents</source>
- <translation type="unfinished"></translation>
+ <translation>Gesamten Editorinhalt auswählen</translation>
</message>
<message>
<location filename="../sqleditor.h" line="29"/>
<source>Save contents into a file</source>
- <translation type="unfinished"></translation>
+ <translation>Inhalte in eine Datei speichern</translation>
</message>
<message>
<location filename="../sqleditor.h" line="30"/>
<source>Load contents from a file</source>
- <translation type="unfinished"></translation>
+ <translation>Inhalte aus einer Datei laden</translation>
</message>
<message>
<location filename="../sqleditor.h" line="31"/>
<source>Find in text</source>
- <translation type="unfinished"></translation>
+ <translation>Suche im Text</translation>
</message>
<message>
<location filename="../sqleditor.h" line="32"/>
<source>Find next</source>
- <translation type="unfinished"></translation>
+ <translation>Nächster Fund</translation>
</message>
<message>
<location filename="../sqleditor.h" line="33"/>
<source>Find previous</source>
- <translation type="unfinished"></translation>
+ <translation>Vorheriger Fund</translation>
</message>
<message>
<location filename="../sqleditor.h" line="34"/>
<source>Replace in text</source>
- <translation type="unfinished"></translation>
+ <translation>Ersetze im Text</translation>
</message>
<message>
<location filename="../sqleditor.h" line="35"/>
<source>Delete current line</source>
- <translation type="unfinished"></translation>
+ <translation>Aktuelle Zeile löschen</translation>
</message>
<message>
<location filename="../sqleditor.h" line="36"/>
<source>Request code assistant</source>
- <translation type="unfinished"></translation>
+ <translation>Code-Assistenten anfordern</translation>
</message>
<message>
<location filename="../sqleditor.h" line="37"/>
<source>Format contents</source>
- <translation type="unfinished"></translation>
+ <translation>Format-Inhalte</translation>
</message>
<message>
<location filename="../sqleditor.h" line="38"/>
<source>Move selected block of text one line down</source>
- <translation type="unfinished"></translation>
+ <translation>Selektierten Textblock eine Zeile nach unten verschieben</translation>
</message>
<message>
<location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line up</source>
- <translation type="unfinished"></translation>
+ <translation>Selektierten Textblock eine Zeile nach oben verschieben</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>Selektierten Textblock kopieren und unterhalb einfügen</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>Selektierten Textblock kopieren und oberhalb einfügen</translation>
</message>
<message>
<location filename="../uiutils.cpp" line="32"/>
<source>All SQLite databases</source>
- <translation type="unfinished"></translation>
+ <translation>Alle SQLite Datenbanken</translation>
</message>
<message>
<location filename="../uiutils.cpp" line="35"/>
<source>All files</source>
- <translation type="unfinished"></translation>
+ <translation>Alle Dateien</translation>
</message>
<message>
<location filename="../uiutils.cpp" line="39"/>
<location filename="../uiutils.cpp" line="41"/>
<source>Database file</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbankdatei</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.h" line="11"/>
<source>Reports history window</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Diese Übersetzung muss noch einmal geprüft werden, wenn ich den Kontext dazu kenne.</translatorcomment>
+ <translation>Report-Verlaufsfenster</translation>
</message>
<message>
<location filename="../windows/bugreporthistorywindow.h" line="12"/>
<source>Delete selected entry</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Eintrag löschen</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="26"/>
<source>SQL editor window</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Editor-Fenster</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="27"/>
<source>Execute query</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage ausführen</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="28"/>
<source>Execute &quot;%1&quot; query</source>
- <translation type="unfinished"></translation>
+ <translation>Abfrage &quot;%1&quot; ausführen</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="29"/>
<source>Switch current working database to previous on the list</source>
- <translation type="unfinished"></translation>
+ <translation>Wechsel von der aktuellen Datenbank zur vorherigen in der Liste</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="30"/>
<source>Switch current working database to next on the list</source>
- <translation type="unfinished"></translation>
+ <translation>Wechsel von der aktuellen Datenbank zur nächsten in der Liste</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="31"/>
<source>Go to next editor tab</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum nächsten Editor-Reiter</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="32"/>
<source>Go to previous editor tab</source>
- <translation type="unfinished"></translation>
+ <translation>Gehe zum vorherigen Editor-Reiter</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="33"/>
<source>Move keyboard input focus to the results view below</source>
- <translation type="unfinished"></translation>
+ <translation>Tastatureingabe-Fokus in das untere Ergebnisfenster setzen</translation>
</message>
<message>
<location filename="../windows/editorwindow.h" line="34"/>
<source>Move keyboard input focus to the SQL editor above</source>
- <translation type="unfinished"></translation>
+ <translation>Tastatureingabe-Fokus in das obere SQL Editorfenster setzen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="30"/>
<source>Table window</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellenfenster</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="31"/>
<source>Refresh table structure</source>
- <translation type="unfinished"></translation>
+ <translation>Aktualisiere Tabellenstruktur</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="32"/>
<source>Add new column</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Spalte zufügen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="33"/>
<source>Edit selected column</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Spalte bearbeiten</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="34"/>
<source>Delete selected column</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Spalte löschen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="35"/>
<source>Export table data</source>
- <translation type="unfinished"></translation>
+ <translation>Tabellendaten exportieren</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="36"/>
<source>Import data to the table</source>
- <translation type="unfinished"></translation>
+ <translation>Daten in die Tabelle importieren</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="37"/>
<source>Add new table constraint</source>
- <translation type="unfinished"></translation>
+ <translation>Neue Tabellenbedingung zufügen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="38"/>
<source>Edit selected table constraint</source>
- <translation type="unfinished"></translation>
+ <translation>Markierte Tabellenbedingung bearbeiten</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="39"/>
<source>Delete selected table constraint</source>
- <translation type="unfinished"></translation>
+ <translation>Markierte Tabellenbedingung löschen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="40"/>
<source>Refresh table index list</source>
- <translation type="unfinished"></translation>
+ <translation>Aktualisiere Tabellenindexliste</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="41"/>
<source>Add new index</source>
- <translation type="unfinished"></translation>
+ <translation>Neuen Index zufügen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="42"/>
<source>Edit selected index</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Index bearbeiten</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="43"/>
<source>Delete selected index</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählten Index löschen</translation>
</message>
<message>
<location filename="../windows/tablewindow.h" line="44"/>
<source>Refresh table trigger list</source>
- <translation type="unfinished"></translation>
+ <translation>Aktualisiere Tabellentriggerliste</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>Neuen Trigger zufügen</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>Gewählten Trigger bearbeiten</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>Gewählten Trigger löschen</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>Springe zum nächsten Reiter</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>Springe zum vorherigen Reiter</translation>
</message>
<message>
<location filename="../windows/viewwindow.h" line="23"/>
<source>A view window</source>
- <translation type="unfinished"></translation>
+ <translation>Neues Fenster zufügen</translation>
</message>
<message>
<location filename="../windows/viewwindow.h" line="24"/>
<source>Refresh view trigger list</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Ggf. View mit Ansicht übersetzen, muss im Kontext geklärt werden</translatorcomment>
+ <translation>Aktualisiere View Triggerliste</translation>
</message>
</context>
<context>
@@ -4615,14 +4632,16 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht gespeicherte Änderungen</translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
<source>Are you sure you want to quit the application?
Following items are pending:</source>
- <translation type="unfinished"></translation>
+ <translation>Sind Sie sicher, dass Sie das Programm beenden wollen?
+
+Folgende Punkte sind unerledigt:</translation>
</message>
</context>
<context>
@@ -4630,48 +4649,49 @@ Following items are pending:</source>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="14"/>
<source>Find or replace</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Ggf. Suchen statt Finden?</translatorcomment>
+ <translation>Finden oder Ersetzen</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="23"/>
<source>Find:</source>
- <translation type="unfinished"></translation>
+ <translation>Finden:</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="36"/>
<source>Case sensitive</source>
- <translation type="unfinished"></translation>
+ <translation>Groß- und Kleinschreibung beachten</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="43"/>
<source>Search backwards</source>
- <translation type="unfinished"></translation>
+ <translation>Suche rückwärts</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="50"/>
<source>Regular expression matching</source>
- <translation type="unfinished"></translation>
+ <translation>Prüfung nach regulärem Ausdruck</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="60"/>
<source>Replace &amp;&amp;
find next</source>
- <translation type="unfinished"></translation>
+ <translation>Ersetzen &amp;&amp; weitersuchen</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="78"/>
<source>Replace with:</source>
- <translation type="unfinished"></translation>
+ <translation>Ersetzen mit:</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="91"/>
<source>Replace all</source>
- <translation type="unfinished"></translation>
+ <translation>Alles ersetzen</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="98"/>
<source>Find</source>
- <translation type="unfinished"></translation>
+ <translation>Finden</translation>
</message>
</context>
<context>
@@ -4679,34 +4699,34 @@ find next</source>
<message>
<location filename="../dialogs/sortdialog.ui" line="14"/>
<source>Sort by columns</source>
- <translation type="unfinished"></translation>
+ <translation>Nach Spalten sortiert</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>Spalte</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>Sortierung</translation>
</message>
<message>
<location filename="../dialogs/sortdialog.cpp" line="178"/>
<source>Sort by: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Sortiert nach: %1</translation>
</message>
<message>
<location filename="../dialogs/sortdialog.cpp" line="242"/>
<source>Move column up</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte nach oben verschieben</translation>
</message>
<message>
<location filename="../dialogs/sortdialog.cpp" line="243"/>
<source>Move column down</source>
- <translation type="unfinished"></translation>
+ <translation>Spalte nach unten verschieben</translation>
</message>
</context>
<context>
@@ -4715,172 +4735,173 @@ find next</source>
<location filename="../sqleditor.cpp" line="118"/>
<source>Cut</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Ausschneiden</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="119"/>
<source>Copy</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Kopieren</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="120"/>
<source>Paste</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Einfügen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="121"/>
<source>Delete</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Löschen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="122"/>
<source>Select all</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Alles auswählen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="123"/>
<source>Undo</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Rückgängig</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="124"/>
<source>Redo</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Wiederholen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="125"/>
<source>Complete</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Komplett</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="126"/>
<source>Format SQL</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>SQL formatieren</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 in Datei speichern</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="128"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>SQL aus Datei laden</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="129"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeile löschen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="130"/>
<source>Delete line</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Zeile löschen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="131"/>
<source>Move block down</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Block nach unten verschieben</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="132"/>
<source>Move block up</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Block nach oben verschieben</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="133"/>
<source>Copy block down</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Block nach unten kopieren</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="134"/>
<source>Copy up down</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translatorcomment>&quot;up down&quot; ??? Muss geklärt werden!</translatorcomment>
+ <translation>Kopiere auf ab</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="135"/>
<source>Find</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Finden</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="136"/>
<source>Find next</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Nächster Fund</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="137"/>
<source>Find previous</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Vorheriger Fund</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="138"/>
<source>Replace</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>Ersetzen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="252"/>
<source>Saved SQL contents to file: %1</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Inhalte in Datei speichern: %1</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="431"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
- <translation type="unfinished"></translation>
+ <translation>Die Funktion Autovervollständigung kann nur genutzt werden, wenn eine gültige Datenbank für den SQL Editor gewählt wurde.</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="819"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
- <translation type="unfinished"></translation>
+ <translation>Der Text im SQL Editor ist sehr groß, daher wurde die Syntaxkontrolle und die farbliche Hervorhebung von Objekten vorübergehend deaktiviert.</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1054"/>
<source>Save to file</source>
- <translation type="unfinished"></translation>
+ <translation>In Datei speichern</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="242"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; kann nicht für Schreibzugriffe geöffnet werden: %2</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1066"/>
<source>SQL scripts (*.sql);;All files (*)</source>
- <translation type="unfinished"></translation>
+ <translation>SQL Skripte (*.sql);;Alle Dateien (*)</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1067"/>
<source>Open file</source>
- <translation type="unfinished"></translation>
+ <translation>Datei öffnen</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1076"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Datei &apos;%1&apos; kann nicht für Lesezugriffe geöffnet werden: %2</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1285"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
- <translation type="unfinished"></translation>
+ <translation>Das Dokumentenende wurde erreicht. Drücken Sie &apos;Nächster Fund&apos;, um die Suche am Dokumentenanfang fortzusetzen.</translation>
</message>
</context>
<context>
@@ -4889,35 +4910,35 @@ find next</source>
<location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
<source>Column:</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Spalte:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Data type:</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>Datentyp:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
<source>Table:</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Tabelle:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>Bedingungen:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
<source>This cell is not editable, because: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Zelle kann nicht editiert werden, weil: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
<source>Cannot load the data for a cell that refers to the already closed database.</source>
- <translation type="unfinished"></translation>
+ <translation>Es können keine Daten für eine Zelle dargestellt werden, die eine bereits geschlossene Datenbank referenziert.</translation>
</message>
</context>
<context>
@@ -4926,12 +4947,12 @@ find next</source>
<location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
<location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
<source>Cannot edit this cell. Details: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Die Zelle kann nicht editiert. Details: %2</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
<source>The row is marked for deletion.</source>
- <translation type="unfinished"></translation>
+ <translation>Diese Zeile ist zum Löschen markiert.</translation>
</message>
</context>
<context>
@@ -4940,68 +4961,68 @@ find next</source>
<location filename="../datagrid/sqlquerymodel.cpp" line="63"/>
<location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
<source>Only one query can be executed simultaneously.</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann nur eine Abfrage gleichzeitig ausgeführt werden.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
<source>Uncommited data</source>
- <translation type="unfinished"></translation>
+ <translation>Nicht gespeicherte Daten</translation>
</message>
<message>
<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>Es gibt ungespeicherte Änderungen. Möchten Sie wirklich fortfahren? Alle Änderungen werden dann verloren gehen.</translation>
</message>
<message>
<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>Es können keine Daten für eine Zelle gespeichert werden, die eine bereits geschlossene Datenbank referenziert.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="374"/>
<source>Could not begin transaction on the database. Details: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Es kann keine Transaktion auf der Datenbank gestartet werden. Details: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
<source>An error occurred while commiting the transaction: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Committen der Transaktion: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
<source>An error occurred while rolling back the transaction: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Rollback der Transaktion: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
<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>Es wurde versucht eine nicht editierbare Zelle zu committen (derzeit modifiziert und auf das Commit wartend)! Dies ist ein Fehler den Sie melden sollten.</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="599"/>
<source>An error occurred while commiting the data: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Committen der Daten: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
<location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
<source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Ausführen der SQL-Abfrage auf der Datenbank &apos;%1&apos;: %2</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
<source>Error while loading query results: %1</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler beim Laden der Abfrageergebnisse: %1</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
<source>Insert multiple rows</source>
- <translation type="unfinished"></translation>
+ <translation>Mehrere Zeilen einfügen</translation>
</message>
<message>
<location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
<source>Number of rows to insert:</source>
- <translation type="unfinished"></translation>
+ <translation>Anzahl an Zeilen zum Einfügen:</translation>
</message>
</context>
<context>
@@ -5009,92 +5030,92 @@ find next</source>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="72"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Kopieren</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="73"/>
<source>Copy as...</source>
- <translation type="unfinished"></translation>
+ <translation>Kopieren als...</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="74"/>
<source>Paste</source>
- <translation type="unfinished"></translation>
+ <translation>Einfügen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="75"/>
<source>Paste as...</source>
- <translation type="unfinished"></translation>
+ <translation>Einfügen als...</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="76"/>
<source>Set NULL values</source>
- <translation type="unfinished"></translation>
+ <translation>NULL Wert setzen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="77"/>
<source>Erase values</source>
- <translation type="unfinished"></translation>
+ <translation>Werte löschen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="78"/>
<source>Edit value in editor</source>
- <translation type="unfinished"></translation>
+ <translation>Wert im Editor bearbeiten</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Commit</source>
- <translation type="unfinished"></translation>
+ <translation>Commit</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Rollback</source>
- <translation type="unfinished"></translation>
+ <translation>Rollback</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="81"/>
<source>Commit selected cells</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Zellen speichern</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="82"/>
<source>Rollback selected cells</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Zellen wiederherstellen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="83"/>
<source>Define columns to sort by</source>
- <translation type="unfinished"></translation>
+ <translation>Sortierspalten definieren</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="84"/>
<source>Remove custom sorting</source>
- <translation type="unfinished"></translation>
+ <translation>Benutzerdefinierte Sortierung entfernen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Insert row</source>
- <translation type="unfinished"></translation>
+ <translation>Zeile einfügen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Insert multiple rows</source>
- <translation type="unfinished"></translation>
+ <translation>Mehrere Zeilen einfügen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Delete selected row</source>
- <translation type="unfinished"></translation>
+ <translation>Gewählte Zeile löschen</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="256"/>
<source>No items selected to paste clipboard contents to.</source>
- <translation type="unfinished"></translation>
+ <translation>Es sind keine Elemente selektiert in die der Inhalt der Zwischenablage eingefügt werden könnte.</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="510"/>
<source>Edit value</source>
- <translation type="unfinished"></translation>
+ <translation>Werte editieren</translation>
</message>
</context>
<context>
@@ -5102,12 +5123,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>Fehler beim Committen der neuen Zeile: %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>Fehler beim Löschen der Zeile aus Tabelle %1: %2</translation>
</message>
</context>
<context>
@@ -5115,17 +5136,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="164"/>
<source>Copy</source>
- <translation type="unfinished"></translation>
+ <translation>Kopieren</translation>
</message>
<message>
<location filename="../statusfield.cpp" line="171"/>
<source>Clear</source>
- <translation type="unfinished"></translation>
+ <translation>Leeren</translation>
</message>
</context>
<context>
@@ -5300,19 +5321,19 @@ but it&apos;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>Name</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="301"/>
<source>Data type</source>
<comment>table structure columns</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">Datentyp</translation>
</message>
<message>
<location filename="../windows/tablestructuremodel.cpp" line="315"/>
<source>Default value</source>
<comment>table structure columns</comment>
- <translation type="unfinished"></translation>
+ <translation>Standardwert</translation>
</message>
</context>
<context>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
index 87e68ab..78940e4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_es.ts
@@ -888,7 +888,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
@@ -969,449 +969,476 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="443"/>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="491"/>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="622"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="694"/>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
<source>Database list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
<source>Sort table columns alphabetically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
<source>Expand tables node when connected to a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
<source>Display additional labels on the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Display labels for regular tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Display labels for virtual tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Expand views node when connected to a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
<source>Display system tables and indexes on the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -1673,97 +1700,115 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="182"/>
<source>First page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>Previous page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="185"/>
<source>Next page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Last page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="191"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="206"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="204"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="205"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="275"/>
+ <location filename="../dataview.cpp" line="278"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="279"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="277"/>
+ <location filename="../dataview.cpp" line="280"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="311"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="312"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
<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>
</message>
<message>
- <location filename="../dataview.cpp" line="566"/>
+ <location filename="../dataview.cpp" line="607"/>
<source>Row: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1910,7 +1955,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -1931,47 +1976,47 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>This name is already in use. Please enter unique name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
<source>Auto-generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
<translation type="unfinished"></translation>
</message>
@@ -3226,42 +3271,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;t exist, it will be created.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<source>You must provide a file to import from.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<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="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation type="unfinished"></translation>
</message>
@@ -3352,19 +3397,19 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>Error</source>
<comment>index dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished"></translation>
@@ -3436,248 +3481,248 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="211"/>
+ <location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="254"/>
+ <location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open DDL history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open SQL functions editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Export</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="263"/>
<source>Open configuration dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Cascade windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Next window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Previous window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Hide status field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close all windows but selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Restore recently closed window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Rename selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="279"/>
<source>Open Debug Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Report a bug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Propose a new feature</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>Licenses</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Open home page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open forum page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>User Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>SQLite documentation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="291"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="329"/>
<source>Database</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="349"/>
<source>Structure</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="370"/>
<source>View</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="374"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>Tools</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="409"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="571"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="642"/>
+ <location filename="../mainwindow.cpp" line="644"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="658"/>
+ <location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Rename window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Enter new name for the window:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="779"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="787"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="891"/>
+ <location filename="../mainwindow.cpp" line="904"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="911"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
@@ -4127,12 +4172,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="532"/>
+ <location filename="../dataview.cpp" line="573"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="583"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -4199,7 +4244,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation type="unfinished"></translation>
</message>
@@ -4320,106 +4365,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<source>Copy selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="16"/>
- <location filename="../sqleditor.h" line="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
<translation type="unfinished"></translation>
</message>
@@ -4712,173 +4757,173 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="255"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="819"/>
+ <location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1054"/>
+ <location filename="../sqleditor.cpp" line="1057"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1069"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1070"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1288"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -4994,12 +5039,12 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
index 08d39fc..6ecc9aa 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_fr.ts
@@ -890,7 +890,7 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
<source>Configuration</source>
<translation>Configuration</translation>
</message>
@@ -971,449 +971,476 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<translation>Lilite initial de la largeur de la colonne de données (en pixel):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
<source>Data types</source>
<translation>Types de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
<source>Available editors:</source>
<translation>Editeurs disponibles:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
<source>Editors selected for this data type:</source>
<translation>Editeur sélectionné pour ce type de données:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
<source>Schema editing</source>
<translation>Edition de schéma</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
<translation>Nombre de DDL modifiés gardés dans l&apos;historique.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="443"/>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
<translation>Dimension de l&apos;historique DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>Ne pas montrer la présualisation DDL pendant l&apos;enregistrement de schéma modifié</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
<source>SQL queries</source>
<translation>Requêtes SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
<translation>Nombre de requêtes gardées dans l&apos;historique.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="491"/>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
<translation>Dimension de l&apos;historique:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;S&apos;il y a plus d&apos;une requête dans l&apos;éditeur d&apos;SQL, alors (si cette option est permise) seulement une seule requête sera exécutée -cellesous le curseur d&apos;insertion. Autrement toutes les requêtes seront exécutées. Vous pouvez limiter le nombre de requêtes devant être exécutées en sélectionnant ces requêtes avant leur exécution.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
<source>Execute only the query under the cursor</source>
<translation>Exécuter seulement la requête sous le curseur</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
<source>Updates</source>
<translation>Mises à jour</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
<source>Automatically check for updates at startup</source>
<translation>Contrôle automatique des mises à jour au lancement</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
<source>Session</source>
<translation>Session</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Restaurer la dernière session(Fenêtre MDI active) après lancement</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Filtre par nom raccourci ou combinaison de touches</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="622"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Action</source>
<translation>Action</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
<source>Key combination</source>
<translation>Combinaison de touches</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
<source>Language</source>
<translation>Langage</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Le changement de langage requiére le redemarrage de l&apos;application pour prendre effet.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="694"/>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
<source>Database list</source>
<translation>Liste de base de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
<translation>Sur off, les colonnes seront triées dans l&apos;ordre de saisie de l&apos;instruction CREATE TABLE. </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
<source>Sort table columns alphabetically</source>
<translation>Ordre de tri alpha de la colonne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
<source>Expand tables node when connected to a database</source>
<translation>Déployez le noeud des tables lors de la connexion de la base de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation>&lt;p&gt;Les labels supplémentaires sont ceux montrés à côté des noms dans la liste de bases de données ( bleus,sauf autre configaration). Permettre cette option aboutira aux lablels pour des bases de données, des bases de données invalides et des noeuds (colonnes, index, déclancheur). Pour plus de labels voir des options ci-dessous.&lt;p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
<source>Display additional labels on the list</source>
<translation>Afficher des labels supplémentairesà la liste </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation>Pour des tables courantes les labels montrerons le nombre der colonnes, index et déclencheurs pour chaque tables.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Display labels for regular tables</source>
<translation>Afficher les labels pour les tables courantes</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation>Les tables vituelles seront marquées avec un label virtuel.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Display labels for virtual tables</source>
<translation>Afficher les labels pour les tables virtuelles</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Expand views node when connected to a database</source>
<translation>Etendre le noeud des vues lorsque la base de données est connectée</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
<translation>Si cette option est déactivée, les objets seront triés pour qu&apos; ils apparaissent dans la table sqlite_master (dans l&apos;ordre de création)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Tri d&apos;objets (tables, index, déclancheurs et vues) en alpha</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
<source>Display system tables and indexes on the list</source>
<translation>Afficher les tables système et index dans la liste</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
<source>Table windows</source>
<translation>Fenêtre de ta table</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
<translation>Lorsque c&apos;est permis, la fenêtre des tables sera affichée avec l&apos;onglet des données, à la place de l&apos;onglet structure.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Ourerture la fenêtre de table avec l&apos;onglet des données au départ</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
<source>View windows</source>
<translation>Fenêtre de vue</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
<translation>Lorsque c&apos;est permis, la fenêtre des vues sera affichée avec l&apos;onglet des données, à la place de l&apos;onglet structure.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
<translation>Ourerture la fenêtre de vue avec l&apos;onglet des données au départ</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Hide built-in plugins</source>
<translation>Cacher des plugins incorporés</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
<source>Current style:</source>
<translation>Style actuel:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
<source>Preview</source>
<translation>Aperçu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
<source>Enabled</source>
<translation>En service</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Disabled</source>
<translation>Hors service</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
<source>Active formatter plugin</source>
<translation>Plugin de formattage actf</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
<translation>Police de l&apos;éditeur SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
<source>Database list font</source>
<translation>Liste des polices de base de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
<source>Database list additional label font</source>
<translation>Police additionel de la liste des base de données </translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
<source>Data view font</source>
<translation>Police des données de vue</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
<source>Status field font</source>
<translation>Police du champ status</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
<translation>Couleurs de l&apos;éditeur SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
<source>Current line background</source>
<translation>Fond actuel de la ligne</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Les chaines SQL sont encadrées avec de caractères simple quote.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
<source>String foreground</source>
<translation>Avant plan chaine</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Les paramètres fournis par l&apos;utilisateur sont passés par valeur. Ils ont l&apos;une de ces formes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
<source>Bind parameter foreground</source>
<translation>Premier plan de paramètre de lien</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
<source>Highlighted parenthesis background</source>
<translation>Parenthèses surlignées</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;les valeurs BLOB sont binaire représentés comme nombres hexadécimaux, comme:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
<source>BLOB value foreground</source>
<translation>Premier plan de valeur BLOB</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
<source>Regular foreground</source>
<translation>Avant plan courant</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
<source>Line numbers area background</source>
<translation>Zone des numéros de ligne en arrière plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
<source>Keyword foreground</source>
<translation>Mot clé en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
<source>Number foreground</source>
<translation>Nombre en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
<source>Comment foreground</source>
<translation>Commentaire en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Les objets valides sont les nom de tables, index, déclencheurs, ou vues qui existent dans la base de données SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
<source>Valid objects foreground</source>
<translation>Objets valides en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
<source>Data view colors</source>
<translation>Couleurs de vue de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Touts les modifications de données seront écrits avec cette couleur,à l&apos;enregistrement de la base de données.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
<translation>Annulation de la couleur des données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;En cas de l&apos;erreur à l&apos;enregistrement des modifications de données, la cellule problématique sera indiquée avec cette couleur.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
<translation>Erreur d&apos;enregistrement du surlignage</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
<source>NULL value foreground</source>
<translation>Valeur NULL au premier plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
<source>Deleted row background</source>
<translation>Ligne supprimée en arrier plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
<source>Database list colors</source>
<translation>Liste de couleurs des bases de données</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Des labels supplémentaires indique la version SQLITE, le nombre d&apos;objets au nieau inférieur, etc.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
<source>Additional labels foreground</source>
<translation>Labels additionels en avant plan</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
<source>Status field colors</source>
<translation>Couleurs du status des champs</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
<translation>Message d&apos;information devant</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
<source>Warning message foreground</source>
<translation>Warning devant</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
<translation>Message d&apos;erreur devant</translation>
</message>
@@ -1675,97 +1702,115 @@ mais c&apos;est OK pour l&apos;utiliser.</translation>
<translation>Actualiser les données de la table</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="182"/>
<source>First page</source>
<comment>data view</comment>
<translation>Première page</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Page précédente</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="185"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Page suivante</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Dernière page</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="191"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Appliquer le filtre</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="206"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation>Enregistrer les modifications des cellules sélectionnées</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="204"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation>Annuler les modifications des celulles sélectionnées</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="205"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation>Afficache des résultats en tableau</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation>Affichage des résultat en formulaire</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="275"/>
+ <location filename="../dataview.cpp" line="278"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Filtrer par texte</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="279"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation>Filtrer par une expression standard</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="277"/>
+ <location filename="../dataview.cpp" line="280"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Filtrer par une expression SQL</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="311"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Onglets en haut</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="312"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Onglet en bas</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
<source>Total number of rows is being counted.
Browsing other pages will be possible after the row counting is done.</source>
<translation>Le total des lignes en cours de comptage. La navigation d&apos;autres pages à la fin du comptage.</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="566"/>
+ <location filename="../dataview.cpp" line="607"/>
<source>Row: %1</source>
<translation>Lignes: %1</translation>
</message>
@@ -1924,7 +1969,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>File</source>
<translation>Fichier</translation>
</message>
@@ -1953,42 +1998,42 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="vanished">Test de connexion</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
<source>Browse</source>
<translation>Navigateur</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>This name is already in use. Please enter unique name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
<source>Auto-generated</source>
<translation type="unfinished"></translation>
</message>
@@ -1997,7 +2042,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="vanished">Le non sera généré automatiquement</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
<translation>Saississez le nom</translation>
</message>
@@ -3262,42 +3307,42 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<translation>Optrions de source de données </translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation>Annuler</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;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="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation>Saississez un nom de table</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation>Sélectionnez un plugin d&apos;importation.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<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="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation>Le fichier &apos;%1&apos; n&apos;existe pas.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<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="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation>Sélectionnez le fichier d&apos;importation</translation>
</message>
@@ -3388,19 +3433,19 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<translation>ordre de tri</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Erreur</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
<translation>Impossible de créer un index, car les valeurs des colonnes sélectionnées ne sont pas uniques. Voulez-vous exécuter une requête SELECT pour voir les valeurs problématiques?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>Une erreur survenue à l&apos;exécution de l&apos;SQL:
@@ -3473,248 +3518,248 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<translation>Passage en mode débogue. Les messages de débogage sont imprimés dans la sortie standard.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="211"/>
+ <location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
<translation>Vous devez relancer l&apos;application pour que le langage prenne effet.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="254"/>
+ <location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL editor</source>
<translation>Ouvrir éditeur SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open DDL history</source>
<translation>Ouvrir Historique DDL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open SQL functions editor</source>
<translation>Editeur de fonctions SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open collations editor</source>
<translation>Ouvrir editeur de collections</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Import</source>
<translation>Importer</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Export</source>
<translation>Exporter</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="263"/>
<source>Open configuration dialog</source>
<translation>Ouvrir dialogue de configuration</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows</source>
<translation>Organisation des fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows horizontally</source>
<translation>Organisation des fenêtres horizontalement</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows vertically</source>
<translation>Organisation des fenêtres verticalement</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Cascade windows</source>
<translation>Organisation des fenêtres en cascade</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Next window</source>
<translation>Fenêtre suivante</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Previous window</source>
<translation>Fenêtre précédante</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Hide status field</source>
<translation>Ca</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
<translation>Fermeture fenêtre sélectionnée</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close all windows but selected</source>
<translation>Fermeture de toutes les fenêtres sélectionnées</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows</source>
<translation>Fermeture de toutes les fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Restore recently closed window</source>
<translation>Restaure une fenêtre récemment fermée</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Rename selected window</source>
<translation>Renomme la fenêtre sélectionnée</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="279"/>
<source>Open Debug Console</source>
<translation>Ouvrir la console de debogage</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Report a bug</source>
<translation>Rapport de bug</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Propose a new feature</source>
<translation>Proposer une nouvelle fonction</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
<translation>Apropos</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>Licenses</source>
<translation>Licences</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Open home page</source>
<translation>Ouvrir la home page</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open forum page</source>
<translation>Ouvrir la page des forums</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>User Manual</source>
<translation>Manuel utilisateurs</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>SQLite documentation</source>
<translation>Documentation SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
<translation>Raport d&apos;historique</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="291"/>
<source>Check for updates</source>
<translation>Vérification de mises à jour</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="329"/>
<source>Database</source>
<comment>menubar</comment>
<translation>Base de données</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="349"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Structure</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="370"/>
<source>View</source>
<comment>menubar</comment>
<translation>Vue</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="374"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Liste de fenêtres</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Outils</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="409"/>
<source>Help</source>
<translation>Aide</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="571"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation>Impossible de positionner le style: %1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="642"/>
+ <location filename="../mainwindow.cpp" line="644"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Exportation impossible, aucun plugin d&apos;exportation n&apos;est chargé.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="658"/>
+ <location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Importation impossible, aucun plugin d&apos;importation n&apos;est chargé.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Rename window</source>
<translation>Renommer la fenêtre</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Enter new name for the window:</source>
<translation>Saississez un nouveau nom de fenêtre:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="779"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Une nouvelle mise à jour est disponible. &lt;a href=&quot;%1&quot;&gt; cliquez ici pour détails&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="787"/>
<source>You&apos;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="891"/>
+ <location filename="../mainwindow.cpp" line="904"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="911"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
<translation>Impossible d&apos;ajouter la base de données %1 à la liste.</translation>
</message>
@@ -4164,12 +4209,12 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<translation>Contenu ouvert de cellule choisie dans un éditeur séparé</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="532"/>
+ <location filename="../dataview.cpp" line="573"/>
<source>Total pages available: %1</source>
<translation>Total de pages: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="583"/>
<source>Total rows loaded: %1</source>
<translation>Total dee lignes chargées: %1</translation>
</message>
@@ -4236,7 +4281,7 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation>Collé dans le presse-papier</translation>
</message>
@@ -4357,106 +4402,106 @@ Entrez SVP un nouveau nom, unique, ou cliquez &apos;%1&apos; pour d&apos;interro
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation>Couper le texte sélectionné</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<source>Copy selected text</source>
<translation>Copie du texte sélectionné</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="16"/>
- <location filename="../sqleditor.h" line="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation>Suppression du texte sélectionné</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation>Défaire</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation>Refaire</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation>Editeur SQL saisie de champ</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation>Sélectionnez le contenu entier de l&apos;éditeur</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation>Sauver le contenu dans un fichier</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation>Charger le contenu d&apos;un fichier</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation>Rechercher un texte</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation>Recherche suivante</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation>Recherche précédente</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation>Remplacer dans le texte</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation>Supprimer la ligne courante</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation>Assistant de code nécessaire</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation>Format de contenu</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
<translation>Déplacer le block de texte sélectionné à la ligne inférieure</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
<translation>Déplacer le block de texte sélectionné à la ligne supérieure</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
<translation>Copier le block de texte sélectionné à la ligne au dessus</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
<translation>Copier le block de texte sélectionné à la ligne au dessous</translation>
</message>
@@ -4750,173 +4795,173 @@ recherche suivant</translation>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Couper</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Copier</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Coller</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Supprimer</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Tout sélectionner</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Défaire</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Refaire</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Complet</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Format SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Enregistrer le SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Charger le SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Ligne suppimée</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Descendre le block</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Monter le block</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Copier block au-dessus</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation>Copier block au-dessous</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Chercher</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Chercher suivant</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Chercher précédent</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Remplacer</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="255"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation>L&apos;achèvement de syntaxe peut être utilisé seulement quand une base de données valable est utilisée dans l&apos;éditeur SQL.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="819"/>
+ <location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation>Le contenu l&apos;éditeur SQL est important, aussi la détectiond&apos;objets en erreur est temporairement mise hors de service.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1054"/>
+ <location filename="../sqleditor.cpp" line="1057"/>
<source>Save to file</source>
<translation>Sauvegarder</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Impossible d&apos;ouvrir en écriture le fichier &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1069"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Scripts SQL (*.sql);;tous fichiers (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1070"/>
<source>Open file</source>
<translation>Fichier ouvert</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Impossible d&apos;ouvrir en lecture le fichier &apos;%1&apos;: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1288"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Fin de document atteint. Saississez de nouveau la recherche pour relancer la recherche.</translation>
</message>
@@ -5032,12 +5077,12 @@ recherche suivant</translation>
<translation>Erreur lors du chargement des résultats de la requête: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Insert multiple rows</source>
<translation>Insérer plusieurs lignes</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Number of rows to insert:</source>
<translation>Nombre de lignes à inserrer:</translation>
</message>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
new file mode 100644
index 0000000..16fc700
--- /dev/null
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_it.ts
@@ -0,0 +1,6154 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>AboutDialog</name>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="14"/>
+ <source>About SQLiteStudio and licenses</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="24"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="30"/>
+ <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;center&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:600;&quot;&gt;SQLiteStudio v%1&lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Free, open-source, cross-platform SQLite database manager.&lt;br/&gt;&lt;a href=&quot;http://sqlitestudio.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://sqlitestudio.pl&lt;/span&gt;&lt;/a&gt;&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;%2&lt;br/&gt;&lt;/p&gt;&lt;p align=&quot;center&quot;&gt;Author and active maintainer:&lt;br/&gt;SalSoft (&lt;a href=&quot;http://salsoft.com.pl&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;http://salsoft.com.pl&lt;/span&gt;&lt;/a&gt;)&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="41"/>
+ <source>Licenses</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="55"/>
+ <source>Environment</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="61"/>
+ <source>Icon directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="81"/>
+ <source>Form directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="101"/>
+ <source>Plugin directories</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="111"/>
+ <source>Configuration directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="121"/>
+ <source>Application directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="148"/>
+ <source>Qt version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.ui" line="172"/>
+ <source>SQLite 3 version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.cpp" line="39"/>
+ <source>Portable distribution.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.cpp" line="42"/>
+ <source>MacOS X application boundle distribution.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.cpp" line="45"/>
+ <source>Operating system managed distribution.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.cpp" line="89"/>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/aboutdialog.cpp" line="102"/>
+ <source>&lt;h3&gt;Table of contents:&lt;/h3&gt;&lt;ol&gt;%2&lt;/ol&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BugDialog</name>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="14"/>
+ <source>Bugs and ideas</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="20"/>
+ <source>Reporter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="36"/>
+ <source>E-mail address</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="68"/>
+ <source>Short description</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="80"/>
+ <source>Detailed description</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="92"/>
+ <source>Show more details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="119"/>
+ <source>SQLiteStudio version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="131"/>
+ <source>Operating system</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.ui" line="143"/>
+ <source>Loaded plugins</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="39"/>
+ <source>Send</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="66"/>
+ <source>You can see all your reported bugs and ideas by selecting menu &apos;%1&apos; and then &apos;%2&apos;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="74"/>
+ <source>A bug report sent successfully.</source>
+ <translation type="unfinished"></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>
+ </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>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="88"/>
+ <source>An idea proposal sent successfully.</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="105"/>
+ <source>A bug report</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="106"/>
+ <source>Describe problem in few words</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="107"/>
+ <source>Describe problem and how to reproduce it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="111"/>
+ <source>A new feature idea</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="112"/>
+ <source>A title for your idea</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="113"/>
+ <source>Describe your idea in more details</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="127"/>
+ <source>Reporting as a registered user.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="131"/>
+ <source>Log out</source>
+ <translation type="unfinished"></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 &apos;help&apos; button on the right side.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="146"/>
+ <source>Enter vaild e-mail address, or log in.</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/bugdialog.cpp" line="151"/>
+ <source>Long description requires at least 30 characters.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BugReportHistoryWindow</name>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.ui" line="36"/>
+ <location filename="../windows/bugreporthistorywindow.cpp" line="119"/>
+ <source>Title</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.ui" line="46"/>
+ <location filename="../windows/bugreporthistorywindow.cpp" line="119"/>
+ <source>URL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.cpp" line="45"/>
+ <source>Reports history</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.cpp" line="50"/>
+ <source>Clear reports history</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.cpp" line="51"/>
+ <source>Delete selected entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.cpp" line="90"/>
+ <source>Invalid response from server.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>BugReportLoginDialog</name>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="14"/>
+ <source>Log in</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="20"/>
+ <source>Credentials</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="26"/>
+ <source>Login:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="36"/>
+ <source>Password:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="53"/>
+ <source>Validation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="59"/>
+ <source>Validate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.ui" line="73"/>
+ <source>Validation result message</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.cpp" line="45"/>
+ <source>Abort</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.cpp" line="66"/>
+ <source>A password must be at least 5 characters long.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/bugreportlogindialog.cpp" line="91"/>
+ <source>Valid</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CollationsEditor</name>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="75"/>
+ <source>Filter collations</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="132"/>
+ <source>Databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="138"/>
+ <source>Register in all databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="145"/>
+ <source>Register in following databases:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="166"/>
+ <source>Implementation code:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="194"/>
+ <source>Collation name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.ui" line="204"/>
+ <source>Implementation language:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="52"/>
+ <source>Collations editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="57"/>
+ <source>Commit all collation changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="58"/>
+ <source>Rollback all collation changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="60"/>
+ <source>Create new collation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="61"/>
+ <source>Delete selected collation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="63"/>
+ <source>Editing collations manual</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="291"/>
+ <source>Pick the implementation language.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="294"/>
+ <source>Enter a non-empty implementation code.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/collationseditor.cpp" line="388"/>
+ <source>Collations editor window has uncommited modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColorButton</name>
+ <message>
+ <location filename="../common/colorbutton.cpp" line="29"/>
+ <source>Pick a color</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColumnCollatePanel</name>
+ <message>
+ <location filename="../constraints/columncollatepanel.ui" line="41"/>
+ <source>Collation name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columncollatepanel.ui" line="73"/>
+ <source>Named constraint:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columncollatepanel.cpp" line="80"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columncollatepanel.cpp" line="81"/>
+ <source>Enter a collation name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColumnDefaultPanel</name>
+ <message>
+ <location filename="../constraints/columndefaultpanel.ui" line="20"/>
+ <source>Default value:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columndefaultpanel.ui" line="35"/>
+ <source>Named constraint:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columndefaultpanel.cpp" line="39"/>
+ <source>Enter a default value expression.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columndefaultpanel.cpp" line="78"/>
+ <source>Invalid default value expression: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columndefaultpanel.cpp" line="90"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColumnDialog</name>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="14"/>
+ <source>Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="23"/>
+ <source>Name and type</source>
+ <translation type="unfinished"></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 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="69"/>
+ <source>Column name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="79"/>
+ <source>Size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="102"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="115"/>
+ <source>Unique</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="129"/>
+ <source>Foreign Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="143"/>
+ <source>Collate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="150"/>
+ <source>Not NULL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="157"/>
+ <source>Check condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="164"/>
+ <source>Primary Key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="171"/>
+ <source>Default</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.ui" line="270"/>
+ <source>Advanced mode</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="83"/>
+ <source>Add constraint</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="84"/>
+ <source>Edit constraint</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="86"/>
+ <source>Move constraint up</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="87"/>
+ <source>Move constraint down</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="89"/>
+ <source>Add a primary key</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="90"/>
+ <source>Add a foreign key</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="91"/>
+ <source>Add an unique constraint</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="92"/>
+ <source>Add a check constraint</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="94"/>
+ <source>Add a collate constraint</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="95"/>
+ <source>Add a default constraint</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="228"/>
+ <source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
+ <comment>column dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialog.cpp" line="290"/>
+ <source>Correct the constraint&apos;s configuration.</source>
+ <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&apos;s okay to use it.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColumnDialogConstraintsModel</name>
+ <message>
+ <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="328"/>
+ <source>Type</source>
+ <comment>column dialog constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="330"/>
+ <source>Name</source>
+ <comment>column dialog constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/columndialogconstraintsmodel.cpp" line="332"/>
+ <source>Details</source>
+ <comment>column dialog constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColumnForeignKeyPanel</name>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.ui" line="29"/>
+ <source>Foreign table:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.ui" line="45"/>
+ <source>Foreign column:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.ui" line="58"/>
+ <source>Reactions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.ui" line="97"/>
+ <source>Deferred foreign key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.ui" line="115"/>
+ <source>Named constraint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.ui" line="122"/>
+ <source>Constraint name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.cpp" line="40"/>
+ <source>Pick the foreign table.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.cpp" line="41"/>
+ <source>Pick the foreign column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnforeignkeypanel.cpp" line="42"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ColumnPrimaryKeyPanel</name>
+ <message>
+ <location filename="../constraints/columnprimarykeypanel.ui" line="26"/>
+ <source>Autoincrement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnprimarykeypanel.ui" line="48"/>
+ <source>Sort order:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnprimarykeypanel.ui" line="83"/>
+ <source>Named constraint:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnprimarykeypanel.ui" line="111"/>
+ <source>On conflict:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnprimarykeypanel.cpp" line="87"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></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>
+ </message>
+</context>
+<context>
+ <name>ColumnUniqueAndNotNullPanel</name>
+ <message>
+ <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="41"/>
+ <source>Named constraint:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnuniqueandnotnullpanel.ui" line="69"/>
+ <source>On conflict:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/columnuniqueandnotnullpanel.cpp" line="73"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CompleterWindow</name>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="159"/>
+ <source>Column: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="161"/>
+ <source>Table: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="163"/>
+ <source>Index: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="165"/>
+ <source>Trigger: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="167"/>
+ <source>View: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="169"/>
+ <source>Database: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="181"/>
+ <source>Keyword: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="183"/>
+ <source>Function: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="185"/>
+ <source>Operator: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="187"/>
+ <source>String</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="189"/>
+ <source>Number</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="191"/>
+ <source>Binary data</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="193"/>
+ <source>Collation: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../completer/completerwindow.cpp" line="195"/>
+ <source>Pragma function: %1</source>
+ <comment>completer statusbar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ConfigDialog</name>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="14"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
+ <source>Configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="73"/>
+ <source>Search</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="104"/>
+ <source>General</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="116"/>
+ <source>Keyboard shortcuts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="128"/>
+ <source>Look &amp; feel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="139"/>
+ <source>Style</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="151"/>
+ <source>Fonts</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="163"/>
+ <source>Colors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="176"/>
+ <source>Plugins</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="187"/>
+ <source>Code formatters</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="196"/>
+ <source>Data browsing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="207"/>
+ <source>Data editors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="237"/>
+ <source>Data browsing and editing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="243"/>
+ <source>Number of data rows per page:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="269"/>
+ <location filename="../dialogs/configdialog.ui" line="279"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="272"/>
+ <source>Limit initial data column width to (in pixels):</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
+ <source>Data types</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
+ <source>Available editors:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
+ <source>Editors selected for this data type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
+ <source>Schema editing</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
+ <source>Number of DDL changes kept in history.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
+ <source>DDL history size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
+ <source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
+ <source>SQL queries</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
+ <source>Number of queries kept in the history.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
+ <source>History size:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
+ <source>Execute only the query under the cursor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
+ <source>Updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
+ <source>Automatically check for updates at startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
+ <source>Session</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
+ <source>Restore last session (active MDI windows) after startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
+ <source>Filter shortcuts by name or key combination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
+ <source>Action</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
+ <source>Key combination</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
+ <source>Language</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
+ <source>Changing language requires application restart to take effect.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
+ <source>Compact layout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
+ <source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
+ <source>Use compact layout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
+ <source>General.CompactLayout</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
+ <source>Database list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
+ <source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
+ <source>Sort table columns alphabetically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
+ <source>Expand tables node when connected to a database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
+ <source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
+ <source>Display additional labels on the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
+ <source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
+ <source>Display labels for regular tables</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
+ <source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
+ <source>Display labels for virtual tables</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
+ <source>Expand views node when connected to a database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
+ <source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
+ <source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
+ <source>Display system tables and indexes on the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
+ <source>Table windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
+ <source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
+ <source>Open Table Windows with the data tab for start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
+ <source>View windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
+ <source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
+ <source>Open View Windows with the data tab for start</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
+ <source>Main window dock areas</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
+ <source>Left and right areas occupy corners</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
+ <source>Top and bottom areas occupy corners</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
+ <source>Hide built-in plugins</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
+ <source>Current style:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
+ <source>Preview</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
+ <source>Enabled</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
+ <source>Disabled</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
+ <source>Active formatter plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
+ <source>SQL editor font</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
+ <source>Database list font</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
+ <source>Database list additional label font</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
+ <source>Data view font</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
+ <source>Status field font</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
+ <source>SQL editor colors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
+ <source>Current line background</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
+ <source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
+ <source>String foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
+ <source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
+ <source>Bind parameter foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
+ <source>Highlighted parenthesis background</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
+ <source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <source>BLOB value foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
+ <source>Regular foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
+ <source>Line numbers area background</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
+ <source>Keyword foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
+ <source>Number foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
+ <source>Comment foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
+ <source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
+ <source>Valid objects foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
+ <source>Data view colors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
+ <source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
+ <source>Uncommited data outline color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
+ <source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
+ <source>Commit error outline color</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
+ <source>NULL value foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
+ <source>Deleted row background</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
+ <source>Database list colors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
+ <source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
+ <source>Additional labels foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
+ <source>Status field colors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
+ <source>Information message foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
+ <source>Warning message foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
+ <source>Error message foreground</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="785"/>
+ <source>Description:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="786"/>
+ <source>Category:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="787"/>
+ <source>Version:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="788"/>
+ <source>Author:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="790"/>
+ <source>Internal name:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="791"/>
+ <source>Dependencies:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="792"/>
+ <source>Conflicts:</source>
+ <comment>plugin details</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="796"/>
+ <source>Plugin details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1202"/>
+ <source>Plugins are loaded/unloaded immediately when checked/unchecked, but modified list of plugins to load at startup is not saved until you commit the whole configuration dialog.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1266"/>
+ <source>%1 (built-in)</source>
+ <comment>plugins manager in configuration dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1279"/>
+ <source>Details</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1291"/>
+ <source>No plugins in this category.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1387"/>
+ <source>Add new data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1391"/>
+ <source>Rename selected data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1395"/>
+ <source>Delete selected data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.cpp" line="1399"/>
+ <source>Help for configuring data type editors</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ConstraintCheckPanel</name>
+ <message>
+ <location filename="../constraints/constraintcheckpanel.ui" line="20"/>
+ <source>The condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/constraintcheckpanel.ui" line="35"/>
+ <source>Named constraint:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/constraintcheckpanel.ui" line="51"/>
+ <source>On conflict</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/constraintcheckpanel.cpp" line="46"/>
+ <source>Enter a valid condition.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/constraintcheckpanel.cpp" line="47"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ConstraintDialog</name>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="62"/>
+ <source>New constraint</source>
+ <comment>constraint dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="63"/>
+ <source>Create</source>
+ <comment>constraint dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="66"/>
+ <source>Edit constraint</source>
+ <comment>dialog window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="67"/>
+ <source>Apply</source>
+ <comment>constraint dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="170"/>
+ <source>Primary key</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="174"/>
+ <source>Foreign key</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="178"/>
+ <source>Unique</source>
+ <comment>table constraints</comment>
+ <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>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="186"/>
+ <source>Check</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="190"/>
+ <source>Collate</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/constraintdialog.cpp" line="194"/>
+ <source>Default</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ConstraintTabModel</name>
+ <message>
+ <location filename="../windows/constrainttabmodel.cpp" line="68"/>
+ <source>Table</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/constrainttabmodel.cpp" line="109"/>
+ <source>Column (%1)</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/constrainttabmodel.cpp" line="153"/>
+ <source>Scope</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/constrainttabmodel.cpp" line="155"/>
+ <source>Type</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/constrainttabmodel.cpp" line="157"/>
+ <source>Details</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/constrainttabmodel.cpp" line="159"/>
+ <source>Name</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CssDebugDialog</name>
+ <message>
+ <location filename="../dialogs/cssdebugdialog.ui" line="14"/>
+ <source>SQLiteStudio CSS console</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DataView</name>
+ <message>
+ <location filename="../dataview.cpp" line="98"/>
+ <source>Filter data</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="107"/>
+ <source>Grid view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="108"/>
+ <source>Form view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="165"/>
+ <source>Refresh table data</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="182"/>
+ <source>First page</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="183"/>
+ <source>Previous page</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="185"/>
+ <source>Next page</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="186"/>
+ <source>Last page</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="191"/>
+ <source>Apply filter</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="206"/>
+ <source>Commit changes for selected cells</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="207"/>
+ <source>Rollback changes for selected cells</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="208"/>
+ <source>Show grid view of results</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="209"/>
+ <source>Show form view of results</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="278"/>
+ <source>Filter by text</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="279"/>
+ <source>Filter by the Regular Expression</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="280"/>
+ <source>Filter by SQL expression</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="311"/>
+ <source>Tabs on top</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="312"/>
+ <source>Tabs at bottom</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
+ <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>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="607"/>
+ <source>Row: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbConverterDialog</name>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="14"/>
+ <source>Convert database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="20"/>
+ <source>Source database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="29"/>
+ <source>Source database version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="46"/>
+ <source>Target database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="52"/>
+ <source>Target version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="59"/>
+ <source>This is the file that will be created as a result of the conversion.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="66"/>
+ <source>Target file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="73"/>
+ <source>Name of the new database:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.ui" line="90"/>
+ <source>This is the name that the converted database will be added to SQLiteStudio with.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="123"/>
+ <source>Select source database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="129"/>
+ <source>Enter valid and writable file path.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="131"/>
+ <source>Entered file exists and will be overwritten.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="135"/>
+ <source>Enter a not empty, unique name (as in the list of databases on the left).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="140"/>
+ <source>No valid target dialect available. Conversion not possible.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="142"/>
+ <source>Select valid target dialect.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="194"/>
+ <source>Database %1 has been successfully converted and now is available under new name: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="206"/>
+ <source>SQL statements conversion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="214"/>
+ <source>Following error occurred while converting SQL statements to the target SQLite version:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbconverterdialog.cpp" line="215"/>
+ <source>Would you like to ignore those errors and proceed?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbDialog</name>
+ <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="32"/>
+ <source>Database driver</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.ui" line="42"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <source>File</source>
+ <translation type="unfinished"></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="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 type="unfinished"></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="108"/>
+ <source>Options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.ui" line="114"/>
+ <source>&lt;p&gt;Enable this if you want the database to be stored in configuration file and restored every time SQLiteStudio is started.&lt;/p&gt;</source>
+ <extracomment>aasfd</extracomment>
+ <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="161"/>
+ <source>Test connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
+ <source>Browse for existing database file on local computer</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
+ <source>Browse</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
+ <source>Enter an unique database name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
+ <source>This name is already in use. Please enter unique name.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
+ <source>Enter a database file path.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
+ <source>This database is already on the list under name: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
+ <source>Select a database type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
+ <source>Auto-generated</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
+ <source>Type the name</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbObjectDialogs</name>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="174"/>
+ <source>Delete table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="175"/>
+ <source>Are you sure you want to delete table %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="179"/>
+ <source>Delete index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="180"/>
+ <source>Are you sure you want to delete index %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="184"/>
+ <source>Delete trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="185"/>
+ <source>Are you sure you want to delete trigger %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="189"/>
+ <source>Delete view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="190"/>
+ <source>Are you sure you want to delete view %1?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbobjectdialogs.cpp" line="218"/>
+ <source>Error while dropping %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbTree</name>
+ <message>
+ <location filename="../dbtree/dbtree.ui" line="23"/>
+ <source>Databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.ui" line="73"/>
+ <source>Filter by name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="102"/>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="103"/>
+ <source>Paste</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="104"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="105"/>
+ <source>Create a group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="106"/>
+ <source>Delete the group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="107"/>
+ <source>Rename the group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="108"/>
+ <source>Add a database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="109"/>
+ <source>Edit the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="110"/>
+ <source>Remove the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="111"/>
+ <source>Connect to the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="112"/>
+ <source>Disconnect from the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="113"/>
+ <source>Import</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="114"/>
+ <source>Export the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="115"/>
+ <source>Convert database type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="116"/>
+ <source>Vacuum</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="117"/>
+ <source>Integrity check</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="118"/>
+ <source>Create a table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="119"/>
+ <source>Edit the table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="120"/>
+ <source>Delete the table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="121"/>
+ <source>Export the table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="122"/>
+ <source>Import into the table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="123"/>
+ <source>Populate table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="124"/>
+ <source>Create similar table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="125"/>
+ <source>Reset autoincrement sequence</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="126"/>
+ <source>Create an index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="127"/>
+ <source>Edit the index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="128"/>
+ <source>Delete the index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="129"/>
+ <source>Create a trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="130"/>
+ <source>Edit the trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="131"/>
+ <source>Delete the trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="132"/>
+ <source>Create a view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="133"/>
+ <source>Edit the view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="134"/>
+ <source>Delete the view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="135"/>
+ <source>Add a column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="136"/>
+ <source>Edit the column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="137"/>
+ <source>Delete the column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="138"/>
+ <source>Delete selected items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="139"/>
+ <source>Clear filter</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="140"/>
+ <source>Refresh all database schemas</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="141"/>
+ <source>Refresh selected database schema</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="142"/>
+ <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <source>Erase table data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="312"/>
+ <location filename="../dbtree/dbtree.cpp" line="317"/>
+ <source>Database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="327"/>
+ <source>Grouping</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <source>Create group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="937"/>
+ <source>Group name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="940"/>
+ <source>Entry with name %1 already exists in group %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="958"/>
+ <source>Delete group</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="959"/>
+ <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>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1019"/>
+ <source>Delete database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1019"/>
+ <source>Are you sure you want to delete database &apos;%1&apos;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1055"/>
+ <location filename="../dbtree/dbtree.cpp" line="1265"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1075"/>
+ <location filename="../dbtree/dbtree.cpp" line="1240"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1339"/>
+ <source>Error while executing VACUUM on the database %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1341"/>
+ <source>VACUUM execution finished successfully.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1358"/>
+ <source>Integrity check (%1)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <source>Reset autoincrement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1395"/>
+ <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1402"/>
+ <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1404"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1421"/>
+ <source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1429"/>
+ <source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1433"/>
+ <source>All data has been deleted for table &apos;%1&apos;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1535"/>
+ <source>Following objects will be deleted: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1538"/>
+ <source>Following databases will be removed from list: %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1541"/>
+ <source>Remainig objects from deleted group will be moved in place where the group used to be.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1543"/>
+ <source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.cpp" line="1545"/>
+ <source>Delete objects</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbTreeItemDelegate</name>
+ <message>
+ <location filename="../dbtree/dbtreeitemdelegate.cpp" line="92"/>
+ <source>error</source>
+ <comment>dbtree labels</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemdelegate.cpp" line="109"/>
+ <source>(system table)</source>
+ <comment>database tree label</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemdelegate.cpp" line="127"/>
+ <source>(virtual)</source>
+ <comment>virtual table label</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemdelegate.cpp" line="139"/>
+ <source>(system index)</source>
+ <comment>database tree label</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DbTreeModel</name>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="422"/>
+ <source>Database: %1</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="427"/>
+ <source>Version:</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="430"/>
+ <source>File size:</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="433"/>
+ <source>Encoding:</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="438"/>
+ <source>Error:</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="448"/>
+ <source>Table : %1</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="471"/>
+ <source>Columns (%1):</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="474"/>
+ <source>Indexes (%1):</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="477"/>
+ <source>Triggers (%1):</source>
+ <comment>dbtree tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
+ <source>Move</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
+ <source>Include data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
+ <source>Include indexes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
+ <source>Include triggers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
+ <source>Abort</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
+ <source>Referenced tables</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
+ <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="1185"/>
+ <source>Name conflict</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
+ <source>Following object already exists in the target database.
+Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1199"/>
+ <source>SQL statements conversion</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreemodel.cpp" line="1207"/>
+ <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="1208"/>
+ <source>Would you like to ignore those errors and proceed?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DdlHistoryWindow</name>
+ <message>
+ <location filename="../windows/ddlhistorywindow.ui" line="35"/>
+ <source>Filter by database:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/ddlhistorywindow.cpp" line="73"/>
+ <source>-- Queries executed on database %1 (%2)
+-- Date and time of execution: %3
+%4</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/ddlhistorywindow.cpp" line="124"/>
+ <source>DDL history</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DdlPreviewDialog</name>
+ <message>
+ <location filename="../dialogs/ddlpreviewdialog.ui" line="14"/>
+ <source>Queries to be executed</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/ddlpreviewdialog.ui" line="42"/>
+ <source>Don&apos;t show again</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>DebugConsole</name>
+ <message>
+ <location filename="../debugconsole.ui" line="14"/>
+ <source>SQLiteStudio Debug Console</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>EditorWindow</name>
+ <message>
+ <location filename="../windows/editorwindow.ui" line="42"/>
+ <source>Query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.ui" line="112"/>
+ <source>History</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="137"/>
+ <source>Results in the separate tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="138"/>
+ <source>Results below the query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="171"/>
+ <location filename="../windows/editorwindow.cpp" line="173"/>
+ <source>SQL editor %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="331"/>
+ <source>Results</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="364"/>
+ <source>Execute query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="365"/>
+ <source>Explain query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="368"/>
+ <source>Clear execution history</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="370"/>
+ <source>Export results</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="372"/>
+ <source>Create view from query</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="382"/>
+ <source>Previous database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="383"/>
+ <source>Next database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="386"/>
+ <source>Show next tab</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="387"/>
+ <source>Show previous tab</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="388"/>
+ <source>Focus results below</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="389"/>
+ <source>Focus SQL editor above</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="463"/>
+ <source>Active database (%1/%2)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="503"/>
+ <source>Query finished in %1 second(s). Rows affected: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="507"/>
+ <source>Query finished in %1 second(s).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="609"/>
+ <source>Clear execution history</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="609"/>
+ <source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="621"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="642"/>
+ <source>No database selected in the SQL editor. Cannot create a view for unknown database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.cpp" line="672"/>
+ <source>Editor window &quot;%1&quot; has uncommited data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ErrorsConfirmDialog</name>
+ <message>
+ <location filename="../dialogs/errorsconfirmdialog.ui" line="14"/>
+ <source>Errors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/errorsconfirmdialog.ui" line="20"/>
+ <source>Following errors occured:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/errorsconfirmdialog.ui" line="34"/>
+ <source>Would you like to proceed?</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ExportDialog</name>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="14"/>
+ <source>Export</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="21"/>
+ <source>What do you want to export?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="36"/>
+ <source>A database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="46"/>
+ <source>A single table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="53"/>
+ <source>Query results</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="65"/>
+ <source>Table to export</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="100"/>
+ <source>Database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="107"/>
+ <source>Table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="124"/>
+ <source>Options</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="133"/>
+ <source>Export table data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="143"/>
+ <source>Export table indexes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="153"/>
+ <source>Export table triggers</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="189"/>
+ <source>Select database objects to export</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="202"/>
+ <source>Export data from tables</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="212"/>
+ <source>Select all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="219"/>
+ <source>Deselect all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="229"/>
+ <location filename="../dialogs/exportdialog.ui" line="249"/>
+ <source>Database:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="237"/>
+ <source>Query to export results for</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="256"/>
+ <source>Query to be executed for results:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="264"/>
+ <source>Export format and options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="318"/>
+ <source>Export format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="330"/>
+ <source>Output</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="336"/>
+ <source>Exported file path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="343"/>
+ <source>Clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="357"/>
+ <source>File</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="382"/>
+ <source>Exported text encoding:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.ui" line="398"/>
+ <source>Export format options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.cpp" line="51"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="150"/>
+ <source>Select table to export.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="198"/>
+ <source>Select at least one object to export.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="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="234"/>
+ <source>The directory &apos;%1&apos; does not exist.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.cpp" line="240"/>
+ <source>The file &apos;%1&apos; exists and will be overwritten.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/exportdialog.cpp" line="417"/>
+ <source>All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="709"/>
+ <source>Internal error during export. This is a bug. Please report it.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FontEdit</name>
+ <message>
+ <location filename="../common/fontedit.cpp" line="61"/>
+ <source>Choose font</source>
+ <comment>font configuration</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>Form</name>
+ <message>
+ <location filename="../forms/sqlformatterplugin.ui" line="20"/>
+ <source>Active SQL formatter plugin</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FormView</name>
+ <message>
+ <location filename="../formview.cpp" line="241"/>
+ <source>Commit row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="242"/>
+ <source>Rollback row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="243"/>
+ <source>First row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="244"/>
+ <source>Previous row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="245"/>
+ <source>Next row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="246"/>
+ <source>Last row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="247"/>
+ <source>Insert new row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.cpp" line="248"/>
+ <source>Delete current row</source>
+ <comment>form view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>FunctionsEditor</name>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="81"/>
+ <source>Filter funtions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="157"/>
+ <source>Input arguments</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="163"/>
+ <source>Undefined</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="205"/>
+ <source>Databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="211"/>
+ <source>Register in all databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="218"/>
+ <source>Register in following databases:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="253"/>
+ <source>Type:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="260"/>
+ <source>Function name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="273"/>
+ <source>Implementation language:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="293"/>
+ <source>Initialization code:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="309"/>
+ <location filename="../windows/functionseditor.cpp" line="426"/>
+ <source>Function implementation code:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.ui" line="325"/>
+ <source>Final step implementation code:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="54"/>
+ <source>SQL function editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="59"/>
+ <source>Commit all function changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="60"/>
+ <source>Rollback all function changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="62"/>
+ <source>Create new function</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="63"/>
+ <source>Delete selected function</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="65"/>
+ <source>Custom SQL functions manual</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="68"/>
+ <source>Add function argument</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="69"/>
+ <source>Rename function argument</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="70"/>
+ <source>Delete function argument</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="72"/>
+ <source>Move function argument up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="73"/>
+ <source>Move function argument down</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="111"/>
+ <source>Scalar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="112"/>
+ <source>Aggregate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="410"/>
+ <source>Enter a non-empty, unique name of the function.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="422"/>
+ <source>Pick the implementation language.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="426"/>
+ <source>Per step code:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="432"/>
+ <source>Enter a non-empty implementation code.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="505"/>
+ <source>argument</source>
+ <comment>new function argument name in function editor window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/functionseditor.cpp" line="631"/>
+ <source>Functions editor window has uncommited modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ImportDialog</name>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="14"/>
+ <source>Import data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="21"/>
+ <source>Table to import to</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="36"/>
+ <source>Table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="43"/>
+ <source>Database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="84"/>
+ <source>Data source to import from</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="129"/>
+ <source>Data source type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="141"/>
+ <source>Options</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="175"/>
+ <source>Text encoding:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="182"/>
+ <source>Input file:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.ui" line="192"/>
+ <source>&lt;p&gt;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.&lt;/p&gt;</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="72"/>
+ <source>Cancel</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
+ <source>If you type table name that doesn&apos;t exist, it will be created.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
+ <source>Enter the table name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
+ <source>Select import plugin.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
+ <source>You must provide a file to import from.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
+ <source>The file &apos;%1&apos; does not exist.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
+ <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="319"/>
+ <source>Pick file to import from</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>IndexDialog</name>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="20"/>
+ <location filename="../dialogs/indexdialog.ui" line="30"/>
+ <source>Index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="36"/>
+ <source>On table:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="43"/>
+ <source>Index name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="50"/>
+ <source>Partial index condition</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="67"/>
+ <source>Unique index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="90"/>
+ <source>Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="95"/>
+ <source>Collation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="100"/>
+ <source>Sort</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.ui" line="115"/>
+ <source>DDL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="65"/>
+ <source>Tried to open index dialog for closed or inexisting database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="131"/>
+ <source>Could not process index %1 correctly. Unable to open an index dialog.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="185"/>
+ <source>Pick the table for the index.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="186"/>
+ <source>Select at least one column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="187"/>
+ <source>Enter a valid condition.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="236"/>
+ <source>default</source>
+ <comment>index dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="247"/>
+ <source>Sort order</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <source>Error</source>
+ <comment>index dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
+ <source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
+ <source>An error occurred while executing SQL statements:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>LanguageDialog</name>
+ <message>
+ <location filename="../dialogs/languagedialog.ui" line="14"/>
+ <source>Language</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/languagedialog.ui" line="20"/>
+ <source>Please choose language:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MainWindow</name>
+ <message>
+ <location filename="../mainwindow.ui" line="81"/>
+ <source>Database toolbar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="92"/>
+ <source>Structure toolbar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="103"/>
+ <source>Tools</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="120"/>
+ <source>Window list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.ui" line="134"/>
+ <source>View toolbar</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="107"/>
+ <source>Configuration widgets</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="108"/>
+ <source>Syntax highlighting engines</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="109"/>
+ <source>Data editors</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="121"/>
+ <source>Running in debug mode. Press %1 or use &apos;Help / Open debug console&apos; menu entry to open the debug console.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="123"/>
+ <source>Running in debug mode. Debug messages are printed to the standard output.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="213"/>
+ <source>You need to restart application to make the language change take effect.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="256"/>
+ <source>Open SQL editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="257"/>
+ <source>Open DDL history</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="258"/>
+ <source>Open SQL functions editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="259"/>
+ <source>Open collations editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="260"/>
+ <source>Import</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="261"/>
+ <source>Export</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="263"/>
+ <source>Open configuration dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="265"/>
+ <source>Tile windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="266"/>
+ <source>Tile windows horizontally</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="267"/>
+ <source>Tile windows vertically</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="268"/>
+ <source>Cascade windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="269"/>
+ <source>Next window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="270"/>
+ <source>Previous window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="271"/>
+ <source>Hide status field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="273"/>
+ <source>Close selected window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="274"/>
+ <source>Close all windows but selected</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="275"/>
+ <source>Close all windows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="276"/>
+ <source>Restore recently closed window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="277"/>
+ <source>Rename selected window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="279"/>
+ <source>Open Debug Console</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="280"/>
+ <source>Open CSS Console</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="281"/>
+ <source>Report a bug</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="282"/>
+ <source>Propose a new feature</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="283"/>
+ <source>About</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="284"/>
+ <source>Licenses</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="285"/>
+ <source>Open home page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="286"/>
+ <source>Open forum page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="287"/>
+ <source>User Manual</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="288"/>
+ <source>SQLite documentation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="289"/>
+ <source>Report history</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="291"/>
+ <source>Check for updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="329"/>
+ <source>Database</source>
+ <comment>menubar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="349"/>
+ <source>Structure</source>
+ <comment>menubar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="370"/>
+ <source>View</source>
+ <comment>menubar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="374"/>
+ <source>Window list</source>
+ <comment>menubar view menu</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="395"/>
+ <source>Tools</source>
+ <comment>menubar</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="409"/>
+ <source>Help</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="571"/>
+ <source>Could not set style: %1</source>
+ <comment>main window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="644"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="660"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="693"/>
+ <source>Rename window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="693"/>
+ <source>Enter new name for the window:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="779"/>
+ <source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="787"/>
+ <source>You&apos;re running the most recent version. No updates are available.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.cpp" line="904"/>
+ <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="911"/>
+ <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="916"/>
+ <source>Could not add database %1 to list.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MdiWindow</name>
+ <message>
+ <location filename="../mdiwindow.cpp" line="199"/>
+ <source>Uncommited changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="204"/>
+ <source>Close anyway</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mdiwindow.cpp" line="206"/>
+ <source>Don&apos;t close</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditor</name>
+ <message>
+ <location filename="../multieditor/multieditor.cpp" line="62"/>
+ <source>Null value</source>
+ <comment>multieditor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditor.cpp" line="77"/>
+ <source>Configure editors for this data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditor.cpp" line="287"/>
+ <source>Data editor plugin &apos;%1&apos; not loaded, while it is defined for editing &apos;%1&apos; data type.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditor.cpp" line="372"/>
+ <source>Deleted</source>
+ <comment>multieditor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditor.cpp" line="374"/>
+ <source>Read only</source>
+ <comment>multieditor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorBool</name>
+ <message>
+ <location filename="../multieditor/multieditorbool.cpp" line="130"/>
+ <source>Boolean</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorDate</name>
+ <message>
+ <location filename="../multieditor/multieditordate.cpp" line="14"/>
+ <source>Date</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorDateTime</name>
+ <message>
+ <location filename="../multieditor/multieditordatetime.cpp" line="181"/>
+ <source>Date &amp; time</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorHex</name>
+ <message>
+ <location filename="../multieditor/multieditorhex.cpp" line="39"/>
+ <source>Hex</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorNumeric</name>
+ <message>
+ <location filename="../multieditor/multieditornumeric.cpp" line="36"/>
+ <source>Number</source>
+ <comment>numeric multi editor tab name</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorText</name>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="45"/>
+ <source>Text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="106"/>
+ <source>Tab changes focus</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="107"/>
+ <source>Cut</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="108"/>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="109"/>
+ <source>Paste</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="110"/>
+ <source>Delete</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="111"/>
+ <source>Undo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.cpp" line="112"/>
+ <source>Redo</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>MultiEditorTime</name>
+ <message>
+ <location filename="../multieditor/multieditortime.cpp" line="16"/>
+ <source>Time</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>NewConstraintDialog</name>
+ <message>
+ <location filename="../dialogs/newconstraintdialog.ui" line="20"/>
+ <source>New constraint</source>
+ <translation type="unfinished"></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>
+ </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>
+ </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>
+ </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>
+ </message>
+ <message>
+ <location filename="../dialogs/newconstraintdialog.cpp" line="103"/>
+ <source>Not NULL</source>
+ <comment>new constraint dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newconstraintdialog.cpp" line="105"/>
+ <source>Collate</source>
+ <comment>new constraint dialog</comment>
+ <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>
+ </message>
+</context>
+<context>
+ <name>NewVersionDialog</name>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="14"/>
+ <source>SQLiteStudio updates</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="26"/>
+ <source>New updates are available!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="70"/>
+ <source>Component</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="75"/>
+ <source>Current version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="80"/>
+ <source>Update version</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="91"/>
+ <source>Check for updates on startup</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="101"/>
+ <source>Update to new version!</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="121"/>
+ <source>Not now.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/newversiondialog.ui" line="134"/>
+ <source>Don&apos;t install the update and close this window.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateConfigDialog</name>
+ <message>
+ <location filename="../dialogs/populateconfigdialog.ui" line="14"/>
+ <source>Populating configuration</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populateconfigdialog.cpp" line="54"/>
+ <source>Configuring &lt;b&gt;%1&lt;/b&gt; for column &lt;b&gt;%2&lt;/b&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>PopulateDialog</name>
+ <message>
+ <location filename="../dialogs/populatedialog.ui" line="14"/>
+ <source>Populate table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.ui" line="26"/>
+ <source>Database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.ui" line="44"/>
+ <source>Table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.ui" line="72"/>
+ <source>Columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.ui" line="102"/>
+ <source>Number of rows to populate:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="42"/>
+ <source>Populate</source>
+ <comment>populate dialog button</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="54"/>
+ <source>Abort</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="161"/>
+ <source>Configure</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="259"/>
+ <source>Populating configuration for this column is invalid or incomplete.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="290"/>
+ <source>Select database with table to populate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="291"/>
+ <source>Select table to populate</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/populatedialog.cpp" line="292"/>
+ <source>You have to select at least one column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <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="70"/>
+ <source>The query execution mechanism had problems with extracting ROWID&apos;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="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="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="76"/>
+ <source>Cannot edit results of query other than %1.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="80"/>
+ <source>Cannot edit columns that are result of %1 statement.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="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="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="444"/>
+ <source>condition: %1</source>
+ <comment>data view tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodelcolumn.cpp" line="464"/>
+ <source>collation name: %1</source>
+ <comment>data view tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="19"/>
+ <source>Data grid view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="20"/>
+ <source>Copy cell(s) contents to clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="22"/>
+ <source>Paste cell(s) contents from clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="24"/>
+ <source>Set empty value to selected cell(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="25"/>
+ <source>Set NULL value to selected cell(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="26"/>
+ <source>Commit changes to cell(s) contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="27"/>
+ <source>Rollback changes to cell(s) contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="28"/>
+ <source>Delete selected data row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.h" line="29"/>
+ <source>Insert new data row</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="573"/>
+ <source>Total pages available: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="583"/>
+ <source>Total rows loaded: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.h" line="18"/>
+ <source>Data view (both grid and form)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.h" line="19"/>
+ <source>Refresh data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.h" line="20"/>
+ <source>Switch to grid view of the data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.h" line="21"/>
+ <source>Switch to form view of the data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="26"/>
+ <source>Database list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="27"/>
+ <source>Delete selected item</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="28"/>
+ <source>Clear filter contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="29"/>
+ <source>Refresh schema</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="30"/>
+ <source>Refresh all schemas</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="31"/>
+ <source>Add database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="32"/>
+ <source>Select all items</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="33"/>
+ <source>Copy selected item(s)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtree.h" line="34"/>
+ <location filename="../multieditor/multieditortext.h" line="15"/>
+ <location filename="../sqleditor.h" line="25"/>
+ <source>Paste from clipboard</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemfactory.cpp" line="47"/>
+ <source>Tables</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemfactory.cpp" line="52"/>
+ <source>Indexes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemfactory.cpp" line="57"/>
+ <source>Triggers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemfactory.cpp" line="62"/>
+ <source>Views</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dbtree/dbtreeitemfactory.cpp" line="67"/>
+ <source>Columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="16"/>
+ <source>Data form view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="17"/>
+ <source>Commit changes for current row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="18"/>
+ <source>Rollback changes for current row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="19"/>
+ <source>Go to first row on current page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="20"/>
+ <source>Go to next row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="21"/>
+ <source>Go to previous row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="22"/>
+ <source>Go to last row on current page</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="23"/>
+ <source>Insert new row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../formview.h" line="24"/>
+ <source>Delete current row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="43"/>
+ <source>Main window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="44"/>
+ <source>Open SQL editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="45"/>
+ <source>Previous window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="46"/>
+ <source>Next window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="47"/>
+ <source>Hide status area</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="48"/>
+ <source>Open configuration dialog</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="49"/>
+ <source>Open Debug Console</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../mainwindow.h" line="50"/>
+ <source>Open CSS Console</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.h" line="12"/>
+ <source>Cell text value editor</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.h" line="13"/>
+ <location filename="../sqleditor.h" line="23"/>
+ <source>Cut selected text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.h" line="14"/>
+ <location filename="../sqleditor.h" line="24"/>
+ <source>Copy selected text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.h" line="16"/>
+ <location filename="../sqleditor.h" line="26"/>
+ <source>Delete selected text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.h" line="17"/>
+ <location filename="../sqleditor.h" line="28"/>
+ <source>Undo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../multieditor/multieditortext.h" line="18"/>
+ <location filename="../sqleditor.h" line="29"/>
+ <source>Redo</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="22"/>
+ <source>SQL editor input field</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="27"/>
+ <source>Select whole editor contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="30"/>
+ <source>Save contents into a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="31"/>
+ <source>Load contents from a file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="32"/>
+ <source>Find in text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="33"/>
+ <source>Find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="34"/>
+ <source>Find previous</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="35"/>
+ <source>Replace in text</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="36"/>
+ <source>Delete current line</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="37"/>
+ <source>Request code assistant</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="38"/>
+ <source>Format contents</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="39"/>
+ <source>Move selected block of text one line down</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="40"/>
+ <source>Move selected block of text one line up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="41"/>
+ <source>Copy selected block of text and paste it a line below</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.h" line="42"/>
+ <source>Copy selected block of text and paste it a line above</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../uiutils.cpp" line="32"/>
+ <source>All SQLite databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../uiutils.cpp" line="35"/>
+ <source>All files</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../uiutils.cpp" line="39"/>
+ <location filename="../uiutils.cpp" line="41"/>
+ <source>Database file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.h" line="11"/>
+ <source>Reports history window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/bugreporthistorywindow.h" line="12"/>
+ <source>Delete selected entry</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="26"/>
+ <source>SQL editor window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="27"/>
+ <source>Execute query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="28"/>
+ <source>Execute &quot;%1&quot; query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="29"/>
+ <source>Switch current working database to previous on the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="30"/>
+ <source>Switch current working database to next on the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="31"/>
+ <source>Go to next editor tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="32"/>
+ <source>Go to previous editor tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="33"/>
+ <source>Move keyboard input focus to the results view below</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/editorwindow.h" line="34"/>
+ <source>Move keyboard input focus to the SQL editor above</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="30"/>
+ <source>Table window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="31"/>
+ <source>Refresh table structure</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="32"/>
+ <source>Add new column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="33"/>
+ <source>Edit selected column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="34"/>
+ <source>Delete selected column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="35"/>
+ <source>Export table data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="36"/>
+ <source>Import data to the table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="37"/>
+ <source>Add new table constraint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="38"/>
+ <source>Edit selected table constraint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="39"/>
+ <source>Delete selected table constraint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="40"/>
+ <source>Refresh table index list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="41"/>
+ <source>Add new index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="42"/>
+ <source>Edit selected index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="43"/>
+ <source>Delete selected index</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.h" line="44"/>
+ <source>Refresh table trigger list</source>
+ <translation type="unfinished"></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>
+ </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>
+ </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>
+ </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>
+ </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>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.h" line="23"/>
+ <source>A view window</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.h" line="24"/>
+ <source>Refresh view trigger list</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QuitConfirmDialog</name>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
+ <source>Uncommited changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
+ <source>Are you sure you want to quit the application?
+
+Following items are pending:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SearchTextDialog</name>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="14"/>
+ <source>Find or replace</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="23"/>
+ <source>Find:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="36"/>
+ <source>Case sensitive</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="43"/>
+ <source>Search backwards</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="50"/>
+ <source>Regular expression matching</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="60"/>
+ <source>Replace &amp;&amp;
+find next</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="78"/>
+ <source>Replace with:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="91"/>
+ <source>Replace all</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/searchtextdialog.ui" line="98"/>
+ <source>Find</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SortDialog</name>
+ <message>
+ <location filename="../dialogs/sortdialog.ui" line="14"/>
+ <source>Sort by columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/sortdialog.ui" line="45"/>
+ <location filename="../dialogs/sortdialog.cpp" line="48"/>
+ <source>Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/sortdialog.ui" line="50"/>
+ <location filename="../dialogs/sortdialog.cpp" line="48"/>
+ <source>Order</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/sortdialog.cpp" line="178"/>
+ <source>Sort by: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/sortdialog.cpp" line="242"/>
+ <source>Move column up</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/sortdialog.cpp" line="243"/>
+ <source>Move column down</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlEditor</name>
+ <message>
+ <location filename="../sqleditor.cpp" line="121"/>
+ <source>Cut</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="122"/>
+ <source>Copy</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="123"/>
+ <source>Paste</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="124"/>
+ <source>Delete</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="125"/>
+ <source>Select all</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="126"/>
+ <source>Undo</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="127"/>
+ <source>Redo</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="128"/>
+ <source>Complete</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="129"/>
+ <source>Format SQL</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="130"/>
+ <source>Save SQL to file</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="131"/>
+ <source>Select file to save SQL</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="132"/>
+ <source>Load SQL from file</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="133"/>
+ <source>Delete line</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="134"/>
+ <source>Move block down</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="135"/>
+ <source>Move block up</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="136"/>
+ <source>Copy block down</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="137"/>
+ <source>Copy up down</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="138"/>
+ <source>Find</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="139"/>
+ <source>Find next</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="140"/>
+ <source>Find previous</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="141"/>
+ <source>Replace</source>
+ <comment>sql editor</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="245"/>
+ <source>Could not open file &apos;%1&apos; for writing: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="255"/>
+ <source>Saved SQL contents to file: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="434"/>
+ <source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="822"/>
+ <source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="1057"/>
+ <source>Save to file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="1069"/>
+ <source>SQL scripts (*.sql);;All files (*)</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="1070"/>
+ <source>Open file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="1079"/>
+ <source>Could not open file &apos;%1&apos; for reading: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../sqleditor.cpp" line="1288"/>
+ <source>Reached the end of document. Hit the find again to restart the search.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlQueryItem</name>
+ <message>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
+ <source>Column:</source>
+ <comment>data view tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
+ <source>Data type:</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
+ <source>Table:</source>
+ <comment>data view tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
+ <source>Constraints:</source>
+ <comment>data view tooltip</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
+ <source>This cell is not editable, because: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitem.cpp" line="415"/>
+ <source>Cannot load the data for a cell that refers to the already closed database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlQueryItemDelegate</name>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="47"/>
+ <source>Cannot edit this cell. Details: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryitemdelegate.cpp" line="41"/>
+ <source>The row is marked for deletion.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlQueryModel</name>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="63"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="487"/>
+ <source>Only one query can be executed simultaneously.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="95"/>
+ <source>Uncommited data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="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="374"/>
+ <source>Could not begin transaction on the database. Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="420"/>
+ <source>An error occurred while commiting the transaction: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="445"/>
+ <source>An error occurred while rolling back the transaction: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="573"/>
+ <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="599"/>
+ <source>An error occurred while commiting the data: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1045"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1100"/>
+ <source>Error while executing SQL query on database &apos;%1&apos;: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1097"/>
+ <source>Error while loading query results: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <source>Insert multiple rows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
+ <source>Number of rows to insert:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>SqlQueryView</name>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="72"/>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="73"/>
+ <source>Copy as...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="74"/>
+ <source>Paste</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="75"/>
+ <source>Paste as...</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="76"/>
+ <source>Set NULL values</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="77"/>
+ <source>Erase values</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="79"/>
+ <source>Commit</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="80"/>
+ <source>Rollback</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="81"/>
+ <source>Commit selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="82"/>
+ <source>Rollback selected cells</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="84"/>
+ <source>Remove custom sorting</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="85"/>
+ <source>Insert row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="86"/>
+ <source>Insert multiple rows</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqlqueryview.cpp" line="87"/>
+ <source>Delete selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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>
+</context>
+<context>
+ <name>SqlTableModel</name>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="74"/>
+ <source>Error while commiting new row: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../datagrid/sqltablemodel.cpp" line="132"/>
+ <source>Error while deleting row from table %1: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>StatusField</name>
+ <message>
+ <location filename="../statusfield.ui" line="14"/>
+ <source>Status</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../statusfield.cpp" line="164"/>
+ <source>Copy</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../statusfield.cpp" line="171"/>
+ <source>Clear</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TableConstraintsModel</name>
+ <message>
+ <location filename="../windows/tableconstraintsmodel.cpp" line="75"/>
+ <source>Type</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tableconstraintsmodel.cpp" line="77"/>
+ <source>Details</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tableconstraintsmodel.cpp" line="79"/>
+ <source>Name</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TableForeignKeyPanel</name>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="29"/>
+ <source>Foreign table:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="48"/>
+ <source>SQLite 2 does not support foreign keys officially,
+but it&apos;s okay to use them anyway.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="62"/>
+ <source>Columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="77"/>
+ <source>Local column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="90"/>
+ <source>Foreign column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="126"/>
+ <source>Reactions</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="165"/>
+ <source>Deferred foreign key</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="183"/>
+ <source>Named constraint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.ui" line="190"/>
+ <source>Constraint name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.cpp" line="53"/>
+ <source>Pick the foreign column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.cpp" line="65"/>
+ <source>Pick the foreign table.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.cpp" line="66"/>
+ <source>Select at least one foreign column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.cpp" line="67"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tableforeignkeypanel.cpp" line="209"/>
+ <source>Foreign column</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TablePrimaryKeyAndUniquePanel</name>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="32"/>
+ <source>Columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="59"/>
+ <source>Column</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="84"/>
+ <source>Collation</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="109"/>
+ <source>Sort</source>
+ <translation type="unfinished"></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>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="145"/>
+ <source>Autoincrement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="167"/>
+ <source>Named constraint</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="174"/>
+ <source>Constraint name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.ui" line="199"/>
+ <source>On conflict</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.cpp" line="86"/>
+ <source>Collate</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.cpp" line="93"/>
+ <source>Sort order</source>
+ <comment>table constraints</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/>
+ <source>Select at least one column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/>
+ <source>Enter a name of the constraint.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TableStructureModel</name>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="299"/>
+ <source>Name</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="301"/>
+ <source>Data type</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablestructuremodel.cpp" line="315"/>
+ <source>Default value</source>
+ <comment>table structure columns</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TableWindow</name>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="36"/>
+ <source>Structure</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="60"/>
+ <source>Table name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="190"/>
+ <source>Data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="207"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="221"/>
+ <source>Indexes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="250"/>
+ <source>Triggers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.ui" line="282"/>
+ <source>DDL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="191"/>
+ <source>Export table</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="192"/>
+ <source>Import data to table</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="193"/>
+ <source>Populate table</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="207"/>
+ <source>Refresh structure</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="209"/>
+ <source>Commit structure changes</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="210"/>
+ <source>Rollback structure changes</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="211"/>
+ <source>Add column</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="212"/>
+ <source>Edit column</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="213"/>
+ <location filename="../windows/tablewindow.cpp" line="300"/>
+ <source>Delete column</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="214"/>
+ <source>Move column up</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="215"/>
+ <source>Move column down</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="221"/>
+ <source>Create similar table</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="222"/>
+ <source>Reset autoincrement value</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="225"/>
+ <source>Add table constraint</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="226"/>
+ <source>Edit table constraint</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="227"/>
+ <source>Delete table constraint</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="228"/>
+ <source>Move table constraint up</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="229"/>
+ <source>Move table constraint down</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="231"/>
+ <source>Add table primary key</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="232"/>
+ <source>Add table foreign key</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="233"/>
+ <source>Add table unique constraint</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="234"/>
+ <source>Add table check constraint</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="252"/>
+ <source>Refresh index list</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="254"/>
+ <source>Create index</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="255"/>
+ <source>Edit index</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="256"/>
+ <source>Delete index</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="262"/>
+ <source>Refresh trigger list</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="264"/>
+ <source>Create trigger</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="265"/>
+ <source>Edit trigger</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="266"/>
+ <source>Delete trigger</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="299"/>
+ <source>Are you sure you want to delete column &apos;%1&apos;?</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="327"/>
+ <source>Following problems will take place while modifying the table.
+Would you like to proceed?</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="329"/>
+ <source>Table modification</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="467"/>
+ <source>Could not load data for table %1. Error details: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="580"/>
+ <source>Could not process the %1 table correctly. Unable to open a table window.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="635"/>
+ <source>Could not restore window %1, because no database or table was stored in session for this window.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="641"/>
+ <source>Could not restore window &apos;%1&apos;, because no database or table was stored in session for this window.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="648"/>
+ <source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="657"/>
+ <source>Could not restore window &apos;%1&apos;&apos;, because the table %2 doesn&apos;t exist in the database %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="682"/>
+ <location filename="../windows/tablewindow.cpp" line="684"/>
+ <source>New table %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="835"/>
+ <source>Could not commit table structure. Error message: %1</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="857"/>
+ <source>Reset autoincrement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="857"/>
+ <source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="864"/>
+ <source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="866"/>
+ <source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="946"/>
+ <source>Empty name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="946"/>
+ <source>A blank name for the table is allowed in SQLite, but it is not recommended.
+Are you sure you want to create a table with blank name?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="955"/>
+ <source>Cannot create a table without at least one column.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="981"/>
+ <source>Cannot create table %1, if it has no primary key defined. Either uncheck the %2, or define a primary key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="988"/>
+ <source>Cannot use autoincrement for primary key when %1 clause is used. Either uncheck the %2, or the autoincrement in a primary key.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1125"/>
+ <source>Are you sure you want to delete table constraint &apos;%1&apos;?</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1126"/>
+ <source>Delete constraint</source>
+ <comment>table window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1180"/>
+ <source>Cannot export, because no export plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1193"/>
+ <source>Cannot import, because no import plugin is loaded.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1225"/>
+ <source>Uncommited changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1226"/>
+ <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>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <source>Go back to structure tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1229"/>
+ <source>Commit modifications and browse data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1379"/>
+ <source>Name</source>
+ <comment>table window indexes</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1380"/>
+ <source>Unique</source>
+ <comment>table window indexes</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1381"/>
+ <source>Columns</source>
+ <comment>table window indexes</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1382"/>
+ <source>Partial index condition</source>
+ <comment>table window indexes</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1436"/>
+ <source>Name</source>
+ <comment>table window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1437"/>
+ <source>Event</source>
+ <comment>table window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1438"/>
+ <source>Condition</source>
+ <comment>table window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1439"/>
+ <source>Details</source>
+ <comment>table window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1528"/>
+ <source>Table window &quot;%1&quot; has uncommited structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1530"/>
+ <source>Table window &quot;%1&quot; has uncommited data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/tablewindow.cpp" line="1532"/>
+ <source>Table window &quot;%1&quot; has uncommited structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TriggerColumnsDialog</name>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="14"/>
+ <source>Trigger columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggercolumnsdialog.ui" line="47"/>
+ <source>Triggering columns:</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>TriggerDialog</name>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="14"/>
+ <location filename="../dialogs/triggerdialog.ui" line="24"/>
+ <source>Trigger</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="30"/>
+ <source>On table:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="40"/>
+ <source>Action:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="56"/>
+ <location filename="../dialogs/triggerdialog.ui" line="124"/>
+ <source>&lt;p&gt;SQL condition that will be evaluated before the actual trigger code. In case the condition returns false, the trigger will not be fired for that row.&lt;/p&gt;</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="59"/>
+ <source>Pre-condition:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="66"/>
+ <source>The scope is still not fully supported by the SQLite database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="73"/>
+ <source>Trigger name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="80"/>
+ <source>When:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="87"/>
+ <source>List of columns for UPDATE OF action.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="97"/>
+ <source>Scope:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="104"/>
+ <source>Code:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="111"/>
+ <source>Trigger statements to be executed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.ui" line="132"/>
+ <source>DDL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.cpp" line="159"/>
+ <source>On view:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="353"/>
+ <source>Enter a valid condition.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <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="426"/>
+ <source>Error</source>
+ <comment>trigger dialog</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/triggerdialog.cpp" line="426"/>
+ <source>An error occurred while executing SQL statements:
+%1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>VersionConvertSummaryDialog</name>
+ <message>
+ <location filename="../dialogs/versionconvertsummarydialog.ui" line="14"/>
+ <source>Database version convert</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/versionconvertsummarydialog.ui" line="20"/>
+ <source>Following changes to the SQL statements will be made:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/versionconvertsummarydialog.cpp" line="10"/>
+ <source>Before</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/versionconvertsummarydialog.cpp" line="11"/>
+ <source>After</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>ViewWindow</name>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="36"/>
+ <source>Query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="60"/>
+ <source>View name:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="77"/>
+ <source>Data</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="87"/>
+ <source>Triggers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.ui" line="119"/>
+ <source>DDL</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="103"/>
+ <location filename="../windows/viewwindow.cpp" line="109"/>
+ <source>Could not restore window &apos;%1&apos;, because no database or view was stored in session for this window.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="116"/>
+ <source>Could not restore window &apos;%1&apos;, because database %2 could not be resolved.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="122"/>
+ <source>Could not restore window &apos;%1&apos;, because database %2 could not be open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="131"/>
+ <source>Could not restore window &apos;%1&apos;, because the view %2 doesn&apos;t exist in the database %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="156"/>
+ <location filename="../windows/viewwindow.cpp" line="158"/>
+ <source>New view %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="283"/>
+ <source>Refresh the view</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="285"/>
+ <source>Commit the view changes</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="286"/>
+ <source>Rollback the view changes</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="293"/>
+ <source>Refresh trigger list</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="295"/>
+ <source>Create new trigger</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="296"/>
+ <source>Edit selected trigger</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="297"/>
+ <source>Delete selected trigger</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="318"/>
+ <source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="320"/>
+ <source>View window &quot;%1&quot; has uncommited data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="322"/>
+ <source>View window &quot;%1&quot; has uncommited structure modifications.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="463"/>
+ <source>Could not load data for view %1. Error details: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="474"/>
+ <source>Uncommited changes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="475"/>
+ <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>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="478"/>
+ <source>Go back to structure tab</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="478"/>
+ <source>Commit modifications and browse data.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="536"/>
+ <source>Could not commit view changes. Error message: %1</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="614"/>
+ <source>Name</source>
+ <comment>view window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="615"/>
+ <source>Instead of</source>
+ <comment>view window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="616"/>
+ <source>Condition</source>
+ <comment>view window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="617"/>
+ <source>Details</source>
+ <comment>table window triggers</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="657"/>
+ <source>Could not process the %1 view correctly. Unable to open a view window.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="692"/>
+ <source>Empty name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="692"/>
+ <source>A blank name for the view is allowed in SQLite, but it is not recommended.
+Are you sure you want to create a view with blank name?</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="707"/>
+ <source>The SELECT statement could not be parsed. Please correct the query and retry.
+Details: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="715"/>
+ <source>The view could not be modified due to internal SQLiteStudio error. Please report this!</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="741"/>
+ <source>The view code could not be parsed properly for execution. This is a SQLiteStudio&apos;s bug. Please report it.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="754"/>
+ <source>Following problems will take place while modifying the view.
+Would you like to proceed?</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../windows/viewwindow.cpp" line="756"/>
+ <source>View modification</source>
+ <comment>view window</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>WidgetCover</name>
+ <message>
+ <location filename="../common/widgetcover.cpp" line="234"/>
+ <source>Interrupt</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
index b38c58b..8671753 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pl.ts
@@ -891,7 +891,7 @@ ale można go używać.</translation>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
<source>Configuration</source>
<translation>Konfiguracja</translation>
</message>
@@ -972,258 +972,285 @@ ale można go używać.</translation>
<translation>Ogranicz początkową szerokość kolumn danych (w pikselach):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
<source>Data types</source>
<translation>Type danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
<source>Available editors:</source>
<translation>Dostępne edytory:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
<source>Editors selected for this data type:</source>
<translation>Edytory wybrane dla tego typu danych:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
<source>Schema editing</source>
<translation>Edycja schematu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
<translation>Liczba zmian DDL trzymanych w historii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="443"/>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
<translation>Rozmiar historii DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>Nie pokazuj okna podglądu DDL podczas zatwierdzania zmian schematu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
<source>SQL queries</source>
<translation>Zapytania SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
<translation>Liczba zapytań trzymana w historii.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="491"/>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
<translation>Rozmiar historii:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;Jeśli w oknie edytora SQL jest więcej niż jedno zapytanie, to (jeśli ta opcja jest włączona) tylko jedno zapytanie będzie wykonana - to, które znajduje się pod kursorem pisania. W przeciwnym wypadku wszystkie zapytania będą wykonywane. Zawsze możesz ograniczyć zapytania do wywołania przez zaznaczenie tych zapytań, które chcesz wywołać.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
<source>Execute only the query under the cursor</source>
<translation>Wykonuj tylko zapytania będące pod kursorem</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
<source>Updates</source>
<translation>Aktualizacje</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
<source>Automatically check for updates at startup</source>
<translation>Sprawdzaj aktualizacje automatycznie przy starcie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
<source>Session</source>
<translation>Sesje</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Przywróć ostatnią sesję (aktywne okna MDI) po starcie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Filtruj skróty po nazwie, lub kombinacji klawiszy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="622"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Action</source>
<translation>Akcja</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
<source>Key combination</source>
<translation>Kombinacja klawiszy</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Zmiana języka wymaga restartu aplikacji, aby zadziałać.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="694"/>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
<source>Database list</source>
<translation>Lista baz</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
<translation>Gdy wyłączone, to kolumny będą ułożone w takiej kolejności, w jakiej wystąpiły w zapytaniu CREATE TABLE.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
<source>Sort table columns alphabetically</source>
<translation>Sortuj kolumny tabel alfabetycznie.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
<source>Expand tables node when connected to a database</source>
<translation>Rozwiń listę tabel po połączeniu z bazą danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation>&lt;p&gt;Dodatkowe etykiety, to te wyświetlane obok nazw na liście baz danych (są niebieskie, chyba że skonfigurowano je inaczej). Włączenie tej opcji spowoduje wyświetlenie etykiet dla baz danych, niepoprawnych baz danych, oraz dla węzłów agregujących (grupa kolumn, grupa indeksów, grupa wyzwalaczy). Więcej etykiet jest dostępne niżej.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
<source>Display additional labels on the list</source>
<translation>Wyświetlaj dodatkowe etykiety na liście</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation>Dla zwykłych tabel etykiety będą pokazywać liczbę kolumn, inseksów, oraz wyzwalaczy dla tych tabel.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Display labels for regular tables</source>
<translation>Wyświetlaj etykiety dla zwykłych tabel</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation>Tabele wirtualne będą oznaczone etykietą &apos;wirtualna&apos;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Display labels for virtual tables</source>
<translation>Wyświetlaj etykiety dla tabel wirtualnych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Expand views node when connected to a database</source>
<translation>Rozwiń listę widoków po połączeniu z bazą.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
<translation>Gdy ta opcja jest wyłączona, to wszystkie obiekty będą ułożone w takiej kolejności, w jakiej występują w tabeli sqlite_master (czyli w takiej, w jakiej zostały stworzone)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Sortuj obiekty (tabele, indeksy, wyzwalacze i widoki) alfabetycznie</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
<source>Display system tables and indexes on the list</source>
<translation>Wyświetlaj tabele i indeksy systemowe na liście</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
<source>Table windows</source>
<translation>Okna tabel</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
<translation>Gdy włączone, Okna Tabel będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Otwieraj Okna Tabeli z zakładką danych na początek</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
<source>View windows</source>
<translation>Okna Widoków</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
<translation>Gdy włączone, Okna Widoków będą się pokazywać z zakładką danych, zamiast z zakładką struktury.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
<translation>Otwieraj Okna Widoku z zakładką danych na początek</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Hide built-in plugins</source>
<translation>Ukryj wtyczki wbudowane</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
<source>Current style:</source>
<translation>Aktualny styl:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
<source>Preview</source>
<translation>Podgląd</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
<source>Enabled</source>
<translation>Włączone</translation>
</message>
@@ -1232,193 +1259,193 @@ ale można go używać.</translation>
<translation type="obsolete">Kolumna</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Disabled</source>
<translation>Wyłączone</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
<source>Language</source>
<translation>Język</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
<source>Active formatter plugin</source>
<translation>Aktywna wtyczka formatera</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
<translation>Czcionka edytora SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
<source>Database list font</source>
<translation>Czcionka listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
<source>Database list additional label font</source>
<translation>Czcionka dodatkowych etykiety listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
<source>Data view font</source>
<translation>Czcionka widoku danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
<source>Status field font</source>
<translation>Czcionka pola statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
<translation>Kolory edytora SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
<source>Current line background</source>
<translation>Tło bieżącej linii</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Łańcuchy znaków SQL są zamknięte pomiędzy znakami apostrofu.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
<source>String foreground</source>
<translation>Czcionka łańcucha znaków</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;b&gt;Parametry wiążące to wyrażenia zastępcze dla wartości, które mają być dopiero dostarczone przez użytkownika. Mają one jedną z form: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;:nazwa_parametru&lt;/li&gt;&lt;li&gt;$nazwa_parametru&lt;/li&gt;&lt;li&gt;@nazwa_parametru&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
<source>Bind parameter foreground</source>
<translation>Czcionka parametru wiążącego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
<source>Highlighted parenthesis background</source>
<translation>Tło podświetlonych nawiasów</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Wartości BLOB są wartościami binarnymi, reprezentowanymi jako liczby heksadecymalne, jak np:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
<source>BLOB value foreground</source>
<translation></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
<source>Regular foreground</source>
<translation>Standardowa czcionka</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
<source>Line numbers area background</source>
<translation>Tło obszaru numerów linii</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
<source>Keyword foreground</source>
<translation>Czcionka słowa kluczowego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
<source>Number foreground</source>
<translation>Czcionka liczby</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
<source>Comment foreground</source>
<translation>Czcionka komentarza</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Poprawne obiekty to nazwy tabel, indekstów, wyzwalaczy i widoków, które istnieją w basie SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
<source>Valid objects foreground</source>
<translation>Czcionka poprawnych obiektów</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
<source>Data view colors</source>
<translation>Kolory widoku danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Jakakolwiek zmiana danych będzie obrysowana tym kolorem, dopóki nie zostanie zatwierdzona do bazy danych.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
<translation>Kolor obrysu niezatwierdzonych danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;W przypadku błędu podczas zatwierdzania zmian danych, komórka będąca przyczyną problemu zostanie obrysowana tym kolorem.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
<translation>Kolor obrysu błędu zatwierdzania</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
<source>NULL value foreground</source>
<translation>Kolor czcionki wartości NULL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
<source>Deleted row background</source>
<translation>Tło wiersza usuniętego</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
<source>Database list colors</source>
<translation>Kolory listy baz danych</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Dodatkowe etykiety to te, które mówią o wersji SQLite, liczbie obiektów w głębszych częściach drzewa, itp.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
<source>Additional labels foreground</source>
<translation>Czcionka dodatkowych etykiet</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
<source>Status field colors</source>
<translation>Kolory pola statusu</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
<translation>Czcionka wiadomości informującej</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
<source>Warning message foreground</source>
<translation>Czcionka wiadomości ostrzegającej</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
<translation>Czcionka wiadomości błędu</translation>
</message>
@@ -1680,98 +1707,116 @@ ale można go używać.</translation>
<translation>Odśwież dane tabeli</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="182"/>
<source>First page</source>
<comment>data view</comment>
<translation>Pierwsza strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Poprzednia strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="185"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Następna strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Ostatnia strona</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="191"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Zastosuj filtr</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="206"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation>Zatwierdź zmiany dla wybranych komórek</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="204"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation>Wycofaj zmiany dla wybranych komórek</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="205"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation>Pokaż widok siatki dla wyników</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation>Pokaż widok formularza dla wyników</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="275"/>
+ <location filename="../dataview.cpp" line="278"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Filtruj po tekście</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="279"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation>Filtruj używając Wyrażeń Regularnych</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="277"/>
+ <location filename="../dataview.cpp" line="280"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Filtruj używając wyrażenia SQL</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="311"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Karty na górze</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="312"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Karty na dole</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
<source>Total number of rows is being counted.
Browsing other pages will be possible after the row counting is done.</source>
<translation>Całkowita liczba wierszy jest liczona.
Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostanie zakończone.</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="566"/>
+ <location filename="../dataview.cpp" line="607"/>
<source>Row: %1</source>
<translation>Wiersz: %1</translation>
</message>
@@ -1930,7 +1975,7 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>File</source>
<translation>Plik</translation>
</message>
@@ -1959,42 +2004,42 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation type="vanished">Testuj połączenie z bazą</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
<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"/>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
<source>Browse</source>
<translation>Przeglądaj</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
<source>Enter an unique database name.</source>
<translation>Wprowadź unikalną nazwę bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<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="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
<source>Enter a database file path.</source>
<translation>Wprowadź ścieżkę do pliku bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<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="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>Wybierz typ bazy danych.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
<source>Auto-generated</source>
<translation>Auto-generowana</translation>
</message>
@@ -2003,7 +2048,7 @@ Przeglądanie pozostałych stron będzie możliwe kiedy liczenie wierszy zostani
<translation type="vanished">Nazwa będzie generowana automatycznie</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
<translation>Wprowadź nazwę</translation>
</message>
@@ -3288,42 +3333,42 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Opcje źródła danych</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation>Anuluj</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;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="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation>Wprowadź nazwę tabeli</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation>Wybierz wtyczkę importu</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<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="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation>Plik &apos;%1&apos; nie istnieje.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<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="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation>Wybierz plik do importu</translation>
</message>
@@ -3414,19 +3459,19 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Kierunek sortowania</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Błąd</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
<translation>Nie można utworzyć indeksu, ponieważ wartości w wybranych kolumnach nie są unikalne. Czy chcesz wykonać zapytanie SELECT, aby zobaczyć wartości stwarzające problem?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>Wystąpił błąd podczas wykonywania zapytań SQL:
@@ -3499,248 +3544,248 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Uruchomiono tryb debugowania. Wiadomości debugujące są wyświetlane na standardowym wyjściu.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="211"/>
+ <location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
<translation>Należy zrestartować aplikację, aby nastąpiła zmiana języka.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="254"/>
+ <location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL editor</source>
<translation>Otwórz edytor SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open DDL history</source>
<translation>Otwórz historię DDL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open SQL functions editor</source>
<translation>Otwórz edytor funkcji SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open collations editor</source>
<translation>Otwórz edytor zestawień</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Import</source>
<translation>Importuj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Export</source>
<translation>Eksportuj</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="263"/>
<source>Open configuration dialog</source>
<translation>Otwórz okno konfiguracji</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows</source>
<translation>Ustaw okna w płytki</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows horizontally</source>
<translation>Ustaw okno poziomo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows vertically</source>
<translation>Ustaw okna pionowo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Cascade windows</source>
<translation>Ustaw okna caskadowo</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Next window</source>
<translation>Następne okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Previous window</source>
<translation>Poprzednie okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Hide status field</source>
<translation>Ukryj pole statusu</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
<translation>Zamknij wybrane okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close all windows but selected</source>
<translation>Zamknij wszystkie okna, oprócz wybranego</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows</source>
<translation>Zamknij wszystkie okna</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Restore recently closed window</source>
<translation>Przywróć ostatnio zamknięte okno</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Rename selected window</source>
<translation>Zmień nazwę wybranego okna</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="279"/>
<source>Open Debug Console</source>
<translation>Otwórz Konsolę Debugowania</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Report a bug</source>
<translation>Zgłoś błąd</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Propose a new feature</source>
<translation>Zgłoś pomysł</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
<translation>O programie</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>Licenses</source>
<translation>Licencje</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Open home page</source>
<translation>Otwórz stronę domową</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open forum page</source>
<translation>Otwórz stronę forum</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>User Manual</source>
<translation>Podręcznik Użytkownika</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>SQLite documentation</source>
<translation>Dokumentacja SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
<translation>Historia zgłoszeń</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="291"/>
<source>Check for updates</source>
<translation>Sprawdź aktualizacje</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="329"/>
<source>Database</source>
<comment>menubar</comment>
<translation>Baza danych</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="349"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Struktura</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="370"/>
<source>View</source>
<comment>menubar</comment>
<translation>Widok</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="374"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Lista okien</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Narzędzia</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="409"/>
<source>Help</source>
<translation>Pomoc</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="571"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation>Nie udało się ustawić stylu: %1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="642"/>
+ <location filename="../mainwindow.cpp" line="644"/>
<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>
<message>
- <location filename="../mainwindow.cpp" line="658"/>
+ <location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Nie można zaimportować, ponieważ żadna wtyczka importu nie została załadowana.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Rename window</source>
<translation>Zmień nazwę okna</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Enter new name for the window:</source>
<translation>Wprowadź nową nazwę dla okna:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="779"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Nowe aktualizacje są dostępne: &lt;a href=&quot;%1&quot;&gt;Kliknij aby poznać szczegóły&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="787"/>
<source>You&apos;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="891"/>
+ <location filename="../mainwindow.cpp" line="904"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="911"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
<translation>Nie udało się dodać bazy danych %1 do listy.</translation>
</message>
@@ -4194,12 +4239,12 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<translation>Otwórz zawartość wybranej komórki w osobnym edytorze</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="532"/>
+ <location filename="../dataview.cpp" line="573"/>
<source>Total pages available: %1</source>
<translation>Liczba dostępnych stron: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="583"/>
<source>Total rows loaded: %1</source>
<translation>Liczba załadowanych wierszy: %1</translation>
</message>
@@ -4266,7 +4311,7 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation>Wklej ze schowka</translation>
</message>
@@ -4387,106 +4432,106 @@ Proszę podać nową, unikalną nazwę, lub nacisnąć &apos;%1&apos;, aby przer
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation>Wytnij wybrany tekst</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<source>Copy selected text</source>
<translation>Skopiuj wybrany tekst</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="16"/>
- <location filename="../sqleditor.h" line="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation>Usuń wybrany tekst</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation>Cofnij</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation>Przywróć</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation>Pole wprowadzania edytora SQL</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation>Zaznacz całą zawartość edytora</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation>Zapisz zawartość do pliku</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation>Wczytaj zawartość z pliku</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation>Znajdź w tekście</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation>Znajdź następny</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation>Znajdź poprzedni</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation>Zmień w tekście</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation>Usuń bieżącą linię</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation>Wywołaj asystenta kodu</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation>Formatuj zawartość</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
<translation>Przenieś wybrany blok tekstu o jedną linię w dół</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
<translation>Przenieś wybrany blok tekstu o jedną linię w górę</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
<translation>Skopiuj wybrany blok tekstu i wklej go poniżej</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
<translation>Skopiuj wybrany blok tekstu i wklej go powyżej</translation>
</message>
@@ -4782,173 +4827,173 @@ znajdź następny</translation>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Wytnij</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Kopiuj</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Wklej</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Usuń</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Zaznacz wszystko</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Cofnij</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Przywróć</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Dopełnij</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Formatuj SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Zapisz SQL do pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Wczytaj SQL z pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Usuń linię</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Przesuń blok w dół</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Przesuń blok w górę</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Skopiuj blok w dół</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation>Skopiuj blok w górę</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Znajdź</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Znajdź następny</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Znajdź poprzedni</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Zastąp</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="255"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation>Dopełnianie składni może być użyte tylko wtedy, gdy poprawna baza danych jest ustawiona w edytorze SQL.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="819"/>
+ <location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation>Zawartość edytora SQL jest ogromna, więc sprawdzanie błędów i podświetlanie istniejących obiektów zostało tymczasowo wyłączone.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1054"/>
+ <location filename="../sqleditor.cpp" line="1057"/>
<source>Save to file</source>
<translation>Zapisz do pliku</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do zapisu: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1069"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Skrypty SQL (*.sql);;Wszystkie pliki (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1070"/>
<source>Open file</source>
<translation>Otwórz plik</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Nie udało się otworzyć pliku &apos;%1&apos; do odczytu: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1288"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Osiągnięto koniec dokumentu. Wciśnij szukanie ponownie, aby zrestartować szukanie.</translation>
</message>
@@ -5068,12 +5113,12 @@ znajdź następny</translation>
<translation>Błąd podczas wczytywania wyników zapytania: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Insert multiple rows</source>
<translation>Wstaw wiele wierszy</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Number of rows to insert:</source>
<translation>Liczba wierszy do wstawienia:</translation>
</message>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
index 491b6ea..9d1c8bb 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_pt_BR.ts
@@ -888,7 +888,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
<source>Configuration</source>
<translation type="unfinished"></translation>
</message>
@@ -969,449 +969,476 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
<source>Data types</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
<source>Available editors:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
<source>Editors selected for this data type:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
<source>Schema editing</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="443"/>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
<source>SQL queries</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="491"/>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
<source>Execute only the query under the cursor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
<source>Updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
<source>Automatically check for updates at startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
<source>Session</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="622"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
<source>Key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
<source>Language</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="694"/>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
<source>Database list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
<source>Sort table columns alphabetically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
<source>Expand tables node when connected to a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
<source>Display additional labels on the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Display labels for regular tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Display labels for virtual tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Expand views node when connected to a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
<source>Display system tables and indexes on the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
<source>Current style:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
<source>Preview</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
<source>Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
<source>Active formatter plugin</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
<source>Database list font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
<source>Database list additional label font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
<source>Data view font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
<source>Status field font</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
<source>Current line background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
<source>String foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
<source>BLOB value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
<source>Regular foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
<source>Line numbers area background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
<source>Keyword foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
<source>Number foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
<source>Comment foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
<source>NULL value foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
<source>Deleted row background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
<source>Database list colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
<source>Warning message foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
<translation type="unfinished"></translation>
</message>
@@ -1673,97 +1700,115 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="182"/>
<source>First page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>Previous page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="185"/>
<source>Next page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Last page</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="191"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="206"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="204"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="205"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="275"/>
+ <location filename="../dataview.cpp" line="278"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="279"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="277"/>
+ <location filename="../dataview.cpp" line="280"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="311"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="312"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
<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>
</message>
<message>
- <location filename="../dataview.cpp" line="566"/>
+ <location filename="../dataview.cpp" line="607"/>
<source>Row: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -1910,7 +1955,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>File</source>
<translation type="unfinished"></translation>
</message>
@@ -1931,47 +1976,47 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
<source>Browse for existing database file on local computer</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
<source>Browse</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>This name is already in use. Please enter unique name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
<source>Enter a database file path.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>This database is already on the list under name: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
<source>Auto-generated</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
<translation type="unfinished"></translation>
</message>
@@ -3226,42 +3271,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;t exist, it will be created.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<source>You must provide a file to import from.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<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="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation type="unfinished"></translation>
</message>
@@ -3352,19 +3397,19 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>Error</source>
<comment>index dialog</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation type="unfinished"></translation>
@@ -3436,248 +3481,248 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="211"/>
+ <location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="254"/>
+ <location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open DDL history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open SQL functions editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Import</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Export</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="263"/>
<source>Open configuration dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows horizontally</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows vertically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Cascade windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Next window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Previous window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Hide status field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close all windows but selected</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Restore recently closed window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Rename selected window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="279"/>
<source>Open Debug Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open CSS Console</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Report a bug</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Propose a new feature</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>Licenses</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Open home page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open forum page</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>User Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>SQLite documentation</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="291"/>
<source>Check for updates</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="329"/>
<source>Database</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="349"/>
<source>Structure</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="370"/>
<source>View</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="374"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>Tools</source>
<comment>menubar</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="409"/>
<source>Help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="571"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="642"/>
+ <location filename="../mainwindow.cpp" line="644"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="658"/>
+ <location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Rename window</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Enter new name for the window:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="779"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="787"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="891"/>
+ <location filename="../mainwindow.cpp" line="904"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="911"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
@@ -4127,12 +4172,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="532"/>
+ <location filename="../dataview.cpp" line="573"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="583"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -4199,7 +4244,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation type="unfinished"></translation>
</message>
@@ -4320,106 +4365,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<source>Copy selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="16"/>
- <location filename="../sqleditor.h" line="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
<translation type="unfinished"></translation>
</message>
@@ -4712,173 +4757,173 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="255"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="819"/>
+ <location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1054"/>
+ <location filename="../sqleditor.cpp" line="1057"/>
<source>Save to file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1069"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1070"/>
<source>Open file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1288"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation type="unfinished"></translation>
</message>
@@ -4994,12 +5039,12 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Insert multiple rows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
index af5e93d..4f0ea2c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_ru.ts
@@ -890,7 +890,7 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
<source>Configuration</source>
<translation>Конфигурация</translation>
</message>
@@ -971,449 +971,476 @@ but it&apos;s okay to use it.</source>
<translation>Ограничить начальную ширину столбца данных (в пикселях):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation>Вставка новой строки в таблице данных</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation>Перед текущей выделенной строкой</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation>General.InsertRowPlacement</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation>После текущей выделенной строки</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation>В конец области просмотра данных</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
<source>Data types</source>
<translation>Типы данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
<source>Available editors:</source>
<translation>Доступные редакторы:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
<source>Editors selected for this data type:</source>
<translation>Выбранные редакторы для этого типа данных:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
<source>Schema editing</source>
<translation>Редактирование схемы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
<translation>Количество сохраняемых в истории изменений DDL.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="443"/>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
<translation>Размер истории DDL:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>Не показывать диалог предпросмотра DDL при подтверждении изменений схемы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
<source>SQL queries</source>
<translation>SQL запросы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
<translation>Количество сохраняемых в истории запросов.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="491"/>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
<translation>Размер истории:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;Если в окне редактора SQL введено более одного запроса, то (если данная опция активирована) будет выполнен лишь один запрос - тот, который находится под текстовым курсором. В противном случае будут исполнены все запросы. Вы можете ограничить выполняемые запросы, выделив их перед вызовом выполнения.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
<source>Execute only the query under the cursor</source>
<translation>Выполнять только запрос под курсором</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
<source>Updates</source>
<translation>Обновления</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
<source>Automatically check for updates at startup</source>
<translation>Автоматически проверять обновления при запуске</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
<source>Session</source>
<translation>Сессия</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>Восстановить предыдущую сессию (активные MDI окна) после запуска</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
<source>Filter shortcuts by name or key combination</source>
<translation>Фильтруйте горячие клавиши по имени или комбинации клавиш</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="622"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Action</source>
<translation>Действие</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
<source>Key combination</source>
<translation>Комбинация клавиш</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
<source>Language</source>
<translation>Язык</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
<translation>Для смены языка потребуется перезапустить приложение.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="694"/>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
<source>Compact layout</source>
<translation>Компактный режим</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation>&lt;p&gt;В компактном режиме все поля и отступы в интерфейсе минимизированы для отображения большего количества данных. Интерфейс станет чуть менее эстетичным, однако это позволит уместить больше данных на экране.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
<source>Use compact layout</source>
<translation>Включить компактный режим</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
<translation>General.CompactLayout</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
<source>Database list</source>
<translation>Список баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
<translation>Если опция деактивирована, столбцы будут отсортированы в том порядке, в котором они были указаны в конструкции CREATE TABLE.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
<source>Sort table columns alphabetically</source>
<translation>Сортировать столбцы таблицы в алфавитном порядке</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
<source>Expand tables node when connected to a database</source>
<translation>Развернуть список таблиц после подключения к базе данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation>&lt;p&gt;Дополнительные метки находятся справа от имён в списке баз данных (они отображаются синим цветом, если не выбран иной). При активации этой опции будут отображены метки у баз данных, некорректных баз данных и у групповых узлов (группа столбцов, группа индексов, группа триггеров). Для отображения дополнительных меток воспользуйтесь опциями ниже.&lt;p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
<source>Display additional labels on the list</source>
<translation>Отображать дополнительные метки в списке</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation>Для обычных таблиц метки будут показывать количество столбцов, индексов и триггеров у каждой таблицы.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Display labels for regular tables</source>
<translation>Отображать метки у обычных таблиц</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation>Виртуальные таблицы будут помечены как &apos;вирутальные&apos;.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Display labels for virtual tables</source>
<translation>Отображать метки у виртуальных таблиц</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Expand views node when connected to a database</source>
<translation>Развернуть список представлений после подключения к базе данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
<translation>Если опция деактивирована, объекты будут отсортированы в том порядке, в котором они указаны в таблице sqlite_master (т.е. в порядке создания)</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation>Сортировать объекты (таблицы, индексы, триггеры и представления) в алфавитном порядке</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
<source>Display system tables and indexes on the list</source>
<translation>Отображать в списке системные таблицы и индексы</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
<source>Table windows</source>
<translation>Окна таблиц</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
<translation>Если опция активирована, окно таблицы будет открыто на вкладке данных вместо вкладки структуры.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
<translation>Открывать окна таблиц на вкладке данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
<source>View windows</source>
<translation>Окна представлений</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
<translation>Если опция активирована, окно представления будет открыто на вкладке данных вместо вкладки структуры.</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
<translation>Открывать окна представлений на вкладке данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
<source>Main window dock areas</source>
<translation>Области прикрепления вокруг главного окна</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
<source>Left and right areas occupy corners</source>
<translation>Углы занимают правая и левая области</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
<source>Top and bottom areas occupy corners</source>
<translation>Углы занимают верхняя и нижняя области</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Hide built-in plugins</source>
<translation>Скрыть встроенные модули</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
<source>Current style:</source>
<translation>Текущий стиль:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
<source>Preview</source>
<translation>Предпросмотр</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
<source>Enabled</source>
<translation>Активно</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Disabled</source>
<translation>Неактивно</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
<source>Active formatter plugin</source>
<translation>Активный модуль форматирования</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
<translation>Шрифт редактора SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
<source>Database list font</source>
<translation>Шрифт списка баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
<source>Database list additional label font</source>
<translation>Шрифт дополнительных меток в списке баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
<source>Data view font</source>
<translation>Шрифт просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
<source>Status field font</source>
<translation>Шрифт окна статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
<translation>Цвета редактора SQL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
<source>Current line background</source>
<translation>Фон текущей строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;Строки SQL обрамляются в одинарные кавычки.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
<source>String foreground</source>
<translation>Цвет строки</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Подстановочные параметры предназначены для значений, которые будут в дальнейшем указаны пользователем. Они определяются одним из следующих способов:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:имя_параметра&lt;/li&gt;&lt;li&gt;$имя_параметра&lt;/li&gt;&lt;li&gt;@имя_параметра&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
<source>Bind parameter foreground</source>
<translation>Цвет подстановочных параметров</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
<source>Highlighted parenthesis background</source>
<translation>Фон подсвечиваемых скобок</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation>&lt;p&gt;Данные типа BLOB — это бинарные данные, представляемые в виде шестнадцатеричных чисел, например:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
<source>BLOB value foreground</source>
<translation>Цвет данных типа BLOB</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
<source>Regular foreground</source>
<translation>Стандартный цвет</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
<source>Line numbers area background</source>
<translation>Фон области нумерации строк</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
<source>Keyword foreground</source>
<translation>Цвет ключевого слова</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
<source>Number foreground</source>
<translation>Цвет числа</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
<source>Comment foreground</source>
<translation>Цвет комментария</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Распознаваемыми объектами являются имена талиц, индексов, триггеров и представлений, существующих в базе данных SQLite.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
<source>Valid objects foreground</source>
<translation>Цвет распознанных объектов</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
<source>Data view colors</source>
<translation>Цвета в окне просмотра данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation>&lt;p&gt;Все изменения данных будут обрамлены этим цветом, пока не будут записаны в базу данных.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
<translation>Цвет обрамления неподтверждённых изменений</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation>&lt;p&gt;В случае ошибки при подтверждении изменений данных, этим цветом будут обрамлены проблемные ячейки.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
<translation>Цвет обрамления ошибочных ячеек</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
<source>NULL value foreground</source>
<translation>Цвет значений NULL</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
<source>Deleted row background</source>
<translation>Фон удалённых строк</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
<source>Database list colors</source>
<translation>Цвета списка баз данных</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation>&lt;p&gt;Дополнительные метки содержат информацию о версии SQLite, о количестве объектов в глубине дерева и т.д.&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
<source>Additional labels foreground</source>
<translation>Цвет дополнительных меток</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
<source>Status field colors</source>
<translation>Цвета в окне Статуса</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
<translation>Цвет информационного сообщения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
<source>Warning message foreground</source>
<translation>Цвет предупреждения</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
<translation>Цвет ошибки</translation>
</message>
@@ -1675,98 +1702,116 @@ but it&apos;s okay to use it.</source>
<translation>Обновить данные таблицы</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="182"/>
<source>First page</source>
<comment>data view</comment>
<translation>Первая страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>Previous page</source>
<comment>data view</comment>
<translation>Предыдущая страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="185"/>
<source>Next page</source>
<comment>data view</comment>
<translation>Следующая страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Last page</source>
<comment>data view</comment>
<translation>Последняя страница</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="191"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation>Применить фильтр</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="206"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation>Подтвердить изменения для выбранных ячеек</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="204"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation>Откатить изменения для выбранных ячеек</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="205"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation>Показать результаты в виде таблицы</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation>Показать результаты в виде формы</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="275"/>
+ <location filename="../dataview.cpp" line="278"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation>Текстовый фильтр</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="279"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation>Фильтр по регулярному выражению</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="277"/>
+ <location filename="../dataview.cpp" line="280"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation>Фильтр по выражению SQL</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="311"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation>Вкладки сверху</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="312"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation>Вкладки снизу</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation>Поместить новые строки перед выделенной строкой</translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation>Поместить новые строки после выделенной строки</translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation>Поместить новые строки в конец области просмотра данных</translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
<source>Total number of rows is being counted.
Browsing other pages will be possible after the row counting is done.</source>
<translation>Идёт подсчёт общего числа строк.
Переключение на другие страницы станет возможным после окончания подсчёта.</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="566"/>
+ <location filename="../dataview.cpp" line="607"/>
<source>Row: %1</source>
<translation>Строка: %1</translation>
</message>
@@ -1925,7 +1970,7 @@ Browsing other pages will be possible after the row counting is done.</source>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>File</source>
<translation>Файл</translation>
</message>
@@ -1954,42 +1999,42 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Тест соединения с базой данных</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
<source>Browse for existing database file on local computer</source>
<translation>Указать существующий файл базы данных на локальном компьютере</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
<source>Browse</source>
<translation>Обзор</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
<source>Enter an unique database name.</source>
<translation>Введите уникальное имя базы данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>This name is already in use. Please enter unique name.</source>
<translation>Данное имя уже используется. Пожалуйста, укажите уникальное имя.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
<source>Enter a database file path.</source>
<translation>Введите путь к базе данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<source>This database is already on the list under name: %1</source>
<translation>Указанная база данных уже находится в списке под именем %1</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
<translation>Выберите тип базы данных.</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
<source>Auto-generated</source>
<translation>Автоматически сгенерировано</translation>
</message>
@@ -1998,7 +2043,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation>Имя будет сгенерировано автоматически</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
<translation>Введите имя</translation>
</message>
@@ -3262,42 +3307,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Опции источника данных</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
<translation>Отмена</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;t exist, it will be created.</source>
<translation>Если вы введёте несуществующее имя таблицы, она будет создана.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
<translation>Введите имя таблицы</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
<translation>Выберите модуль импорта.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<source>You must provide a file to import from.</source>
<translation>Необходимо указать файл, из которого осуществляется импорт.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
<translation>Файл &apos;%1&apos; не существует.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<source>Path you provided is a directory. A regular file is required.</source>
<translation>Указанный путь является каталогом. Необходимо указать файл.</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
<translation>Выберите файл для импорта</translation>
</message>
@@ -3388,19 +3433,19 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Порядок сортировки</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>Error</source>
<comment>index dialog</comment>
<translation>Ошибка</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
<translation>Невозможно создать уникальный индекс, т.к. данные в выбранных столбцах неуникальны. Вы хотите выполнить запрос SELECT для просмотра проблемных данных?</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
<translation>При выполнении конструкций SQL произошла ошибка:
@@ -3473,248 +3518,248 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Отладочный режим. Отладочные сообщения выводятся в стандартный выходной поток.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="211"/>
+ <location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
<translation>Для смены языка необходимо перезапустить приложение.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="254"/>
+ <location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL editor</source>
<translation>Открыть редактор SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open DDL history</source>
<translation>Открыть историю DDL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open SQL functions editor</source>
<translation>Открыть редактор функций SQL</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open collations editor</source>
<translation>Открыть редактор сравнений</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Import</source>
<translation>Импорт</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Export</source>
<translation>Экспорт</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="263"/>
<source>Open configuration dialog</source>
<translation>Открыть диалог конфигурации</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows</source>
<translation>Расположить окна плиткой</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows horizontally</source>
<translation>Расположить окна по горизонтали</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows vertically</source>
<translation>Расположить окна по вертикали</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Cascade windows</source>
<translation>Расположить окна каскадом</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Next window</source>
<translation>Следующее окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Previous window</source>
<translation>Предыдущее окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Hide status field</source>
<translation>Скрыть окно статуса</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
<translation>Закрыть выбранное окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close all windows but selected</source>
<translation>Закрыть все окна, кроме выбранного</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows</source>
<translation>Закрыть все окна</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Restore recently closed window</source>
<translation>Восстановить недавно закрытые окна</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Rename selected window</source>
<translation>Переименовать выбранное окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="279"/>
<source>Open Debug Console</source>
<translation>Открыть отладочную консоль</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open CSS Console</source>
<translation>Открыть консоль CSS</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Report a bug</source>
<translation>Сообщить об ошибке</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Propose a new feature</source>
<translation>Предложить новый функционал</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
<translation>О программе</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>Licenses</source>
<translation>Лицензии</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Open home page</source>
<translation>Открыть домашнюю страницу</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open forum page</source>
<translation>Открыть страницу форума</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>User Manual</source>
<translation>Руководство пользователя</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>SQLite documentation</source>
<translation>Документация по SQLite</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
<translation>История отчётов</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="291"/>
<source>Check for updates</source>
<translation>Проверить обновления</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="329"/>
<source>Database</source>
<comment>menubar</comment>
<translation>База данных</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="349"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>Структура</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="370"/>
<source>View</source>
<comment>menubar</comment>
<translation>Вид</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="374"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>Окна</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>Инструменты</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="409"/>
<source>Help</source>
<translation>Справка</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="571"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
<translation>Невозможно применить стиль: %1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="642"/>
+ <location filename="../mainwindow.cpp" line="644"/>
<source>Cannot export, because no export plugin is loaded.</source>
<translation>Невозможно произвести экспорт, т.к. не загружено ни одного модуля экспорта.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="658"/>
+ <location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
<translation>Невозможно произвести импорт, т.к. не загружено ни одного модуля импорта.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Rename window</source>
<translation>Переименовать окно</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Enter new name for the window:</source>
<translation>Введите новое имя для окна:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="779"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>Доступны обновления. &lt;a href=&quot;%1&quot;&gt;Нажмите здесь для подробностей&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="787"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
<translation>Установлена последняя версия. Обновлений нет.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="891"/>
+ <location filename="../mainwindow.cpp" line="904"/>
<source>Database passed in command line parameters (%1) was already on the list under name: %2</source>
<translation>База данных, переданная через аргументы командной строки (%1), уже находится в списке под именем %2</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="898"/>
+ <location filename="../mainwindow.cpp" line="911"/>
<source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source>
<translation>База данных, переданная через аргументы командной строки (%1), была временно добавлена в список под именем %2</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="903"/>
+ <location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
<translation>Невозможно добавить базу данных %1 в список.</translation>
</message>
@@ -4164,12 +4209,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation>Открыть содержимое выбранной ячейки в отдельном редакторе</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="532"/>
+ <location filename="../dataview.cpp" line="573"/>
<source>Total pages available: %1</source>
<translation>Всего доступно страниц: %1</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="583"/>
<source>Total rows loaded: %1</source>
<translation>Всего загружено строк: %1</translation>
</message>
@@ -4236,7 +4281,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation>Вставить из буфера обмена</translation>
</message>
@@ -4357,106 +4402,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation>Вырезать выбранный текст</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<source>Copy selected text</source>
<translation>Копировать выбранный текст</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="16"/>
- <location filename="../sqleditor.h" line="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation>Удалить выбранный текст</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation>Отменить</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation>Повторить</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation>Поле ввода редактора SQL</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation>Выбрать всё содержимое редактора</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation>Сохранить содержимое в файл</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation>Загрузить содержимое из файла</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation>Найти в тексте</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation>Найти далее</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation>Найти предыдущее</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation>Замена в тексте</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation>Удалить текущую строчку</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation>Вызвать автодополнение</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation>Форматировать содержимое</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
<translation>Переместить выбранный блок текста на строчку вниз</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
<translation>Переместить выбранный блок текста на строчку вверх</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
<translation>Скопировать блок текста и вставить его строчкой ниже</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
<translation>Скопировать блок текста и вставить его строчкой выше</translation>
</message>
@@ -4751,173 +4796,173 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>Вырезать</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>Копировать</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>Вставить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>Удалить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>Выделить всё</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>Отменить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>Повторить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>Завершить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>Форматировать SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>Сохранить SQL в файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation>Выбрать файл для сохранения SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>Загрузить SQL из файла</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>Удалить строчку</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>Переместить блок вниз</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>Переместить блок вверх</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation>Копировать блок вниз</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation>Копировать блок вверх</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>Найти</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>Найти далее</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>Найти предыдущее</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>Заменить</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="255"/>
<source>Saved SQL contents to file: %1</source>
<translation>SQL-код сохранён в файле %1</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation>Дополнение синтаксиса может быть использовано только после назначения корректной базы данных редактору SQL.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="819"/>
+ <location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation>Размер содержимого редактора SQL слишком велико, поэтому обнаружение ошибок и подсветка существующих объектов временно отключена.</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1054"/>
+ <location filename="../sqleditor.cpp" line="1057"/>
<source>Save to file</source>
<translation>Сохранить в файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation>Невозможно открыть файл &apos;%1&apos; для записи: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1069"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation>Скрипты SQL (*.sql);;Все файлы (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1070"/>
<source>Open file</source>
<translation>Открыть файл</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation>Невозможно открыть файл &apos;%1&apos; для чтения: %2</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1288"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>Достигнут конец документа. Нажмите Найти снова для перезапуска поиска.</translation>
</message>
@@ -5033,12 +5078,12 @@ find next</source>
<translation>Ошибка при загрузке результатов запроса: %1</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Insert multiple rows</source>
<translation>Вставить несколько строк</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Number of rows to insert:</source>
<translation>Количество вставляемых строк:</translation>
</message>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
index 332a764..39f70f8 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_sk.ts
@@ -215,12 +215,12 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="118"/>
<source>Reporting as an unregistered user, using e-mail address.</source>
- <translation>Nahlásenie ako neregistrovaný užívateľ pomocou emailovej adresy.</translation>
+ <translation>Nahlásenie ako neregistrovaný používateľ pomocou emailovej adresy.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="127"/>
<source>Reporting as a registered user.</source>
- <translation>Nahlásenie ako registrovaný užívateľ.</translation>
+ <translation>Nahlásenie ako registrovaný používateľ.</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="131"/>
@@ -372,17 +372,17 @@
<message>
<location filename="../windows/collationseditor.ui" line="138"/>
<source>Register in all databases</source>
- <translation type="unfinished"></translation>
+ <translation>Registrovať vo všetkých databázach</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="145"/>
<source>Register in following databases:</source>
- <translation type="unfinished"></translation>
+ <translation>Registrovať v nasledujúcich databázach:</translation>
</message>
<message>
<location filename="../windows/collationseditor.ui" line="166"/>
<source>Implementation code:</source>
- <translation type="unfinished"></translation>
+ <translation>Implementačný kód:</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="52"/>
@@ -412,22 +412,22 @@
<message>
<location filename="../windows/collationseditor.cpp" line="63"/>
<source>Editing collations manual</source>
- <translation type="unfinished"></translation>
+ <translation>Manuál úpravy porovnávaní</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>Zadajte jedinečný názov porovnávania.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="291"/>
<source>Pick the implementation language.</source>
- <translation type="unfinished"></translation>
+ <translation>Vyberte implementačný jazyk.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="294"/>
<source>Enter a non-empty implementation code.</source>
- <translation type="unfinished"></translation>
+ <translation>Zadajte implementačný kód.</translation>
</message>
<message>
<location filename="../windows/collationseditor.cpp" line="388"/>
@@ -664,7 +664,7 @@
<location filename="../dialogs/columndialog.cpp" line="228"/>
<source>Are you sure you want to delete constraint &apos;%1&apos;?</source>
<comment>column dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Ste si istý, že chcete vymazať obmedzenie &apos;%1&apos;?</translation>
</message>
<message>
<location filename="../dialogs/columndialog.cpp" line="290"/>
@@ -1024,7 +1024,7 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/configdialog.ui" line="498"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Ak je v SQL editore viacej ako jeden dotaz, potom(ak je táto voľba zapnutá) bude vykonaný iba jeden dotaz - ten, na ktorom je kurzor. Ináč budú vykonané všetky dotazy. Vždy si viete vybrať ktoré dotazy budú vykonané a to ich výberom\označením.&lt;/p&gt; </translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="501"/>
@@ -1350,12 +1350,12 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/configdialog.ui" line="1722"/>
<source>Data view colors</source>
- <translation type="unfinished"></translation>
+ <translation>Farby dát</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1728"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;Všetky zmeny dát budú ohraničené touto farbou, dokiaľ nebudú potvrdené.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1731"/>
@@ -1365,7 +1365,7 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/configdialog.ui" line="1754"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
- <translation type="unfinished"></translation>
+ <translation>&lt;p&gt;V prípade chyby pri potvrdzovaní zmien dát, budú problematické bunky ohraničené touto farbou.&lt;/p&gt;</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="1757"/>
@@ -2268,7 +2268,7 @@ Prezeranie ďalších strán bude možné až po dokončení spočítavania.</tr
<location filename="../dbtree/dbtree.cpp" line="142"/>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
<source>Erase table data</source>
- <translation type="unfinished"></translation>
+ <translation>Vymazať dáta z tabuľky</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="312"/>
@@ -2312,24 +2312,24 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Delete database</source>
- <translation>Vymazať databázu</translation>
+ <translation>Odstrániť databázu</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation>Ste si istý, že chcete vymazať databázu &apos;%1&apos;?</translation>
+ <translation>Ste si istý, že chcete odstrániť databázu &apos;%1&apos;?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1055"/>
<location filename="../dbtree/dbtree.cpp" line="1265"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation type="unfinished">Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation>
+ <translation>Nemôžem importovať, lebo nebol načítaný žiaden plugin na import.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1075"/>
<location filename="../dbtree/dbtree.cpp" line="1240"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished">Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation>
+ <translation>Nemôžem exportovať, lebo nebol načítaný žiaden plugin na export.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1339"/>
@@ -2369,27 +2369,27 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<message>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>Ste si istý, že chcete vymazať všetky dáta z tabuľky &apos;%1&apos;?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1429"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Vyskytla sa chyba pri pokuse vymazať dáta z tabuľky &apos;%1&apos;: %2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1433"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
- <translation type="unfinished"></translation>
+ <translation>Všetky dáta z tabuľky &apos;%1&apos; boli vymazané.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1535"/>
<source>Following objects will be deleted: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Nasledujúce objekty budú odstránené: %1.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1538"/>
<source>Following databases will be removed from list: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>Nasledujúce databázy budú odstránené zo zoznamu: %1.</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1541"/>
@@ -2399,12 +2399,12 @@ Všetky objekty z tejto skupiny budú presunuté do nadradenej skupiny.</transla
<message>
<location filename="../dbtree/dbtree.cpp" line="1543"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
- <translation type="unfinished"></translation>
+ <translation>%1&lt;br&gt;&lt;br&gt;Ste si istý, že chcete pokračovať?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>Delete objects</source>
- <translation type="unfinished"></translation>
+ <translation>Odstránenie objektov</translation>
</message>
</context>
<context>
@@ -3052,7 +3052,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.ui" line="273"/>
<source>Implementation language:</source>
- <translation type="unfinished">Implementačný jazyk:</translation>
+ <translation>Implementačný jazyk:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="253"/>
@@ -3252,7 +3252,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/importdialog.ui" line="195"/>
<source>Ignore errors</source>
- <translation type="unfinished"></translation>
+ <translation>Ignorovať chyby</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="205"/>
@@ -3390,7 +3390,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../dialogs/indexdialog.cpp" line="466"/>
<source>Error</source>
<comment>index dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>Chyba</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="454"/>
@@ -3577,7 +3577,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.cpp" line="278"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>Otvoriť CSS konzolu</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="279"/>
@@ -3612,7 +3612,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.cpp" line="285"/>
<source>User Manual</source>
- <translation>Užívateľský manuál</translation>
+ <translation>Používateľský manuál</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="286"/>
@@ -3703,12 +3703,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.cpp" line="891"/>
<source>Database passed in command line parameters (%1) was already on the list under name: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Databáza prebratá z príkazového riadka (%1) už je v zozname pod názvom: %2</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="898"/>
<source>Database passed in command line parameters (%1) has been temporarily added to the list under name: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Databáza prebratá z príkazového riadka (%1) bola dočasne pridaná do zoznamu pod názvom: %2</translation>
</message>
<message>
<location filename="../mainwindow.cpp" line="903"/>
@@ -3762,7 +3762,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../multieditor/multieditor.cpp" line="374"/>
<source>Read only</source>
<comment>multieditor</comment>
- <translation type="unfinished"></translation>
+ <translation>Iba na čítanie</translation>
</message>
</context>
<context>
@@ -4013,7 +4013,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populatedialog.cpp" line="54"/>
<source>Abort</source>
- <translation type="unfinished">Zrušiť</translation>
+ <translation>Zrušiť</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="161"/>
@@ -4636,7 +4636,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/viewwindow.h" line="23"/>
<source>A view window</source>
- <translation type="unfinished"></translation>
+ <translation>Okno pohľadu</translation>
</message>
<message>
<location filename="../windows/viewwindow.h" line="24"/>
@@ -4895,7 +4895,7 @@ nájsť ďalší</translation>
<message>
<location filename="../sqleditor.cpp" line="242"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Nemôžem otvoriť súbor &apos;%1&apos; pre zápis: %2</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1066"/>
@@ -4910,12 +4910,12 @@ nájsť ďalší</translation>
<message>
<location filename="../sqleditor.cpp" line="1076"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Nemôžem otvoriť súbor &apos;%1&apos; na čítanie: %2</translation>
</message>
<message>
<location filename="../sqleditor.cpp" line="1285"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
- <translation type="unfinished"></translation>
+ <translation>Dosiahnutý koniec súboru. Kliknite na tlačidlo Nájsť pre hľadanie od začiatku súboru.</translation>
</message>
</context>
<context>
@@ -6020,22 +6020,22 @@ Chcete potvrdiť štruktúru alebo sa chcete vrátiť do záložky štruktúr?</
<message>
<location filename="../windows/viewwindow.cpp" line="318"/>
<source>View window &quot;%1&quot; has uncommited structure modifications and data.</source>
- <translation type="unfinished"></translation>
+ <translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr a dát.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="320"/>
<source>View window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
+ <translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené dáta.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="322"/>
<source>View window &quot;%1&quot; has uncommited structure modifications.</source>
- <translation type="unfinished"></translation>
+ <translation>Okno pohľadu &quot;%1&quot; obsahuje nepotrdené zmeny štruktúr.</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="463"/>
<source>Could not load data for view %1. Error details: %2</source>
- <translation type="unfinished"></translation>
+ <translation>Nemôžem načítať dáta z pohľadu %1. Detaily chyby: %2</translation>
</message>
<message>
<location filename="../windows/viewwindow.cpp" line="474"/>
diff --git a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
index 7d8bb85..acefaa8 100644
--- a/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
+++ b/SQLiteStudio3/guiSQLiteStudio/translations/guiSQLiteStudio_zh_CN.ts
@@ -99,7 +99,7 @@
<message>
<location filename="../dialogs/bugdialog.ui" line="20"/>
<source>Reporter</source>
- <translation>上报人</translation>
+ <translation>报告者</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.ui" line="36"/>
@@ -150,7 +150,7 @@
<message>
<location filename="../dialogs/bugdialog.cpp" line="66"/>
<source>You can see all your reported bugs and ideas by selecting menu &apos;%1&apos; and then &apos;%2&apos;.</source>
- <translation>您可以通过选择菜单 “1%”下的“%2”来查看全部您报告的bugs和想法。</translation>
+ <translation type="unfinished">您可以通过选择菜单 “1%”下的“%2”来查看全部您报告的bugs和想法。</translation>
</message>
<message>
<location filename="../dialogs/bugdialog.cpp" line="74"/>
@@ -465,7 +465,7 @@
<message>
<location filename="../constraints/columncollatepanel.cpp" line="81"/>
<source>Enter a collation name.</source>
- <translation type="unfinished">输入排序规则名称。</translation>
+ <translation>输入排序规则名称。</translation>
</message>
</context>
<context>
@@ -754,7 +754,7 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="26"/>
<source>Autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation>Autoincrement</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="48"/>
@@ -769,7 +769,7 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../constraints/columnprimarykeypanel.ui" line="111"/>
<source>On conflict:</source>
- <translation type="unfinished">冲突:</translation>
+ <translation>冲突:</translation>
</message>
<message>
<location filename="../constraints/columnprimarykeypanel.cpp" line="87"/>
@@ -892,24 +892,24 @@ but it&apos;s okay to use it.</source>
<name>ConfigDialog</name>
<message>
<location filename="../dialogs/configdialog.ui" line="14"/>
- <location filename="../dialogs/configdialog.ui" line="1293"/>
+ <location filename="../dialogs/configdialog.ui" line="1344"/>
<source>Configuration</source>
- <translation type="unfinished"></translation>
+ <translation>配置</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="73"/>
<source>Search</source>
- <translation type="unfinished"></translation>
+ <translation>搜索</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="104"/>
<source>General</source>
- <translation type="unfinished"></translation>
+ <translation>通用</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="116"/>
<source>Keyboard shortcuts</source>
- <translation type="unfinished"></translation>
+ <translation>快捷键</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="128"/>
@@ -939,7 +939,7 @@ but it&apos;s okay to use it.</source>
<message>
<location filename="../dialogs/configdialog.ui" line="187"/>
<source>Code formatters</source>
- <translation type="unfinished">代码格式化</translation>
+ <translation>代码格式化</translation>
</message>
<message>
<location filename="../dialogs/configdialog.ui" line="196"/>
@@ -973,449 +973,476 @@ but it&apos;s okay to use it.</source>
<translation>限制宽度(单位:像素):</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="328"/>
+ <location filename="../dialogs/configdialog.ui" line="301"/>
+ <source>Inserting new row in data grid</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="307"/>
+ <source>Before currently selected row</source>
+ <translation>在已选列之前</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="316"/>
+ <location filename="../dialogs/configdialog.ui" line="329"/>
+ <location filename="../dialogs/configdialog.ui" line="342"/>
+ <source>General.InsertRowPlacement</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="323"/>
+ <source>After currently selected row</source>
+ <translation>在已选列之后</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="336"/>
+ <source>At the end of data view</source>
+ <translation>在数据显示区域的末尾</translation>
+ </message>
+ <message>
+ <location filename="../dialogs/configdialog.ui" line="379"/>
<source>Data types</source>
<translation>数据类型</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="366"/>
+ <location filename="../dialogs/configdialog.ui" line="417"/>
<source>Available editors:</source>
<translation>可用的编辑器:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="382"/>
+ <location filename="../dialogs/configdialog.ui" line="433"/>
<source>Editors selected for this data type:</source>
<translation>已选的该数据类型编辑器:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="418"/>
+ <location filename="../dialogs/configdialog.ui" line="469"/>
<source>Schema editing</source>
<translation>架构编辑</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="430"/>
+ <location filename="../dialogs/configdialog.ui" line="481"/>
<source>Number of DDL changes kept in history.</source>
<translation>数据库定义(DDL)的更改历史记录数量。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="443"/>
+ <location filename="../dialogs/configdialog.ui" line="494"/>
<source>DDL history size:</source>
<translation>数据库定义(DDL)历史大小:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="450"/>
+ <location filename="../dialogs/configdialog.ui" line="501"/>
<source>Don&apos;t show DDL preview dialog when commiting schema changes</source>
<translation>当提交schema变动时不显示数据库定义(DDL)预览对话框</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="463"/>
+ <location filename="../dialogs/configdialog.ui" line="514"/>
<source>SQL queries</source>
<translation>SQL查询</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="475"/>
- <location filename="../dialogs/configdialog.ui" line="488"/>
+ <location filename="../dialogs/configdialog.ui" line="526"/>
+ <location filename="../dialogs/configdialog.ui" line="539"/>
<source>Number of queries kept in the history.</source>
<translation>查询历史记录数量。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="491"/>
+ <location filename="../dialogs/configdialog.ui" line="542"/>
<source>History size:</source>
<translation>历史大小:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="498"/>
+ <location filename="../dialogs/configdialog.ui" line="549"/>
<source>&lt;p&gt;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.&lt;/p&gt;</source>
<translation>&lt;p&gt;如果SQL编辑器中有多个语句,如果启用该选项,只执行光标下的语句;反之则执行全部语句。另外您可以选择需要执行的语句来执行&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="501"/>
+ <location filename="../dialogs/configdialog.ui" line="552"/>
<source>Execute only the query under the cursor</source>
<translation>只执行光标下的语句</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="514"/>
+ <location filename="../dialogs/configdialog.ui" line="565"/>
<source>Updates</source>
<translation>更新</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="520"/>
+ <location filename="../dialogs/configdialog.ui" line="571"/>
<source>Automatically check for updates at startup</source>
<translation>在启动时自己检查更新</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="533"/>
+ <location filename="../dialogs/configdialog.ui" line="584"/>
<source>Session</source>
<translation>会话</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="539"/>
+ <location filename="../dialogs/configdialog.ui" line="590"/>
<source>Restore last session (active MDI windows) after startup</source>
<translation>启动后恢复上一次会话。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="581"/>
+ <location filename="../dialogs/configdialog.ui" line="632"/>
<source>Filter shortcuts by name or key combination</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="622"/>
+ <location filename="../dialogs/configdialog.ui" line="673"/>
<source>Action</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="627"/>
+ <location filename="../dialogs/configdialog.ui" line="678"/>
<source>Key combination</source>
<translation>按键编定</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="671"/>
- <location filename="../dialogs/configdialog.ui" line="1283"/>
+ <location filename="../dialogs/configdialog.ui" line="722"/>
+ <location filename="../dialogs/configdialog.ui" line="1334"/>
<source>Language</source>
<translation>语言</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="677"/>
+ <location filename="../dialogs/configdialog.ui" line="728"/>
<source>Changing language requires application restart to take effect.</source>
<translation>更改语言后,重启程序生效。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="694"/>
+ <location filename="../dialogs/configdialog.ui" line="745"/>
<source>Compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="700"/>
+ <location filename="../dialogs/configdialog.ui" line="751"/>
<source>&lt;p&gt;Compact layout reduces all margins and spacing on the UI to minimum, making space for displaying more data. It makes the interface a little bit less aesthetic, but allows to display more data at once.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="703"/>
+ <location filename="../dialogs/configdialog.ui" line="754"/>
<source>Use compact layout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="709"/>
+ <location filename="../dialogs/configdialog.ui" line="760"/>
<source>General.CompactLayout</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="719"/>
+ <location filename="../dialogs/configdialog.ui" line="770"/>
<source>Database list</source>
<translation>数据库列表</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="725"/>
+ <location filename="../dialogs/configdialog.ui" line="776"/>
<source>If switched off, then columns will be sorted in the order they are typed in CREATE TABLE statement.</source>
<translation>如果关闭,将会以 CREATE TABLE 中的顺序对列进行排序。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="728"/>
+ <location filename="../dialogs/configdialog.ui" line="779"/>
<source>Sort table columns alphabetically</source>
<translation>按字母对列排序</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="738"/>
+ <location filename="../dialogs/configdialog.ui" line="789"/>
<source>Expand tables node when connected to a database</source>
<translation>当连接到数据库时,展开数据库节点。</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="748"/>
+ <location filename="../dialogs/configdialog.ui" line="799"/>
<source>&lt;p&gt;Additional labels are those displayed next to the names on the databases list (they are blue, unless configured otherwise). Enabling this option will result in labels for databases, invalid databases and aggregated nodes (column group, index group, trigger group). For more labels see options below.&lt;p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="751"/>
+ <location filename="../dialogs/configdialog.ui" line="802"/>
<source>Display additional labels on the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="766"/>
+ <location filename="../dialogs/configdialog.ui" line="817"/>
<source>For regular tables labels will show number of columns, indexes and triggers for each of tables.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="769"/>
+ <location filename="../dialogs/configdialog.ui" line="820"/>
<source>Display labels for regular tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="779"/>
+ <location filename="../dialogs/configdialog.ui" line="830"/>
<source>Virtual tables will be marked with a &apos;virtual&apos; label.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="782"/>
+ <location filename="../dialogs/configdialog.ui" line="833"/>
<source>Display labels for virtual tables</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="795"/>
+ <location filename="../dialogs/configdialog.ui" line="846"/>
<source>Expand views node when connected to a database</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="805"/>
+ <location filename="../dialogs/configdialog.ui" line="856"/>
<source>If this option is switched off, then objects will be sorted in order they appear in sqlite_master table (which is in order they were created)</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="808"/>
+ <location filename="../dialogs/configdialog.ui" line="859"/>
<source>Sort objects (tables, indexes, triggers and views) alphabetically</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="818"/>
+ <location filename="../dialogs/configdialog.ui" line="869"/>
<source>Display system tables and indexes on the list</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="831"/>
+ <location filename="../dialogs/configdialog.ui" line="882"/>
<source>Table windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="837"/>
+ <location filename="../dialogs/configdialog.ui" line="888"/>
<source>When enabled, Table Windows will show up with the data tab, instead of the structure tab.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="840"/>
+ <location filename="../dialogs/configdialog.ui" line="891"/>
<source>Open Table Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="853"/>
+ <location filename="../dialogs/configdialog.ui" line="904"/>
<source>View windows</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="859"/>
+ <location filename="../dialogs/configdialog.ui" line="910"/>
<source>When enabled, View Windows will show up with the data tab, instead of the structure tab.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="862"/>
+ <location filename="../dialogs/configdialog.ui" line="913"/>
<source>Open View Windows with the data tab for start</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="875"/>
+ <location filename="../dialogs/configdialog.ui" line="926"/>
<source>Main window dock areas</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="881"/>
+ <location filename="../dialogs/configdialog.ui" line="932"/>
<source>Left and right areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="901"/>
+ <location filename="../dialogs/configdialog.ui" line="952"/>
<source>Top and bottom areas occupy corners</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1010"/>
+ <location filename="../dialogs/configdialog.ui" line="1061"/>
<source>Hide built-in plugins</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1039"/>
+ <location filename="../dialogs/configdialog.ui" line="1090"/>
<source>Current style:</source>
- <translation type="unfinished"></translation>
+ <translation>当前风格:</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1056"/>
+ <location filename="../dialogs/configdialog.ui" line="1107"/>
<source>Preview</source>
<translation>预览</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1066"/>
+ <location filename="../dialogs/configdialog.ui" line="1117"/>
<source>Enabled</source>
<translation>已启用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1239"/>
+ <location filename="../dialogs/configdialog.ui" line="1290"/>
<source>Disabled</source>
<translation>已禁用</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1288"/>
+ <location filename="../dialogs/configdialog.ui" line="1339"/>
<source>Active formatter plugin</source>
<translation>启用格式化插件</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1326"/>
+ <location filename="../dialogs/configdialog.ui" line="1377"/>
<source>SQL editor font</source>
<translation>SQL编辑器字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1342"/>
+ <location filename="../dialogs/configdialog.ui" line="1393"/>
<source>Database list font</source>
<translation>数据库字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1358"/>
+ <location filename="../dialogs/configdialog.ui" line="1409"/>
<source>Database list additional label font</source>
<translation>数据库额外标签字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1374"/>
+ <location filename="../dialogs/configdialog.ui" line="1425"/>
<source>Data view font</source>
<translation>数据浏览字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1390"/>
+ <location filename="../dialogs/configdialog.ui" line="1441"/>
<source>Status field font</source>
<translation>状态栏字体</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1448"/>
+ <location filename="../dialogs/configdialog.ui" line="1499"/>
<source>SQL editor colors</source>
<translation>SQL编辑器颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1454"/>
+ <location filename="../dialogs/configdialog.ui" line="1505"/>
<source>Current line background</source>
<translation>当前行的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1461"/>
+ <location filename="../dialogs/configdialog.ui" line="1512"/>
<source>&lt;p&gt;SQL strings are enclosed with single quote characters.&lt;/p&gt;</source>
<translation>&lt;p&gt;单引号内的SQL字符串&lt;/p&gt;</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1464"/>
+ <location filename="../dialogs/configdialog.ui" line="1515"/>
<source>String foreground</source>
<translation>字符串颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1567"/>
+ <location filename="../dialogs/configdialog.ui" line="1618"/>
<source>&lt;p&gt;Bind parameters are placeholders for values yet to be provided by the user. They have one of the forms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;:param_name&lt;/li&gt;&lt;li&gt;$param_name&lt;/li&gt;&lt;li&gt;@param_name&lt;/li&gt;&lt;li&gt;?&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1570"/>
+ <location filename="../dialogs/configdialog.ui" line="1621"/>
<source>Bind parameter foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1593"/>
+ <location filename="../dialogs/configdialog.ui" line="1644"/>
<source>Highlighted parenthesis background</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1600"/>
+ <location filename="../dialogs/configdialog.ui" line="1651"/>
<source>&lt;p&gt;BLOB values are binary values represented as hexadecimal numbers, like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;X&apos;12B4&apos;&lt;/li&gt;&lt;li&gt;x&apos;46A2F4&apos;&lt;/li&gt;&lt;/ul&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1603"/>
+ <location filename="../dialogs/configdialog.ui" line="1654"/>
<source>BLOB value foreground</source>
<translation>BLOB值的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1610"/>
+ <location filename="../dialogs/configdialog.ui" line="1661"/>
<source>Regular foreground</source>
<translation type="unfinished">背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1617"/>
+ <location filename="../dialogs/configdialog.ui" line="1668"/>
<source>Line numbers area background</source>
<translation>行号的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1640"/>
+ <location filename="../dialogs/configdialog.ui" line="1691"/>
<source>Keyword foreground</source>
<translation>关键字的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1647"/>
+ <location filename="../dialogs/configdialog.ui" line="1698"/>
<source>Number foreground</source>
<translation>数字颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1654"/>
+ <location filename="../dialogs/configdialog.ui" line="1705"/>
<source>Comment foreground</source>
<translation>注释颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1693"/>
+ <location filename="../dialogs/configdialog.ui" line="1744"/>
<source>&lt;p&gt;Valid objects are name of tables, indexes, triggers, or views that exist in the SQLite database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1696"/>
+ <location filename="../dialogs/configdialog.ui" line="1747"/>
<source>Valid objects foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1722"/>
+ <location filename="../dialogs/configdialog.ui" line="1773"/>
<source>Data view colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1728"/>
+ <location filename="../dialogs/configdialog.ui" line="1779"/>
<source>&lt;p&gt;Any data changes will be outlined with this color, until they&apos;re commited to the database.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1731"/>
+ <location filename="../dialogs/configdialog.ui" line="1782"/>
<source>Uncommited data outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1754"/>
+ <location filename="../dialogs/configdialog.ui" line="1805"/>
<source>&lt;p&gt;In case of error while commiting data changes, the problematic cell will be outlined with this color.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1757"/>
+ <location filename="../dialogs/configdialog.ui" line="1808"/>
<source>Commit error outline color</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1780"/>
+ <location filename="../dialogs/configdialog.ui" line="1831"/>
<source>NULL value foreground</source>
<translation>NULL值的颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1803"/>
+ <location filename="../dialogs/configdialog.ui" line="1854"/>
<source>Deleted row background</source>
<translation>已删除行的背景色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1829"/>
+ <location filename="../dialogs/configdialog.ui" line="1880"/>
<source>Database list colors</source>
<translation>数据库列表颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1835"/>
+ <location filename="../dialogs/configdialog.ui" line="1886"/>
<source>&lt;p&gt;Additional labels are those which tell you SQLite version, number of objects deeper in the tree, etc.&lt;/p&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1838"/>
+ <location filename="../dialogs/configdialog.ui" line="1889"/>
<source>Additional labels foreground</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1864"/>
+ <location filename="../dialogs/configdialog.ui" line="1915"/>
<source>Status field colors</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1870"/>
+ <location filename="../dialogs/configdialog.ui" line="1921"/>
<source>Information message foreground</source>
<translation>信息颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1893"/>
+ <location filename="../dialogs/configdialog.ui" line="1944"/>
<source>Warning message foreground</source>
<translation>警告信息颜色</translation>
</message>
<message>
- <location filename="../dialogs/configdialog.ui" line="1916"/>
+ <location filename="../dialogs/configdialog.ui" line="1967"/>
<source>Error message foreground</source>
<translation>错误信息颜色</translation>
</message>
@@ -1453,7 +1480,7 @@ but it&apos;s okay to use it.</source>
<location filename="../dialogs/configdialog.cpp" line="791"/>
<source>Dependencies:</source>
<comment>plugin details</comment>
- <translation type="unfinished"></translation>
+ <translation>依赖:</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="792"/>
@@ -1475,7 +1502,7 @@ but it&apos;s okay to use it.</source>
<location filename="../dialogs/configdialog.cpp" line="1266"/>
<source>%1 (built-in)</source>
<comment>plugins manager in configuration dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>%1 (内建)</translation>
</message>
<message>
<location filename="../dialogs/configdialog.cpp" line="1279"/>
@@ -1677,99 +1704,117 @@ but it&apos;s okay to use it.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="179"/>
+ <location filename="../dataview.cpp" line="182"/>
<source>First page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>首页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="180"/>
+ <location filename="../dataview.cpp" line="183"/>
<source>Previous page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>上一页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="182"/>
+ <location filename="../dataview.cpp" line="185"/>
<source>Next page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>下一页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="183"/>
+ <location filename="../dataview.cpp" line="186"/>
<source>Last page</source>
<comment>data view</comment>
- <translation type="unfinished"></translation>
+ <translation>末页</translation>
</message>
<message>
- <location filename="../dataview.cpp" line="188"/>
+ <location filename="../dataview.cpp" line="191"/>
<source>Apply filter</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="203"/>
+ <location filename="../dataview.cpp" line="206"/>
<source>Commit changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="204"/>
+ <location filename="../dataview.cpp" line="207"/>
<source>Rollback changes for selected cells</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="205"/>
+ <location filename="../dataview.cpp" line="208"/>
<source>Show grid view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="206"/>
+ <location filename="../dataview.cpp" line="209"/>
<source>Show form view of results</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="275"/>
+ <location filename="../dataview.cpp" line="278"/>
<source>Filter by text</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="276"/>
+ <location filename="../dataview.cpp" line="279"/>
<source>Filter by the Regular Expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="277"/>
+ <location filename="../dataview.cpp" line="280"/>
<source>Filter by SQL expression</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="308"/>
+ <location filename="../dataview.cpp" line="311"/>
<source>Tabs on top</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="309"/>
+ <location filename="../dataview.cpp" line="312"/>
<source>Tabs at bottom</source>
<comment>data view</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="555"/>
+ <location filename="../dataview.cpp" line="337"/>
+ <source>Place new rows above selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="338"/>
+ <source>Place new rows below selected row</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="339"/>
+ <source>Place new rows at the end of the data view</source>
+ <comment>data view</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../dataview.cpp" line="596"/>
<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>
</message>
<message>
- <location filename="../dataview.cpp" line="566"/>
+ <location filename="../dataview.cpp" line="607"/>
<source>Row: %1</source>
- <translation type="unfinished"></translation>
+ <translation>行:%1</translation>
</message>
</context>
<context>
@@ -1777,27 +1822,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>转换数据库</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="20"/>
<source>Source database</source>
- <translation type="unfinished"></translation>
+ <translation>源数据库</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="29"/>
<source>Source database version:</source>
- <translation type="unfinished"></translation>
+ <translation>源数据库版本:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="46"/>
<source>Target database</source>
- <translation type="unfinished"></translation>
+ <translation>目的数据库</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="52"/>
<source>Target version:</source>
- <translation type="unfinished"></translation>
+ <translation>目标版本:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="59"/>
@@ -1807,7 +1852,7 @@ 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>目标文件:</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.ui" line="73"/>
@@ -1822,7 +1867,7 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="123"/>
<source>Select source database</source>
- <translation type="unfinished"></translation>
+ <translation>选择源数据库</translation>
</message>
<message>
<location filename="../dialogs/dbconverterdialog.cpp" line="129"/>
@@ -1875,17 +1920,17 @@ 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>
+ <translation>数据库</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="26"/>
<source>Database type</source>
- <translation type="unfinished"></translation>
+ <translation>数据类型</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="32"/>
<source>Database driver</source>
- <translation type="unfinished"></translation>
+ <translation>数据库驱动</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="95"/>
@@ -1895,17 +1940,17 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbdialog.ui" line="108"/>
<source>Options</source>
- <translation type="unfinished">选项</translation>
+ <translation>选项</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="117"/>
<source>Permanent (keep it in configuration)</source>
- <translation type="unfinished"></translation>
+ <translation>记住该数据库</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="161"/>
<source>Test connection</source>
- <translation type="unfinished"></translation>
+ <translation>测试连接</translation>
</message>
<message>
<source>Name</source>
@@ -1918,13 +1963,13 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dialogs/dbdialog.ui" line="51"/>
<source>Create new database file</source>
- <translation type="unfinished"></translation>
+ <translation>创建新数据库文件</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="42"/>
- <location filename="../dialogs/dbdialog.cpp" line="149"/>
+ <location filename="../dialogs/dbdialog.cpp" line="150"/>
<source>File</source>
- <translation type="unfinished">文件</translation>
+ <translation>文件</translation>
</message>
<message>
<location filename="../dialogs/dbdialog.ui" line="79"/>
@@ -1943,49 +1988,49 @@ Browsing other pages will be possible after the row counting is done.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="150"/>
+ <location filename="../dialogs/dbdialog.cpp" line="151"/>
<source>Browse for existing database file on local computer</source>
- <translation type="unfinished"></translation>
+ <translation>浏览计算上已存在的文件</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="283"/>
+ <location filename="../dialogs/dbdialog.cpp" line="284"/>
<source>Browse</source>
- <translation type="unfinished"></translation>
+ <translation>浏览</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="483"/>
+ <location filename="../dialogs/dbdialog.cpp" line="484"/>
<source>Enter an unique database name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="492"/>
+ <location filename="../dialogs/dbdialog.cpp" line="493"/>
<source>This name is already in use. Please enter unique name.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="500"/>
+ <location filename="../dialogs/dbdialog.cpp" line="501"/>
<source>Enter a database file path.</source>
- <translation type="unfinished"></translation>
+ <translation>输入数据库文件位置。</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="507"/>
+ <location filename="../dialogs/dbdialog.cpp" line="508"/>
<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="523"/>
+ <location filename="../dialogs/dbdialog.cpp" line="524"/>
<source>Select a database type.</source>
- <translation type="unfinished"></translation>
+ <translation>选择数据库类型。</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="580"/>
+ <location filename="../dialogs/dbdialog.cpp" line="581"/>
<source>Auto-generated</source>
- <translation type="unfinished"></translation>
+ <translation>自动产生</translation>
</message>
<message>
- <location filename="../dialogs/dbdialog.cpp" line="585"/>
+ <location filename="../dialogs/dbdialog.cpp" line="586"/>
<source>Type the name</source>
- <translation type="unfinished"></translation>
+ <translation>输入名字</translation>
</message>
</context>
<context>
@@ -1993,42 +2038,42 @@ 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>删除表</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>确定要删除表“%1”吗?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="179"/>
<source>Delete index</source>
- <translation type="unfinished"></translation>
+ <translation>删除索引</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>确定要删除索引“%1”吗?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="184"/>
<source>Delete trigger</source>
- <translation type="unfinished"></translation>
+ <translation>删除触发器</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>确定要删除触发器“%1”吗?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="189"/>
<source>Delete view</source>
- <translation type="unfinished"></translation>
+ <translation>删除视图</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="190"/>
<source>Are you sure you want to delete view %1?</source>
- <translation type="unfinished"></translation>
+ <translation>确定要删除视图“%1”吗?</translation>
</message>
<message>
<location filename="../dbobjectdialogs.cpp" line="218"/>
@@ -2041,240 +2086,240 @@ 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>数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.ui" line="73"/>
<source>Filter by name</source>
- <translation type="unfinished"></translation>
+ <translation>过滤名</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="102"/>
<source>Copy</source>
- <translation type="unfinished">复制</translation>
+ <translation>复制</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="103"/>
<source>Paste</source>
- <translation type="unfinished">粘贴</translation>
+ <translation>粘贴</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="104"/>
<source>Select all</source>
- <translation type="unfinished">全选</translation>
+ <translation>全选</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="105"/>
<source>Create a group</source>
- <translation type="unfinished"></translation>
+ <translation>创建分组</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="106"/>
<source>Delete the group</source>
- <translation type="unfinished"></translation>
+ <translation>删除分组</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="107"/>
<source>Rename the group</source>
- <translation type="unfinished"></translation>
+ <translation>重命名分组</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="108"/>
<source>Add a database</source>
- <translation type="unfinished"></translation>
+ <translation>添加数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="109"/>
<source>Edit the database</source>
- <translation type="unfinished"></translation>
+ <translation>编辑数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="110"/>
<source>Remove the database</source>
- <translation type="unfinished"></translation>
+ <translation>移除数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="111"/>
<source>Connect to the database</source>
- <translation type="unfinished"></translation>
+ <translation>连接到数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="112"/>
<source>Disconnect from the database</source>
- <translation type="unfinished"></translation>
+ <translation>断开数据库连接</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="113"/>
<source>Import</source>
- <translation type="unfinished">导入</translation>
+ <translation>导入</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="114"/>
<source>Export the database</source>
- <translation type="unfinished"></translation>
+ <translation>导数该数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="115"/>
<source>Convert database type</source>
- <translation type="unfinished"></translation>
+ <translation>转换数据库类型</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="116"/>
<source>Vacuum</source>
- <translation type="unfinished"></translation>
+ <translation>清理</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="117"/>
<source>Integrity check</source>
- <translation type="unfinished"></translation>
+ <translation>检查完整性</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="118"/>
<source>Create a table</source>
- <translation type="unfinished"></translation>
+ <translation>新建表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="119"/>
<source>Edit the table</source>
- <translation type="unfinished"></translation>
+ <translation>编辑该表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="120"/>
<source>Delete the table</source>
- <translation type="unfinished"></translation>
+ <translation>删除该表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="121"/>
<source>Export the table</source>
- <translation type="unfinished"></translation>
+ <translation>导出该表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="122"/>
<source>Import into the table</source>
- <translation type="unfinished"></translation>
+ <translation>导入到该表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="123"/>
<source>Populate table</source>
- <translation type="unfinished"></translation>
+ <translation>填充表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="124"/>
<source>Create similar table</source>
- <translation type="unfinished"></translation>
+ <translation>创建一个相似的表</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="125"/>
<source>Reset autoincrement sequence</source>
- <translation type="unfinished"></translation>
+ <translation>重设 autoincrement</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="126"/>
<source>Create an index</source>
- <translation type="unfinished"></translation>
+ <translation>创建索引</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="127"/>
<source>Edit the index</source>
- <translation type="unfinished"></translation>
+ <translation>编辑该索引</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="128"/>
<source>Delete the index</source>
- <translation type="unfinished"></translation>
+ <translation>删除该索引</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="129"/>
<source>Create a trigger</source>
- <translation type="unfinished"></translation>
+ <translation>创建触发器</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="130"/>
<source>Edit the trigger</source>
- <translation type="unfinished"></translation>
+ <translation>编辑该触发器</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="131"/>
<source>Delete the trigger</source>
- <translation type="unfinished"></translation>
+ <translation>删除该触发器</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="132"/>
<source>Create a view</source>
- <translation type="unfinished"></translation>
+ <translation>创建视图</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="133"/>
<source>Edit the view</source>
- <translation type="unfinished"></translation>
+ <translation>编辑该视图</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="134"/>
<source>Delete the view</source>
- <translation type="unfinished"></translation>
+ <translation>删除该视图</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="135"/>
<source>Add a column</source>
- <translation type="unfinished"></translation>
+ <translation>添加字段</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="136"/>
<source>Edit the column</source>
- <translation type="unfinished"></translation>
+ <translation>编辑该字段</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="137"/>
<source>Delete the column</source>
- <translation type="unfinished"></translation>
+ <translation>删除该字段</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="138"/>
<source>Delete selected items</source>
- <translation type="unfinished"></translation>
+ <translation>删除已选项目</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="139"/>
<source>Clear filter</source>
- <translation type="unfinished"></translation>
+ <translation>清除过滤器</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="140"/>
<source>Refresh all database schemas</source>
- <translation type="unfinished"></translation>
+ <translation>刷新全部数据库的结构</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="141"/>
<source>Refresh selected database schema</source>
- <translation type="unfinished"></translation>
+ <translation>刷新已选数据库的结构</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="142"/>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
<source>Erase table data</source>
- <translation type="unfinished"></translation>
+ <translation>擦除该表的数据</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="312"/>
<location filename="../dbtree/dbtree.cpp" line="317"/>
<source>Database</source>
- <translation type="unfinished">数据库</translation>
+ <translation>数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="327"/>
<source>Grouping</source>
- <translation type="unfinished"></translation>
+ <translation>分组</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="937"/>
<location filename="../dbtree/dbtree.cpp" line="940"/>
<source>Create group</source>
- <translation type="unfinished"></translation>
+ <translation>创建分组</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="937"/>
<source>Group name</source>
- <translation type="unfinished"></translation>
+ <translation>分组名</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="940"/>
@@ -2284,95 +2329,96 @@ Browsing other pages will be possible after the row counting is done.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="958"/>
<source>Delete group</source>
- <translation type="unfinished"></translation>
+ <translation>删除分组</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="959"/>
<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>确认删除组 %1 吗?
+删除后该组下的全部内容将被移动到其所属的父分组中。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Delete database</source>
- <translation type="unfinished"></translation>
+ <translation>删除数据库</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1019"/>
<source>Are you sure you want to delete database &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>您确定要删除数据库“%1”吗?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1055"/>
<location filename="../dbtree/dbtree.cpp" line="1265"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1075"/>
<location filename="../dbtree/dbtree.cpp" line="1240"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1339"/>
<source>Error while executing VACUUM on the database %1: %2</source>
- <translation type="unfinished"></translation>
+ <translation>在数据库%1上运行 VACUUM 命令时出错:%2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1341"/>
<source>VACUUM execution finished successfully.</source>
- <translation type="unfinished"></translation>
+ <translation>VACUUM 命令执行完成。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1358"/>
<source>Integrity check (%1)</source>
- <translation type="unfinished"></translation>
+ <translation>完整性检查(%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1395"/>
<source>Reset autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation>重置autoincrement</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1395"/>
<source>Are you sure you want to reset autoincrement value for table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>您确定要重设“%1”的autoincrement吗?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1402"/>
<source>An error occurred while trying to reset autoincrement value for table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>在重设表“%1”的autoincrement时出现错误:%2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1404"/>
<source>Autoincrement value for table &apos;%1&apos; has been reset successfly.</source>
- <translation type="unfinished"></translation>
+ <translation>表“%1”的auincrement重设成功。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1421"/>
<source>Are you sure you want to delete all data from table &apos;%1&apos;?</source>
- <translation type="unfinished"></translation>
+ <translation>您确定要删除表“%1”中的全部数据吗?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1429"/>
<source>An error occurred while trying to delete data from table &apos;%1&apos;: %2</source>
- <translation type="unfinished"></translation>
+ <translation>删除表“%1”中的数据时出错:%2</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1433"/>
<source>All data has been deleted for table &apos;%1&apos;.</source>
- <translation type="unfinished"></translation>
+ <translation>表“%1”中的数据全部被删除。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1535"/>
<source>Following objects will be deleted: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>以下内容将被删除:%1。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1538"/>
<source>Following databases will be removed from list: %1.</source>
- <translation type="unfinished"></translation>
+ <translation>以下数据库将从列表中移除:%1。</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1541"/>
@@ -2382,12 +2428,12 @@ All objects from this group will be moved to parent group.</source>
<message>
<location filename="../dbtree/dbtree.cpp" line="1543"/>
<source>%1&lt;br&gt;&lt;br&gt;Are you sure you want to continue?</source>
- <translation type="unfinished"></translation>
+ <translation>%1&lt;br&gt;&lt;br&gt;继续?</translation>
</message>
<message>
<location filename="../dbtree/dbtree.cpp" line="1545"/>
<source>Delete objects</source>
- <translation type="unfinished"></translation>
+ <translation>删除对象</translation>
</message>
</context>
<context>
@@ -2396,25 +2442,25 @@ All objects from this group will be moved to parent group.</source>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="92"/>
<source>error</source>
<comment>dbtree labels</comment>
- <translation type="unfinished"></translation>
+ <translation>错误</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="109"/>
<source>(system table)</source>
<comment>database tree label</comment>
- <translation type="unfinished"></translation>
+ <translation>(系统表)</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="127"/>
<source>(virtual)</source>
<comment>virtual table label</comment>
- <translation type="unfinished"></translation>
+ <translation>(虚拟)</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemdelegate.cpp" line="139"/>
<source>(system index)</source>
<comment>database tree label</comment>
- <translation type="unfinished"></translation>
+ <translation>(系统索引)</translation>
</message>
</context>
<context>
@@ -2423,90 +2469,90 @@ All objects from this group will be moved to parent group.</source>
<location filename="../dbtree/dbtreemodel.cpp" line="422"/>
<source>Database: %1</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished">数据库:%1</translation>
+ <translation>数据库:%1</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="427"/>
<source>Version:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished">版本:</translation>
+ <translation>版本:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="430"/>
<source>File size:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>文件大小:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="433"/>
<source>Encoding:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>编码:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="438"/>
<source>Error:</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>错误:</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="448"/>
<source>Table : %1</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>表:%1</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="471"/>
<source>Columns (%1):</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>字段(%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="474"/>
<source>Indexes (%1):</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>索引(%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="477"/>
<source>Triggers (%1):</source>
<comment>dbtree tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>触发器(%1)</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1092"/>
<source>Copy</source>
- <translation type="unfinished">复制</translation>
+ <translation>复制</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1093"/>
<source>Move</source>
- <translation type="unfinished"></translation>
+ <translation>移动</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1095"/>
<source>Include data</source>
- <translation type="unfinished"></translation>
+ <translation>包含数据</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1096"/>
<source>Include indexes</source>
- <translation type="unfinished"></translation>
+ <translation>包含索引</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1097"/>
<source>Include triggers</source>
- <translation type="unfinished"></translation>
+ <translation>包含触发器</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1099"/>
<source>Abort</source>
- <translation type="unfinished">中止</translation>
+ <translation>中止</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1175"/>
<source>Referenced tables</source>
- <translation type="unfinished"></translation>
+ <translation>参照表</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1176"/>
@@ -2517,7 +2563,7 @@ All objects from this group will be moved to parent group.</source>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1185"/>
<source>Name conflict</source>
- <translation type="unfinished"></translation>
+ <translation>名字冲突</translation>
</message>
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1186"/>
@@ -2538,7 +2584,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dbtree/dbtreemodel.cpp" line="1208"/>
<source>Would you like to ignore those errors and proceed?</source>
- <translation type="unfinished"></translation>
+ <translation>忽略错误并继续?</translation>
</message>
</context>
<context>
@@ -2546,7 +2592,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/ddlhistorywindow.ui" line="35"/>
<source>Filter by database:</source>
- <translation type="unfinished"></translation>
+ <translation>数据库过滤:</translation>
</message>
<message>
<location filename="../windows/ddlhistorywindow.cpp" line="73"/>
@@ -2558,7 +2604,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/ddlhistorywindow.cpp" line="124"/>
<source>DDL history</source>
- <translation type="unfinished"></translation>
+ <translation>DDL历史</translation>
</message>
</context>
<context>
@@ -2566,12 +2612,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/ddlpreviewdialog.ui" line="14"/>
<source>Queries to be executed</source>
- <translation type="unfinished"></translation>
+ <translation>将要执行的语句</translation>
</message>
<message>
<location filename="../dialogs/ddlpreviewdialog.ui" line="42"/>
<source>Don&apos;t show again</source>
- <translation type="unfinished"></translation>
+ <translation>不再显示</translation>
</message>
</context>
<context>
@@ -2579,7 +2625,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../debugconsole.ui" line="14"/>
<source>SQLiteStudio Debug Console</source>
- <translation type="unfinished">SQLiteStudio 调试终端</translation>
+ <translation>SQLiteStudio 调试终端</translation>
</message>
</context>
<context>
@@ -2592,33 +2638,33 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/editorwindow.ui" line="112"/>
<source>History</source>
- <translation type="unfinished"></translation>
+ <translation>历史</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="137"/>
<source>Results in the separate tab</source>
- <translation type="unfinished"></translation>
+ <translation>结果在新标签中打开</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="138"/>
<source>Results below the query</source>
- <translation type="unfinished"></translation>
+ <translation>结果在当前页打开</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="171"/>
<location filename="../windows/editorwindow.cpp" line="173"/>
<source>SQL editor %1</source>
- <translation type="unfinished"></translation>
+ <translation>SQL编辑器 %1</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="331"/>
<source>Results</source>
- <translation type="unfinished"></translation>
+ <translation>结果</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="364"/>
<source>Execute query</source>
- <translation type="unfinished"></translation>
+ <translation>执行语句</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="365"/>
@@ -2629,41 +2675,41 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../windows/editorwindow.cpp" line="368"/>
<source>Clear execution history</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>清除执行历史</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="370"/>
<source>Export results</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>导出结果</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="372"/>
<source>Create view from query</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>从query中创建视图</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="382"/>
<source>Previous database</source>
- <translation type="unfinished"></translation>
+ <translation>前一个数据库</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="383"/>
<source>Next database</source>
- <translation type="unfinished"></translation>
+ <translation>下一个数据库</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="386"/>
<source>Show next tab</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>显示下一个标签</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="387"/>
<source>Show previous tab</source>
<comment>sql editor</comment>
- <translation type="unfinished"></translation>
+ <translation>显示上一个标签</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="388"/>
@@ -2695,17 +2741,17 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/editorwindow.cpp" line="609"/>
<source>Clear execution history</source>
- <translation type="unfinished"></translation>
+ <translation>清除执行历史</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="609"/>
<source>Are you sure you want to erase the entire SQL execution history? This cannot be undone.</source>
- <translation type="unfinished"></translation>
+ <translation>确定要删除全部的SQL执行历史吗?删除后不能恢复。</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="621"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
<location filename="../windows/editorwindow.cpp" line="642"/>
@@ -2715,7 +2761,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/editorwindow.cpp" line="672"/>
<source>Editor window &quot;%1&quot; has uncommited data.</source>
- <translation type="unfinished"></translation>
+ <translation>编辑器“%1”里有未提交的数据库。</translation>
</message>
</context>
<context>
@@ -2723,17 +2769,17 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="14"/>
<source>Errors</source>
- <translation type="unfinished"></translation>
+ <translation>错误</translation>
</message>
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="20"/>
<source>Following errors occured:</source>
- <translation type="unfinished"></translation>
+ <translation>发生了以下错误:</translation>
</message>
<message>
<location filename="../dialogs/errorsconfirmdialog.ui" line="34"/>
<source>Would you like to proceed?</source>
- <translation type="unfinished"></translation>
+ <translation>仍然继续吗?</translation>
</message>
</context>
<context>
@@ -2970,49 +3016,49 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../formview.cpp" line="241"/>
<source>Commit row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>提交</translation>
</message>
<message>
<location filename="../formview.cpp" line="242"/>
<source>Rollback row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>回滚</translation>
</message>
<message>
<location filename="../formview.cpp" line="243"/>
<source>First row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>首行</translation>
</message>
<message>
<location filename="../formview.cpp" line="244"/>
<source>Previous row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>前一行</translation>
</message>
<message>
<location filename="../formview.cpp" line="245"/>
<source>Next row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>下一行</translation>
</message>
<message>
<location filename="../formview.cpp" line="246"/>
<source>Last row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>末行</translation>
</message>
<message>
<location filename="../formview.cpp" line="247"/>
<source>Insert new row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>新插入行</translation>
</message>
<message>
<location filename="../formview.cpp" line="248"/>
<source>Delete current row</source>
<comment>form view</comment>
- <translation type="unfinished"></translation>
+ <translation>删除当前行</translation>
</message>
</context>
<context>
@@ -3020,42 +3066,42 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.ui" line="81"/>
<source>Filter funtions</source>
- <translation type="unfinished"></translation>
+ <translation>过滤函数</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="260"/>
<source>Function name:</source>
- <translation type="unfinished"></translation>
+ <translation>函数名:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="273"/>
<source>Implementation language:</source>
- <translation type="unfinished">实现语言:</translation>
+ <translation>实现语言:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="253"/>
<source>Type:</source>
- <translation type="unfinished"></translation>
+ <translation>类型:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="157"/>
<source>Input arguments</source>
- <translation type="unfinished"></translation>
+ <translation>输入参数</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="163"/>
<source>Undefined</source>
- <translation type="unfinished"></translation>
+ <translation>Undefined</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="205"/>
<source>Databases</source>
- <translation type="unfinished">数据库</translation>
+ <translation>数据库</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="211"/>
<source>Register in all databases</source>
- <translation type="unfinished">在所有数据库中注册</translation>
+ <translation>在所有数据库中注册</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="218"/>
@@ -3065,7 +3111,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.ui" line="293"/>
<source>Initialization code:</source>
- <translation type="unfinished"></translation>
+ <translation>初始化代码:</translation>
</message>
<message>
<location filename="../windows/functionseditor.ui" line="309"/>
@@ -3081,57 +3127,57 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.cpp" line="54"/>
<source>SQL function editor</source>
- <translation type="unfinished"></translation>
+ <translation>SQL函数编辑器</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="59"/>
<source>Commit all function changes</source>
- <translation type="unfinished"></translation>
+ <translation>提交所有对函数的更改</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="60"/>
<source>Rollback all function changes</source>
- <translation type="unfinished"></translation>
+ <translation>回滚所有对函数的更改</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="62"/>
<source>Create new function</source>
- <translation type="unfinished"></translation>
+ <translation>新建函数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="63"/>
<source>Delete selected function</source>
- <translation type="unfinished"></translation>
+ <translation>删除已选函数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="65"/>
<source>Custom SQL functions manual</source>
- <translation type="unfinished"></translation>
+ <translation>自定义SQL函数手册</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="68"/>
<source>Add function argument</source>
- <translation type="unfinished"></translation>
+ <translation>添加函数参数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="69"/>
<source>Rename function argument</source>
- <translation type="unfinished"></translation>
+ <translation>重命名函数参数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="70"/>
<source>Delete function argument</source>
- <translation type="unfinished"></translation>
+ <translation>删除函数参数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="72"/>
<source>Move function argument up</source>
- <translation type="unfinished"></translation>
+ <translation>上移函数参数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="73"/>
<source>Move function argument down</source>
- <translation type="unfinished"></translation>
+ <translation>下移函数参数</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="111"/>
@@ -3146,12 +3192,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../windows/functionseditor.cpp" line="410"/>
<source>Enter a non-empty, unique name of the function.</source>
- <translation type="unfinished"></translation>
+ <translation>输入非空唯一的函数名称</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="422"/>
<source>Pick the implementation language.</source>
- <translation type="unfinished">选择实现语言。</translation>
+ <translation>选择实现语言。</translation>
</message>
<message>
<location filename="../windows/functionseditor.cpp" line="426"/>
@@ -3180,47 +3226,47 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/importdialog.ui" line="14"/>
<source>Import data</source>
- <translation type="unfinished"></translation>
+ <translation>导入数据</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="21"/>
<source>Table to import to</source>
- <translation type="unfinished"></translation>
+ <translation>目的表</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="36"/>
<source>Table</source>
- <translation type="unfinished">表</translation>
+ <translation>表</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="43"/>
<source>Database</source>
- <translation type="unfinished">数据库</translation>
+ <translation>数据库</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="84"/>
<source>Data source to import from</source>
- <translation type="unfinished"></translation>
+ <translation>数据源</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="129"/>
<source>Data source type</source>
- <translation type="unfinished"></translation>
+ <translation>数据源类型</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="141"/>
<source>Options</source>
- <translation type="unfinished">选项</translation>
+ <translation>选项</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="182"/>
<source>Input file:</source>
- <translation type="unfinished"></translation>
+ <translation>输入文件:</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="175"/>
<source>Text encoding:</source>
- <translation type="unfinished"></translation>
+ <translation>文本编码:</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="192"/>
@@ -3230,52 +3276,52 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/importdialog.ui" line="195"/>
<source>Ignore errors</source>
- <translation type="unfinished"></translation>
+ <translation>忽略错误</translation>
</message>
<message>
<location filename="../dialogs/importdialog.ui" line="205"/>
<source>Data source options</source>
- <translation type="unfinished"></translation>
+ <translation>数据源选项</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="71"/>
+ <location filename="../dialogs/importdialog.cpp" line="72"/>
<source>Cancel</source>
- <translation type="unfinished">取消</translation>
+ <translation>取消</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>If you type table name that doesn&apos;t exist, it will be created.</source>
- <translation type="unfinished"></translation>
+ <translation>如果输入的表不存在,则新建该表。</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="102"/>
+ <location filename="../dialogs/importdialog.cpp" line="103"/>
<source>Enter the table name</source>
- <translation type="unfinished"></translation>
+ <translation>输入表名</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="120"/>
+ <location filename="../dialogs/importdialog.cpp" line="121"/>
<source>Select import plugin.</source>
- <translation type="unfinished"></translation>
+ <translation>选择导入插件。</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="129"/>
+ <location filename="../dialogs/importdialog.cpp" line="130"/>
<source>You must provide a file to import from.</source>
- <translation type="unfinished"></translation>
+ <translation>必须提供一个导入文件。</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="136"/>
+ <location filename="../dialogs/importdialog.cpp" line="137"/>
<source>The file &apos;%1&apos; does not exist.</source>
- <translation type="unfinished"></translation>
+ <translation>文件“%1”不存在。</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="142"/>
+ <location filename="../dialogs/importdialog.cpp" line="143"/>
<source>Path you provided is a directory. A regular file is required.</source>
- <translation type="unfinished"></translation>
+ <translation>你提供的是一个目录。我们需要的是文件。</translation>
</message>
<message>
- <location filename="../dialogs/importdialog.cpp" line="318"/>
+ <location filename="../dialogs/importdialog.cpp" line="319"/>
<source>Pick file to import from</source>
- <translation type="unfinished"></translation>
+ <translation>选择要导入的文件</translation>
</message>
</context>
<context>
@@ -3319,12 +3365,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/indexdialog.ui" line="100"/>
<source>Sort</source>
- <translation type="unfinished"></translation>
+ <translation>排序</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"/>
@@ -3344,7 +3390,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/indexdialog.cpp" line="186"/>
<source>Select at least one column.</source>
- <translation type="unfinished"></translation>
+ <translation>至少选择一列</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="187"/>
@@ -3355,31 +3401,31 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../dialogs/indexdialog.cpp" line="236"/>
<source>default</source>
<comment>index dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>默认</translation>
</message>
<message>
<location filename="../dialogs/indexdialog.cpp" line="247"/>
<source>Sort order</source>
<comment>table constraints</comment>
- <translation type="unfinished"></translation>
+ <translation>排序</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="453"/>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>Error</source>
<comment>index dialog</comment>
- <translation type="unfinished"></translation>
+ <translation>错误</translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="454"/>
+ <location filename="../dialogs/indexdialog.cpp" line="455"/>
<source>Cannot create unique index, because values in selected columns are not unique. Would you like to execute SELECT query to see problematic values?</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dialogs/indexdialog.cpp" line="466"/>
+ <location filename="../dialogs/indexdialog.cpp" line="467"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation type="unfinished"></translation>
+ <translation>在执行SQL语句时发生了错误:%1</translation>
</message>
</context>
<context>
@@ -3400,12 +3446,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../mainwindow.ui" line="81"/>
<source>Database toolbar</source>
- <translation type="unfinished"></translation>
+ <translation>数据工具栏</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="92"/>
<source>Structure toolbar</source>
- <translation type="unfinished"></translation>
+ <translation>结构工具栏</translation>
</message>
<message>
<location filename="../mainwindow.ui" line="103"/>
@@ -3448,250 +3494,250 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="211"/>
+ <location filename="../mainwindow.cpp" line="213"/>
<source>You need to restart application to make the language change take effect.</source>
- <translation type="unfinished"></translation>
+ <translation>更改语言后重启程序生效。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="254"/>
+ <location filename="../mainwindow.cpp" line="256"/>
<source>Open SQL editor</source>
<translation>打开SQL编辑器</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="255"/>
+ <location filename="../mainwindow.cpp" line="257"/>
<source>Open DDL history</source>
<translation>打开数据库定义(DDL)历史</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="256"/>
+ <location filename="../mainwindow.cpp" line="258"/>
<source>Open SQL functions editor</source>
<translation>打开SQL函数编辑器</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="257"/>
+ <location filename="../mainwindow.cpp" line="259"/>
<source>Open collations editor</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="258"/>
+ <location filename="../mainwindow.cpp" line="260"/>
<source>Import</source>
- <translation type="unfinished">导入</translation>
+ <translation>导入</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="259"/>
+ <location filename="../mainwindow.cpp" line="261"/>
<source>Export</source>
<translation>导出</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="261"/>
+ <location filename="../mainwindow.cpp" line="263"/>
<source>Open configuration dialog</source>
<translation>打开配置对话框</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="263"/>
+ <location filename="../mainwindow.cpp" line="265"/>
<source>Tile windows</source>
<translation>平铺窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="264"/>
+ <location filename="../mainwindow.cpp" line="266"/>
<source>Tile windows horizontally</source>
<translation>水平排列窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="265"/>
+ <location filename="../mainwindow.cpp" line="267"/>
<source>Tile windows vertically</source>
<translation>垂直排列窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="266"/>
+ <location filename="../mainwindow.cpp" line="268"/>
<source>Cascade windows</source>
<translation>层叠窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="267"/>
+ <location filename="../mainwindow.cpp" line="269"/>
<source>Next window</source>
<translation>下一个窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="268"/>
+ <location filename="../mainwindow.cpp" line="270"/>
<source>Previous window</source>
<translation>上一个窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="269"/>
+ <location filename="../mainwindow.cpp" line="271"/>
<source>Hide status field</source>
<translation>隐藏状态栏</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="271"/>
+ <location filename="../mainwindow.cpp" line="273"/>
<source>Close selected window</source>
<translation>关闭当前窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="272"/>
+ <location filename="../mainwindow.cpp" line="274"/>
<source>Close all windows but selected</source>
<translation>关闭其它窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="273"/>
+ <location filename="../mainwindow.cpp" line="275"/>
<source>Close all windows</source>
<translation>关闭全部窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="274"/>
+ <location filename="../mainwindow.cpp" line="276"/>
<source>Restore recently closed window</source>
<translation>恢复最近关闭的窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="275"/>
+ <location filename="../mainwindow.cpp" line="277"/>
<source>Rename selected window</source>
<translation>重命名当前窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="277"/>
+ <location filename="../mainwindow.cpp" line="279"/>
<source>Open Debug Console</source>
<translation>打开调试终端</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="278"/>
+ <location filename="../mainwindow.cpp" line="280"/>
<source>Open CSS Console</source>
- <translation type="unfinished"></translation>
+ <translation>打开CSS控制台</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="279"/>
+ <location filename="../mainwindow.cpp" line="281"/>
<source>Report a bug</source>
<translation>提交Bug</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="280"/>
+ <location filename="../mainwindow.cpp" line="282"/>
<source>Propose a new feature</source>
<translation>提交新功能建议</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="281"/>
+ <location filename="../mainwindow.cpp" line="283"/>
<source>About</source>
<translation>关于</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="282"/>
+ <location filename="../mainwindow.cpp" line="284"/>
<source>Licenses</source>
<translation>许可</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="283"/>
+ <location filename="../mainwindow.cpp" line="285"/>
<source>Open home page</source>
<translation>访问主页</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="284"/>
+ <location filename="../mainwindow.cpp" line="286"/>
<source>Open forum page</source>
<translation>访问论坛</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="285"/>
+ <location filename="../mainwindow.cpp" line="287"/>
<source>User Manual</source>
<translation>用户手册</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="286"/>
+ <location filename="../mainwindow.cpp" line="288"/>
<source>SQLite documentation</source>
<translation>SQLite文档</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="287"/>
+ <location filename="../mainwindow.cpp" line="289"/>
<source>Report history</source>
<translation>报告历史</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="289"/>
+ <location filename="../mainwindow.cpp" line="291"/>
<source>Check for updates</source>
<translation>检查更新</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="327"/>
+ <location filename="../mainwindow.cpp" line="329"/>
<source>Database</source>
<comment>menubar</comment>
<translation>数据库</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="347"/>
+ <location filename="../mainwindow.cpp" line="349"/>
<source>Structure</source>
<comment>menubar</comment>
<translation>结构</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="368"/>
+ <location filename="../mainwindow.cpp" line="370"/>
<source>View</source>
<comment>menubar</comment>
<translation>查看</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="372"/>
+ <location filename="../mainwindow.cpp" line="374"/>
<source>Window list</source>
<comment>menubar view menu</comment>
<translation>窗口列表</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="393"/>
+ <location filename="../mainwindow.cpp" line="395"/>
<source>Tools</source>
<comment>menubar</comment>
<translation>工具</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="407"/>
+ <location filename="../mainwindow.cpp" line="409"/>
<source>Help</source>
<translation>帮助</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="569"/>
+ <location filename="../mainwindow.cpp" line="571"/>
<source>Could not set style: %1</source>
<comment>main window</comment>
- <translation type="unfinished"></translation>
+ <translation>未能设置风格:%1</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="642"/>
+ <location filename="../mainwindow.cpp" line="644"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="658"/>
+ <location filename="../mainwindow.cpp" line="660"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation>未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Rename window</source>
<translation>重命名窗口</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="691"/>
+ <location filename="../mainwindow.cpp" line="693"/>
<source>Enter new name for the window:</source>
<translation>窗口的新名称:</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="777"/>
+ <location filename="../mainwindow.cpp" line="779"/>
<source>New updates are available. &lt;a href=&quot;%1&quot;&gt;Click here for details&lt;/a&gt;.</source>
<translation>有新更新 &lt;a href=&quot;%1&quot;&gt;点此查看更新详情&lt;/a&gt;.</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="785"/>
+ <location filename="../mainwindow.cpp" line="787"/>
<source>You&apos;re running the most recent version. No updates are available.</source>
- <translation type="unfinished">您使用的是最新版,不需要更新。</translation>
+ <translation>您使用的是最新版,不需要更新。</translation>
</message>
<message>
- <location filename="../mainwindow.cpp" line="891"/>
+ <location filename="../mainwindow.cpp" line="904"/>
<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="898"/>
+ <location filename="../mainwindow.cpp" line="911"/>
<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="903"/>
+ <location filename="../mainwindow.cpp" line="916"/>
<source>Could not add database %1 to list.</source>
- <translation type="unfinished"></translation>
+ <translation>未能将数据%1添加到列表</translation>
</message>
</context>
<context>
@@ -3789,7 +3835,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../multieditor/multieditortext.cpp" line="45"/>
<source>Text</source>
- <translation type="unfinished"></translation>
+ <translation>文本</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.cpp" line="106"/>
@@ -3880,13 +3926,13 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<location filename="../dialogs/newconstraintdialog.cpp" line="105"/>
<source>Collate</source>
<comment>new constraint dialog</comment>
- <translation type="unfinished">排序规则</translation>
+ <translation>排序规则</translation>
</message>
<message>
<location filename="../dialogs/newconstraintdialog.cpp" line="107"/>
<source>Default</source>
<comment>new constraint dialog</comment>
- <translation type="unfinished">默认</translation>
+ <translation>默认</translation>
</message>
</context>
<context>
@@ -3947,7 +3993,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populateconfigdialog.ui" line="14"/>
<source>Populating configuration</source>
- <translation type="unfinished"></translation>
+ <translation>配置填充</translation>
</message>
<message>
<location filename="../dialogs/populateconfigdialog.cpp" line="54"/>
@@ -3960,7 +4006,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populatedialog.ui" line="14"/>
<source>Populate table</source>
- <translation type="unfinished"></translation>
+ <translation>填充表</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.ui" line="26"/>
@@ -3980,23 +4026,23 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populatedialog.ui" line="102"/>
<source>Number of rows to populate:</source>
- <translation type="unfinished"></translation>
+ <translation>填充的行数:</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="42"/>
<source>Populate</source>
<comment>populate dialog button</comment>
- <translation type="unfinished"></translation>
+ <translation>填充</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="54"/>
<source>Abort</source>
- <translation type="unfinished">中止</translation>
+ <translation>中止</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="161"/>
<source>Configure</source>
- <translation type="unfinished">配置</translation>
+ <translation>配置</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="259"/>
@@ -4011,7 +4057,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/populatedialog.cpp" line="291"/>
<source>Select table to populate</source>
- <translation type="unfinished"></translation>
+ <translation>选择要填充的表</translation>
</message>
<message>
<location filename="../dialogs/populatedialog.cpp" line="292"/>
@@ -4139,12 +4185,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="532"/>
+ <location filename="../dataview.cpp" line="573"/>
<source>Total pages available: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../dataview.cpp" line="542"/>
+ <location filename="../dataview.cpp" line="583"/>
<source>Total rows loaded: %1</source>
<translation type="unfinished"></translation>
</message>
@@ -4211,7 +4257,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dbtree/dbtree.h" line="34"/>
<location filename="../multieditor/multieditortext.h" line="15"/>
- <location filename="../sqleditor.h" line="24"/>
+ <location filename="../sqleditor.h" line="25"/>
<source>Paste from clipboard</source>
<translation type="unfinished"></translation>
</message>
@@ -4228,7 +4274,7 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="57"/>
<source>Triggers</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">触发器</translation>
</message>
<message>
<location filename="../dbtree/dbtreeitemfactory.cpp" line="62"/>
@@ -4278,12 +4324,12 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../formview.h" line="23"/>
<source>Insert new row</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">新插入行</translation>
</message>
<message>
<location filename="../formview.h" line="24"/>
<source>Delete current row</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">删除当前行</translation>
</message>
<message>
<location filename="../mainwindow.h" line="43"/>
@@ -4332,106 +4378,106 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="13"/>
- <location filename="../sqleditor.h" line="22"/>
+ <location filename="../sqleditor.h" line="23"/>
<source>Cut selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="14"/>
- <location filename="../sqleditor.h" line="23"/>
+ <location filename="../sqleditor.h" line="24"/>
<source>Copy selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="16"/>
- <location filename="../sqleditor.h" line="25"/>
+ <location filename="../sqleditor.h" line="26"/>
<source>Delete selected text</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="17"/>
- <location filename="../sqleditor.h" line="27"/>
+ <location filename="../sqleditor.h" line="28"/>
<source>Undo</source>
<translation type="unfinished">撤销</translation>
</message>
<message>
<location filename="../multieditor/multieditortext.h" line="18"/>
- <location filename="../sqleditor.h" line="28"/>
+ <location filename="../sqleditor.h" line="29"/>
<source>Redo</source>
<translation type="unfinished">恢复</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="21"/>
+ <location filename="../sqleditor.h" line="22"/>
<source>SQL editor input field</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="26"/>
+ <location filename="../sqleditor.h" line="27"/>
<source>Select whole editor contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="29"/>
+ <location filename="../sqleditor.h" line="30"/>
<source>Save contents into a file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="30"/>
+ <location filename="../sqleditor.h" line="31"/>
<source>Load contents from a file</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="31"/>
+ <location filename="../sqleditor.h" line="32"/>
<source>Find in text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="32"/>
+ <location filename="../sqleditor.h" line="33"/>
<source>Find next</source>
<translation type="unfinished">查找下一个</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="33"/>
+ <location filename="../sqleditor.h" line="34"/>
<source>Find previous</source>
<translation type="unfinished">查找上一个</translation>
</message>
<message>
- <location filename="../sqleditor.h" line="34"/>
+ <location filename="../sqleditor.h" line="35"/>
<source>Replace in text</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="35"/>
+ <location filename="../sqleditor.h" line="36"/>
<source>Delete current line</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="36"/>
+ <location filename="../sqleditor.h" line="37"/>
<source>Request code assistant</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="37"/>
+ <location filename="../sqleditor.h" line="38"/>
<source>Format contents</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="38"/>
+ <location filename="../sqleditor.h" line="39"/>
<source>Move selected block of text one line down</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="39"/>
+ <location filename="../sqleditor.h" line="40"/>
<source>Move selected block of text one line up</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="40"/>
+ <location filename="../sqleditor.h" line="41"/>
<source>Copy selected block of text and paste it a line below</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.h" line="41"/>
+ <location filename="../sqleditor.h" line="42"/>
<source>Copy selected block of text and paste it a line above</source>
<translation type="unfinished"></translation>
</message>
@@ -4627,14 +4673,14 @@ Please enter new, unique name, or press &apos;%1&apos; to abort the operation:</
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="14"/>
<source>Uncommited changes</source>
- <translation type="unfinished">未提交的更改</translation>
+ <translation>未提交的更改</translation>
</message>
<message>
<location filename="../dialogs/quitconfirmdialog.ui" line="20"/>
<source>Are you sure you want to quit the application?
Following items are pending:</source>
- <translation type="unfinished"></translation>
+ <translation>您确定要退出本程序吗?</translation>
</message>
</context>
<context>
@@ -4642,17 +4688,17 @@ Following items are pending:</source>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="14"/>
<source>Find or replace</source>
- <translation type="unfinished"></translation>
+ <translation>查找与替换</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="23"/>
<source>Find:</source>
- <translation type="unfinished"></translation>
+ <translation>查找:</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="36"/>
<source>Case sensitive</source>
- <translation type="unfinished"></translation>
+ <translation>大小写敏感</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="43"/>
@@ -4662,28 +4708,28 @@ Following items are pending:</source>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="50"/>
<source>Regular expression matching</source>
- <translation type="unfinished"></translation>
+ <translation>正则表达式</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="60"/>
<source>Replace &amp;&amp;
find next</source>
- <translation type="unfinished"></translation>
+ <translation>替换并查找下一个</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="78"/>
<source>Replace with:</source>
- <translation type="unfinished"></translation>
+ <translation>替换为:</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="91"/>
<source>Replace all</source>
- <translation type="unfinished"></translation>
+ <translation>全部替换</translation>
</message>
<message>
<location filename="../dialogs/searchtextdialog.ui" line="98"/>
<source>Find</source>
- <translation type="unfinished">查找</translation>
+ <translation>查找</translation>
</message>
</context>
<context>
@@ -4697,13 +4743,13 @@ 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>字段</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>排序</translation>
</message>
<message>
<location filename="../dialogs/sortdialog.cpp" line="178"/>
@@ -4724,173 +4770,173 @@ find next</source>
<context>
<name>SqlEditor</name>
<message>
- <location filename="../sqleditor.cpp" line="118"/>
+ <location filename="../sqleditor.cpp" line="121"/>
<source>Cut</source>
<comment>sql editor</comment>
<translation>剪切</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="119"/>
+ <location filename="../sqleditor.cpp" line="122"/>
<source>Copy</source>
<comment>sql editor</comment>
<translation>复制</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="120"/>
+ <location filename="../sqleditor.cpp" line="123"/>
<source>Paste</source>
<comment>sql editor</comment>
<translation>粘贴</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="121"/>
+ <location filename="../sqleditor.cpp" line="124"/>
<source>Delete</source>
<comment>sql editor</comment>
<translation>删除</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="122"/>
+ <location filename="../sqleditor.cpp" line="125"/>
<source>Select all</source>
<comment>sql editor</comment>
<translation>全选</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="123"/>
+ <location filename="../sqleditor.cpp" line="126"/>
<source>Undo</source>
<comment>sql editor</comment>
<translation>撤销</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="124"/>
+ <location filename="../sqleditor.cpp" line="127"/>
<source>Redo</source>
<comment>sql editor</comment>
<translation>恢复</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="125"/>
+ <location filename="../sqleditor.cpp" line="128"/>
<source>Complete</source>
<comment>sql editor</comment>
<translation>完成</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="126"/>
+ <location filename="../sqleditor.cpp" line="129"/>
<source>Format SQL</source>
<comment>sql editor</comment>
<translation>格式化SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="127"/>
+ <location filename="../sqleditor.cpp" line="130"/>
<source>Save SQL to file</source>
<comment>sql editor</comment>
<translation>保存SQL到文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="128"/>
+ <location filename="../sqleditor.cpp" line="131"/>
<source>Select file to save SQL</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="129"/>
+ <location filename="../sqleditor.cpp" line="132"/>
<source>Load SQL from file</source>
<comment>sql editor</comment>
<translation>从文件加载SQL</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="130"/>
+ <location filename="../sqleditor.cpp" line="133"/>
<source>Delete line</source>
<comment>sql editor</comment>
<translation>删除行</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="131"/>
+ <location filename="../sqleditor.cpp" line="134"/>
<source>Move block down</source>
<comment>sql editor</comment>
<translation>整块下移</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="132"/>
+ <location filename="../sqleditor.cpp" line="135"/>
<source>Move block up</source>
<comment>sql editor</comment>
<translation>整块上移</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="133"/>
+ <location filename="../sqleditor.cpp" line="136"/>
<source>Copy block down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="134"/>
+ <location filename="../sqleditor.cpp" line="137"/>
<source>Copy up down</source>
<comment>sql editor</comment>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="135"/>
+ <location filename="../sqleditor.cpp" line="138"/>
<source>Find</source>
<comment>sql editor</comment>
<translation>查找</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="136"/>
+ <location filename="../sqleditor.cpp" line="139"/>
<source>Find next</source>
<comment>sql editor</comment>
<translation>查找下一个</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="137"/>
+ <location filename="../sqleditor.cpp" line="140"/>
<source>Find previous</source>
<comment>sql editor</comment>
<translation>查找上一个</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="138"/>
+ <location filename="../sqleditor.cpp" line="141"/>
<source>Replace</source>
<comment>sql editor</comment>
<translation>替换</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="252"/>
+ <location filename="../sqleditor.cpp" line="255"/>
<source>Saved SQL contents to file: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="431"/>
+ <location filename="../sqleditor.cpp" line="434"/>
<source>Syntax completion can be used only when a valid database is set for the SQL editor.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="819"/>
+ <location filename="../sqleditor.cpp" line="822"/>
<source>Contents of the SQL editor are huge, so errors detecting and existing objects highlighting are temporarily disabled.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1054"/>
+ <location filename="../sqleditor.cpp" line="1057"/>
<source>Save to file</source>
<translation>保存到文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="242"/>
+ <location filename="../sqleditor.cpp" line="245"/>
<source>Could not open file &apos;%1&apos; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1066"/>
+ <location filename="../sqleditor.cpp" line="1069"/>
<source>SQL scripts (*.sql);;All files (*)</source>
<translation type="unfinished">SQL文件 (*.sql);;所有文件 (*)</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1067"/>
+ <location filename="../sqleditor.cpp" line="1070"/>
<source>Open file</source>
<translation>打开文件</translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1076"/>
+ <location filename="../sqleditor.cpp" line="1079"/>
<source>Could not open file &apos;%1&apos; for reading: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../sqleditor.cpp" line="1285"/>
+ <location filename="../sqleditor.cpp" line="1288"/>
<source>Reached the end of document. Hit the find again to restart the search.</source>
<translation>已搜索到文档底部。点击查找从头程序开始搜索。</translation>
</message>
@@ -4901,25 +4947,25 @@ find next</source>
<location filename="../datagrid/sqlqueryitem.cpp" line="251"/>
<source>Column:</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>字段:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="252"/>
<source>Data type:</source>
<comment>data view</comment>
- <translation type="unfinished">数据类型:</translation>
+ <translation>数据类型:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="255"/>
<source>Table:</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>表:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="285"/>
<source>Constraints:</source>
<comment>data view tooltip</comment>
- <translation type="unfinished"></translation>
+ <translation>约束:</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryitem.cpp" line="398"/>
@@ -5006,12 +5052,12 @@ find next</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Insert multiple rows</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">插入多行</translation>
</message>
<message>
- <location filename="../datagrid/sqlquerymodel.cpp" line="1438"/>
+ <location filename="../datagrid/sqlquerymodel.cpp" line="1452"/>
<source>Number of rows to insert:</source>
<translation type="unfinished"></translation>
</message>
@@ -5021,32 +5067,32 @@ find next</source>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="72"/>
<source>Copy</source>
- <translation type="unfinished">复制</translation>
+ <translation>复制</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="73"/>
<source>Copy as...</source>
- <translation type="unfinished"></translation>
+ <translation>复制为...</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="74"/>
<source>Paste</source>
- <translation type="unfinished">粘贴</translation>
+ <translation>粘贴</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="75"/>
<source>Paste as...</source>
- <translation type="unfinished"></translation>
+ <translation>粘贴为...</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="76"/>
<source>Set NULL values</source>
- <translation type="unfinished"></translation>
+ <translation>设置为NULL</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="77"/>
<source>Erase values</source>
- <translation type="unfinished"></translation>
+ <translation>擦除</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="78"/>
@@ -5056,12 +5102,12 @@ find next</source>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="79"/>
<source>Commit</source>
- <translation type="unfinished"></translation>
+ <translation>提交</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="80"/>
<source>Rollback</source>
- <translation type="unfinished"></translation>
+ <translation>回滚</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="81"/>
@@ -5086,17 +5132,17 @@ find next</source>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="85"/>
<source>Insert row</source>
- <translation type="unfinished"></translation>
+ <translation>插入行</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="86"/>
<source>Insert multiple rows</source>
- <translation type="unfinished"></translation>
+ <translation>插入多行</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="87"/>
<source>Delete selected row</source>
- <translation type="unfinished"></translation>
+ <translation>删除已选行</translation>
</message>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="256"/>
@@ -5106,7 +5152,7 @@ find next</source>
<message>
<location filename="../datagrid/sqlqueryview.cpp" line="510"/>
<source>Edit value</source>
- <translation type="unfinished"></translation>
+ <translation>编辑值</translation>
</message>
</context>
<context>
@@ -5114,12 +5160,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>写入新行时发生了错误:%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>删除行时发生了错误 %1:%2</translation>
</message>
</context>
<context>
@@ -5241,12 +5287,12 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="32"/>
<source>Columns</source>
- <translation type="unfinished">字段</translation>
+ <translation>字段</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="59"/>
<source>Column</source>
- <translation type="unfinished">字段</translation>
+ <translation>字段</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="84"/>
@@ -5256,7 +5302,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="109"/>
<source>Sort</source>
- <translation type="unfinished"></translation>
+ <translation>排序</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="142"/>
@@ -5266,7 +5312,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="145"/>
<source>Autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation>Autoincrement</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.ui" line="167"/>
@@ -5298,7 +5344,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="169"/>
<source>Select at least one column.</source>
- <translation type="unfinished"></translation>
+ <translation>至少选择一列。</translation>
</message>
<message>
<location filename="../constraints/tablepkanduniquepanel.cpp" line="170"/>
@@ -5342,7 +5388,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../windows/tablewindow.ui" line="190"/>
<source>Data</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">数据</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="207"/>
@@ -5357,7 +5403,7 @@ but it&apos;s okay to use them anyway.</source>
<message>
<location filename="../windows/tablewindow.ui" line="250"/>
<source>Triggers</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">触发器</translation>
</message>
<message>
<location filename="../windows/tablewindow.ui" line="282"/>
@@ -5380,7 +5426,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="193"/>
<source>Populate table</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">填充表</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="207"/>
@@ -5519,7 +5565,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="256"/>
<source>Delete index</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">删除索引</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="262"/>
@@ -5543,7 +5589,7 @@ but it&apos;s okay to use them anyway.</source>
<location filename="../windows/tablewindow.cpp" line="266"/>
<source>Delete trigger</source>
<comment>table window</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">删除触发器</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="299"/>
@@ -5609,7 +5655,7 @@ Would you like to proceed?</source>
<message>
<location filename="../windows/tablewindow.cpp" line="857"/>
<source>Reset autoincrement</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">重置autoincrement</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="857"/>
@@ -5667,12 +5713,12 @@ Are you sure you want to create a table with blank name?</source>
<message>
<location filename="../windows/tablewindow.cpp" line="1180"/>
<source>Cannot export, because no export plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">未能导出,因为没有导出插件被加载。</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1193"/>
<source>Cannot import, because no import plugin is loaded.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">未能导入,因为没有导入插件被加载。</translation>
</message>
<message>
<location filename="../windows/tablewindow.cpp" line="1225"/>
@@ -5865,13 +5911,13 @@ Do you want to commit the structure, or do you want to go back to the structure
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
<source>Error</source>
<comment>trigger dialog</comment>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">错误</translation>
</message>
<message>
<location filename="../dialogs/triggerdialog.cpp" line="426"/>
<source>An error occurred while executing SQL statements:
%1</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">在执行SQL语句“%1”时发生了错误。</translation>
</message>
</context>
<context>
@@ -5879,7 +5925,7 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../dialogs/versionconvertsummarydialog.ui" line="14"/>
<source>Database version convert</source>
- <translation type="unfinished"></translation>
+ <translation>数据库版本转换</translation>
</message>
<message>
<location filename="../dialogs/versionconvertsummarydialog.ui" line="20"/>
@@ -5889,12 +5935,12 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../dialogs/versionconvertsummarydialog.cpp" line="10"/>
<source>Before</source>
- <translation type="unfinished"></translation>
+ <translation>之前</translation>
</message>
<message>
<location filename="../dialogs/versionconvertsummarydialog.cpp" line="11"/>
<source>After</source>
- <translation type="unfinished"></translation>
+ <translation>之后</translation>
</message>
</context>
<context>
@@ -5912,12 +5958,12 @@ Do you want to commit the structure, or do you want to go back to the structure
<message>
<location filename="../windows/viewwindow.ui" line="77"/>
<source>Data</source>
- <translation type="unfinished"></translation>
+ <translation>数据</translation>
</message>
<message>
<location filename="../windows/viewwindow.ui" line="87"/>
<source>Triggers</source>
- <translation type="unfinished"></translation>
+ <translation>触发器</translation>
</message>
<message>
<location filename="../windows/viewwindow.ui" line="119"/>
diff --git a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
index 02a1052..cd1ba72 100644
--- a/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/windows/tablewindow.cpp
@@ -46,6 +46,7 @@
#include <QPushButton>
#include <QDebug>
#include <QStyleFactory>
+#include <datagrid/sqlqueryitem.h>
// TODO extend QTableView for columns and constraints, so they show full-row-width drop indicator,
// instead of single column drop indicator.
diff --git a/SQLiteStudio3/sqlitestudio/sqlitestudio.pro b/SQLiteStudio3/sqlitestudio/sqlitestudio.pro
index 63d0d50..d8384d8 100644
--- a/SQLiteStudio3/sqlitestudio/sqlitestudio.pro
+++ b/SQLiteStudio3/sqlitestudio/sqlitestudio.pro
@@ -33,7 +33,8 @@ LIBS += -lcoreSQLiteStudio -lguiSQLiteStudio
SOURCES += main.cpp
-TRANSLATIONS += translations/sqlitestudio_zh_CN.ts \
+TRANSLATIONS += translations/sqlitestudio_it.ts \
+ translations/sqlitestudio_zh_CN.ts \
translations/sqlitestudio_sk.ts \
translations/sqlitestudio_de.ts \
translations/sqlitestudio_ru.ts \
@@ -72,3 +73,4 @@ RESOURCES += \
+
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts
index 7072f7c..ce4a973 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_de.ts
@@ -6,68 +6,70 @@
<message>
<location filename="../main.cpp" line="44"/>
<source>GUI interface to SQLiteStudio, a SQLite manager.</source>
- <translation type="unfinished"></translation>
+ <translation>GUI Schnittstelle zu SQLiteStudio, ein SQLite Manager.</translation>
</message>
<message>
<location filename="../main.cpp" line="48"/>
<source>Enables debug messages in console (accessible with F12).</source>
- <translation type="unfinished"></translation>
+ <translation>Aktiviert Debug-Meldungen in der Konsole (erreichbar über F12)</translation>
</message>
<message>
<location filename="../main.cpp" line="49"/>
<source>Redirects debug messages into standard output (forces debug mode).</source>
- <translation type="unfinished"></translation>
+ <translation>Leitet Debug-Meldungen in den Standardausgabekanal um (erzwingt den Debugmodus)</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>Redirects debug messages into given file (forces debug mode).</source>
- <translation type="unfinished"></translation>
+ <translation>Leitet Debug-Meldungen in die angegebene Datei um (erzwingt den Debugmodus)</translation>
</message>
<message>
<location filename="../main.cpp" line="50"/>
<source>log file</source>
- <translation type="unfinished"></translation>
+ <translation>Logdatei</translation>
</message>
<message>
<location filename="../main.cpp" line="51"/>
<source>Enables Lemon parser debug messages for SQL code assistant.</source>
- <translation type="unfinished"></translation>
+ <translation>Aktiviert Lemon Parser Debug-Meldungen für den SQL Codeassistenten.</translation>
</message>
<message>
<location filename="../main.cpp" line="52"/>
<source>Enables debugging of every single SQL query being sent to any database.</source>
- <translation type="unfinished"></translation>
+ <translation>Aktiviert das Debugging für jede SQL Abfrage, die an eine beliebige Datenbank gesendet wurde.</translation>
</message>
<message>
<location filename="../main.cpp" line="53"/>
<source>Limits SQL query messages to only the given &lt;database&gt;.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Wird &lt;database&gt; bei Ausgabe der Meldung in die aktuelle Datenbankbezeichnung umgewandelt?</translatorcomment>
+ <translation>Begrenzt SQL Abfragemeldungen auf folgende Datenbank: &lt;database&gt;.</translation>
</message>
<message>
<location filename="../main.cpp" line="53"/>
<source>database</source>
- <translation type="unfinished"></translation>
+ <translation>Datenbank</translation>
</message>
<message>
<location filename="../main.cpp" line="54"/>
<source>Lists plugins installed in the SQLiteStudio and quits.</source>
- <translation type="unfinished"></translation>
+ <translatorcomment>Was wird hier beendet?</translatorcomment>
+ <translation>Listet die in SQLiteStudio installierten Plugins auf und beendet.</translation>
</message>
<message>
<location filename="../main.cpp" line="63"/>
<source>file</source>
- <translation type="unfinished"></translation>
+ <translation>Datei</translation>
</message>
<message>
<location filename="../main.cpp" line="63"/>
<source>Database file to open</source>
- <translation type="unfinished"></translation>
+ <translation>Zu öffnende Datenbankdatei</translation>
</message>
<message>
<location filename="../main.cpp" line="86"/>
<location filename="../main.cpp" line="102"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>Fehler</translation>
</message>
</context>
</TS>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts
new file mode 100644
index 0000000..f0caedd
--- /dev/null
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_it.ts
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../main.cpp" line="44"/>
+ <source>GUI interface to SQLiteStudio, a SQLite manager.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="48"/>
+ <source>Enables debug messages in console (accessible with F12).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="49"/>
+ <source>Redirects debug messages into standard output (forces debug mode).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="50"/>
+ <source>Redirects debug messages into given file (forces debug mode).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="50"/>
+ <source>log file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="51"/>
+ <source>Enables Lemon parser debug messages for SQL code assistant.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="52"/>
+ <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="53"/>
+ <source>Limits SQL query messages to only the given &lt;database&gt;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="53"/>
+ <source>database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="54"/>
+ <source>Lists plugins installed in the SQLiteStudio and quits.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="63"/>
+ <source>file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="63"/>
+ <source>Database file to open</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="86"/>
+ <location filename="../main.cpp" line="102"/>
+ <source>Error</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts
index 711f4a2..3ca5a22 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_ru.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_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/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts
index 222126a..ec8bd90 100644
--- a/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts
+++ b/SQLiteStudio3/sqlitestudio/translations/sqlitestudio_zh_CN.ts
@@ -26,7 +26,7 @@
<message>
<location filename="../main.cpp" line="50"/>
<source>log file</source>
- <translation type="unfinished"></translation>
+ <translation>日志文件</translation>
</message>
<message>
<location filename="../main.cpp" line="51"/>
@@ -46,28 +46,28 @@
<message>
<location filename="../main.cpp" line="53"/>
<source>database</source>
- <translation type="unfinished"></translation>
+ <translation>数据库</translation>
</message>
<message>
<location filename="../main.cpp" line="54"/>
<source>Lists plugins installed in the SQLiteStudio and quits.</source>
- <translation type="unfinished"></translation>
+ <translation>列出已安装的插件并退出。</translation>
</message>
<message>
<location filename="../main.cpp" line="63"/>
<source>file</source>
- <translation type="unfinished"></translation>
+ <translation>文件</translation>
</message>
<message>
<location filename="../main.cpp" line="63"/>
<source>Database file to open</source>
- <translation type="unfinished"></translation>
+ <translation>要打开的数据库文件</translation>
</message>
<message>
<location filename="../main.cpp" line="86"/>
<location filename="../main.cpp" line="102"/>
<source>Error</source>
- <translation type="unfinished"></translation>
+ <translation>错误</translation>
</message>
</context>
</TS>
diff --git a/SQLiteStudio3/sqlitestudiocli/cli.cpp b/SQLiteStudio3/sqlitestudiocli/cli.cpp
index 0f527ac..87c4f93 100644
--- a/SQLiteStudio3/sqlitestudiocli/cli.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/cli.cpp
@@ -9,12 +9,14 @@
#include "common/utils_sql.h"
#include "climsghandler.h"
#include "clicompleter.h"
+#include "services/notifymanager.h"
#include <QCoreApplication>
#include <QThread>
#include <QFile>
#include <QSet>
#include <QStringList>
#include <QLibrary>
+#include <QString>
#if defined(Q_OS_WIN32)
#include "readline.h"
@@ -36,6 +38,9 @@ CLI::CLI(QObject* parent) :
history_base = 0; // for some reason this was set to 1 under Unix, making 1st history entry to be always ommited
#endif
+ connect(NOTIFY_MANAGER, SIGNAL(notifyInfo(QString)), this, SLOT(printInfo(QString)));
+ connect(NOTIFY_MANAGER, SIGNAL(notifyWarning(QString)), this, SLOT(printWarn(QString)));
+ connect(NOTIFY_MANAGER, SIGNAL(notifyError(QString)), this, SLOT(printError(QString)));
loadHistory();
CliCompleter::getInstance()->init(this);
@@ -43,6 +48,7 @@ CLI::CLI(QObject* parent) :
CLI::~CLI()
{
+ safe_delete(thread);
}
CLI* CLI::getInstance()
@@ -53,6 +59,11 @@ CLI* CLI::getInstance()
return instance;
}
+void CLI::dispose()
+{
+ safe_delete(instance);
+}
+
void CLI::start()
{
thread = new QThread(this);
@@ -153,6 +164,24 @@ int CLI::historyLength() const
#endif
}
+void CLI::printWarn(const QString &msg)
+{
+ static_qstring(tpl, "[WARNING] %1");
+ qOut << tpl.arg(msg) << "\n";
+}
+
+void CLI::printError(const QString &msg)
+{
+ static_qstring(tpl, "[ERROR] %1");
+ qOut << tpl.arg(msg) << "\n";
+}
+
+void CLI::printInfo(const QString &msg)
+{
+ static_qstring(tpl, "[INFO] %1");
+ qOut << tpl.arg(msg) << "\n";
+}
+
void CLI::waitForExecution()
{
executionFinished = false;
diff --git a/SQLiteStudio3/sqlitestudiocli/cli.h b/SQLiteStudio3/sqlitestudiocli/cli.h
index 6f7c927..12f391b 100644
--- a/SQLiteStudio3/sqlitestudiocli/cli.h
+++ b/SQLiteStudio3/sqlitestudiocli/cli.h
@@ -20,6 +20,7 @@ class CLI : public QObject
~CLI();
static CLI* getInstance();
+ static void dispose();
void start();
void setCurrentDb(Db* db);
@@ -48,8 +49,10 @@ class CLI : public QObject
bool doExit = false;
QString line;
- signals:
- void execCommand(CliCommand* cmd);
+ private slots:
+ void printInfo(const QString& msg);
+ void printWarn(const QString& msg);
+ void printError(const QString& msg);
public slots:
void doWork();
@@ -57,6 +60,9 @@ class CLI : public QObject
void executionComplete();
void clearHistory();
void openDbFile(const QString& path);
+
+ signals:
+ void execCommand(CliCommand* cmd);
};
#endif // CLI_H
diff --git a/SQLiteStudio3/sqlitestudiocli/clicommandexecutor.cpp b/SQLiteStudio3/sqlitestudiocli/clicommandexecutor.cpp
index 6a3072e..66707cc 100644
--- a/SQLiteStudio3/sqlitestudiocli/clicommandexecutor.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/clicommandexecutor.cpp
@@ -8,7 +8,9 @@ CliCommandExecutor::CliCommandExecutor(QObject *parent) :
void CliCommandExecutor::execCommand(CliCommand* cmd)
{
- connect(cmd, SIGNAL(execComplete()), this, SLOT(asyncExecutionComplete()));
+ if (cmd->isAsyncExecution())
+ connect(cmd, SIGNAL(execComplete()), this, SLOT(asyncExecutionComplete()));
+
cmd->execute();
if (!cmd->isAsyncExecution())
{
diff --git a/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.cpp b/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.cpp
index 4865e23..f32b75e 100644
--- a/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.cpp
@@ -1,4 +1,8 @@
#include "clicommanddesc.h"
+#include "cli.h"
+#include "schemaresolver.h"
+#include "parser/ast/sqlitecreatevirtualtable.h"
+#include "cliutils.h"
CliCommandDesc::CliCommandDesc()
{
@@ -6,7 +10,41 @@ CliCommandDesc::CliCommandDesc()
void CliCommandDesc::execute()
{
+ if (!cli->getCurrentDb())
+ {
+ println(tr("No working database is set.\n"
+ "Call %1 command to set working database.\n"
+ "Call %2 to see list of all databases.")
+ .arg(cmdName("use")).arg(cmdName("dblist")));
+ return;
+ }
+
+ Db* db = cli->getCurrentDb();
+ if (!db || !db->isOpen())
+ {
+ println(tr("Database is not open."));
+ return;
+ }
+
+ QString table = syntax.getArgument(TABLE);
+ SchemaResolver resolver(db);
+ SqliteQueryPtr query = resolver.getParsedObject(table, SchemaResolver::TABLE);
+ if (!query || (!query.dynamicCast<SqliteCreateTable>() && !query.dynamicCast<SqliteCreateVirtualTable>()))
+ {
+ println(tr("Cannot find table named: %1").arg(table));
+ return;
+ }
+
+ SqliteCreateTablePtr createTable = query.dynamicCast<SqliteCreateTable>();
+ if (createTable)
+ {
+ printTable(createTable.data());
+ return;
+ }
+
+ SqliteCreateVirtualTablePtr virtualTable = query.dynamicCast<SqliteCreateVirtualTable>();
+ printVirtualTable(virtualTable.data());
}
QString CliCommandDesc::shortHelp() const
@@ -24,3 +62,59 @@ void CliCommandDesc::defineSyntax()
syntax.setName("desc");
syntax.addArgument(TABLE, tr("table"));
}
+
+void CliCommandDesc::printTable(SqliteCreateTable *table)
+{
+ int termCols = getCliColumns();
+ println(pad("", termCols, '-'));
+ println(tr("Table: %1").arg(table->table));
+
+ // Header
+ QString msg;
+ msg = pad(tr("Column name"), 20, ' ');
+ msg += "|";
+ msg += pad(tr("Data type"), 10, ' ');
+ msg += "|";
+ int lgt3rd = termCols - msg.length();
+ printHorizontalLine(lgt3rd);
+ msg += pad(tr("Constraints"), lgt3rd, ' ');
+ println(msg);
+ printHorizontalLine(lgt3rd);
+
+ // Rows
+ QString constrJoinStr = "\n" + pad("", 20, ' ') + "|" + pad("", 10, ' ') + "|";
+ QStringList constrList;
+ for (SqliteCreateTable::Column* column : table->columns)
+ {
+ msg = pad(column->name.left(20), 20, ' ');
+ msg += "|";
+ msg += pad((column->type ? column->type->detokenize().left(10) : ""), 10, ' ');
+ msg += "|";
+
+ constrList.clear();
+ for (SqliteCreateTable::Column::Constraint* constr : column->constraints)
+ constrList << pad(constr->detokenize().left(lgt3rd), lgt3rd, ' ');
+
+ msg += constrList.join(constrJoinStr);
+ println(msg);
+ }
+}
+
+void CliCommandDesc::printVirtualTable(SqliteCreateVirtualTable *table)
+{
+ println(tr("Virtual table: %1").arg(table->table));
+ if (table->args.size() > 0)
+ {
+ int i = 1;
+ println(tr("Construction arguments:"));
+ for (const QString& arg : table->args)
+ println(pad(QString::number(i++), 2, ' ') + ". " + arg);
+ }
+ else
+ println(tr("No construction arguments were passed for this virtual table."));
+}
+
+void CliCommandDesc::printHorizontalLine(int lgt3rd)
+{
+ println(pad("", 20, '-') + "+" + pad("", 10, '-') + "+" + pad("", lgt3rd, '-'));
+}
diff --git a/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.h b/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.h
index 46876df..3c06c6a 100644
--- a/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.h
+++ b/SQLiteStudio3/sqlitestudiocli/commands/clicommanddesc.h
@@ -3,6 +3,9 @@
#include "clicommand.h"
+class SqliteCreateTable;
+class SqliteCreateVirtualTable;
+
class CliCommandDesc : public CliCommand
{
Q_OBJECT
@@ -13,6 +16,11 @@ class CliCommandDesc : public CliCommand
QString shortHelp() const;
QString fullHelp() const;
void defineSyntax();
+
+ private:
+ void printTable(SqliteCreateTable* table);
+ void printVirtualTable(SqliteCreateVirtualTable* table);
+ void printHorizontalLine(int lgt3rd);
};
#endif // CLICOMMANDDESC_H
diff --git a/SQLiteStudio3/sqlitestudiocli/commands/clicommanduse.cpp b/SQLiteStudio3/sqlitestudiocli/commands/clicommanduse.cpp
index ef0f641..9706221 100644
--- a/SQLiteStudio3/sqlitestudiocli/commands/clicommanduse.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/commands/clicommanduse.cpp
@@ -6,7 +6,7 @@
void CliCommandUse::execute()
{
- if (syntax.isArgumentSet(DB_NAME))
+ if (!syntax.isArgumentSet(DB_NAME))
{
if (!cli->getCurrentDb())
{
diff --git a/SQLiteStudio3/sqlitestudiocli/main.cpp b/SQLiteStudio3/sqlitestudiocli/main.cpp
index 4bec619..eb7a46e 100644
--- a/SQLiteStudio3/sqlitestudiocli/main.cpp
+++ b/SQLiteStudio3/sqlitestudiocli/main.cpp
@@ -90,6 +90,7 @@ int main(int argc, char *argv[])
CLI::getInstance()->openDbFile(dbToOpen);
CLI::getInstance()->start();
-
- return a.exec();
+ int res = a.exec();
+ CLI::dispose();
+ return res;
}
diff --git a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro
index 4e3bae0..705a00c 100644
--- a/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro
+++ b/SQLiteStudio3/sqlitestudiocli/sqlitestudiocli.pro
@@ -27,7 +27,8 @@ linux {
}
}
-TRANSLATIONS += translations/sqlitestudiocli_zh_CN.ts \
+TRANSLATIONS += translations/sqlitestudiocli_it.ts \
+ translations/sqlitestudiocli_zh_CN.ts \
translations/sqlitestudiocli_sk.ts \
translations/sqlitestudiocli_de.ts \
translations/sqlitestudiocli_ru.ts \
@@ -124,3 +125,4 @@ RESOURCES += \
+
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts
index 9dee56c..f544581 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_de.ts
@@ -4,32 +4,32 @@
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<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="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
<translation type="unfinished"></translation>
</message>
@@ -201,15 +201,67 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
<source>shows details about the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts
index d446494..7d3b5c5 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_es.ts
@@ -4,32 +4,32 @@
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<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="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
<translation type="unfinished"></translation>
</message>
@@ -201,15 +201,67 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
<source>shows details about the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts
index 5096d8c..cdcfb5b 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_fr.ts
@@ -4,32 +4,32 @@
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
<translation>Base de données actuelle: %1</translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
<translation>Aucune base de données en cours n&apos;est activée.</translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
<translation>Touche %1 pour l&apos;aide</translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<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="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
<translation>Impossible d&apos;ajouter la base de données %1 à la liste.</translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
<translation>Fermé</translation>
</message>
@@ -201,15 +201,69 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished">Aucune base de données de travail n&apos;est activée.
+Appelez la commande %1 pour activer la base de données active.
+Appelez %2 pour voir la liste de toutes les bases de données.</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished">La base de données n&apos;est pas ouverte.</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
<source>shows details about the table</source>
<translation>Affichage des détails de la table</translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
<translation>Table</translation>
</message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts
new file mode 100644
index 0000000..959e194
--- /dev/null
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_it.ts
@@ -0,0 +1,788 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.1" language="it_IT">
+<context>
+ <name>CLI</name>
+ <message>
+ <location filename="../cli.cpp" line="98"/>
+ <source>Current database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../cli.cpp" line="100"/>
+ <source>No current working database is set.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../cli.cpp" line="102"/>
+ <source>Type %1 for help</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../cli.cpp" line="257"/>
+ <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="../cli.cpp" line="264"/>
+ <source>Could not add database %1 to list.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../cli.cpp" line="290"/>
+ <source>closed</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommand</name>
+ <message>
+ <location filename="../commands/clicommand.cpp" line="107"/>
+ <source>Usage: %1%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandAdd</name>
+ <message>
+ <location filename="../commands/clicommandadd.cpp" line="9"/>
+ <source>Could not add database %1 to list.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandadd.cpp" line="14"/>
+ <source>Database added: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandadd.cpp" line="19"/>
+ <source>adds new database to the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandadd.cpp" line="24"/>
+ <source>Adds given database pointed by &lt;path&gt; with given &lt;name&gt; to list the databases list. The &lt;name&gt; is just a symbolic name that you can later refer to. Just pick any unique name. For list of databases already on the list use %1 command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandadd.cpp" line="34"/>
+ <source>name</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandadd.cpp" line="35"/>
+ <source>path</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandCd</name>
+ <message>
+ <location filename="../commands/clicommandcd.cpp" line="10"/>
+ <source>Changed directory to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandcd.cpp" line="12"/>
+ <source>Could not change directory to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandcd.cpp" line="17"/>
+ <source>changes current working directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandcd.cpp" line="22"/>
+ <source>Very similar command to &apos;cd&apos; known from Unix systems and Windows. It requires a &lt;path&gt; argument to be passed, therefore calling %1 will always cause a change of the directory. To learn what&apos;s the current working directory use %2 command and to list contents of the current working directory use %3 command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandcd.cpp" line="33"/>
+ <source>path</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandClose</name>
+ <message>
+ <location filename="../commands/clicommandclose.cpp" line="10"/>
+ <source>Cannot call %1 when no database is set to be current. Specify current database with %2 command or pass database name to %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandclose.cpp" line="21"/>
+ <location filename="../commands/clicommandclose.cpp" line="29"/>
+ <source>Connection to database %1 closed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandclose.cpp" line="24"/>
+ <source>No such database: %1. Use %2 to see list of known databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandclose.cpp" line="35"/>
+ <source>closes given (or current) database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandclose.cpp" line="40"/>
+ <source>Closes database connection. If the database was already closed, nothing happens. If &lt;name&gt; is provided, it should be name of the database to close (as printed by %1 command). The the &lt;name&gt; is not provided, then current working database is closed (see help for %2 for details).</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandclose.cpp" line="50"/>
+ <source>name</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandDbList</name>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="12"/>
+ <source>No current working database defined.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="18"/>
+ <source>Databases:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="23"/>
+ <location filename="../commands/clicommanddblist.cpp" line="34"/>
+ <source>Name</source>
+ <comment>CLI db name column</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="31"/>
+ <location filename="../commands/clicommanddblist.cpp" line="61"/>
+ <source>Open</source>
+ <comment>CLI connection state column</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="31"/>
+ <location filename="../commands/clicommanddblist.cpp" line="61"/>
+ <source>Closed</source>
+ <comment>CLI connection state column</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="32"/>
+ <location filename="../commands/clicommanddblist.cpp" line="36"/>
+ <source>Connection</source>
+ <comment>CLI connection state column</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="38"/>
+ <location filename="../commands/clicommanddblist.cpp" line="45"/>
+ <source>Database file path</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="70"/>
+ <source>prints list of registered databases</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddblist.cpp" line="75"/>
+ <source>Prints list of databases registered in the SQLiteStudio. Each database on the list can be in open or closed state and %1 tells you that. The current working database (aka default database) is also marked on the list with &apos;*&apos; at the start of its name. See help for %2 command to learn about the default database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandDesc</name>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
+ <source>shows details about the table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
+ <source>table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandDir</name>
+ <message>
+ <location filename="../commands/clicommanddir.cpp" line="33"/>
+ <source>lists directories and files in current working directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddir.cpp" line="38"/>
+ <source>This is very similar to &apos;dir&apos; command known from Windows and &apos;ls&apos; command from Unix systems.
+
+You can pass &lt;pattern&gt; with wildcard characters to filter output.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddir.cpp" line="49"/>
+ <source>pattern</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandExit</name>
+ <message>
+ <location filename="../commands/clicommandexit.cpp" line="12"/>
+ <source>quits the application</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandexit.cpp" line="17"/>
+ <source>Quits the application. Settings are stored in configuration file and will be restored on next startup.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandHelp</name>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="16"/>
+ <source>shows this help message</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="21"/>
+ <source>Use %1 to learn about certain commands supported by the command line interface (CLI) of the SQLiteStudio.
+To see list of supported commands, type %2 without any arguments.
+
+When passing &lt;command&gt; name, you can skip special prefix character (&apos;%3&apos;).
+
+You can always execute any command with exactly single &apos;--help&apos; option to see help for that command. It&apos;s an alternative for typing: %1 &lt;command&gt;.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="33"/>
+ <source>command</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="42"/>
+ <source>No such command: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="43"/>
+ <source>Type &apos;%1&apos; for list of available commands.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="52"/>
+ <source>Usage: %1%2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhelp.cpp" line="62"/>
+ <source>Aliases: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandHistory</name>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="23"/>
+ <source>Current history limit is set to: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="39"/>
+ <source>prints history or erases it</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="44"/>
+ <source>When no argument was passed, this command prints command line history. Every history entry is separated with a horizontal line, so multiline entries are easier to read.
+
+When the -c or --clear option is passed, then the history gets erased.
+When the -l or --limit option is passed, it sets the new history entries limit. It requires an additional argument saying how many entries do you want the history to be limited to.
+Use -ql or --querylimit option to see the current limit value.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="59"/>
+ <source>number</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="66"/>
+ <source>Console history erased.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="75"/>
+ <source>Invalid number: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandhistory.cpp" line="80"/>
+ <source>History limit set to %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandMode</name>
+ <message>
+ <location filename="../commands/clicommandmode.cpp" line="9"/>
+ <source>Current results printing mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandmode.cpp" line="16"/>
+ <source>Invalid results printing mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandmode.cpp" line="21"/>
+ <source>New results printing mode: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandmode.cpp" line="26"/>
+ <source>tells or changes the query results format</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandmode.cpp" line="31"/>
+ <source>When called without argument, tells the current output format for a query results. When the &lt;mode&gt; is passed, the mode is changed to the given one. Supported modes are:
+- CLASSIC - columns are separated by a comma, not aligned,
+- FIXED - columns have equal and fixed width, they always fit into terminal window width, but the data in columns can be cut off,
+- COLUMNS - like FIXED, but smarter (do not use with huge result sets, see details below),
+- ROW - each column from the row is displayed in new line, so the full data is displayed.
+
+The CLASSIC mode is recommended if you want to see all the data, but you don&apos;t want to waste lines for each column. Each row will display full data for every column, but this also means, that columns will not be aligned to each other in next rows. The CLASSIC mode also doesn&apos;t respect the width of your terminal (console) window, so if values in columns are wider than the window, the row will be continued in next lines.
+
+The FIXED mode is recommended if you want a readable output and you don&apos;t care about long data values. Columns will be aligned, making the output a nice table. The width of columns is calculated from width of the console window and a number of columns.
+
+The COLUMNS mode is similar to FIXED mode, except it tries to be smart and make columns with shorter values more thin, while columns with longer values get more space. First to shrink are columns with longest headers (so the header names are to be cut off as first), then columns with the longest values are shrinked, up to the moment when all columns fit into terminal window.
+ATTENTION! The COLUMNS mode reads all the results from the query at once in order to evaluate column widhts, therefore it is dangerous to use this mode when working with huge result sets. Keep in mind that this mode will load entire result set into memory.
+
+The ROW mode is recommended if you need to see whole values and you don&apos;t expect many rows to be displayed, because this mode displays a line of output per each column, so you&apos;ll get 10 lines for single row with 10 columns, then if you have 10 of such rows, you will get 100 lines of output (+1 extra line per each row, to separate rows from each other).</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandNullValue</name>
+ <message>
+ <location filename="../commands/clicommandnullvalue.cpp" line="9"/>
+ <source>Current NULL representation string: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandnullvalue.cpp" line="15"/>
+ <source>tells or changes the NULL representation string</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandnullvalue.cpp" line="20"/>
+ <source>If no argument was passed, it tells what&apos;s the current NULL value representation (that is - what is printed in place of NULL values in query results). If the argument is given, then it&apos;s used as a new string to be used for NULL representation.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandOpen</name>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="12"/>
+ <source>Cannot call %1 when no database is set to be current. Specify current database with %2 command or pass database name to %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="29"/>
+ <source>Could not add database %1 to list.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="37"/>
+ <source>File %1 doesn&apos;t exist in %2. Cannot open inexisting database with %3 command. To create a new database, use %4 command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="61"/>
+ <source>Database %1 has been open and set as the current working database.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="66"/>
+ <source>opens database connection</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="71"/>
+ <source>Opens connection to the database. If no additional argument was passed, then the connection is open to the current default database (see help for %1 for details). However if an argument was passed, it can be either &lt;name&gt; of the registered database to open, or it can be &lt;path&gt; to the database file to open. In the second case, the &lt;path&gt; gets registered on the list with a generated name, but only for the period of current application session. After restarting application such database is not restored on the list.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="83"/>
+ <source>name</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandopen.cpp" line="83"/>
+ <source>path</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandPwd</name>
+ <message>
+ <location filename="../commands/clicommandpwd.cpp" line="13"/>
+ <source>prints the current working directory</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandpwd.cpp" line="18"/>
+ <source>This is the same as &apos;pwd&apos; command on Unix systems and &apos;cd&apos; command without arguments on Windows. It prints current working directory. You can change the current working directory with %1 command and you can also list contents of the current working directory with %2 command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandRemove</name>
+ <message>
+ <location filename="../commands/clicommandremove.cpp" line="12"/>
+ <source>No such database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandremove.cpp" line="20"/>
+ <source>Database removed: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandremove.cpp" line="26"/>
+ <source>New current database set:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandremove.cpp" line="35"/>
+ <source>removes database from the list</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandremove.cpp" line="40"/>
+ <source>Removes &lt;name&gt; database from the list of registered databases. If the database was not on the list (see %1 command), then error message is printed and nothing more happens.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandremove.cpp" line="50"/>
+ <source>name</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandSql</name>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="18"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="29"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="64"/>
+ <source>executes SQL query</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="69"/>
+ <source>This command is executed every time you enter SQL query in command prompt. It executes the query on the current working database (see help for %1 for details). There&apos;s no sense in executing this command explicitly. Instead just type the SQL query in the command prompt, without any command prefixed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="85"/>
+ <source>sql</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="136"/>
+ <location filename="../commands/clicommandsql.cpp" line="178"/>
+ <source>Too many columns to display in %1 mode.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="256"/>
+ <source>Row %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandsql.cpp" line="406"/>
+ <source>Query execution error: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandTables</name>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="15"/>
+ <source>No such database: %1. Use %2 to see list of known databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="25"/>
+ <source>Cannot call %1 when no database is set to be current. Specify current database with %2 command or pass database name to %3.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="32"/>
+ <source>Database %1 is closed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="45"/>
+ <location filename="../commands/clicommandtables.cpp" line="47"/>
+ <source>Database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="47"/>
+ <source>Table</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="61"/>
+ <source>prints list of tables in the database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="66"/>
+ <source>Prints list of tables in given &lt;database&gt; or in the current working database. Note, that the &lt;database&gt; should be the name of the registered database (see %1). The output list includes all tables from any other databases attached to the queried database.
+When the -s option is given, then system tables are also listed.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtables.cpp" line="77"/>
+ <source>database</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandTree</name>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="12"/>
+ <source>No current working database is selected. Use %1 to define one and then run %2.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="54"/>
+ <source>Tables</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="58"/>
+ <source>Views</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="83"/>
+ <source>Columns</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="88"/>
+ <source>Indexes</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="92"/>
+ <location filename="../commands/clicommandtree.cpp" line="113"/>
+ <source>Triggers</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="132"/>
+ <source>prints all objects in the database as a tree</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandtree.cpp" line="137"/>
+ <source>Prints all objects (tables, indexes, triggers and views) that are in the database as a tree. The tree is very similar to the one that you can see in GUI client of the SQLiteStudio.
+When -c option is given, then also columns will be listed under each table.
+When -s option is given, then also system objects will be printed (sqlite_* tables, autoincrement indexes, etc).
+The database argument is optional and if provided, then only given database will be printed. This is not a registered database name, but instead it&apos;s an internal SQLite database name, like &apos;main&apos;, &apos;temp&apos;, or any attached database name. To print tree for other registered database, call %1 first to switch the working database, and then use %2 command.</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>CliCommandUse</name>
+ <message>
+ <location filename="../commands/clicommanduse.cpp" line="13"/>
+ <source>No current database selected.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanduse.cpp" line="16"/>
+ <location filename="../commands/clicommanduse.cpp" line="30"/>
+ <source>Current database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanduse.cpp" line="23"/>
+ <source>No such database: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanduse.cpp" line="35"/>
+ <source>changes default working database</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanduse.cpp" line="40"/>
+ <source>Changes current working database to &lt;name&gt;. If the &lt;name&gt; database is not registered in the application, then the error message is printed and no change is made.
+
+What is current working database?
+When you type a SQL query to be executed, it is executed on the default database, which is also known as the current working database. Most of database-related commands can also work using default database, if no database was provided in their arguments. The current database is always identified by command line prompt. The default database is always defined (unless there is no database on the list at all).
+
+The default database can be selected in various ways:
+- using %1 command,
+- by passing database file name to the application startup parameters,
+- by passing registered database name to the application startup parameters,
+- by restoring previously selected default database from saved configuration,
+- or when default database was not selected by any of the above, then first database from the registered databases list becomes the default one.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanduse.cpp" line="63"/>
+ <source>name</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+<context>
+ <name>QObject</name>
+ <message>
+ <location filename="../clicommandsyntax.cpp" line="155"/>
+ <source>Insufficient number of arguments.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../clicommandsyntax.cpp" line="325"/>
+ <source>Too many arguments.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../clicommandsyntax.cpp" line="347"/>
+ <source>Invalid argument value: %1.
+Expected one of: %2</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../clicommandsyntax.cpp" line="383"/>
+ <source>Unknown option: %1</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../clicommandsyntax.cpp" line="394"/>
+ <source>Option %1 requires an argument.</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommandnullvalue.cpp" line="31"/>
+ <source>string</source>
+ <comment>CLI command syntax</comment>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="22"/>
+ <source>Command line interface to SQLiteStudio, a SQLite manager.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="26"/>
+ <source>Enables debug messages on standard error output.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="27"/>
+ <source>Enables Lemon parser debug messages for SQL code assistant.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="28"/>
+ <source>Lists plugins installed in the SQLiteStudio and quits.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="33"/>
+ <source>file</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../main.cpp" line="33"/>
+ <source>Database file to open</source>
+ <translation type="unfinished"></translation>
+ </message>
+</context>
+</TS>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts
index c7bdf0f..9a0f67b 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pl.ts
@@ -169,6 +169,50 @@
<source>table</source>
<translation>tabela</translation>
</message>
+ <message>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished">Nie wybrano domyślnej bazy danych.
+Użyj polecenia %1, aby ustawić domyślną bazę danych.
+Użyj polecenie %2, aby wypisać listę wszystkich baz.</translation>
+ </message>
+ <message>
+ <source>Database is not open.</source>
+ <translation type="unfinished">Baz danych nie jest otwarta.</translation>
+ </message>
+ <message>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts
index 5b92d37..0d46151 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_pt_BR.ts
@@ -4,32 +4,32 @@
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<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="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
<translation type="unfinished"></translation>
</message>
@@ -201,15 +201,67 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
<source>shows details about the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts
index 0cbe067..ef35f51 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_ru.ts
@@ -1,35 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
-<TS version="2.1" language="ru_RU">
+<TS version="2.0" language="ru_RU">
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
<translation>Текущая база данных: %1</translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
<translation>Текущая рабочая база данных не определена.</translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
<translation>Введите %1 для вызова справки</translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<source>Database passed in command line parameters (%1) was already on the list under name: %2</source>
<translation>База данных, переданная через аргументы командной строки (%1), уже находится в списке под именем %2</translation>
</message>
<message>
- <location filename="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
<translation>Невозможно добавить базу данных %1 в список.</translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
<translation>закрыта</translation>
</message>
@@ -201,15 +201,69 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation>Не указана рабочая база данных.
+Укажите рабочую базу данных командой %1.
+Для просмотра списка баз данных воспользуйтесь командой %2.</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation>База данных не открыта.</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation>Не удалось найти таблицу с именем %1</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
<source>shows details about the table</source>
<translation>отображает сведения о таблице</translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
<translation>таблица</translation>
</message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation>Таблица: %1</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation>Имя столбца</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation>Тип данных</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation>Ограничения</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation>Виртуальная таблица: %1</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation>Параметры создания:</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation>Не указаны параметры создания для этой виртуальной таблицы.</translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts
index df9da22..e799908 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_sk.ts
@@ -4,32 +4,32 @@
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<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="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
<translation type="unfinished"></translation>
</message>
@@ -201,15 +201,67 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
<source>shows details about the table</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
<translation type="unfinished"></translation>
</message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
+ <translation type="unfinished"></translation>
+ </message>
</context>
<context>
<name>CliCommandDir</name>
diff --git a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts
index 4dd7f0a..71b2ea2 100644
--- a/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts
+++ b/SQLiteStudio3/sqlitestudiocli/translations/sqlitestudiocli_zh_CN.ts
@@ -4,34 +4,34 @@
<context>
<name>CLI</name>
<message>
- <location filename="../cli.cpp" line="87"/>
+ <location filename="../cli.cpp" line="98"/>
<source>Current database: %1</source>
- <translation type="unfinished"></translation>
+ <translation>当前数据库:%1</translation>
</message>
<message>
- <location filename="../cli.cpp" line="89"/>
+ <location filename="../cli.cpp" line="100"/>
<source>No current working database is set.</source>
- <translation type="unfinished"></translation>
+ <translation>当前没有选定工作数据库。</translation>
</message>
<message>
- <location filename="../cli.cpp" line="91"/>
+ <location filename="../cli.cpp" line="102"/>
<source>Type %1 for help</source>
- <translation type="unfinished"></translation>
+ <translation>输入 %1 获取帮助</translation>
</message>
<message>
- <location filename="../cli.cpp" line="228"/>
+ <location filename="../cli.cpp" line="257"/>
<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="../cli.cpp" line="235"/>
+ <location filename="../cli.cpp" line="264"/>
<source>Could not add database %1 to list.</source>
- <translation type="unfinished"></translation>
+ <translation>未能将数据库“%1”添加到列表。</translation>
</message>
<message>
- <location filename="../cli.cpp" line="261"/>
+ <location filename="../cli.cpp" line="290"/>
<source>closed</source>
- <translation type="unfinished"></translation>
+ <translation>已关闭</translation>
</message>
</context>
<context>
@@ -39,7 +39,7 @@
<message>
<location filename="../commands/clicommand.cpp" line="107"/>
<source>Usage: %1%2</source>
- <translation type="unfinished"></translation>
+ <translation>用法: %1%2</translation>
</message>
</context>
<context>
@@ -47,12 +47,12 @@
<message>
<location filename="../commands/clicommandadd.cpp" line="9"/>
<source>Could not add database %1 to list.</source>
- <translation type="unfinished"></translation>
+ <translation>未能将数据库“%1”添加到列表。</translation>
</message>
<message>
<location filename="../commands/clicommandadd.cpp" line="14"/>
<source>Database added: %1</source>
- <translation type="unfinished"></translation>
+ <translation>已添加数据库:%1</translation>
</message>
<message>
<location filename="../commands/clicommandadd.cpp" line="19"/>
@@ -68,7 +68,7 @@
<location filename="../commands/clicommandadd.cpp" line="34"/>
<source>name</source>
<comment>CLI command syntax</comment>
- <translation type="unfinished"></translation>
+ <translation></translation>
</message>
<message>
<location filename="../commands/clicommandadd.cpp" line="35"/>
@@ -82,12 +82,12 @@
<message>
<location filename="../commands/clicommandcd.cpp" line="10"/>
<source>Changed directory to: %1</source>
- <translation type="unfinished"></translation>
+ <translation>已切换到:%1</translation>
</message>
<message>
<location filename="../commands/clicommandcd.cpp" line="12"/>
<source>Could not change directory to: %1</source>
- <translation type="unfinished"></translation>
+ <translation>未能切换到:%1</translation>
</message>
<message>
<location filename="../commands/clicommandcd.cpp" line="17"/>
@@ -201,13 +201,65 @@
<context>
<name>CliCommandDesc</name>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="14"/>
- <source>shows details about the table</source>
+ <location filename="../commands/clicommanddesc.cpp" line="15"/>
+ <source>No working database is set.
+Call %1 command to set working database.
+Call %2 to see list of all databases.</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="26"/>
+ <source>Database is not open.</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../commands/clicommanddesc.cpp" line="25"/>
+ <location filename="../commands/clicommanddesc.cpp" line="35"/>
+ <source>Cannot find table named: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="52"/>
+ <source>shows details about the table</source>
+ <translation>显示表的详情</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="63"/>
<source>table</source>
+ <translation>表</translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="70"/>
+ <source>Table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="74"/>
+ <source>Column name</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="76"/>
+ <source>Data type</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="80"/>
+ <source>Constraints</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="105"/>
+ <source>Virtual table: %1</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="109"/>
+ <source>Construction arguments:</source>
+ <translation type="unfinished"></translation>
+ </message>
+ <message>
+ <location filename="../commands/clicommanddesc.cpp" line="114"/>
+ <source>No construction arguments were passed for this virtual table.</source>
<translation type="unfinished"></translation>
</message>
</context>
@@ -236,7 +288,7 @@ You can pass &lt;pattern&gt; with wildcard characters to filter output.</source>
<message>
<location filename="../commands/clicommandexit.cpp" line="12"/>
<source>quits the application</source>
- <translation type="unfinished"></translation>
+ <translation>退出本程序</translation>
</message>
<message>
<location filename="../commands/clicommandexit.cpp" line="17"/>
@@ -280,7 +332,7 @@ You can always execute any command with exactly single &apos;--help&apos; option
<message>
<location filename="../commands/clicommandhelp.cpp" line="52"/>
<source>Usage: %1%2</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">用法: %1%2</translation>
</message>
<message>
<location filename="../commands/clicommandhelp.cpp" line="62"/>
@@ -399,7 +451,7 @@ The ROW mode is recommended if you need to see whole values and you don&apos;t e
<message>
<location filename="../commands/clicommandopen.cpp" line="29"/>
<source>Could not add database %1 to list.</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">未能将数据库“%1”添加到列表。</translation>
</message>
<message>
<location filename="../commands/clicommandopen.cpp" line="37"/>
@@ -632,7 +684,7 @@ The database argument is optional and if provided, then only given database will
<location filename="../commands/clicommanduse.cpp" line="16"/>
<location filename="../commands/clicommanduse.cpp" line="30"/>
<source>Current database: %1</source>
- <translation type="unfinished"></translation>
+ <translation type="unfinished">当前数据库:%1</translation>
</message>
<message>
<location filename="../commands/clicommanduse.cpp" line="23"/>