diff options
| author | 2015-02-22 14:06:29 -0500 | |
|---|---|---|
| committer | 2015-02-22 14:06:29 -0500 | |
| commit | 306d6d3ca9c9ad774d19135681a7f9805f77035f (patch) | |
| tree | a3e36ac2cc769162c30a1bcc33e126f7a4f4ccea /SQLiteStudio3/coreSQLiteStudio | |
| parent | 016003905ca0e8e459e3dc33e786beda8ec92f45 (diff) | |
Imported Upstream version 3.0.3upstream/3.0.3
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio')
56 files changed, 9952 insertions, 771 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt index c890b69..fe7a977 100644 --- a/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt +++ b/SQLiteStudio3/coreSQLiteStudio/ChangeLog.txt @@ -1,3 +1,28 @@ +[3.0.3] + * [ADDED]: Added visual validation indicators to DbDialog, so user is informed why the "Ok" button is disabled at the moment. + * [ADDED]: Russian translation. + * [ADDED]: French translation. + * [ADDED]: #2770 Added SQLite 3 version used by application in the Environment tab of the About dialog. + * [CHANGE]: Language translations located in a separate directory have now higher precedense, than translations compiled in, so it's possible to test updated translations "on the fly". + * [BUGFIX]: Fixed support for "function(DISTINCT args)" in Enterprise formatter. + * [BUGFIX]: #2753 Fixed parsing TEMP and IF NOT EXISTS in CREATE TABLE statement. + * [BUGFIX]: #2755 Fixed error checking for recurrent expression with LIKE/GLOB operator in it. + * [BUGFIX]: Switched error message from simple method error to smart method error in QueryExecutor to avoid misleading messages. + * [BUGFIX]: #2760 Fixed marking "unique" in index dialog when opening existing unique index. + * [BUGFIX]: #2757 Fixed int64 rounding problem. + * [BUGFIX]: #2767 Fixed NOT NULL dialog in column dialog, so it doesn't convert to UNIQUE. + * [BUGFIX]: #2763 Fixed possibility of adding 2 same databases to the list. + * [BUGFIX]: Fixed copying values from Environment tab of the About dialog. + * [BUGFIX]: #2774 Fixed handling triggers (when modifying table) in foreign tables, triggers referencing table in its subqueries, etc. + * [BUGFIX]: Fixed executing SELECT in SQLite2 for columns that need wrapping. + * [BUGFIX]: Fixed editing data for tables transparently attached in the SQL query. + * [BUGFIX]: Fixed Shortcut titles translation in configuration dialog. + * [BUGFIX]: Fixed aggregate functions, so initial and final codes are executed, not only the per-step code. + * [BUGFIX]: #2781 Portable configuration directory can now be either in the running directory, or in applications directory. It's auto-detected. + * [BUGFIX]: Optimized loading huge data sets into data grid. It's faster and the progress bar acts more smoothly. + * [BUGFIX]: Shortcut for closing current window is now displayed in the context menu for taskbar. + * [BUGFIX]: "Skip first line" option in CSV import renamed to "First line represents CSV columns". Maybe this time it won't confused anyone. + [3.0.2] * [ADDED]: Full support for the interface translations. * [ADDED]: Polish translation. diff --git a/SQLiteStudio3/coreSQLiteStudio/TODO.txt b/SQLiteStudio3/coreSQLiteStudio/TODO.txt index 458d550..055898c 100644 --- a/SQLiteStudio3/coreSQLiteStudio/TODO.txt +++ b/SQLiteStudio3/coreSQLiteStudio/TODO.txt @@ -1,6 +1,5 @@ -* 3.0.1: - * Next versions: +- small useful features: generating template queries from context menu for table/view, from data view. - commiting DataView should be async - syntax checkers as services - per language - code assistants as services - per language diff --git a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp index 99eb334..528df73 100644 --- a/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/completionhelper.cpp @@ -1029,9 +1029,6 @@ void CompletionHelper::parseFullSql() { Dialect dialect = db->getDialect(); - Parser parser(dialect); - parser.setLemonDebug(enableLemonDebug); - QString sql = fullSql; // Selecting query at cursor position @@ -1046,11 +1043,30 @@ void CompletionHelper::parseFullSql() query += ";"; // Parsing query - if (parser.parse(query, true) && !parser.getQueries().isEmpty()) + Parser parser(dialect); + parser.setLemonDebug(enableLemonDebug); + if (tryToParse(&parser, query)) + return; + + // Second try - handling open parenthesis for expr (which could not be handled by the grammar, because of bug #2755) + parser.setLemonDebug(false); // avoid spamming with lemon debug + QString truncatedSql = sql.left(cursorPosition); + query = getQueryWithPosition(truncatedSql, cursorPosition, dialect); + query += ");"; + + if (tryToParse(&parser, query)) + return; +} + +bool CompletionHelper::tryToParse(Parser* parser, const QString& query) +{ + if (parser->parse(query, true) && !parser->getQueries().isEmpty()) { - parsedQuery = parser.getQueries().first(); + parsedQuery = parser->getQueries().first(); originalParsedQuery = SqliteQueryPtr(dynamic_cast<SqliteQuery*>(parsedQuery->clone())); + return true; } + return false; } void CompletionHelper::sort(QList<ExpectedTokenPtr> &resultsSoFar) diff --git a/SQLiteStudio3/coreSQLiteStudio/completionhelper.h b/SQLiteStudio3/coreSQLiteStudio/completionhelper.h index 2cb3c01..5c656c2 100644 --- a/SQLiteStudio3/coreSQLiteStudio/completionhelper.h +++ b/SQLiteStudio3/coreSQLiteStudio/completionhelper.h @@ -118,6 +118,7 @@ class API_EXPORT CompletionHelper : public QObject void filterDuplicates(QList<ExpectedTokenPtr> &results); bool isFilterType(Token::Type type); void parseFullSql(); + bool tryToParse(Parser* parser, const QString& query); void sort(QList<ExpectedTokenPtr> &results); void extractPreviousIdTokens(const TokenList& parsedTokens); void extractQueryAdditionalInfo(); diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp index a79e08a..1a63776 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.cpp @@ -34,6 +34,16 @@ QHash<QString, CfgEntry *> &CfgCategory::getEntries() return childs; } +void CfgCategory::translateTitle() +{ + // This needs to be "QObject::tr" and not just "tr", because this guarantees proper message context for retranslating + // titles for objects initialized in global scope (as CfgCategories are). + title = QObject::tr(title.toUtf8().constData()); + for (CfgEntry* entry : childs) + entry->translateTitle(); + +} + void CfgCategory::reset() { for (CfgEntry* entry : childs) diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h index 2a6ccaf..45197d6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgcategory.h @@ -23,6 +23,7 @@ class API_EXPORT CfgCategory : public QObject QString toString() const; operator QString() const; QHash<QString,CfgEntry*>& getEntries(); + void translateTitle(); void reset(); void savepoint(bool transaction = false); void restore(); diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.cpp index 6a5f6a4..9a91ea8 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.cpp @@ -99,6 +99,12 @@ QString CfgEntry::getTitle() const return title; } +void CfgEntry::translateTitle() +{ + // This needs to be "QObject::tr" and not just "tr". See CfgCategory::translateTitle() for details. + title = QObject::tr(title.toUtf8().constData()); +} + void CfgEntry::reset() { set(getDefultValue()); diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.h index 92b2a5f..4c1bbb0 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.h +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgentry.h @@ -29,6 +29,7 @@ class API_EXPORT CfgEntry : public QObject void defineDefaultValueFunction(DefaultValueProviderFunc func); QString getFullKey() const; QString getTitle() const; + void translateTitle(); void reset(); bool isPersistable() const; bool isPersisted() const; diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp index 72fc0d0..480b4cc 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.cpp @@ -55,6 +55,13 @@ QHash<QString, CfgCategory *> &CfgMain::getCategories() return childs; } +void CfgMain::translateTitle() +{ + title = QObject::tr(title.toUtf8().constData()); + for (CfgCategory* ctg : childs) + ctg->translateTitle(); +} + void CfgMain::reset() { for (CfgCategory* ctg : childs) diff --git a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h index bc9490d..d42f03b 100644 --- a/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h +++ b/SQLiteStudio3/coreSQLiteStudio/config_builder/cfgmain.h @@ -22,6 +22,7 @@ class API_EXPORT CfgMain static QList<CfgMain*> getPersistableInstances(); QHash<QString,CfgCategory*>& getCategories(); + void translateTitle(); void reset(); void savepoint(bool transaction = false); void restore(); diff --git a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro index e58e2a8..84cd818 100644 --- a/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro +++ b/SQLiteStudio3/coreSQLiteStudio/coreSQLiteStudio.pro @@ -19,7 +19,12 @@ TEMPLATE = lib win32 { LIBS += -lpsapi $$PWD/../../../lib/libquazip.a - DISTFILES += qt.conf + + THE_FILE = $$PWD/qt.conf + THE_DEST = $${DESTDIR} + THE_FILE ~= s,/,\\,g + THE_DEST ~= s,/,\\,g + QMAKE_POST_LINK += $$QMAKE_COPY $$THE_FILE $$THE_DEST $$escape_expand(\\n\\t) } linux: { @@ -45,7 +50,14 @@ portable { CONFIG += c++11 QMAKE_CXXFLAGS += -pedantic -TRANSLATIONS += translations/coreSQLiteStudio_pl.ts +TRANSLATIONS += translations/coreSQLiteStudio_zh_CN.ts \ + translations/coreSQLiteStudio_sk.ts \ + translations/coreSQLiteStudio_de.ts \ + translations/coreSQLiteStudio_ru.ts \ + translations/coreSQLiteStudio_pt_BR.ts \ + translations/coreSQLiteStudio_fr.ts \ + translations/coreSQLiteStudio_es.ts \ + translations/coreSQLiteStudio_pl.ts SOURCES += sqlitestudio.cpp \ returncode.cpp \ @@ -422,3 +434,14 @@ FORMS += \ RESOURCES += \ coresqlitestudio.qrc + + + + + + + + + + + diff --git a/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc b/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc index 6f2f925..3ad28a9 100644 --- a/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc +++ b/SQLiteStudio3/coreSQLiteStudio/coresqlitestudio.qrc @@ -20,5 +20,7 @@ </qresource> <qresource prefix="/msg"> <file>translations/coreSQLiteStudio_pl.qm</file> + <file>translations/coreSQLiteStudio_ru.qm</file> + <file>translations/coreSQLiteStudio_fr.qm</file> </qresource> </RCC> diff --git a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h index c521bfa..9b27dc3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/abstractdb2.h @@ -352,7 +352,7 @@ void AbstractDb2<T>::storeResult(sqlite_func* func, const QVariant& result, bool case QVariant::UInt: case QVariant::LongLong: { - sqlite_set_result_int(func, result.toInt()); + sqlite_set_result_int(func, result.toLongLong()); break; } case QVariant::Double: diff --git a/SQLiteStudio3/coreSQLiteStudio/db/db.h b/SQLiteStudio3/coreSQLiteStudio/db/db.h index 7d10a05..e11a844 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/db.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/db.h @@ -501,7 +501,8 @@ class API_EXPORT Db : public QObject, public Interruptable * @brief Attaches given database to this database. * @param otherDb Other registered database object. * @param silent If true, no errors or warnings will be reported to the NotifyManager (they will still appear in logs). - * @return Name of the attached database (it's not the symbolic name of the other database, it's a name you would use in <tt>ATTACH 'name'</tt> statement). + * @return Name of the attached database (it's not the symbolic name of the other database, it's a name you would use in <tt>ATTACH 'name'</tt> statement), + * or null string if error occurred. * * This is convinent method to attach other registered databases to this database. It generates attached database name, so it doesn't conflict * with other - already attached - database names, attaches the database with that name and returns that name to you, so you can refer to it in queries. @@ -583,7 +584,8 @@ class API_EXPORT Db : public QObject, public Interruptable * @return Database type label. * * The database type label is used on UI to tell user what database it is (SQLite 3, SQLite 2, Encrypted SQLite 3, etc). - * This is defined by DbPlugin. + * This is usually the same as DbPlugin::getTitle(), but getTitle() is used in list of plugins in configuration dialog, + * while getTypeLabel() is used on databases list. */ virtual QString getTypeLabel() = 0; diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp index 97b3f1d..9fc49df 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.cpp @@ -107,6 +107,8 @@ void QueryExecutor::executeChain() } } + requiredDbAttaches = context->dbNameToAttach.leftValues(); + // We're done. clearChain(); @@ -433,6 +435,7 @@ void QueryExecutor::simpleExecutionFinished(SqlQueryPtr results) context->executionTime = QDateTime::currentMSecsSinceEpoch() - simpleExecutionStartTime; context->rowsAffected = results->rowsAffected(); context->totalRowsReturned = 0; + requiredDbAttaches = context->dbNameToAttach.leftValues(); executionMutex.lock(); executionInProgress = false; @@ -538,6 +541,12 @@ bool QueryExecutor::handleRowCountingResults(quint32 asyncId, SqlQueryPtr result return true; } + +const QStringList& QueryExecutor::getRequiredDbAttaches() const +{ + return requiredDbAttaches; +} + bool QueryExecutor::getNoMetaColumns() const { return noMetaColumns; @@ -550,32 +559,24 @@ void QueryExecutor::setNoMetaColumns(bool value) void QueryExecutor::handleErrorsFromSmartAndSimpleMethods(SqlQueryPtr results) { - QString simpleText = results->getErrorText(); - - // Smart text may contain messages from steps before the actual execution, but they will have negative error code. - // Positive error code means that the error came directly from SQLite. - QString smartText = context->errorCodeFromSmartExecution > 0 ? context->errorMessageFromSmartExecution : QString(); - - if (simpleText.contains("no such") && smartText.contains("no such")) - { - // This happens if user refers to invalid column in attached database. - // Smart execution will tell "no such column: xxx", while simple method will tell: - // "no such table: attach.table". In that case we're more interested in smart method message. - // This also applies to views. - error(context->errorCodeFromSmartExecution, smartText); - return; - } - - if (simpleText.contains("no such") && smartText.contains("ambiguous")) + UNUSED(results); + // It turns out that currently smart execution error has more sense to be displayed to user than the simple execution error, + // so we're ignoring error from simple method, because it's usually misleading. + // The case when simple method error is more true than smart method error is very rare nowdays. + // Just rename attach names in the message. + QString msg = context->errorMessageFromSmartExecution; + QString match; + QString replaceName; + Dialect dialect = db->getDialect(); + for (const QString& attachName : context->dbNameToAttach.rightValues()) { - // This happens when smart execution raised "amigous column name" or something like that, - // but simple method failed to work because of transparent database attaching. We prefer smart method error. - error(context->errorCodeFromSmartExecution, smartText); - return; + match = attachName + "."; + replaceName = wrapObjIfNeeded(context->dbNameToAttach.valueByRight(attachName), dialect) + "."; + while (msg.contains(match)) + msg.replace(match, replaceName); } - // No special case, use simple method error - error(results->getErrorCode(), simpleText); + error(context->errorCodeFromSmartExecution, msg); } void QueryExecutor::releaseResultsAndCleanup() diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h index 72c7fed..c6d7701 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutor.h @@ -344,10 +344,19 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable { /** * @brief Database name that the table with this row ID is in. + * + * It's the actual database name as SQLite sees it. That means it is a "main", or any attach name. */ QString database; /** + * @brief Symbolic database name as listed in databases list. + * + * It can be empty if database was not explicitly passed in the query. + */ + QString dbName; + + /** * @brief Table name that the row ID is for. */ QString table; @@ -1018,6 +1027,8 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable */ void releaseResultsAndCleanup(); + const QStringList& getRequiredDbAttaches() const; + private: /** * @brief Executes query. @@ -1280,6 +1291,16 @@ class API_EXPORT QueryExecutor : public QObject, public QRunnable bool noMetaColumns = false; /** + * @brief List of required databases to attach. + * + * List of database names (symbolic names, as they appear on the list) that needs to be + * attached to access all columns returned by the most recent successful execution. + * + * This is set after every successful execution. + */ + QStringList requiredDbAttaches; + + /** * @brief Chain of executor steps. * * Executor step list is set up by setupExecutionChain() and cleaned up after diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp index 55203e4..9307d13 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutoraddrowids.cpp @@ -60,7 +60,7 @@ QHash<SelectResolver::Table,QHash<QString,QString>> QueryExecutorAddRowIds::addR } // Getting all tables we need to get ROWID for - SelectResolver resolver(db, select->tokens.detokenize()); + SelectResolver resolver(db, select->tokens.detokenize(), context->dbNameToAttach); resolver.resolveMultiCore = false; // multicore subselects result in not editable columns, skip them QSet<SelectResolver::Table> tables = resolver.resolveTables(core); @@ -177,6 +177,7 @@ bool QueryExecutorAddRowIds::addResultColumns(SqliteSelect::Core* core, const Se { // Query executor result column description QueryExecutor::ResultRowIdColumnPtr queryExecutorResCol = QueryExecutor::ResultRowIdColumnPtr::create(); + queryExecutorResCol->dbName = table.originalDatabase; queryExecutorResCol->database = table.database; queryExecutorResCol->table = table.table; queryExecutorResCol->tableAlias = table.alias; diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp index bce1304..6acfb6f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutorcolumns.cpp @@ -289,10 +289,10 @@ QString QueryExecutorColumns::getAliasedColumnNameForSqlite2(const QueryExecutor if (context->dbNameToAttach.containsLeft(resCol->database, Qt::CaseInsensitive)) colNameParts << context->dbNameToAttach.valueByLeft(resCol->database, Qt::CaseInsensitive); else - colNameParts << resCol->database; + colNameParts << wrapObjIfNeeded(resCol->database, dialect); } - colNameParts << resCol->table; + colNameParts << wrapObjIfNeeded(resCol->table, dialect); } - colNameParts << resCol->column; + colNameParts << wrapObjIfNeeded(resCol->column, dialect); return colNameParts.join("."); } diff --git a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp index 9a5c1c2..31cda9e 100644 --- a/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/db/queryexecutorsteps/queryexecutordatasources.cpp @@ -14,7 +14,7 @@ bool QueryExecutorDataSources::exec() if (select->coreSelects.first()->valuesMode) return true; - SelectResolver resolver(db, select->tokens.detokenize()); + SelectResolver resolver(db, select->tokens.detokenize(), context->dbNameToAttach); resolver.resolveMultiCore = false; // multicore subselects result in not editable columns, skip them SqliteSelect::Core* core = select->coreSelects.first(); diff --git a/SQLiteStudio3/coreSQLiteStudio/log.h b/SQLiteStudio3/coreSQLiteStudio/log.h index f866c93..dddb513 100644 --- a/SQLiteStudio3/coreSQLiteStudio/log.h +++ b/SQLiteStudio3/coreSQLiteStudio/log.h @@ -2,7 +2,7 @@ #define LOG_H #include "db/db.h" -#include "guiSQLiteStudio_global.h" +#include "coreSQLiteStudio_global.h" #include <QString> #include <QHash> #include <QList> diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp index 656444a..5b65904 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.cpp @@ -165,7 +165,7 @@ typedef union { #define sqlite2_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext #define sqlite2_parseARG_STORE yypParser->parserContext = parserContext #define YYNSTATE 584 -#define YYNRULE 353 +#define YYNRULE 352 #define YYFALLBACK 1 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2) #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) @@ -241,16 +241,16 @@ static const YYMINORTYPE yyzerominor = { 0 }; static const YYACTIONTYPE yy_action[] = { /* 0 */ 338, 191, 186, 242, 476, 511, 576, 193, 332, 16, /* 10 */ 511, 384, 189, 322, 239, 519, 518, 570, 337, 450, - /* 20 */ 15, 852, 125, 58, 575, 179, 852, 574, 63, 143, + /* 20 */ 15, 851, 125, 58, 575, 179, 851, 574, 63, 143, /* 30 */ 401, 581, 328, 26, 84, 569, 114, 322, 573, 519, - /* 40 */ 518, 852, 852, 35, 852, 852, 852, 852, 852, 852, - /* 50 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 32, - /* 60 */ 33, 852, 852, 852, 852, 320, 379, 34, 240, 238, + /* 40 */ 518, 851, 851, 35, 851, 851, 851, 851, 851, 851, + /* 50 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 32, + /* 60 */ 33, 851, 851, 851, 851, 320, 379, 34, 240, 238, /* 70 */ 121, 556, 291, 251, 57, 7, 217, 577, 265, 264, /* 80 */ 523, 179, 555, 336, 335, 338, 569, 549, 548, 550, /* 90 */ 271, 569, 10, 724, 199, 297, 203, 489, 459, 332, /* 100 */ 568, 567, 451, 253, 158, 523, 449, 444, 443, 337, - /* 110 */ 187, 871, 266, 187, 580, 517, 168, 328, 505, 343, + /* 110 */ 187, 870, 266, 187, 580, 517, 168, 328, 505, 343, /* 120 */ 143, 235, 490, 108, 101, 489, 523, 164, 35, 531, /* 130 */ 187, 13, 523, 252, 234, 547, 236, 119, 340, 232, /* 140 */ 339, 120, 216, 155, 32, 33, 481, 547, 322, 215, @@ -258,23 +258,23 @@ static const YYACTIONTYPE yy_action[] = { /* 160 */ 7, 714, 400, 321, 251, 523, 714, 563, 336, 335, /* 170 */ 500, 553, 549, 548, 550, 188, 465, 500, 401, 466, /* 180 */ 366, 365, 552, 364, 293, 435, 39, 39, 39, 38, - /* 190 */ 523, 562, 60, 255, 714, 569, 714, 714, 853, 570, - /* 200 */ 271, 714, 502, 853, 500, 714, 570, 714, 714, 714, + /* 190 */ 523, 562, 60, 255, 714, 569, 714, 714, 852, 570, + /* 200 */ 271, 714, 502, 852, 500, 714, 570, 714, 714, 714, /* 210 */ 714, 523, 569, 178, 531, 422, 13, 523, 44, 45, - /* 220 */ 330, 42, 42, 530, 530, 223, 853, 853, 43, 43, + /* 220 */ 330, 42, 42, 530, 530, 223, 852, 852, 43, 43, /* 230 */ 43, 43, 41, 41, 41, 41, 40, 40, 39, 39, /* 240 */ 39, 38, 199, 297, 203, 55, 236, 92, 340, 232, /* 250 */ 339, 120, 216, 500, 106, 570, 268, 19, 187, 215, /* 260 */ 500, 105, 553, 41, 41, 41, 41, 40, 40, 39, /* 270 */ 39, 39, 38, 552, 40, 40, 39, 39, 39, 38, - /* 280 */ 853, 3, 568, 567, 187, 853, 512, 500, 219, 568, + /* 280 */ 852, 3, 568, 567, 187, 852, 512, 500, 219, 568, /* 290 */ 567, 17, 496, 156, 322, 345, 519, 518, 569, 292, - /* 300 */ 44, 45, 330, 42, 42, 530, 530, 223, 853, 853, + /* 300 */ 44, 45, 330, 42, 42, 530, 530, 223, 852, 852, /* 310 */ 43, 43, 43, 43, 41, 41, 41, 41, 40, 40, - /* 320 */ 39, 39, 39, 38, 547, 533, 853, 100, 308, 306, - /* 330 */ 305, 853, 448, 447, 418, 418, 316, 245, 568, 567, - /* 340 */ 304, 938, 122, 344, 1, 582, 44, 45, 330, 42, - /* 350 */ 42, 530, 530, 223, 853, 853, 43, 43, 43, 43, + /* 320 */ 39, 39, 39, 38, 547, 533, 852, 100, 308, 306, + /* 330 */ 305, 852, 448, 447, 418, 418, 316, 245, 568, 567, + /* 340 */ 304, 937, 122, 344, 1, 582, 44, 45, 330, 42, + /* 350 */ 42, 530, 530, 223, 852, 852, 43, 43, 43, 43, /* 360 */ 41, 41, 41, 41, 40, 40, 39, 39, 39, 38, /* 370 */ 338, 442, 44, 45, 330, 42, 42, 530, 530, 223, /* 380 */ 524, 569, 43, 43, 43, 43, 41, 41, 41, 41, @@ -287,14 +287,14 @@ static const YYACTIONTYPE yy_action[] = { /* 450 */ 523, 524, 569, 336, 335, 285, 781, 549, 548, 550, /* 460 */ 43, 43, 43, 43, 41, 41, 41, 41, 40, 40, /* 470 */ 39, 39, 39, 38, 332, 523, 332, 425, 470, 774, - /* 480 */ 560, 774, 774, 851, 337, 426, 337, 455, 851, 613, + /* 480 */ 560, 774, 774, 850, 337, 426, 337, 455, 850, 613, /* 490 */ 774, 181, 774, 774, 774, 143, 523, 143, 30, 531, - /* 500 */ 614, 13, 523, 851, 851, 851, 851, 851, 851, 851, - /* 510 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, - /* 520 */ 851, 851, 851, 851, 851, 851, 851, 853, 500, 460, - /* 530 */ 357, 320, 853, 318, 75, 570, 401, 570, 311, 251, + /* 500 */ 614, 13, 523, 850, 850, 850, 850, 850, 850, 850, + /* 510 */ 850, 850, 850, 850, 850, 850, 850, 850, 850, 850, + /* 520 */ 850, 850, 850, 850, 850, 850, 850, 852, 500, 460, + /* 530 */ 357, 320, 852, 318, 75, 570, 401, 570, 311, 251, /* 540 */ 569, 251, 446, 445, 570, 358, 359, 44, 45, 330, - /* 550 */ 42, 42, 530, 530, 223, 853, 853, 43, 43, 43, + /* 550 */ 42, 42, 530, 530, 223, 852, 852, 43, 43, 43, /* 560 */ 43, 41, 41, 41, 41, 40, 40, 39, 39, 39, /* 570 */ 38, 338, 44, 45, 330, 42, 42, 530, 530, 223, /* 580 */ 615, 570, 43, 43, 43, 43, 41, 41, 41, 41, @@ -305,14 +305,14 @@ static const YYACTIONTYPE yy_action[] = { /* 630 */ 32, 33, 337, 356, 482, 355, 569, 85, 34, 759, /* 640 */ 532, 111, 70, 78, 487, 483, 7, 759, 90, 494, /* 650 */ 508, 523, 493, 160, 336, 335, 782, 528, 549, 548, - /* 660 */ 550, 532, 440, 434, 568, 567, 118, 54, 332, 920, + /* 660 */ 550, 532, 440, 434, 568, 567, 118, 54, 332, 919, /* 670 */ 214, 100, 308, 306, 305, 75, 523, 333, 337, 571, /* 680 */ 759, 529, 759, 759, 304, 48, 177, 522, 31, 143, /* 690 */ 29, 759, 568, 567, 759, 759, 159, 523, 568, 567, /* 700 */ 531, 464, 13, 523, 44, 45, 330, 42, 42, 530, /* 710 */ 530, 223, 568, 567, 43, 43, 43, 43, 41, 41, /* 720 */ 41, 41, 40, 40, 39, 39, 39, 38, 463, 570, - /* 730 */ 498, 920, 570, 323, 514, 570, 222, 44, 45, 330, + /* 730 */ 498, 919, 570, 323, 514, 570, 222, 44, 45, 330, /* 740 */ 42, 42, 530, 530, 223, 393, 392, 43, 43, 43, /* 750 */ 43, 41, 41, 41, 41, 40, 40, 39, 39, 39, /* 760 */ 38, 44, 45, 330, 42, 42, 530, 530, 223, 540, @@ -324,7 +324,7 @@ static const YYACTIONTYPE yy_action[] = { /* 820 */ 110, 570, 218, 44, 45, 330, 42, 42, 530, 530, /* 830 */ 223, 27, 468, 43, 43, 43, 43, 41, 41, 41, /* 840 */ 41, 40, 40, 39, 39, 39, 38, 486, 547, 44, - /* 850 */ 45, 330, 42, 42, 530, 530, 223, 860, 212, 43, + /* 850 */ 45, 330, 42, 42, 530, 530, 223, 859, 212, 43, /* 860 */ 43, 43, 43, 41, 41, 41, 41, 40, 40, 39, /* 870 */ 39, 39, 38, 44, 47, 330, 42, 42, 530, 530, /* 880 */ 223, 535, 284, 43, 43, 43, 43, 41, 41, 41, @@ -339,7 +339,7 @@ static const YYACTIONTYPE yy_action[] = { /* 970 */ 520, 569, 395, 547, 569, 569, 23, 328, 213, 254, /* 980 */ 358, 275, 547, 75, 182, 32, 33, 310, 35, 569, /* 990 */ 361, 66, 164, 34, 160, 396, 398, 317, 397, 293, - /* 1000 */ 570, 7, 863, 516, 32, 33, 523, 570, 538, 336, + /* 1000 */ 570, 7, 862, 516, 32, 33, 523, 570, 538, 336, /* 1010 */ 335, 522, 34, 549, 548, 550, 25, 4, 289, 338, /* 1020 */ 7, 471, 395, 547, 12, 523, 568, 567, 336, 335, /* 1030 */ 302, 523, 549, 548, 550, 75, 570, 404, 338, 276, @@ -347,7 +347,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1050 */ 523, 328, 523, 570, 65, 531, 500, 13, 523, 101, /* 1060 */ 185, 184, 35, 570, 172, 171, 170, 197, 290, 503, /* 1070 */ 328, 523, 75, 570, 531, 301, 13, 523, 32, 33, - /* 1080 */ 380, 35, 10, 568, 567, 479, 34, 490, 540, 539, + /* 1080 */ 380, 35, 10, 568, 567, 479, 34, 489, 540, 539, /* 1090 */ 568, 567, 570, 325, 7, 211, 666, 32, 33, 523, /* 1100 */ 179, 423, 336, 335, 570, 34, 549, 548, 550, 80, /* 1110 */ 569, 570, 490, 7, 480, 489, 391, 570, 523, 568, @@ -356,7 +356,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1140 */ 312, 391, 202, 523, 296, 523, 568, 567, 531, 198, /* 1150 */ 13, 523, 569, 413, 345, 328, 568, 567, 532, 569, /* 1160 */ 474, 570, 307, 570, 523, 495, 35, 531, 53, 13, - /* 1170 */ 523, 496, 861, 456, 473, 568, 567, 570, 413, 532, + /* 1170 */ 523, 496, 860, 456, 473, 568, 567, 570, 413, 532, /* 1180 */ 570, 485, 32, 33, 407, 439, 10, 568, 567, 500, /* 1190 */ 34, 489, 730, 570, 568, 567, 431, 403, 7, 52, /* 1200 */ 568, 567, 570, 523, 582, 234, 336, 335, 338, 407, @@ -367,7 +367,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1250 */ 99, 35, 531, 124, 13, 523, 492, 368, 497, 148, /* 1260 */ 568, 567, 570, 568, 567, 82, 376, 32, 33, 350, /* 1270 */ 2, 570, 568, 567, 570, 34, 568, 567, 570, 73, - /* 1280 */ 179, 259, 570, 7, 863, 568, 567, 417, 523, 338, + /* 1280 */ 179, 259, 570, 7, 862, 568, 567, 417, 523, 338, /* 1290 */ 569, 336, 335, 22, 491, 549, 548, 550, 416, 69, /* 1300 */ 568, 567, 371, 522, 568, 567, 570, 415, 405, 568, /* 1310 */ 567, 261, 21, 523, 568, 567, 568, 567, 196, 368, @@ -411,8 +411,8 @@ static const YYACTIONTYPE yy_action[] = { /* 1690 */ 283, 402, 382, 117, 89, 87, 86, 116, 175, 280, /* 1700 */ 347, 349, 173, 233, 113, 126, 230, 509, 541, 470, /* 1710 */ 506, 537, 458, 282, 154, 410, 273, 190, 348, 438, - /* 1720 */ 467, 462, 329, 461, 578, 231, 62, 939, 37, 412, - /* 1730 */ 165, 433, 939, 939, 939, 327, 299, + /* 1720 */ 467, 462, 329, 461, 578, 231, 62, 938, 37, 412, + /* 1730 */ 165, 433, 938, 938, 938, 327, 299, }; static const YYCODETYPE yy_lookahead[] = { /* 0 */ 4, 8, 195, 10, 80, 25, 5, 14, 156, 202, @@ -664,61 +664,61 @@ static const short yy_reduce_ofst[] = { /* 250 */ 1242, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 589, 937, 937, 863, 904, 852, 852, 852, 937, 937, - /* 10 */ 730, 937, 852, 852, 852, 937, 852, 852, 852, 852, - /* 20 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, - /* 30 */ 852, 852, 852, 852, 852, 852, 852, 852, 852, 852, - /* 40 */ 852, 852, 852, 852, 852, 852, 852, 841, 724, 608, - /* 50 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - /* 60 */ 616, 720, 730, 937, 937, 937, 937, 790, 777, 768, - /* 70 */ 937, 800, 800, 783, 679, 937, 800, 756, 752, 937, - /* 80 */ 839, 937, 937, 731, 937, 839, 937, 937, 937, 937, - /* 90 */ 937, 791, 784, 778, 769, 937, 937, 937, 937, 937, - /* 100 */ 937, 937, 937, 937, 720, 720, 937, 720, 937, 937, - /* 110 */ 937, 840, 594, 937, 883, 937, 937, 937, 937, 937, - /* 120 */ 937, 605, 589, 937, 937, 937, 710, 736, 773, 761, - /* 130 */ 864, 857, 858, 856, 853, 853, 853, 853, 853, 844, - /* 140 */ 853, 853, 853, 853, 823, 816, 827, 815, 831, 826, - /* 150 */ 818, 817, 819, 937, 937, 937, 937, 723, 937, 937, - /* 160 */ 937, 820, 937, 789, 698, 937, 911, 693, 601, 618, - /* 170 */ 937, 937, 937, 937, 937, 937, 937, 772, 670, 756, - /* 180 */ 645, 738, 756, 859, 937, 937, 721, 708, 756, 935, - /* 190 */ 932, 935, 739, 683, 739, 739, 739, 681, 739, 683, - /* 200 */ 796, 739, 739, 683, 772, 739, 919, 916, 739, 739, - /* 210 */ 872, 681, 681, 681, 681, 662, 937, 872, 681, 739, - /* 220 */ 937, 739, 937, 853, 821, 752, 762, 748, 760, 757, - /* 230 */ 772, 937, 681, 681, 662, 681, 681, 665, 593, 593, + /* 0 */ 589, 936, 936, 862, 903, 851, 851, 851, 936, 936, + /* 10 */ 730, 936, 851, 851, 851, 936, 851, 851, 851, 851, + /* 20 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, + /* 30 */ 851, 851, 851, 851, 851, 851, 851, 851, 851, 851, + /* 40 */ 851, 851, 851, 851, 851, 851, 851, 841, 724, 608, + /* 50 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, + /* 60 */ 616, 720, 730, 936, 936, 936, 936, 790, 777, 768, + /* 70 */ 936, 800, 800, 783, 679, 936, 800, 756, 752, 936, + /* 80 */ 839, 936, 936, 731, 936, 839, 936, 936, 936, 936, + /* 90 */ 936, 791, 784, 778, 769, 936, 936, 936, 936, 936, + /* 100 */ 936, 936, 936, 936, 720, 720, 936, 720, 936, 936, + /* 110 */ 936, 840, 594, 936, 882, 936, 936, 936, 936, 936, + /* 120 */ 936, 605, 589, 936, 936, 936, 710, 736, 773, 761, + /* 130 */ 863, 856, 857, 855, 852, 852, 852, 852, 852, 852, + /* 140 */ 852, 852, 852, 852, 823, 816, 827, 815, 831, 826, + /* 150 */ 818, 817, 819, 936, 936, 936, 936, 723, 936, 936, + /* 160 */ 936, 820, 936, 789, 698, 936, 910, 693, 601, 618, + /* 170 */ 936, 936, 936, 936, 936, 936, 936, 772, 670, 756, + /* 180 */ 645, 738, 756, 858, 936, 936, 721, 708, 756, 934, + /* 190 */ 931, 934, 739, 683, 739, 739, 739, 681, 739, 683, + /* 200 */ 796, 739, 739, 683, 772, 739, 918, 915, 739, 739, + /* 210 */ 871, 681, 681, 681, 681, 662, 936, 871, 681, 739, + /* 220 */ 936, 739, 936, 852, 821, 752, 762, 748, 760, 757, + /* 230 */ 772, 936, 681, 681, 662, 681, 681, 665, 593, 593, /* 240 */ 593, 681, 593, 649, 649, 726, 830, 829, 828, 822, - /* 250 */ 629, 865, 937, 937, 937, 937, 937, 937, 937, 937, - /* 260 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 763, - /* 270 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 882, - /* 280 */ 937, 937, 937, 937, 937, 937, 915, 914, 937, 937, - /* 290 */ 937, 937, 937, 937, 937, 937, 937, 937, 903, 937, - /* 300 */ 937, 937, 937, 937, 937, 937, 937, 937, 937, 937, - /* 310 */ 937, 937, 937, 937, 937, 937, 937, 937, 758, 937, - /* 320 */ 862, 843, 701, 851, 937, 937, 937, 937, 937, 842, - /* 330 */ 854, 810, 937, 749, 937, 809, 806, 808, 611, 937, - /* 340 */ 937, 937, 937, 937, 586, 590, 936, 934, 933, 931, - /* 350 */ 891, 890, 889, 887, 896, 895, 894, 893, 892, 888, - /* 360 */ 886, 885, 884, 881, 787, 775, 766, 697, 930, 928, - /* 370 */ 929, 880, 878, 879, 696, 695, 692, 691, 690, 870, - /* 380 */ 869, 867, 866, 868, 604, 907, 910, 909, 908, 913, - /* 390 */ 912, 905, 918, 917, 922, 926, 925, 924, 923, 921, - /* 400 */ 902, 795, 794, 792, 797, 788, 793, 780, 786, 785, - /* 410 */ 776, 779, 684, 771, 767, 770, 906, 694, 603, 741, + /* 250 */ 629, 864, 936, 936, 936, 936, 936, 936, 936, 936, + /* 260 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 763, + /* 270 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 881, + /* 280 */ 936, 936, 936, 936, 936, 936, 914, 913, 936, 936, + /* 290 */ 936, 936, 936, 936, 936, 936, 936, 936, 902, 936, + /* 300 */ 936, 936, 936, 936, 936, 936, 936, 936, 936, 936, + /* 310 */ 936, 936, 936, 936, 936, 936, 936, 936, 758, 936, + /* 320 */ 861, 843, 701, 850, 936, 936, 936, 936, 936, 842, + /* 330 */ 853, 810, 936, 749, 936, 809, 806, 808, 611, 936, + /* 340 */ 936, 936, 936, 936, 586, 590, 935, 933, 932, 930, + /* 350 */ 890, 889, 888, 886, 895, 894, 893, 892, 891, 887, + /* 360 */ 885, 884, 883, 880, 787, 775, 766, 697, 929, 927, + /* 370 */ 928, 879, 877, 878, 696, 695, 692, 691, 690, 869, + /* 380 */ 868, 866, 865, 867, 604, 906, 909, 908, 907, 912, + /* 390 */ 911, 904, 917, 916, 921, 925, 924, 923, 922, 920, + /* 400 */ 901, 795, 794, 792, 797, 788, 793, 780, 786, 785, + /* 410 */ 776, 779, 684, 771, 767, 770, 905, 694, 603, 741, /* 420 */ 602, 607, 668, 669, 677, 680, 675, 678, 674, 673, /* 430 */ 672, 676, 671, 667, 610, 609, 623, 621, 622, 620, /* 440 */ 619, 617, 639, 638, 635, 637, 634, 636, 633, 632, - /* 450 */ 631, 630, 628, 661, 647, 646, 875, 877, 876, 874, - /* 460 */ 873, 654, 653, 659, 658, 657, 656, 652, 655, 651, + /* 450 */ 631, 630, 628, 661, 647, 646, 874, 876, 875, 873, + /* 460 */ 872, 654, 653, 659, 658, 657, 656, 652, 655, 651, /* 470 */ 650, 648, 644, 814, 813, 807, 835, 707, 706, 715, /* 480 */ 713, 712, 711, 747, 746, 745, 744, 743, 742, 735, /* 490 */ 733, 729, 728, 734, 732, 727, 719, 717, 718, 716, /* 500 */ 612, 802, 799, 801, 798, 737, 725, 722, 709, 751, - /* 510 */ 753, 855, 845, 834, 846, 740, 832, 833, 704, 703, - /* 520 */ 702, 854, 851, 847, 927, 838, 850, 837, 836, 825, - /* 530 */ 824, 812, 848, 849, 811, 750, 765, 899, 898, 901, - /* 540 */ 900, 897, 764, 625, 624, 705, 700, 699, 805, 804, + /* 510 */ 753, 854, 844, 834, 845, 740, 832, 833, 704, 703, + /* 520 */ 702, 853, 850, 846, 926, 838, 849, 837, 836, 825, + /* 530 */ 824, 812, 847, 848, 811, 750, 765, 898, 897, 900, + /* 540 */ 899, 896, 764, 625, 624, 705, 700, 699, 805, 804, /* 550 */ 803, 643, 755, 754, 642, 664, 663, 660, 641, 640, /* 560 */ 627, 626, 606, 600, 599, 598, 597, 615, 614, 613, /* 570 */ 611, 596, 595, 689, 688, 687, 686, 685, 682, 592, @@ -1258,99 +1258,98 @@ static const char *const yyRuleName[] = { /* 257 */ "exprx ::= expr not_opt BETWEEN expr AND", /* 258 */ "exprx ::= CASE case_operand case_exprlist case_else", /* 259 */ "exprx ::= expr not_opt IN LP exprlist", - /* 260 */ "exprx ::= LP expr", - /* 261 */ "exprx ::= expr not_opt IN ID_DB", - /* 262 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", - /* 263 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", - /* 264 */ "exprx ::= nm DOT ID_TAB|ID_COL", - /* 265 */ "exprx ::= nm DOT nm DOT ID_COL", - /* 266 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", - /* 267 */ "expr ::= exprx", - /* 268 */ "expr ::=", - /* 269 */ "not_opt ::=", - /* 270 */ "not_opt ::= NOT", - /* 271 */ "likeop ::= LIKE|GLOB", - /* 272 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", - /* 273 */ "case_exprlist ::= WHEN expr THEN expr", - /* 274 */ "case_else ::= ELSE expr", - /* 275 */ "case_else ::=", - /* 276 */ "case_operand ::= exprx", - /* 277 */ "case_operand ::=", - /* 278 */ "exprlist ::= nexprlist", - /* 279 */ "exprlist ::=", - /* 280 */ "nexprlist ::= nexprlist COMMA expr", - /* 281 */ "nexprlist ::= exprx", - /* 282 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf", - /* 283 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB", - /* 284 */ "cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW", - /* 285 */ "cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW", - /* 286 */ "uniqueflag ::= UNIQUE", - /* 287 */ "uniqueflag ::=", - /* 288 */ "idxlist_opt ::=", - /* 289 */ "idxlist_opt ::= LP idxlist RP", - /* 290 */ "idxlist ::= idxlist COMMA idxlist_single", - /* 291 */ "idxlist ::= idxlist_single", - /* 292 */ "idxlist_single ::= nm sortorder", - /* 293 */ "idxlist_single ::= ID_COL", - /* 294 */ "cmd ::= DROP INDEX fullname", - /* 295 */ "cmd ::= DROP INDEX nm DOT ID_IDX", - /* 296 */ "cmd ::= DROP INDEX ID_DB|ID_IDX", - /* 297 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING", - /* 298 */ "cmd ::= COPY orconf nm dbnm FROM nm", - /* 299 */ "cmd ::= VACUUM", - /* 300 */ "cmd ::= VACUUM nm", - /* 301 */ "cmd ::= PRAGMA ids", - /* 302 */ "cmd ::= PRAGMA nm EQ nmnum", - /* 303 */ "cmd ::= PRAGMA nm LP nmnum RP", - /* 304 */ "cmd ::= PRAGMA nm EQ minus_num", - /* 305 */ "cmd ::= PRAGMA nm LP minus_num RP", - /* 306 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", - /* 307 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", - /* 308 */ "nmnum ::= plus_num", - /* 309 */ "nmnum ::= nm", - /* 310 */ "nmnum ::= ON", - /* 311 */ "nmnum ::= DELETE", - /* 312 */ "nmnum ::= DEFAULT", - /* 313 */ "plus_num ::= PLUS number", - /* 314 */ "plus_num ::= number", - /* 315 */ "minus_num ::= MINUS number", - /* 316 */ "number ::= INTEGER", - /* 317 */ "number ::= FLOAT", - /* 318 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END", - /* 319 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause", - /* 320 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list", - /* 321 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB", - /* 322 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB", - /* 323 */ "cmd ::= CREATE temp TRIGGER ID_TRIG_NEW", - /* 324 */ "trigger_time ::= BEFORE", - /* 325 */ "trigger_time ::= AFTER", - /* 326 */ "trigger_time ::= INSTEAD OF", - /* 327 */ "trigger_time ::=", - /* 328 */ "trigger_event ::= DELETE", - /* 329 */ "trigger_event ::= INSERT", - /* 330 */ "trigger_event ::= UPDATE", - /* 331 */ "trigger_event ::= UPDATE OF inscollist", - /* 332 */ "foreach_clause ::=", - /* 333 */ "foreach_clause ::= FOR EACH ROW", - /* 334 */ "foreach_clause ::= FOR EACH STATEMENT", - /* 335 */ "when_clause ::=", - /* 336 */ "when_clause ::= WHEN expr", - /* 337 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", - /* 338 */ "trigger_cmd_list ::= trigger_cmd SEMI", - /* 339 */ "trigger_cmd ::= update_stmt", - /* 340 */ "trigger_cmd ::= insert_stmt", - /* 341 */ "trigger_cmd ::= delete_stmt", - /* 342 */ "trigger_cmd ::= select_stmt", - /* 343 */ "raisetype ::= ROLLBACK|ABORT|FAIL", - /* 344 */ "cmd ::= DROP TRIGGER fullname", - /* 345 */ "cmd ::= DROP TRIGGER nm DOT ID_TRIG", - /* 346 */ "cmd ::= DROP TRIGGER ID_DB|ID_TRIG", - /* 347 */ "cmd ::= ATTACH database_kw_opt ids AS ids key_opt", - /* 348 */ "key_opt ::=", - /* 349 */ "key_opt ::= USING ids", - /* 350 */ "database_kw_opt ::= DATABASE", - /* 351 */ "database_kw_opt ::=", - /* 352 */ "cmd ::= DETACH database_kw_opt nm", + /* 260 */ "exprx ::= expr not_opt IN ID_DB", + /* 261 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", + /* 262 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", + /* 263 */ "exprx ::= nm DOT ID_TAB|ID_COL", + /* 264 */ "exprx ::= nm DOT nm DOT ID_COL", + /* 265 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", + /* 266 */ "expr ::= exprx", + /* 267 */ "expr ::=", + /* 268 */ "not_opt ::=", + /* 269 */ "not_opt ::= NOT", + /* 270 */ "likeop ::= LIKE|GLOB", + /* 271 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", + /* 272 */ "case_exprlist ::= WHEN expr THEN expr", + /* 273 */ "case_else ::= ELSE expr", + /* 274 */ "case_else ::=", + /* 275 */ "case_operand ::= exprx", + /* 276 */ "case_operand ::=", + /* 277 */ "exprlist ::= nexprlist", + /* 278 */ "exprlist ::=", + /* 279 */ "nexprlist ::= nexprlist COMMA expr", + /* 280 */ "nexprlist ::= exprx", + /* 281 */ "cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf", + /* 282 */ "cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB", + /* 283 */ "cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW", + /* 284 */ "cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW", + /* 285 */ "uniqueflag ::= UNIQUE", + /* 286 */ "uniqueflag ::=", + /* 287 */ "idxlist_opt ::=", + /* 288 */ "idxlist_opt ::= LP idxlist RP", + /* 289 */ "idxlist ::= idxlist COMMA idxlist_single", + /* 290 */ "idxlist ::= idxlist_single", + /* 291 */ "idxlist_single ::= nm sortorder", + /* 292 */ "idxlist_single ::= ID_COL", + /* 293 */ "cmd ::= DROP INDEX fullname", + /* 294 */ "cmd ::= DROP INDEX nm DOT ID_IDX", + /* 295 */ "cmd ::= DROP INDEX ID_DB|ID_IDX", + /* 296 */ "cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING", + /* 297 */ "cmd ::= COPY orconf nm dbnm FROM nm", + /* 298 */ "cmd ::= VACUUM", + /* 299 */ "cmd ::= VACUUM nm", + /* 300 */ "cmd ::= PRAGMA ids", + /* 301 */ "cmd ::= PRAGMA nm EQ nmnum", + /* 302 */ "cmd ::= PRAGMA nm LP nmnum RP", + /* 303 */ "cmd ::= PRAGMA nm EQ minus_num", + /* 304 */ "cmd ::= PRAGMA nm LP minus_num RP", + /* 305 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", + /* 306 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", + /* 307 */ "nmnum ::= plus_num", + /* 308 */ "nmnum ::= nm", + /* 309 */ "nmnum ::= ON", + /* 310 */ "nmnum ::= DELETE", + /* 311 */ "nmnum ::= DEFAULT", + /* 312 */ "plus_num ::= PLUS number", + /* 313 */ "plus_num ::= number", + /* 314 */ "minus_num ::= MINUS number", + /* 315 */ "number ::= INTEGER", + /* 316 */ "number ::= FLOAT", + /* 317 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END", + /* 318 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause", + /* 319 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list", + /* 320 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB", + /* 321 */ "cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB", + /* 322 */ "cmd ::= CREATE temp TRIGGER ID_TRIG_NEW", + /* 323 */ "trigger_time ::= BEFORE", + /* 324 */ "trigger_time ::= AFTER", + /* 325 */ "trigger_time ::= INSTEAD OF", + /* 326 */ "trigger_time ::=", + /* 327 */ "trigger_event ::= DELETE", + /* 328 */ "trigger_event ::= INSERT", + /* 329 */ "trigger_event ::= UPDATE", + /* 330 */ "trigger_event ::= UPDATE OF inscollist", + /* 331 */ "foreach_clause ::=", + /* 332 */ "foreach_clause ::= FOR EACH ROW", + /* 333 */ "foreach_clause ::= FOR EACH STATEMENT", + /* 334 */ "when_clause ::=", + /* 335 */ "when_clause ::= WHEN expr", + /* 336 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", + /* 337 */ "trigger_cmd_list ::= trigger_cmd SEMI", + /* 338 */ "trigger_cmd ::= update_stmt", + /* 339 */ "trigger_cmd ::= insert_stmt", + /* 340 */ "trigger_cmd ::= delete_stmt", + /* 341 */ "trigger_cmd ::= select_stmt", + /* 342 */ "raisetype ::= ROLLBACK|ABORT|FAIL", + /* 343 */ "cmd ::= DROP TRIGGER fullname", + /* 344 */ "cmd ::= DROP TRIGGER nm DOT ID_TRIG", + /* 345 */ "cmd ::= DROP TRIGGER ID_DB|ID_TRIG", + /* 346 */ "cmd ::= ATTACH database_kw_opt ids AS ids key_opt", + /* 347 */ "key_opt ::=", + /* 348 */ "key_opt ::= USING ids", + /* 349 */ "database_kw_opt ::= DATABASE", + /* 350 */ "database_kw_opt ::=", + /* 351 */ "cmd ::= DETACH database_kw_opt nm", }; #endif /* NDEBUG */ @@ -2220,7 +2219,6 @@ static const struct { { 221, 5 }, { 221, 4 }, { 221, 5 }, - { 221, 2 }, { 221, 4 }, { 221, 6 }, { 221, 1 }, @@ -2396,10 +2394,10 @@ static void yy_reduce( {yygotominor.yy91 = new ParserStubExplain(true, false);} break; case 7: /* cmdx ::= cmd */ - case 339: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==339); - case 340: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==340); - case 341: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==341); - case 342: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==342); + case 338: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==338); + case 339: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==339); + case 340: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==340); + case 341: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==341); {yygotominor.yy203 = yymsp[0].minor.yy203;} break; case 8: /* cmd ::= BEGIN trans_opt onconf */ @@ -2467,8 +2465,8 @@ static void yy_reduce( case 16: /* cmd ::= CREATE temp TABLE fullname LP columnlist conslist_opt RP */ { yygotominor.yy203 = new SqliteCreateTable( - *(yymsp[-6].minor.yy226), false, + *(yymsp[-6].minor.yy226), yymsp[-4].minor.yy120->name1, yymsp[-4].minor.yy120->name2, *(yymsp[-2].minor.yy42), @@ -2484,8 +2482,8 @@ static void yy_reduce( case 17: /* cmd ::= CREATE temp TABLE fullname AS select */ { yygotominor.yy203 = new SqliteCreateTable( - *(yymsp[-4].minor.yy226), false, + *(yymsp[-4].minor.yy226), yymsp[-2].minor.yy120->name1, yymsp[-2].minor.yy120->name2, yymsp[0].minor.yy153 @@ -2502,7 +2500,7 @@ static void yy_reduce( break; case 19: /* cmd ::= CREATE temp TABLE ID_DB|ID_TAB_NEW */ case 110: /* cmd ::= CREATE temp VIEW ID_VIEW_NEW */ yytestcase(yyruleno==110); - case 323: /* cmd ::= CREATE temp TRIGGER ID_TRIG_NEW */ yytestcase(yyruleno==323); + case 322: /* cmd ::= CREATE temp TRIGGER ID_TRIG_NEW */ yytestcase(yyruleno==322); { yy_destructor(yypParser,157,&yymsp[-2].minor); } break; @@ -2599,9 +2597,9 @@ static void yy_reduce( break; case 40: /* signed ::= plus_num */ case 41: /* signed ::= minus_num */ yytestcase(yyruleno==41); - case 308: /* nmnum ::= plus_num */ yytestcase(yyruleno==308); - case 313: /* plus_num ::= PLUS number */ yytestcase(yyruleno==313); - case 314: /* plus_num ::= number */ yytestcase(yyruleno==314); + case 307: /* nmnum ::= plus_num */ yytestcase(yyruleno==307); + case 312: /* plus_num ::= PLUS number */ yytestcase(yyruleno==312); + case 313: /* plus_num ::= number */ yytestcase(yyruleno==313); {yygotominor.yy69 = yymsp[0].minor.yy69;} break; case 42: /* carglist ::= carglist ccons */ @@ -2849,15 +2847,15 @@ static void yy_reduce( } break; case 85: /* tconscomma ::= COMMA */ - case 270: /* not_opt ::= NOT */ yytestcase(yyruleno==270); - case 286: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==286); - case 350: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==350); + case 269: /* not_opt ::= NOT */ yytestcase(yyruleno==269); + case 285: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==285); + case 349: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==349); {yygotominor.yy291 = new bool(true);} break; case 86: /* tconscomma ::= */ - case 269: /* not_opt ::= */ yytestcase(yyruleno==269); - case 287: /* uniqueflag ::= */ yytestcase(yyruleno==287); - case 351: /* database_kw_opt ::= */ yytestcase(yyruleno==351); + case 268: /* not_opt ::= */ yytestcase(yyruleno==268); + case 286: /* uniqueflag ::= */ yytestcase(yyruleno==286); + case 350: /* database_kw_opt ::= */ yytestcase(yyruleno==350); {yygotominor.yy291 = new bool(false);} break; case 87: /* tcons ::= CONSTRAINT nm */ @@ -2961,15 +2959,15 @@ static void yy_reduce( case 187: /* delete_stmt ::= DELETE FROM ID_DB|ID_TAB */ yytestcase(yyruleno==187); case 195: /* update_stmt ::= UPDATE orconf nm DOT ID_TAB */ yytestcase(yyruleno==195); case 196: /* update_stmt ::= UPDATE orconf ID_DB|ID_TAB */ yytestcase(yyruleno==196); - case 264: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==264); - case 284: /* cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW */ yytestcase(yyruleno==284); - case 285: /* cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==285); - case 295: /* cmd ::= DROP INDEX nm DOT ID_IDX */ yytestcase(yyruleno==295); - case 296: /* cmd ::= DROP INDEX ID_DB|ID_IDX */ yytestcase(yyruleno==296); - case 306: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==306); - case 307: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==307); - case 345: /* cmd ::= DROP TRIGGER nm DOT ID_TRIG */ yytestcase(yyruleno==345); - case 346: /* cmd ::= DROP TRIGGER ID_DB|ID_TRIG */ yytestcase(yyruleno==346); + case 263: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==263); + case 283: /* cmd ::= CREATE uniqueflag INDEX nm DOT ID_IDX_NEW */ yytestcase(yyruleno==283); + case 284: /* cmd ::= CREATE uniqueflag INDEX ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==284); + case 294: /* cmd ::= DROP INDEX nm DOT ID_IDX */ yytestcase(yyruleno==294); + case 295: /* cmd ::= DROP INDEX ID_DB|ID_IDX */ yytestcase(yyruleno==295); + case 305: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==305); + case 306: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==306); + case 344: /* cmd ::= DROP TRIGGER nm DOT ID_TRIG */ yytestcase(yyruleno==344); + case 345: /* cmd ::= DROP TRIGGER ID_DB|ID_TRIG */ yytestcase(yyruleno==345); { yy_destructor(yypParser,156,&yymsp[-2].minor); } break; @@ -3341,11 +3339,11 @@ static void yy_reduce( {yygotominor.yy389 = new SqliteSortOrder(SqliteSortOrder::null);} break; case 173: /* groupby_opt ::= */ - case 279: /* exprlist ::= */ yytestcase(yyruleno==279); + case 278: /* exprlist ::= */ yytestcase(yyruleno==278); {yygotominor.yy231 = new ParserExprList();} break; case 174: /* groupby_opt ::= GROUP BY nexprlist */ - case 278: /* exprlist ::= nexprlist */ yytestcase(yyruleno==278); + case 277: /* exprlist ::= nexprlist */ yytestcase(yyruleno==277); {yygotominor.yy231 = yymsp[0].minor.yy231;} break; case 175: /* groupby_opt ::= GROUP BY */ @@ -3356,18 +3354,18 @@ static void yy_reduce( break; case 176: /* having_opt ::= */ case 188: /* where_opt ::= */ yytestcase(yyruleno==188); - case 275: /* case_else ::= */ yytestcase(yyruleno==275); - case 277: /* case_operand ::= */ yytestcase(yyruleno==277); - case 335: /* when_clause ::= */ yytestcase(yyruleno==335); - case 348: /* key_opt ::= */ yytestcase(yyruleno==348); + case 274: /* case_else ::= */ yytestcase(yyruleno==274); + case 276: /* case_operand ::= */ yytestcase(yyruleno==276); + case 334: /* when_clause ::= */ yytestcase(yyruleno==334); + case 347: /* key_opt ::= */ yytestcase(yyruleno==347); {yygotominor.yy192 = nullptr;} break; case 177: /* having_opt ::= HAVING expr */ case 189: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==189); - case 267: /* expr ::= exprx */ yytestcase(yyruleno==267); - case 274: /* case_else ::= ELSE expr */ yytestcase(yyruleno==274); - case 276: /* case_operand ::= exprx */ yytestcase(yyruleno==276); - case 336: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==336); + case 266: /* expr ::= exprx */ yytestcase(yyruleno==266); + case 273: /* case_else ::= ELSE expr */ yytestcase(yyruleno==273); + case 275: /* case_operand ::= exprx */ yytestcase(yyruleno==275); + case 335: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==335); {yygotominor.yy192 = yymsp[0].minor.yy192;} break; case 178: /* limit_opt ::= */ @@ -3919,68 +3917,60 @@ static void yy_reduce( parserContext->minorErrorBeforeNextToken("Syntax error"); } break; - case 260: /* exprx ::= LP expr */ -{ - yygotominor.yy192 = new SqliteExpr(); - yygotominor.yy192->initSubExpr(yymsp[0].minor.yy192); - objectForTokens = yygotominor.yy192; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 261: /* exprx ::= expr not_opt IN ID_DB */ + case 260: /* exprx ::= expr not_opt IN ID_DB */ { yy_destructor(yypParser,177,&yymsp[-3].minor); } break; - case 262: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ - case 263: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==263); + case 261: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ + case 262: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==262); { yy_destructor(yypParser,177,&yymsp[-5].minor); yy_destructor(yypParser,156,&yymsp[-2].minor); } break; - case 265: /* exprx ::= nm DOT nm DOT ID_COL */ - case 266: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==266); + case 264: /* exprx ::= nm DOT nm DOT ID_COL */ + case 265: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==265); { yy_destructor(yypParser,156,&yymsp[-4].minor); yy_destructor(yypParser,156,&yymsp[-2].minor); } break; - case 268: /* expr ::= */ + case 267: /* expr ::= */ { yygotominor.yy192 = new SqliteExpr(); objectForTokens = yygotominor.yy192; parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 271: /* likeop ::= LIKE|GLOB */ + case 270: /* likeop ::= LIKE|GLOB */ {yygotominor.yy41 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));} break; - case 272: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ + case 271: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ { yymsp[-4].minor.yy231->append(yymsp[-2].minor.yy192); yymsp[-4].minor.yy231->append(yymsp[0].minor.yy192); yygotominor.yy231 = yymsp[-4].minor.yy231; } break; - case 273: /* case_exprlist ::= WHEN expr THEN expr */ + case 272: /* case_exprlist ::= WHEN expr THEN expr */ { yygotominor.yy231 = new ParserExprList(); yygotominor.yy231->append(yymsp[-2].minor.yy192); yygotominor.yy231->append(yymsp[0].minor.yy192); } break; - case 280: /* nexprlist ::= nexprlist COMMA expr */ + case 279: /* nexprlist ::= nexprlist COMMA expr */ { yymsp[-2].minor.yy231->append(yymsp[0].minor.yy192); yygotominor.yy231 = yymsp[-2].minor.yy231; DONT_INHERIT_TOKENS("nexprlist"); } break; - case 281: /* nexprlist ::= exprx */ + case 280: /* nexprlist ::= exprx */ { yygotominor.yy231 = new ParserExprList(); yygotominor.yy231->append(yymsp[0].minor.yy192); } break; - case 282: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */ + case 281: /* cmd ::= CREATE uniqueflag INDEX nm ON nm dbnm LP idxlist RP onconf */ { yygotominor.yy203 = new SqliteCreateIndex( *(yymsp[-9].minor.yy291), @@ -4000,31 +3990,31 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 283: /* cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB */ + case 282: /* cmd ::= CREATE uniqueflag INDEX nm dbnm ON ID_TAB */ { yy_destructor(yypParser,156,&yymsp[-3].minor); } break; - case 288: /* idxlist_opt ::= */ + case 287: /* idxlist_opt ::= */ {yygotominor.yy63 = new ParserIndexedColumnList();} break; - case 289: /* idxlist_opt ::= LP idxlist RP */ + case 288: /* idxlist_opt ::= LP idxlist RP */ {yygotominor.yy63 = yymsp[-1].minor.yy63;} break; - case 290: /* idxlist ::= idxlist COMMA idxlist_single */ + case 289: /* idxlist ::= idxlist COMMA idxlist_single */ { yymsp[-2].minor.yy63->append(yymsp[0].minor.yy428); yygotominor.yy63 = yymsp[-2].minor.yy63; DONT_INHERIT_TOKENS("idxlist"); } break; - case 291: /* idxlist ::= idxlist_single */ + case 290: /* idxlist ::= idxlist_single */ { yygotominor.yy63 = new ParserIndexedColumnList(); yygotominor.yy63->append(yymsp[0].minor.yy428); } break; - case 292: /* idxlist_single ::= nm sortorder */ - case 293: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==293); + case 291: /* idxlist_single ::= nm sortorder */ + case 292: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==292); { SqliteIndexedColumn* obj = new SqliteIndexedColumn( @@ -4038,14 +4028,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy428; } break; - case 294: /* cmd ::= DROP INDEX fullname */ + case 293: /* cmd ::= DROP INDEX fullname */ { yygotominor.yy203 = new SqliteDropIndex(false, yymsp[0].minor.yy120->name1, yymsp[0].minor.yy120->name2); delete yymsp[0].minor.yy120; objectForTokens = yygotominor.yy203; } break; - case 297: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */ + case 296: /* cmd ::= COPY orconf nm dbnm FROM nm USING DELIMITERS STRING */ { yygotominor.yy203 = new SqliteCopy( *(yymsp[-7].minor.yy418), @@ -4061,7 +4051,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 298: /* cmd ::= COPY orconf nm dbnm FROM nm */ + case 297: /* cmd ::= COPY orconf nm dbnm FROM nm */ { yygotominor.yy203 = new SqliteCopy( *(yymsp[-4].minor.yy418), @@ -4076,28 +4066,28 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 299: /* cmd ::= VACUUM */ + case 298: /* cmd ::= VACUUM */ { yygotominor.yy203 = new SqliteVacuum(); objectForTokens = yygotominor.yy203; } break; - case 300: /* cmd ::= VACUUM nm */ + case 299: /* cmd ::= VACUUM nm */ { yygotominor.yy203 = new SqliteVacuum(*(yymsp[0].minor.yy319)); delete yymsp[0].minor.yy319; objectForTokens = yygotominor.yy203; } break; - case 301: /* cmd ::= PRAGMA ids */ + case 300: /* cmd ::= PRAGMA ids */ { yygotominor.yy203 = new SqlitePragma(*(yymsp[0].minor.yy319), QString::null); delete yymsp[0].minor.yy319; objectForTokens = yygotominor.yy203; } break; - case 302: /* cmd ::= PRAGMA nm EQ nmnum */ - case 304: /* cmd ::= PRAGMA nm EQ minus_num */ yytestcase(yyruleno==304); + case 301: /* cmd ::= PRAGMA nm EQ nmnum */ + case 303: /* cmd ::= PRAGMA nm EQ minus_num */ yytestcase(yyruleno==303); { yygotominor.yy203 = new SqlitePragma(*(yymsp[-2].minor.yy319), QString::null, *(yymsp[0].minor.yy69), true); delete yymsp[-2].minor.yy319; @@ -4105,8 +4095,8 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 303: /* cmd ::= PRAGMA nm LP nmnum RP */ - case 305: /* cmd ::= PRAGMA nm LP minus_num RP */ yytestcase(yyruleno==305); + case 302: /* cmd ::= PRAGMA nm LP nmnum RP */ + case 304: /* cmd ::= PRAGMA nm LP minus_num RP */ yytestcase(yyruleno==304); { yygotominor.yy203 = new SqlitePragma(*(yymsp[-3].minor.yy319), QString::null, *(yymsp[-1].minor.yy69), false); delete yymsp[-3].minor.yy319; @@ -4114,18 +4104,18 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 309: /* nmnum ::= nm */ + case 308: /* nmnum ::= nm */ { yygotominor.yy69 = new QVariant(*(yymsp[0].minor.yy319)); delete yymsp[0].minor.yy319; } break; - case 310: /* nmnum ::= ON */ - case 311: /* nmnum ::= DELETE */ yytestcase(yyruleno==311); - case 312: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==312); + case 309: /* nmnum ::= ON */ + case 310: /* nmnum ::= DELETE */ yytestcase(yyruleno==310); + case 311: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==311); {yygotominor.yy69 = new QVariant(yymsp[0].minor.yy0->value);} break; - case 315: /* minus_num ::= MINUS number */ + case 314: /* minus_num ::= MINUS number */ { if (yymsp[0].minor.yy69->type() == QVariant::Double) *(yymsp[0].minor.yy69) = -(yymsp[0].minor.yy69->toDouble()); @@ -4137,13 +4127,13 @@ static void yy_reduce( yygotominor.yy69 = yymsp[0].minor.yy69; } break; - case 316: /* number ::= INTEGER */ + case 315: /* number ::= INTEGER */ {yygotominor.yy69 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());} break; - case 317: /* number ::= FLOAT */ + case 316: /* number ::= FLOAT */ {yygotominor.yy69 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());} break; - case 318: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END */ + case 317: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list END */ { yygotominor.yy203 = new SqliteCreateTrigger( *(yymsp[-12].minor.yy226), @@ -4168,7 +4158,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 319: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */ + case 318: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause */ { QList<SqliteQuery *> CL; @@ -4195,7 +4185,7 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 320: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list */ + case 319: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm dbnm foreach_clause when_clause BEGIN trigger_cmd_list */ { yygotominor.yy203 = new SqliteCreateTrigger( *(yymsp[-11].minor.yy226), @@ -4221,14 +4211,14 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 321: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB */ + case 320: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON ID_TAB|ID_DB */ { yy_destructor(yypParser,157,&yymsp[-6].minor); yy_destructor(yypParser,156,&yymsp[-4].minor); yy_destructor(yypParser,232,&yymsp[-3].minor); yy_destructor(yypParser,233,&yymsp[-2].minor); } break; - case 322: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB */ + case 321: /* cmd ::= CREATE temp TRIGGER nm trigger_time trigger_event ON nm DOT ID_TAB */ { yy_destructor(yypParser,157,&yymsp[-8].minor); yy_destructor(yypParser,156,&yymsp[-6].minor); yy_destructor(yypParser,232,&yymsp[-5].minor); @@ -4236,76 +4226,76 @@ static void yy_reduce( yy_destructor(yypParser,156,&yymsp[-2].minor); } break; - case 324: /* trigger_time ::= BEFORE */ + case 323: /* trigger_time ::= BEFORE */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);} break; - case 325: /* trigger_time ::= AFTER */ + case 324: /* trigger_time ::= AFTER */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);} break; - case 326: /* trigger_time ::= INSTEAD OF */ + case 325: /* trigger_time ::= INSTEAD OF */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);} break; - case 327: /* trigger_time ::= */ + case 326: /* trigger_time ::= */ {yygotominor.yy372 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);} break; - case 328: /* trigger_event ::= DELETE */ + case 327: /* trigger_event ::= DELETE */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE); objectForTokens = yygotominor.yy151; } break; - case 329: /* trigger_event ::= INSERT */ + case 328: /* trigger_event ::= INSERT */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT); objectForTokens = yygotominor.yy151; } break; - case 330: /* trigger_event ::= UPDATE */ + case 329: /* trigger_event ::= UPDATE */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE); objectForTokens = yygotominor.yy151; } break; - case 331: /* trigger_event ::= UPDATE OF inscollist */ + case 330: /* trigger_event ::= UPDATE OF inscollist */ { yygotominor.yy151 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy207)); delete yymsp[0].minor.yy207; objectForTokens = yygotominor.yy151; } break; - case 332: /* foreach_clause ::= */ + case 331: /* foreach_clause ::= */ {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);} break; - case 333: /* foreach_clause ::= FOR EACH ROW */ + case 332: /* foreach_clause ::= FOR EACH ROW */ {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);} break; - case 334: /* foreach_clause ::= FOR EACH STATEMENT */ + case 333: /* foreach_clause ::= FOR EACH STATEMENT */ {yygotominor.yy83 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_STATEMENT);} break; - case 337: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ + case 336: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { yymsp[-2].minor.yy270->append(yymsp[-1].minor.yy203); yygotominor.yy270 = yymsp[-2].minor.yy270; DONT_INHERIT_TOKENS("trigger_cmd_list"); } break; - case 338: /* trigger_cmd_list ::= trigger_cmd SEMI */ + case 337: /* trigger_cmd_list ::= trigger_cmd SEMI */ { yygotominor.yy270 = new ParserQueryList(); yygotominor.yy270->append(yymsp[-1].minor.yy203); } break; - case 343: /* raisetype ::= ROLLBACK|ABORT|FAIL */ + case 342: /* raisetype ::= ROLLBACK|ABORT|FAIL */ {yygotominor.yy0 = yymsp[0].minor.yy0;} break; - case 344: /* cmd ::= DROP TRIGGER fullname */ + case 343: /* cmd ::= DROP TRIGGER fullname */ { yygotominor.yy203 = new SqliteDropTrigger(false, yymsp[0].minor.yy120->name1, yymsp[0].minor.yy120->name2); delete yymsp[0].minor.yy120; objectForTokens = yygotominor.yy203; } break; - case 347: /* cmd ::= ATTACH database_kw_opt ids AS ids key_opt */ + case 346: /* cmd ::= ATTACH database_kw_opt ids AS ids key_opt */ { SqliteExpr* e1 = new SqliteExpr(); SqliteExpr* e2 = new SqliteExpr(); @@ -4318,7 +4308,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy203; } break; - case 349: /* key_opt ::= USING ids */ + case 348: /* key_opt ::= USING ids */ { SqliteExpr* e = new SqliteExpr(); e->initLiteral(*(yymsp[0].minor.yy319)); @@ -4326,7 +4316,7 @@ static void yy_reduce( yygotominor.yy192 = e; } break; - case 352: /* cmd ::= DETACH database_kw_opt nm */ + case 351: /* cmd ::= DETACH database_kw_opt nm */ { SqliteExpr* e = new SqliteExpr(); e->initLiteral(*(yymsp[0].minor.yy319)); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y index 2fd9c0d..d6ee4f7 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite2_parse.y @@ -184,8 +184,8 @@ cmd(X) ::= CREATE temp(T) TABLE LP columnlist(CL) conslist_opt(CS) RP. { X = new SqliteCreateTable( - *(T), false, + *(T), N->name1, N->name2, *(CL), @@ -201,8 +201,8 @@ cmd(X) ::= CREATE temp(T) TABLE fullname(N) AS select(S). { X = new SqliteCreateTable( - *(T), false, + *(T), N->name1, N->name2, S @@ -1586,12 +1586,15 @@ exprx(X) ::= expr(E) not_opt(N) IN LP objectForTokens = X; parserContext->minorErrorBeforeNextToken("Syntax error"); } +/* +This introduces premature reduce for LP-expr and causes bug #2755 exprx(X) ::= LP expr(E). { X = new SqliteExpr(); X->initSubExpr(E); objectForTokens = X; parserContext->minorErrorBeforeNextToken("Syntax error"); } +*/ exprx ::= expr not_opt IN ID_DB. [IN] {} exprx ::= expr not_opt IN nm DOT diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp index 7e4f3c0..646c533 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.cpp @@ -170,7 +170,7 @@ typedef union { #define sqlite3_parseARG_FETCH ParserContext* parserContext = yypParser->parserContext #define sqlite3_parseARG_STORE yypParser->parserContext = parserContext #define YYNSTATE 724 -#define YYNRULE 425 +#define YYNRULE 424 #define YYFALLBACK 1 #define YY_NO_ACTION (YYNSTATE+YYNRULE+2) #define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) @@ -246,22 +246,22 @@ static const YYMINORTYPE yyzerominor = { 0 }; static const YYACTIONTYPE yy_action[] = { /* 0 */ 431, 48, 48, 47, 47, 47, 46, 216, 716, 339, /* 10 */ 643, 425, 51, 51, 51, 51, 44, 49, 49, 49, - /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1027, - /* 30 */ 1027, 643, 131, 580, 51, 51, 51, 51, 411, 49, + /* 20 */ 49, 48, 48, 47, 47, 47, 46, 216, 721, 1026, + /* 30 */ 1026, 643, 131, 580, 51, 51, 51, 51, 411, 49, /* 40 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216, - /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1027, 1027, - /* 60 */ 41, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 70 */ 1027, 1027, 563, 1027, 1027, 1027, 1027, 38, 39, 1027, - /* 80 */ 1027, 1027, 1027, 1027, 40, 431, 528, 385, 716, 595, + /* 50 */ 579, 81, 58, 643, 157, 685, 301, 282, 1026, 1026, + /* 60 */ 41, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 70 */ 1026, 1026, 563, 1026, 1026, 1026, 1026, 38, 39, 1026, + /* 80 */ 1026, 1026, 1026, 1026, 40, 431, 528, 385, 716, 595, /* 90 */ 594, 280, 4, 377, 716, 630, 425, 642, 608, 422, /* 100 */ 12, 134, 687, 429, 562, 609, 483, 690, 331, 279, /* 110 */ 714, 713, 564, 565, 642, 689, 688, 687, 235, 506, /* 120 */ 60, 320, 610, 411, 47, 47, 47, 46, 216, 122, - /* 130 */ 243, 213, 247, 59, 1143, 1143, 486, 609, 607, 603, + /* 130 */ 243, 213, 247, 59, 1142, 1142, 486, 609, 607, 603, /* 140 */ 685, 306, 485, 584, 716, 41, 507, 509, 642, 508, /* 150 */ 676, 9, 642, 144, 95, 281, 379, 276, 378, 132, /* 160 */ 297, 716, 38, 39, 601, 200, 199, 7, 355, 40, - /* 170 */ 884, 307, 1135, 274, 249, 716, 17, 4, 884, 1135, + /* 170 */ 884, 307, 1134, 274, 249, 716, 17, 4, 884, 1134, /* 180 */ 56, 717, 642, 431, 422, 884, 329, 687, 429, 716, /* 190 */ 687, 643, 690, 687, 425, 690, 714, 713, 690, 642, /* 200 */ 689, 688, 687, 689, 688, 687, 689, 688, 687, 98, @@ -269,16 +269,16 @@ static const YYACTIONTYPE yy_action[] = { /* 220 */ 716, 411, 239, 884, 303, 582, 512, 581, 884, 884, /* 230 */ 884, 884, 884, 642, 643, 676, 9, 642, 685, 217, /* 240 */ 245, 673, 102, 41, 287, 300, 714, 713, 67, 302, - /* 250 */ 148, 307, 1134, 151, 306, 484, 81, 715, 97, 1134, + /* 250 */ 148, 307, 1133, 151, 306, 484, 81, 715, 97, 1133, /* 260 */ 38, 39, 551, 714, 713, 771, 130, 40, 946, 376, /* 270 */ 373, 372, 447, 46, 216, 4, 946, 714, 713, 334, /* 280 */ 642, 682, 422, 946, 606, 687, 429, 371, 448, 447, /* 290 */ 690, 714, 713, 304, 265, 146, 267, 642, 689, 688, /* 300 */ 687, 287, 68, 677, 691, 255, 362, 259, 359, 692, - /* 310 */ 1028, 1028, 682, 946, 715, 946, 946, 447, 698, 234, + /* 310 */ 1027, 1027, 682, 946, 715, 946, 946, 447, 698, 234, /* 320 */ 386, 715, 714, 713, 773, 651, 946, 946, 946, 946, /* 330 */ 110, 642, 317, 676, 9, 642, 222, 677, 299, 52, - /* 340 */ 53, 426, 289, 1028, 1028, 675, 675, 50, 50, 51, + /* 340 */ 53, 426, 289, 1027, 1027, 675, 675, 50, 50, 51, /* 350 */ 51, 51, 51, 716, 49, 49, 49, 49, 48, 48, /* 360 */ 47, 47, 47, 46, 216, 431, 428, 340, 716, 335, /* 370 */ 671, 670, 287, 283, 716, 138, 425, 209, 219, 430, @@ -293,27 +293,27 @@ static const YYACTIONTYPE yy_action[] = { /* 460 */ 92, 143, 642, 358, 422, 931, 674, 687, 429, 14, /* 470 */ 714, 713, 690, 131, 456, 551, 714, 713, 953, 642, /* 480 */ 689, 688, 687, 668, 667, 210, 593, 458, 384, 457, - /* 490 */ 576, 88, 1028, 1028, 13, 931, 672, 931, 931, 54, + /* 490 */ 576, 88, 1027, 1027, 13, 931, 672, 931, 931, 54, /* 500 */ 575, 678, 42, 368, 37, 401, 35, 381, 931, 1, /* 510 */ 931, 931, 641, 642, 634, 676, 9, 642, 661, 714, - /* 520 */ 713, 52, 53, 426, 289, 1028, 1028, 675, 675, 50, + /* 520 */ 713, 52, 53, 426, 289, 1027, 1027, 675, 675, 50, /* 530 */ 50, 51, 51, 51, 51, 660, 49, 49, 49, 49, /* 540 */ 48, 48, 47, 47, 47, 46, 216, 657, 648, 714, /* 550 */ 713, 496, 542, 569, 714, 713, 714, 713, 656, 691, /* 560 */ 543, 614, 320, 30, 692, 27, 716, 585, 274, 682, - /* 570 */ 160, 1028, 1028, 426, 289, 693, 613, 675, 675, 50, + /* 570 */ 160, 1027, 1027, 426, 289, 693, 613, 675, 675, 50, /* 580 */ 50, 51, 51, 51, 51, 398, 49, 49, 49, 49, - /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1026, 1026, 81, - /* 600 */ 52, 53, 426, 289, 1028, 1028, 675, 675, 50, 50, + /* 590 */ 48, 48, 47, 47, 47, 46, 216, 1025, 1025, 81, + /* 600 */ 52, 53, 426, 289, 1027, 1027, 675, 675, 50, 50, /* 610 */ 51, 51, 51, 51, 496, 49, 49, 49, 49, 48, - /* 620 */ 48, 47, 47, 47, 46, 216, 1026, 1026, 1026, 1026, - /* 630 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 640 */ 716, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, - /* 650 */ 1026, 1026, 1028, 1028, 357, 49, 49, 49, 49, 48, + /* 620 */ 48, 47, 47, 47, 46, 216, 1025, 1025, 1025, 1025, + /* 630 */ 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + /* 640 */ 716, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, 1025, + /* 650 */ 1025, 1025, 1027, 1027, 357, 49, 49, 49, 49, 48, /* 660 */ 48, 47, 47, 47, 46, 216, 288, 552, 714, 713, /* 670 */ 495, 682, 298, 662, 346, 153, 538, 69, 694, 715, - /* 680 */ 715, 52, 53, 426, 289, 1028, 1028, 675, 675, 50, - /* 690 */ 50, 51, 51, 51, 51, 1095, 49, 49, 49, 49, + /* 680 */ 715, 52, 53, 426, 289, 1027, 1027, 675, 675, 50, + /* 690 */ 50, 51, 51, 51, 51, 1094, 49, 49, 49, 49, /* 700 */ 48, 48, 47, 47, 47, 46, 216, 52, 53, 426, /* 710 */ 289, 418, 511, 675, 675, 50, 50, 51, 51, 51, /* 720 */ 51, 159, 49, 49, 49, 49, 48, 48, 47, 47, @@ -321,12 +321,12 @@ static const YYACTIONTYPE yy_action[] = { /* 740 */ 215, 650, 714, 713, 81, 52, 53, 426, 289, 954, /* 750 */ 414, 675, 675, 50, 50, 51, 51, 51, 51, 397, /* 760 */ 49, 49, 49, 49, 48, 48, 47, 47, 47, 46, - /* 770 */ 216, 158, 1095, 21, 716, 627, 459, 716, 1080, 716, - /* 780 */ 647, 1046, 140, 89, 716, 1150, 154, 435, 2, 715, + /* 770 */ 216, 158, 1094, 21, 716, 627, 459, 716, 1079, 716, + /* 780 */ 647, 1045, 140, 89, 716, 1149, 154, 435, 2, 715, /* 790 */ 424, 671, 670, 396, 460, 461, 954, 52, 53, 426, /* 800 */ 289, 573, 716, 675, 675, 50, 50, 51, 51, 51, /* 810 */ 51, 321, 49, 49, 49, 49, 48, 48, 47, 47, - /* 820 */ 47, 46, 216, 431, 1109, 81, 206, 205, 204, 52, + /* 820 */ 47, 46, 216, 431, 1108, 81, 206, 205, 204, 52, /* 830 */ 53, 426, 289, 716, 425, 675, 675, 50, 50, 51, /* 840 */ 51, 51, 51, 344, 49, 49, 49, 49, 48, 48, /* 850 */ 47, 47, 47, 46, 216, 597, 715, 666, 600, 462, @@ -334,17 +334,17 @@ static const YYACTIONTYPE yy_action[] = { /* 870 */ 667, 609, 724, 434, 81, 656, 714, 713, 685, 714, /* 880 */ 713, 714, 713, 41, 528, 272, 714, 713, 610, 349, /* 890 */ 528, 450, 89, 677, 12, 633, 633, 338, 636, 609, - /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1143, 1143, + /* 900 */ 38, 39, 649, 609, 714, 713, 716, 40, 1142, 1142, /* 910 */ 716, 524, 682, 581, 716, 4, 610, 468, 60, 450, /* 920 */ 642, 208, 422, 506, 60, 687, 429, 677, 32, 109, /* 930 */ 690, 609, 500, 501, 352, 714, 713, 642, 689, 688, /* 940 */ 687, 428, 900, 900, 467, 466, 552, 465, 421, 383, - /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1143, 1143, 715, + /* 950 */ 507, 509, 142, 508, 430, 440, 69, 1142, 1142, 715, /* 960 */ 444, 722, 686, 182, 646, 714, 713, 645, 231, 230, /* 970 */ 437, 642, 356, 676, 9, 642, 417, 444, 52, 53, /* 980 */ 426, 289, 91, 91, 675, 675, 50, 50, 51, 51, /* 990 */ 51, 51, 644, 49, 49, 49, 49, 48, 48, 47, - /* 1000 */ 47, 47, 46, 216, 1035, 444, 668, 667, 714, 713, + /* 1000 */ 47, 47, 46, 216, 1034, 444, 668, 667, 714, 713, /* 1010 */ 91, 453, 714, 713, 682, 641, 714, 713, 324, 202, /* 1020 */ 52, 53, 426, 289, 446, 680, 675, 675, 50, 50, /* 1030 */ 51, 51, 51, 51, 639, 49, 49, 49, 49, 48, @@ -367,10 +367,10 @@ static const YYACTIONTYPE yy_action[] = { /* 1200 */ 47, 47, 47, 46, 216, 532, 8, 517, 696, 87, /* 1210 */ 137, 52, 53, 426, 289, 22, 557, 675, 675, 50, /* 1220 */ 50, 51, 51, 51, 51, 135, 49, 49, 49, 49, - /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1110, 91, + /* 1230 */ 48, 48, 47, 47, 47, 46, 216, 81, 1109, 91, /* 1240 */ 716, 91, 52, 53, 426, 289, 615, 722, 675, 675, /* 1250 */ 50, 50, 51, 51, 51, 51, 620, 49, 49, 49, - /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1108, + /* 1260 */ 49, 48, 48, 47, 47, 47, 46, 216, 604, 1107, /* 1270 */ 99, 504, 390, 491, 52, 53, 426, 289, 714, 713, /* 1280 */ 675, 675, 50, 50, 51, 51, 51, 51, 682, 49, /* 1290 */ 49, 49, 49, 48, 48, 47, 47, 47, 46, 216, @@ -395,7 +395,7 @@ static const YYACTIONTYPE yy_action[] = { /* 1480 */ 530, 714, 713, 651, 715, 714, 713, 38, 39, 64, /* 1490 */ 18, 399, 370, 431, 40, 129, 716, 366, 326, 534, /* 1500 */ 534, 63, 4, 270, 425, 714, 713, 642, 475, 422, - /* 1510 */ 316, 530, 714, 429, 716, 714, 713, 690, 279, 716, + /* 1510 */ 316, 530, 687, 429, 716, 714, 713, 690, 279, 716, /* 1520 */ 533, 716, 156, 624, 642, 689, 688, 687, 525, 716, /* 1530 */ 125, 411, 519, 714, 713, 514, 715, 714, 713, 3, /* 1540 */ 714, 713, 714, 713, 79, 525, 682, 85, 685, 519, @@ -408,9 +408,9 @@ static const YYACTIONTYPE yy_action[] = { /* 1610 */ 687, 438, 428, 411, 497, 62, 714, 713, 430, 119, /* 1620 */ 254, 714, 713, 714, 713, 430, 686, 181, 438, 704, /* 1630 */ 685, 714, 713, 686, 163, 41, 251, 629, 311, 161, - /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1036, 682, 531, + /* 1640 */ 138, 642, 715, 676, 9, 642, 455, 1035, 682, 531, /* 1650 */ 701, 702, 38, 39, 152, 641, 498, 469, 431, 40, - /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1038, 425, + /* 1660 */ 499, 478, 699, 428, 715, 714, 713, 4, 1037, 425, /* 1670 */ 714, 713, 642, 416, 422, 715, 430, 687, 429, 641, /* 1680 */ 428, 350, 690, 619, 686, 172, 641, 494, 454, 642, /* 1690 */ 689, 688, 687, 430, 111, 428, 411, 286, 337, 714, @@ -794,59 +794,59 @@ static const short yy_reduce_ofst[] = { /* 310 */ 1573, 1506, 1462, 1462, 1462, 1540, }; static const YYACTIONTYPE yy_default[] = { - /* 0 */ 729, 1038, 1143, 1143, 1027, 1027, 1027, 1143, 1027, 1027, - /* 10 */ 1027, 1027, 900, 1149, 1149, 1149, 1027, 1027, 1027, 1027, - /* 20 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 30 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 40 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, - /* 50 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1015, 1149, 894, - /* 60 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 774, - /* 70 */ 890, 900, 1149, 1149, 1149, 1149, 1149, 962, 949, 940, - /* 80 */ 1149, 1149, 1149, 972, 972, 955, 842, 972, 1149, 1149, - /* 90 */ 1149, 1149, 928, 928, 1028, 1149, 766, 1113, 1118, 1013, - /* 100 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 901, 1149, - /* 110 */ 1013, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, - /* 120 */ 1149, 963, 956, 950, 941, 1149, 1149, 1149, 1149, 1149, - /* 130 */ 1149, 1149, 1149, 1149, 1149, 890, 890, 1149, 1149, 890, - /* 140 */ 1149, 1149, 1149, 1014, 1149, 1149, 763, 1149, 1149, 1149, - /* 150 */ 735, 1059, 1149, 1149, 729, 1143, 1143, 1143, 1143, 1143, - /* 160 */ 1143, 1136, 880, 935, 906, 945, 933, 937, 1039, 1032, - /* 170 */ 1033, 1031, 936, 1028, 1028, 1028, 1028, 1028, 1028, 1028, - /* 180 */ 1028, 1028, 1018, 1028, 1028, 1028, 1028, 1028, 988, 1000, - /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1149, 1149, - /* 200 */ 1149, 992, 1149, 1149, 1149, 1149, 1149, 893, 1149, 1149, - /* 210 */ 864, 1149, 1087, 1149, 1149, 776, 1149, 878, 738, 944, - /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1034, 928, - /* 230 */ 1149, 1149, 993, 891, 878, 1127, 909, 909, 909, 1112, - /* 240 */ 1112, 909, 909, 855, 909, 855, 909, 855, 909, 855, + /* 0 */ 729, 1037, 1142, 1142, 1026, 1026, 1026, 1142, 1026, 1026, + /* 10 */ 1026, 1026, 900, 1148, 1148, 1148, 1026, 1026, 1026, 1026, + /* 20 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 30 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 40 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1026, + /* 50 */ 1026, 1026, 1026, 1026, 1026, 1026, 1026, 1015, 1148, 894, + /* 60 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 774, + /* 70 */ 890, 900, 1148, 1148, 1148, 1148, 1148, 962, 949, 940, + /* 80 */ 1148, 1148, 1148, 972, 972, 955, 842, 972, 1148, 1148, + /* 90 */ 1148, 1148, 928, 928, 1027, 1148, 766, 1112, 1117, 1013, + /* 100 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 901, 1148, + /* 110 */ 1013, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + /* 120 */ 1148, 963, 956, 950, 941, 1148, 1148, 1148, 1148, 1148, + /* 130 */ 1148, 1148, 1148, 1148, 1148, 890, 890, 1148, 1148, 890, + /* 140 */ 1148, 1148, 1148, 1014, 1148, 1148, 763, 1148, 1148, 1148, + /* 150 */ 735, 1058, 1148, 1148, 729, 1142, 1142, 1142, 1142, 1142, + /* 160 */ 1142, 1135, 880, 935, 906, 945, 933, 937, 1038, 1031, + /* 170 */ 1032, 1030, 936, 1027, 1027, 1027, 1027, 1027, 1027, 1027, + /* 180 */ 1027, 1027, 1027, 1027, 1027, 1027, 1027, 1027, 988, 1000, + /* 190 */ 987, 995, 1004, 999, 996, 990, 989, 991, 1148, 1148, + /* 200 */ 1148, 992, 1148, 1148, 1148, 1148, 1148, 893, 1148, 1148, + /* 210 */ 864, 1148, 1086, 1148, 1148, 776, 1148, 878, 738, 944, + /* 220 */ 918, 918, 809, 833, 798, 928, 918, 908, 1033, 928, + /* 230 */ 1148, 1148, 993, 891, 878, 1126, 909, 909, 909, 1111, + /* 240 */ 1111, 909, 909, 855, 909, 855, 909, 855, 909, 855, /* 250 */ 909, 760, 944, 909, 760, 846, 968, 909, 909, 846, - /* 260 */ 944, 909, 1094, 1092, 909, 760, 909, 760, 909, 1047, - /* 270 */ 844, 844, 844, 844, 825, 1047, 844, 809, 844, 825, - /* 280 */ 844, 844, 1149, 909, 909, 1149, 1047, 1053, 1047, 1028, - /* 290 */ 994, 934, 922, 932, 929, 944, 1149, 757, 828, 760, - /* 300 */ 746, 746, 734, 734, 734, 734, 1140, 1140, 1136, 811, - /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1040, 1149, 1149, 1149, - /* 320 */ 1149, 1149, 1149, 1061, 1149, 1149, 1149, 1149, 1149, 1149, - /* 330 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 730, 1149, - /* 340 */ 1149, 1149, 1149, 1149, 1130, 1149, 1149, 1149, 1149, 1149, - /* 350 */ 1149, 1091, 1090, 1149, 1149, 1149, 1149, 1149, 1149, 1149, - /* 360 */ 1149, 1149, 1149, 1079, 1149, 1149, 1149, 1149, 1149, 1149, - /* 370 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, - /* 380 */ 1149, 1149, 1149, 1149, 867, 869, 1149, 1149, 1149, 868, - /* 390 */ 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 1149, 930, - /* 400 */ 1149, 923, 1149, 1037, 1149, 1017, 1026, 1149, 1149, 1149, - /* 410 */ 1149, 1149, 1016, 1149, 1149, 1149, 1145, 1149, 1149, 1149, - /* 420 */ 1144, 1149, 1149, 1149, 1149, 1149, 1029, 980, 1149, 979, - /* 430 */ 978, 769, 1149, 744, 1149, 726, 731, 1129, 1126, 1128, - /* 440 */ 1123, 1124, 1122, 1125, 1121, 1119, 1120, 1117, 1115, 1114, - /* 450 */ 1116, 1111, 1107, 1067, 1065, 1063, 1072, 1071, 1070, 1069, - /* 460 */ 1068, 1064, 1062, 1066, 1060, 959, 947, 938, 862, 1106, - /* 470 */ 1104, 1105, 1058, 1056, 1057, 861, 860, 859, 854, 853, - /* 480 */ 852, 851, 1133, 1142, 1141, 1139, 1138, 1137, 1131, 1132, - /* 490 */ 1045, 1044, 1042, 1041, 1043, 762, 1083, 1086, 1085, 1084, - /* 500 */ 1089, 1088, 1081, 1093, 1098, 1097, 1102, 1101, 1100, 1099, - /* 510 */ 1096, 1078, 967, 966, 964, 969, 961, 960, 965, 952, - /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1082, + /* 260 */ 944, 909, 1093, 1091, 909, 760, 909, 760, 909, 1046, + /* 270 */ 844, 844, 844, 844, 825, 1046, 844, 809, 844, 825, + /* 280 */ 844, 844, 1148, 909, 909, 1148, 1046, 1052, 1046, 1027, + /* 290 */ 994, 934, 922, 932, 929, 944, 1148, 757, 828, 760, + /* 300 */ 746, 746, 734, 734, 734, 734, 1139, 1139, 1135, 811, + /* 310 */ 811, 896, 1003, 1002, 1001, 785, 1039, 1148, 1148, 1148, + /* 320 */ 1148, 1148, 1148, 1060, 1148, 1148, 1148, 1148, 1148, 1148, + /* 330 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 730, 1148, + /* 340 */ 1148, 1148, 1148, 1148, 1129, 1148, 1148, 1148, 1148, 1148, + /* 350 */ 1148, 1090, 1089, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + /* 360 */ 1148, 1148, 1148, 1078, 1148, 1148, 1148, 1148, 1148, 1148, + /* 370 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, + /* 380 */ 1148, 1148, 1148, 1148, 867, 869, 1148, 1148, 1148, 868, + /* 390 */ 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 1148, 930, + /* 400 */ 1148, 923, 1148, 1036, 1148, 1017, 1025, 1148, 1148, 1148, + /* 410 */ 1148, 1148, 1016, 1148, 1148, 1148, 1144, 1148, 1148, 1148, + /* 420 */ 1143, 1148, 1148, 1148, 1148, 1148, 1028, 980, 1148, 979, + /* 430 */ 978, 769, 1148, 744, 1148, 726, 731, 1128, 1125, 1127, + /* 440 */ 1122, 1123, 1121, 1124, 1120, 1118, 1119, 1116, 1114, 1113, + /* 450 */ 1115, 1110, 1106, 1066, 1064, 1062, 1071, 1070, 1069, 1068, + /* 460 */ 1067, 1063, 1061, 1065, 1059, 959, 947, 938, 862, 1105, + /* 470 */ 1103, 1104, 1057, 1055, 1056, 861, 860, 859, 854, 853, + /* 480 */ 852, 851, 1132, 1141, 1140, 1138, 1137, 1136, 1130, 1131, + /* 490 */ 1044, 1043, 1041, 1040, 1042, 762, 1082, 1085, 1084, 1083, + /* 500 */ 1088, 1087, 1080, 1092, 1097, 1096, 1101, 1100, 1099, 1098, + /* 510 */ 1095, 1077, 967, 966, 964, 969, 961, 960, 965, 952, + /* 520 */ 958, 957, 948, 951, 847, 943, 939, 942, 863, 1081, /* 530 */ 858, 857, 856, 761, 756, 911, 755, 754, 765, 831, /* 540 */ 832, 840, 843, 838, 841, 837, 836, 835, 839, 834, /* 550 */ 830, 768, 767, 775, 824, 802, 800, 799, 803, 816, @@ -857,12 +857,12 @@ static const YYACTIONTYPE yy_default[] = { /* 600 */ 883, 882, 881, 917, 916, 915, 914, 913, 912, 905, /* 610 */ 903, 899, 898, 904, 902, 920, 921, 919, 897, 889, /* 620 */ 887, 888, 886, 974, 971, 973, 970, 907, 895, 892, - /* 630 */ 879, 925, 924, 1030, 1019, 1008, 1020, 910, 1007, 1005, - /* 640 */ 1029, 1026, 1021, 1103, 1025, 1012, 1011, 1010, 1148, 1146, - /* 650 */ 1147, 1050, 1052, 1055, 1054, 1051, 927, 926, 1049, 1048, - /* 660 */ 1009, 984, 781, 779, 780, 1075, 1074, 1077, 1076, 1073, - /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1022, 1023, 981, - /* 680 */ 1024, 983, 770, 873, 866, 976, 975, 808, 807, 806, + /* 630 */ 879, 925, 924, 1029, 1018, 1008, 1019, 910, 1007, 1005, + /* 640 */ 1028, 1025, 1020, 1102, 1024, 1012, 1011, 1010, 1147, 1145, + /* 650 */ 1146, 1049, 1051, 1054, 1053, 1050, 927, 926, 1048, 1047, + /* 660 */ 1009, 984, 781, 779, 780, 1074, 1073, 1076, 1075, 1072, + /* 670 */ 783, 782, 778, 777, 998, 997, 982, 1021, 1022, 981, + /* 680 */ 1023, 983, 770, 873, 866, 976, 975, 808, 807, 806, /* 690 */ 805, 877, 876, 787, 801, 786, 784, 764, 759, 758, /* 700 */ 753, 751, 748, 750, 747, 752, 749, 745, 743, 742, /* 710 */ 741, 740, 739, 773, 772, 771, 769, 737, 736, 733, @@ -1462,137 +1462,136 @@ static const char *const yyRuleName[] = { /* 291 */ "exprx ::= expr not_opt BETWEEN expr AND", /* 292 */ "exprx ::= CASE case_operand case_exprlist case_else", /* 293 */ "exprx ::= expr not_opt IN LP exprlist", - /* 294 */ "exprx ::= LP expr", - /* 295 */ "exprx ::= expr not_opt IN ID_DB", - /* 296 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", - /* 297 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", - /* 298 */ "exprx ::= nm DOT ID_TAB|ID_COL", - /* 299 */ "exprx ::= nm DOT nm DOT ID_COL", - /* 300 */ "exprx ::= expr COLLATE ID_COLLATE", - /* 301 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", - /* 302 */ "expr ::= exprx", - /* 303 */ "expr ::=", - /* 304 */ "not_opt ::=", - /* 305 */ "not_opt ::= NOT", - /* 306 */ "likeop ::= LIKE_KW|MATCH", - /* 307 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", - /* 308 */ "case_exprlist ::= WHEN expr THEN expr", - /* 309 */ "case_else ::= ELSE expr", - /* 310 */ "case_else ::=", - /* 311 */ "case_operand ::= exprx", - /* 312 */ "case_operand ::=", - /* 313 */ "exprlist ::= nexprlist", - /* 314 */ "exprlist ::=", - /* 315 */ "nexprlist ::= nexprlist COMMA expr", - /* 316 */ "nexprlist ::= exprx", - /* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt", - /* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB", - /* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW", - /* 320 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW", - /* 321 */ "uniqueflag ::= UNIQUE", - /* 322 */ "uniqueflag ::=", - /* 323 */ "idxlist_opt ::=", - /* 324 */ "idxlist_opt ::= LP idxlist RP", - /* 325 */ "idxlist ::= idxlist COMMA idxlist_single", - /* 326 */ "idxlist ::= idxlist_single", - /* 327 */ "idxlist_single ::= nm collate sortorder", - /* 328 */ "idxlist_single ::= ID_COL", - /* 329 */ "collate ::=", - /* 330 */ "collate ::= COLLATE ids", - /* 331 */ "collate ::= COLLATE ID_COLLATE", - /* 332 */ "cmd ::= DROP INDEX ifexists fullname", - /* 333 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX", - /* 334 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX", - /* 335 */ "cmd ::= VACUUM", - /* 336 */ "cmd ::= VACUUM nm", - /* 337 */ "cmd ::= PRAGMA nm dbnm", - /* 338 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", - /* 339 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", - /* 340 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", - /* 341 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", - /* 342 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", - /* 343 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", - /* 344 */ "nmnum ::= plus_num", - /* 345 */ "nmnum ::= nm", - /* 346 */ "nmnum ::= ON", - /* 347 */ "nmnum ::= DELETE", - /* 348 */ "nmnum ::= DEFAULT", - /* 349 */ "plus_num ::= PLUS number", - /* 350 */ "plus_num ::= number", - /* 351 */ "minus_num ::= MINUS number", - /* 352 */ "number ::= INTEGER", - /* 353 */ "number ::= FLOAT", - /* 354 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END", - /* 355 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause", - /* 356 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list", - /* 357 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB", - /* 358 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW", - /* 359 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW", - /* 360 */ "trigger_time ::= BEFORE", - /* 361 */ "trigger_time ::= AFTER", - /* 362 */ "trigger_time ::= INSTEAD OF", - /* 363 */ "trigger_time ::=", - /* 364 */ "trigger_event ::= DELETE", - /* 365 */ "trigger_event ::= INSERT", - /* 366 */ "trigger_event ::= UPDATE", - /* 367 */ "trigger_event ::= UPDATE OF inscollist", - /* 368 */ "foreach_clause ::=", - /* 369 */ "foreach_clause ::= FOR EACH ROW", - /* 370 */ "when_clause ::=", - /* 371 */ "when_clause ::= WHEN expr", - /* 372 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", - /* 373 */ "trigger_cmd_list ::= trigger_cmd SEMI", - /* 374 */ "trigger_cmd_list ::= SEMI", - /* 375 */ "trigger_cmd ::= update_stmt", - /* 376 */ "trigger_cmd ::= insert_stmt", - /* 377 */ "trigger_cmd ::= delete_stmt", - /* 378 */ "trigger_cmd ::= select_stmt", - /* 379 */ "raisetype ::= ROLLBACK|ABORT|FAIL", - /* 380 */ "cmd ::= DROP TRIGGER ifexists fullname", - /* 381 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG", - /* 382 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG", - /* 383 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", - /* 384 */ "cmd ::= DETACH database_kw_opt expr", - /* 385 */ "key_opt ::=", - /* 386 */ "key_opt ::= KEY expr", - /* 387 */ "database_kw_opt ::= DATABASE", - /* 388 */ "database_kw_opt ::=", - /* 389 */ "cmd ::= REINDEX", - /* 390 */ "cmd ::= REINDEX nm dbnm", - /* 391 */ "cmd ::= REINDEX ID_COLLATE", - /* 392 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX", - /* 393 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB", - /* 394 */ "cmd ::= ANALYZE", - /* 395 */ "cmd ::= ANALYZE nm dbnm", - /* 396 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX", - /* 397 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB", - /* 398 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", - /* 399 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column", - /* 400 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW", - /* 401 */ "cmd ::= ALTER TABLE nm DOT ID_TAB", - /* 402 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB", - /* 403 */ "kwcolumn_opt ::=", - /* 404 */ "kwcolumn_opt ::= COLUMNKW", - /* 405 */ "cmd ::= create_vtab", - /* 406 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm", - /* 407 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP", - /* 408 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW", - /* 409 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW", - /* 410 */ "vtabarglist ::= vtabarg", - /* 411 */ "vtabarglist ::= vtabarglist COMMA vtabarg", - /* 412 */ "vtabarg ::=", - /* 413 */ "vtabarg ::= vtabarg vtabargtoken", - /* 414 */ "vtabargtoken ::= ANY", - /* 415 */ "vtabargtoken ::= LP anylist RP", - /* 416 */ "anylist ::=", - /* 417 */ "anylist ::= anylist LP anylist RP", - /* 418 */ "anylist ::= anylist ANY", - /* 419 */ "with ::=", - /* 420 */ "with ::= WITH wqlist", - /* 421 */ "with ::= WITH RECURSIVE wqlist", - /* 422 */ "wqlist ::= nm idxlist_opt AS LP select RP", - /* 423 */ "wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP", - /* 424 */ "wqlist ::= ID_TAB_NEW", + /* 294 */ "exprx ::= expr not_opt IN ID_DB", + /* 295 */ "exprx ::= expr not_opt IN nm DOT ID_TAB", + /* 296 */ "exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN", + /* 297 */ "exprx ::= nm DOT ID_TAB|ID_COL", + /* 298 */ "exprx ::= nm DOT nm DOT ID_COL", + /* 299 */ "exprx ::= expr COLLATE ID_COLLATE", + /* 300 */ "exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP", + /* 301 */ "expr ::= exprx", + /* 302 */ "expr ::=", + /* 303 */ "not_opt ::=", + /* 304 */ "not_opt ::= NOT", + /* 305 */ "likeop ::= LIKE_KW|MATCH", + /* 306 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", + /* 307 */ "case_exprlist ::= WHEN expr THEN expr", + /* 308 */ "case_else ::= ELSE expr", + /* 309 */ "case_else ::=", + /* 310 */ "case_operand ::= exprx", + /* 311 */ "case_operand ::=", + /* 312 */ "exprlist ::= nexprlist", + /* 313 */ "exprlist ::=", + /* 314 */ "nexprlist ::= nexprlist COMMA expr", + /* 315 */ "nexprlist ::= exprx", + /* 316 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt", + /* 317 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB", + /* 318 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW", + /* 319 */ "cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW", + /* 320 */ "uniqueflag ::= UNIQUE", + /* 321 */ "uniqueflag ::=", + /* 322 */ "idxlist_opt ::=", + /* 323 */ "idxlist_opt ::= LP idxlist RP", + /* 324 */ "idxlist ::= idxlist COMMA idxlist_single", + /* 325 */ "idxlist ::= idxlist_single", + /* 326 */ "idxlist_single ::= nm collate sortorder", + /* 327 */ "idxlist_single ::= ID_COL", + /* 328 */ "collate ::=", + /* 329 */ "collate ::= COLLATE ids", + /* 330 */ "collate ::= COLLATE ID_COLLATE", + /* 331 */ "cmd ::= DROP INDEX ifexists fullname", + /* 332 */ "cmd ::= DROP INDEX ifexists nm DOT ID_IDX", + /* 333 */ "cmd ::= DROP INDEX ifexists ID_DB|ID_IDX", + /* 334 */ "cmd ::= VACUUM", + /* 335 */ "cmd ::= VACUUM nm", + /* 336 */ "cmd ::= PRAGMA nm dbnm", + /* 337 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", + /* 338 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", + /* 339 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", + /* 340 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", + /* 341 */ "cmd ::= PRAGMA nm DOT ID_PRAGMA", + /* 342 */ "cmd ::= PRAGMA ID_DB|ID_PRAGMA", + /* 343 */ "nmnum ::= plus_num", + /* 344 */ "nmnum ::= nm", + /* 345 */ "nmnum ::= ON", + /* 346 */ "nmnum ::= DELETE", + /* 347 */ "nmnum ::= DEFAULT", + /* 348 */ "plus_num ::= PLUS number", + /* 349 */ "plus_num ::= number", + /* 350 */ "minus_num ::= MINUS number", + /* 351 */ "number ::= INTEGER", + /* 352 */ "number ::= FLOAT", + /* 353 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END", + /* 354 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause", + /* 355 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list", + /* 356 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB", + /* 357 */ "cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW", + /* 358 */ "cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW", + /* 359 */ "trigger_time ::= BEFORE", + /* 360 */ "trigger_time ::= AFTER", + /* 361 */ "trigger_time ::= INSTEAD OF", + /* 362 */ "trigger_time ::=", + /* 363 */ "trigger_event ::= DELETE", + /* 364 */ "trigger_event ::= INSERT", + /* 365 */ "trigger_event ::= UPDATE", + /* 366 */ "trigger_event ::= UPDATE OF inscollist", + /* 367 */ "foreach_clause ::=", + /* 368 */ "foreach_clause ::= FOR EACH ROW", + /* 369 */ "when_clause ::=", + /* 370 */ "when_clause ::= WHEN expr", + /* 371 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", + /* 372 */ "trigger_cmd_list ::= trigger_cmd SEMI", + /* 373 */ "trigger_cmd_list ::= SEMI", + /* 374 */ "trigger_cmd ::= update_stmt", + /* 375 */ "trigger_cmd ::= insert_stmt", + /* 376 */ "trigger_cmd ::= delete_stmt", + /* 377 */ "trigger_cmd ::= select_stmt", + /* 378 */ "raisetype ::= ROLLBACK|ABORT|FAIL", + /* 379 */ "cmd ::= DROP TRIGGER ifexists fullname", + /* 380 */ "cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG", + /* 381 */ "cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG", + /* 382 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", + /* 383 */ "cmd ::= DETACH database_kw_opt expr", + /* 384 */ "key_opt ::=", + /* 385 */ "key_opt ::= KEY expr", + /* 386 */ "database_kw_opt ::= DATABASE", + /* 387 */ "database_kw_opt ::=", + /* 388 */ "cmd ::= REINDEX", + /* 389 */ "cmd ::= REINDEX nm dbnm", + /* 390 */ "cmd ::= REINDEX ID_COLLATE", + /* 391 */ "cmd ::= REINDEX nm DOT ID_TAB|ID_IDX", + /* 392 */ "cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB", + /* 393 */ "cmd ::= ANALYZE", + /* 394 */ "cmd ::= ANALYZE nm dbnm", + /* 395 */ "cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX", + /* 396 */ "cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB", + /* 397 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", + /* 398 */ "cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column", + /* 399 */ "cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW", + /* 400 */ "cmd ::= ALTER TABLE nm DOT ID_TAB", + /* 401 */ "cmd ::= ALTER TABLE ID_DB|ID_TAB", + /* 402 */ "kwcolumn_opt ::=", + /* 403 */ "kwcolumn_opt ::= COLUMNKW", + /* 404 */ "cmd ::= create_vtab", + /* 405 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm", + /* 406 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP", + /* 407 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW", + /* 408 */ "create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW", + /* 409 */ "vtabarglist ::= vtabarg", + /* 410 */ "vtabarglist ::= vtabarglist COMMA vtabarg", + /* 411 */ "vtabarg ::=", + /* 412 */ "vtabarg ::= vtabarg vtabargtoken", + /* 413 */ "vtabargtoken ::= ANY", + /* 414 */ "vtabargtoken ::= LP anylist RP", + /* 415 */ "anylist ::=", + /* 416 */ "anylist ::= anylist LP anylist RP", + /* 417 */ "anylist ::= anylist ANY", + /* 418 */ "with ::=", + /* 419 */ "with ::= WITH wqlist", + /* 420 */ "with ::= WITH RECURSIVE wqlist", + /* 421 */ "wqlist ::= nm idxlist_opt AS LP select RP", + /* 422 */ "wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP", + /* 423 */ "wqlist ::= ID_TAB_NEW", }; #endif /* NDEBUG */ @@ -2520,7 +2519,6 @@ static const struct { { 251, 5 }, { 251, 4 }, { 251, 5 }, - { 251, 2 }, { 251, 4 }, { 251, 6 }, { 251, 1 }, @@ -2737,11 +2735,11 @@ static void yy_reduce( {yygotominor.yy225 = new ParserStubExplain(true, true);} break; case 8: /* cmdx ::= cmd */ - case 375: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==375); - case 376: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==376); - case 377: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==377); - case 378: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==378); - case 405: /* cmd ::= create_vtab */ yytestcase(yyruleno==405); + case 374: /* trigger_cmd ::= update_stmt */ yytestcase(yyruleno==374); + case 375: /* trigger_cmd ::= insert_stmt */ yytestcase(yyruleno==375); + case 376: /* trigger_cmd ::= delete_stmt */ yytestcase(yyruleno==376); + case 377: /* trigger_cmd ::= select_stmt */ yytestcase(yyruleno==377); + case 404: /* cmd ::= create_vtab */ yytestcase(yyruleno==404); {yygotominor.yy399 = yymsp[0].minor.yy399;} break; case 9: /* cmd ::= BEGIN transtype trans_opt */ @@ -2830,10 +2828,10 @@ static void yy_reduce( case 86: /* autoinc ::= AUTOINCR */ yytestcase(yyruleno==86); case 108: /* tconscomma ::= COMMA */ yytestcase(yyruleno==108); case 130: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==130); - case 305: /* not_opt ::= NOT */ yytestcase(yyruleno==305); - case 321: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==321); - case 387: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==387); - case 403: /* kwcolumn_opt ::= */ yytestcase(yyruleno==403); + case 304: /* not_opt ::= NOT */ yytestcase(yyruleno==304); + case 320: /* uniqueflag ::= UNIQUE */ yytestcase(yyruleno==320); + case 386: /* database_kw_opt ::= DATABASE */ yytestcase(yyruleno==386); + case 402: /* kwcolumn_opt ::= */ yytestcase(yyruleno==402); {yygotominor.yy237 = new bool(true);} break; case 22: /* savepoint_opt ::= */ @@ -2841,10 +2839,10 @@ static void yy_reduce( case 85: /* autoinc ::= */ yytestcase(yyruleno==85); case 109: /* tconscomma ::= */ yytestcase(yyruleno==109); case 131: /* ifexists ::= */ yytestcase(yyruleno==131); - case 304: /* not_opt ::= */ yytestcase(yyruleno==304); - case 322: /* uniqueflag ::= */ yytestcase(yyruleno==322); - case 388: /* database_kw_opt ::= */ yytestcase(yyruleno==388); - case 404: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==404); + case 303: /* not_opt ::= */ yytestcase(yyruleno==303); + case 321: /* uniqueflag ::= */ yytestcase(yyruleno==321); + case 387: /* database_kw_opt ::= */ yytestcase(yyruleno==387); + case 403: /* kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==403); {yygotominor.yy237 = new bool(false);} break; case 23: /* cmd ::= SAVEPOINT nm */ @@ -2882,8 +2880,8 @@ static void yy_reduce( case 29: /* cmd ::= CREATE temp TABLE ifnotexists fullname LP columnlist conslist_opt RP table_options */ { yygotominor.yy399 = new SqliteCreateTable( - *(yymsp[-8].minor.yy376), *(yymsp[-6].minor.yy237), + *(yymsp[-8].minor.yy376), yymsp[-5].minor.yy66->name1, yymsp[-5].minor.yy66->name2, *(yymsp[-3].minor.yy118), @@ -2902,8 +2900,8 @@ static void yy_reduce( case 30: /* cmd ::= CREATE temp TABLE ifnotexists fullname AS select */ { yygotominor.yy399 = new SqliteCreateTable( - *(yymsp[-5].minor.yy376), *(yymsp[-3].minor.yy237), + *(yymsp[-5].minor.yy376), yymsp[-2].minor.yy66->name1, yymsp[-2].minor.yy66->name2, yymsp[0].minor.yy123 @@ -2916,22 +2914,22 @@ static void yy_reduce( break; case 31: /* cmd ::= CREATE temp TABLE ifnotexists nm DOT ID_TAB_NEW */ case 133: /* cmd ::= CREATE temp VIEW ifnotexists nm DOT ID_VIEW_NEW */ yytestcase(yyruleno==133); - case 358: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==358); + case 357: /* cmd ::= CREATE temp TRIGGER ifnotexists nm DOT ID_TRIG_NEW */ yytestcase(yyruleno==357); { yy_destructor(yypParser,179,&yymsp[-5].minor); yy_destructor(yypParser,177,&yymsp[-2].minor); } break; case 32: /* cmd ::= CREATE temp TABLE ifnotexists ID_DB|ID_TAB_NEW */ case 134: /* cmd ::= CREATE temp VIEW ifnotexists ID_DB|ID_VIEW_NEW */ yytestcase(yyruleno==134); - case 359: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==359); + case 358: /* cmd ::= CREATE temp TRIGGER ifnotexists ID_DB|ID_TRIG_NEW */ yytestcase(yyruleno==358); { yy_destructor(yypParser,179,&yymsp[-3].minor); } break; case 33: /* table_options ::= */ case 185: /* dbnm ::= */ yytestcase(yyruleno==185); - case 329: /* collate ::= */ yytestcase(yyruleno==329); - case 412: /* vtabarg ::= */ yytestcase(yyruleno==412); - case 416: /* anylist ::= */ yytestcase(yyruleno==416); + case 328: /* collate ::= */ yytestcase(yyruleno==328); + case 411: /* vtabarg ::= */ yytestcase(yyruleno==411); + case 415: /* anylist ::= */ yytestcase(yyruleno==415); {yygotominor.yy211 = new QString();} break; case 34: /* table_options ::= WITHOUT nm */ @@ -2976,8 +2974,8 @@ static void yy_reduce( case 47: /* nm ::= id */ yytestcase(yyruleno==47); case 55: /* typename ::= ids */ yytestcase(yyruleno==55); case 186: /* dbnm ::= DOT nm */ yytestcase(yyruleno==186); - case 330: /* collate ::= COLLATE ids */ yytestcase(yyruleno==330); - case 331: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==331); + case 329: /* collate ::= COLLATE ids */ yytestcase(yyruleno==329); + case 330: /* collate ::= COLLATE ID_COLLATE */ yytestcase(yyruleno==330); {yygotominor.yy211 = yymsp[0].minor.yy211;} break; case 45: /* id ::= ID */ @@ -3037,9 +3035,9 @@ static void yy_reduce( break; case 58: /* signed ::= plus_num */ case 59: /* signed ::= minus_num */ yytestcase(yyruleno==59); - case 344: /* nmnum ::= plus_num */ yytestcase(yyruleno==344); - case 349: /* plus_num ::= PLUS number */ yytestcase(yyruleno==349); - case 350: /* plus_num ::= number */ yytestcase(yyruleno==350); + case 343: /* nmnum ::= plus_num */ yytestcase(yyruleno==343); + case 348: /* plus_num ::= PLUS number */ yytestcase(yyruleno==348); + case 349: /* plus_num ::= number */ yytestcase(yyruleno==349); {yygotominor.yy21 = yymsp[0].minor.yy21;} break; case 60: /* carglist ::= carglist ccons */ @@ -3204,9 +3202,9 @@ static void yy_reduce( } break; case 84: /* term ::= STRING|BLOB */ - case 346: /* nmnum ::= ON */ yytestcase(yyruleno==346); - case 347: /* nmnum ::= DELETE */ yytestcase(yyruleno==347); - case 348: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==348); + case 345: /* nmnum ::= ON */ yytestcase(yyruleno==345); + case 346: /* nmnum ::= DELETE */ yytestcase(yyruleno==346); + case 347: /* nmnum ::= DEFAULT */ yytestcase(yyruleno==347); {yygotominor.yy21 = new QVariant(yymsp[0].minor.yy0->value);} break; case 87: /* refargs ::= */ @@ -3391,23 +3389,23 @@ static void yy_reduce( case 179: /* singlesrc ::= ID_DB|ID_TAB */ yytestcase(yyruleno==179); case 180: /* singlesrc ::= nm DOT ID_VIEW */ yytestcase(yyruleno==180); case 181: /* singlesrc ::= ID_DB|ID_VIEW */ yytestcase(yyruleno==181); - case 298: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==298); - case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==319); - case 320: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==320); - case 333: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==333); - case 334: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==334); - case 342: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==342); - case 343: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==343); - case 381: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==381); - case 382: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==382); - case 392: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==392); - case 393: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==393); - case 396: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==396); - case 397: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==397); - case 401: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==401); - case 402: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==402); - case 408: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==408); - case 409: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==409); + case 297: /* exprx ::= nm DOT ID_TAB|ID_COL */ yytestcase(yyruleno==297); + case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm DOT ID_IDX_NEW */ yytestcase(yyruleno==318); + case 319: /* cmd ::= CREATE uniqueflag INDEX ifnotexists ID_DB|ID_IDX_NEW */ yytestcase(yyruleno==319); + case 332: /* cmd ::= DROP INDEX ifexists nm DOT ID_IDX */ yytestcase(yyruleno==332); + case 333: /* cmd ::= DROP INDEX ifexists ID_DB|ID_IDX */ yytestcase(yyruleno==333); + case 341: /* cmd ::= PRAGMA nm DOT ID_PRAGMA */ yytestcase(yyruleno==341); + case 342: /* cmd ::= PRAGMA ID_DB|ID_PRAGMA */ yytestcase(yyruleno==342); + case 380: /* cmd ::= DROP TRIGGER ifexists nm DOT ID_TRIG */ yytestcase(yyruleno==380); + case 381: /* cmd ::= DROP TRIGGER ifexists ID_DB|ID_TRIG */ yytestcase(yyruleno==381); + case 391: /* cmd ::= REINDEX nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==391); + case 392: /* cmd ::= REINDEX ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==392); + case 395: /* cmd ::= ANALYZE nm DOT ID_TAB|ID_IDX */ yytestcase(yyruleno==395); + case 396: /* cmd ::= ANALYZE ID_DB|ID_IDX|ID_TAB */ yytestcase(yyruleno==396); + case 400: /* cmd ::= ALTER TABLE nm DOT ID_TAB */ yytestcase(yyruleno==400); + case 401: /* cmd ::= ALTER TABLE ID_DB|ID_TAB */ yytestcase(yyruleno==401); + case 407: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm DOT ID_TAB_NEW */ yytestcase(yyruleno==407); + case 408: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists ID_DB|ID_TAB_NEW */ yytestcase(yyruleno==408); { yy_destructor(yypParser,177,&yymsp[-2].minor); } break; @@ -3803,11 +3801,11 @@ static void yy_reduce( {yygotominor.yy226 = new SqliteSortOrder(SqliteSortOrder::null);} break; case 205: /* groupby_opt ::= */ - case 314: /* exprlist ::= */ yytestcase(yyruleno==314); + case 313: /* exprlist ::= */ yytestcase(yyruleno==313); {yygotominor.yy13 = new ParserExprList();} break; case 206: /* groupby_opt ::= GROUP BY nexprlist */ - case 313: /* exprlist ::= nexprlist */ yytestcase(yyruleno==313); + case 312: /* exprlist ::= nexprlist */ yytestcase(yyruleno==312); {yygotominor.yy13 = yymsp[0].minor.yy13;} break; case 207: /* groupby_opt ::= GROUP BY */ @@ -3818,19 +3816,19 @@ static void yy_reduce( break; case 208: /* having_opt ::= */ case 220: /* where_opt ::= */ yytestcase(yyruleno==220); - case 310: /* case_else ::= */ yytestcase(yyruleno==310); - case 312: /* case_operand ::= */ yytestcase(yyruleno==312); - case 370: /* when_clause ::= */ yytestcase(yyruleno==370); - case 385: /* key_opt ::= */ yytestcase(yyruleno==385); + case 309: /* case_else ::= */ yytestcase(yyruleno==309); + case 311: /* case_operand ::= */ yytestcase(yyruleno==311); + case 369: /* when_clause ::= */ yytestcase(yyruleno==369); + case 384: /* key_opt ::= */ yytestcase(yyruleno==384); {yygotominor.yy490 = nullptr;} break; case 209: /* having_opt ::= HAVING expr */ case 221: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==221); - case 302: /* expr ::= exprx */ yytestcase(yyruleno==302); - case 309: /* case_else ::= ELSE expr */ yytestcase(yyruleno==309); - case 311: /* case_operand ::= exprx */ yytestcase(yyruleno==311); - case 371: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==371); - case 386: /* key_opt ::= KEY expr */ yytestcase(yyruleno==386); + case 301: /* expr ::= exprx */ yytestcase(yyruleno==301); + case 308: /* case_else ::= ELSE expr */ yytestcase(yyruleno==308); + case 310: /* case_operand ::= exprx */ yytestcase(yyruleno==310); + case 370: /* when_clause ::= WHEN expr */ yytestcase(yyruleno==370); + case 385: /* key_opt ::= KEY expr */ yytestcase(yyruleno==385); {yygotominor.yy490 = yymsp[0].minor.yy490;} break; case 210: /* limit_opt ::= */ @@ -4403,72 +4401,64 @@ static void yy_reduce( parserContext->minorErrorBeforeNextToken("Syntax error"); } break; - case 294: /* exprx ::= LP expr */ -{ - yygotominor.yy490 = new SqliteExpr(); - yygotominor.yy490->initSubExpr(yymsp[0].minor.yy490); - objectForTokens = yygotominor.yy490; - parserContext->minorErrorBeforeNextToken("Syntax error"); - } - break; - case 295: /* exprx ::= expr not_opt IN ID_DB */ + case 294: /* exprx ::= expr not_opt IN ID_DB */ { yy_destructor(yypParser,199,&yymsp[-3].minor); } break; - case 296: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ - case 297: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==297); + case 295: /* exprx ::= expr not_opt IN nm DOT ID_TAB */ + case 296: /* exprx ::= ID_DB|ID_TAB|ID_COL|ID_FN */ yytestcase(yyruleno==296); { yy_destructor(yypParser,199,&yymsp[-5].minor); yy_destructor(yypParser,177,&yymsp[-2].minor); } break; - case 299: /* exprx ::= nm DOT nm DOT ID_COL */ + case 298: /* exprx ::= nm DOT nm DOT ID_COL */ { yy_destructor(yypParser,177,&yymsp[-4].minor); yy_destructor(yypParser,177,&yymsp[-2].minor); } break; - case 300: /* exprx ::= expr COLLATE ID_COLLATE */ - case 301: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==301); + case 299: /* exprx ::= expr COLLATE ID_COLLATE */ + case 300: /* exprx ::= RAISE LP raisetype COMMA ID_ERR_MSG RP */ yytestcase(yyruleno==300); { yy_destructor(yypParser,199,&yymsp[-2].minor); } break; - case 303: /* expr ::= */ + case 302: /* expr ::= */ { yygotominor.yy490 = new SqliteExpr(); objectForTokens = yygotominor.yy490; parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 306: /* likeop ::= LIKE_KW|MATCH */ + case 305: /* likeop ::= LIKE_KW|MATCH */ {yygotominor.yy374 = new SqliteExpr::LikeOp(SqliteExpr::likeOp(yymsp[0].minor.yy0->value));} break; - case 307: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ + case 306: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ { yymsp[-4].minor.yy13->append(yymsp[-2].minor.yy490); yymsp[-4].minor.yy13->append(yymsp[0].minor.yy490); yygotominor.yy13 = yymsp[-4].minor.yy13; } break; - case 308: /* case_exprlist ::= WHEN expr THEN expr */ + case 307: /* case_exprlist ::= WHEN expr THEN expr */ { yygotominor.yy13 = new ParserExprList(); yygotominor.yy13->append(yymsp[-2].minor.yy490); yygotominor.yy13->append(yymsp[0].minor.yy490); } break; - case 315: /* nexprlist ::= nexprlist COMMA expr */ + case 314: /* nexprlist ::= nexprlist COMMA expr */ { yymsp[-2].minor.yy13->append(yymsp[0].minor.yy490); yygotominor.yy13 = yymsp[-2].minor.yy13; DONT_INHERIT_TOKENS("nexprlist"); } break; - case 316: /* nexprlist ::= exprx */ + case 315: /* nexprlist ::= exprx */ { yygotominor.yy13 = new ParserExprList(); yygotominor.yy13->append(yymsp[0].minor.yy490); } break; - case 317: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */ + case 316: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON nm LP idxlist RP where_opt */ { yygotominor.yy399 = new SqliteCreateIndex( *(yymsp[-10].minor.yy237), @@ -4488,31 +4478,31 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 318: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */ + case 317: /* cmd ::= CREATE uniqueflag INDEX ifnotexists nm dbnm ON ID_TAB */ { yy_destructor(yypParser,177,&yymsp[-3].minor); } break; - case 323: /* idxlist_opt ::= */ + case 322: /* idxlist_opt ::= */ {yygotominor.yy139 = new ParserIndexedColumnList();} break; - case 324: /* idxlist_opt ::= LP idxlist RP */ + case 323: /* idxlist_opt ::= LP idxlist RP */ {yygotominor.yy139 = yymsp[-1].minor.yy139;} break; - case 325: /* idxlist ::= idxlist COMMA idxlist_single */ + case 324: /* idxlist ::= idxlist COMMA idxlist_single */ { yymsp[-2].minor.yy139->append(yymsp[0].minor.yy90); yygotominor.yy139 = yymsp[-2].minor.yy139; DONT_INHERIT_TOKENS("idxlist"); } break; - case 326: /* idxlist ::= idxlist_single */ + case 325: /* idxlist ::= idxlist_single */ { yygotominor.yy139 = new ParserIndexedColumnList(); yygotominor.yy139->append(yymsp[0].minor.yy90); } break; - case 327: /* idxlist_single ::= nm collate sortorder */ - case 328: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==328); + case 326: /* idxlist_single ::= nm collate sortorder */ + case 327: /* idxlist_single ::= ID_COL */ yytestcase(yyruleno==327); { SqliteIndexedColumn* obj = new SqliteIndexedColumn( @@ -4527,7 +4517,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy90; } break; - case 332: /* cmd ::= DROP INDEX ifexists fullname */ + case 331: /* cmd ::= DROP INDEX ifexists fullname */ { yygotominor.yy399 = new SqliteDropIndex(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy66->name1, yymsp[0].minor.yy66->name2); delete yymsp[-1].minor.yy237; @@ -4535,20 +4525,20 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 335: /* cmd ::= VACUUM */ + case 334: /* cmd ::= VACUUM */ { yygotominor.yy399 = new SqliteVacuum(); objectForTokens = yygotominor.yy399; } break; - case 336: /* cmd ::= VACUUM nm */ + case 335: /* cmd ::= VACUUM nm */ { yygotominor.yy399 = new SqliteVacuum(*(yymsp[0].minor.yy211)); delete yymsp[0].minor.yy211; objectForTokens = yygotominor.yy399; } break; - case 337: /* cmd ::= PRAGMA nm dbnm */ + case 336: /* cmd ::= PRAGMA nm dbnm */ { yygotominor.yy399 = new SqlitePragma(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-1].minor.yy211; @@ -4556,8 +4546,8 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 338: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ - case 340: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==340); + case 337: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ + case 339: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ yytestcase(yyruleno==339); { yygotominor.yy399 = new SqlitePragma(*(yymsp[-3].minor.yy211), *(yymsp[-2].minor.yy211), *(yymsp[0].minor.yy21), true); delete yymsp[-3].minor.yy211; @@ -4566,8 +4556,8 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 339: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ - case 341: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==341); + case 338: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ + case 340: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ yytestcase(yyruleno==340); { yygotominor.yy399 = new SqlitePragma(*(yymsp[-4].minor.yy211), *(yymsp[-3].minor.yy211), *(yymsp[-1].minor.yy21), false); delete yymsp[-4].minor.yy211; @@ -4576,13 +4566,13 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 345: /* nmnum ::= nm */ + case 344: /* nmnum ::= nm */ { yygotominor.yy21 = new QVariant(*(yymsp[0].minor.yy211)); delete yymsp[0].minor.yy211; } break; - case 351: /* minus_num ::= MINUS number */ + case 350: /* minus_num ::= MINUS number */ { if (yymsp[0].minor.yy21->type() == QVariant::Double) *(yymsp[0].minor.yy21) = -(yymsp[0].minor.yy21->toDouble()); @@ -4594,13 +4584,13 @@ static void yy_reduce( yygotominor.yy21 = yymsp[0].minor.yy21; } break; - case 352: /* number ::= INTEGER */ + case 351: /* number ::= INTEGER */ {yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toLongLong());} break; - case 353: /* number ::= FLOAT */ + case 352: /* number ::= FLOAT */ {yygotominor.yy21 = new QVariant(QVariant(yymsp[0].minor.yy0->value).toDouble());} break; - case 354: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */ + case 353: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list END */ { yygotominor.yy399 = new SqliteCreateTrigger( *(yymsp[-13].minor.yy376), @@ -4626,7 +4616,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 355: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */ + case 354: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause */ { QList<SqliteQuery *> CL; @@ -4654,7 +4644,7 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 356: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */ + case 355: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON nm foreach_clause when_clause BEGIN trigger_cmd_list */ { yygotominor.yy399 = new SqliteCreateTrigger( *(yymsp[-12].minor.yy376), @@ -4681,79 +4671,79 @@ static void yy_reduce( parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 357: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */ + case 356: /* cmd ::= CREATE temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON ID_TAB */ { yy_destructor(yypParser,179,&yymsp[-8].minor); yy_destructor(yypParser,177,&yymsp[-5].minor); yy_destructor(yypParser,262,&yymsp[-3].minor); yy_destructor(yypParser,263,&yymsp[-2].minor); } break; - case 360: /* trigger_time ::= BEFORE */ + case 359: /* trigger_time ::= BEFORE */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::BEFORE);} break; - case 361: /* trigger_time ::= AFTER */ + case 360: /* trigger_time ::= AFTER */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::AFTER);} break; - case 362: /* trigger_time ::= INSTEAD OF */ + case 361: /* trigger_time ::= INSTEAD OF */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::INSTEAD_OF);} break; - case 363: /* trigger_time ::= */ + case 362: /* trigger_time ::= */ {yygotominor.yy152 = new SqliteCreateTrigger::Time(SqliteCreateTrigger::Time::null);} break; - case 364: /* trigger_event ::= DELETE */ + case 363: /* trigger_event ::= DELETE */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::DELETE); objectForTokens = yygotominor.yy309; } break; - case 365: /* trigger_event ::= INSERT */ + case 364: /* trigger_event ::= INSERT */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::INSERT); objectForTokens = yygotominor.yy309; } break; - case 366: /* trigger_event ::= UPDATE */ + case 365: /* trigger_event ::= UPDATE */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(SqliteCreateTrigger::Event::UPDATE); objectForTokens = yygotominor.yy309; } break; - case 367: /* trigger_event ::= UPDATE OF inscollist */ + case 366: /* trigger_event ::= UPDATE OF inscollist */ { yygotominor.yy309 = new SqliteCreateTrigger::Event(*(yymsp[0].minor.yy445)); delete yymsp[0].minor.yy445; objectForTokens = yygotominor.yy309; } break; - case 368: /* foreach_clause ::= */ + case 367: /* foreach_clause ::= */ {yygotominor.yy409 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::null);} break; - case 369: /* foreach_clause ::= FOR EACH ROW */ + case 368: /* foreach_clause ::= FOR EACH ROW */ {yygotominor.yy409 = new SqliteCreateTrigger::Scope(SqliteCreateTrigger::Scope::FOR_EACH_ROW);} break; - case 372: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ + case 371: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ { yymsp[-2].minor.yy214->append(yymsp[-1].minor.yy399); yygotominor.yy214 = yymsp[-2].minor.yy214; DONT_INHERIT_TOKENS("trigger_cmd_list"); } break; - case 373: /* trigger_cmd_list ::= trigger_cmd SEMI */ + case 372: /* trigger_cmd_list ::= trigger_cmd SEMI */ { yygotominor.yy214 = new ParserQueryList(); yygotominor.yy214->append(yymsp[-1].minor.yy399); } break; - case 374: /* trigger_cmd_list ::= SEMI */ + case 373: /* trigger_cmd_list ::= SEMI */ { yygotominor.yy214 = new ParserQueryList(); parserContext->minorErrorAfterLastToken("Syntax error"); } break; - case 379: /* raisetype ::= ROLLBACK|ABORT|FAIL */ + case 378: /* raisetype ::= ROLLBACK|ABORT|FAIL */ {yygotominor.yy0 = yymsp[0].minor.yy0;} break; - case 380: /* cmd ::= DROP TRIGGER ifexists fullname */ + case 379: /* cmd ::= DROP TRIGGER ifexists fullname */ { yygotominor.yy399 = new SqliteDropTrigger(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy66->name1, yymsp[0].minor.yy66->name2); delete yymsp[-1].minor.yy237; @@ -4761,25 +4751,25 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 383: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ + case 382: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ { yygotominor.yy399 = new SqliteAttach(*(yymsp[-4].minor.yy237), yymsp[-3].minor.yy490, yymsp[-1].minor.yy490, yymsp[0].minor.yy490); delete yymsp[-4].minor.yy237; objectForTokens = yygotominor.yy399; } break; - case 384: /* cmd ::= DETACH database_kw_opt expr */ + case 383: /* cmd ::= DETACH database_kw_opt expr */ { yygotominor.yy399 = new SqliteDetach(*(yymsp[-1].minor.yy237), yymsp[0].minor.yy490); delete yymsp[-1].minor.yy237; objectForTokens = yygotominor.yy399; } break; - case 389: /* cmd ::= REINDEX */ + case 388: /* cmd ::= REINDEX */ {yygotominor.yy399 = new SqliteReindex();} break; - case 390: /* cmd ::= REINDEX nm dbnm */ - case 391: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==391); + case 389: /* cmd ::= REINDEX nm dbnm */ + case 390: /* cmd ::= REINDEX ID_COLLATE */ yytestcase(yyruleno==390); { yygotominor.yy399 = new SqliteReindex(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-1].minor.yy211; @@ -4787,13 +4777,13 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 394: /* cmd ::= ANALYZE */ + case 393: /* cmd ::= ANALYZE */ { yygotominor.yy399 = new SqliteAnalyze(); objectForTokens = yygotominor.yy399; } break; - case 395: /* cmd ::= ANALYZE nm dbnm */ + case 394: /* cmd ::= ANALYZE nm dbnm */ { yygotominor.yy399 = new SqliteAnalyze(*(yymsp[-1].minor.yy211), *(yymsp[0].minor.yy211)); delete yymsp[-1].minor.yy211; @@ -4801,7 +4791,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 398: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ + case 397: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ { yygotominor.yy399 = new SqliteAlterTable( yymsp[-3].minor.yy66->name1, @@ -4813,7 +4803,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 399: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */ + case 398: /* cmd ::= ALTER TABLE fullname ADD kwcolumn_opt column */ { yygotominor.yy399 = new SqliteAlterTable( yymsp[-3].minor.yy66->name1, @@ -4826,11 +4816,11 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 400: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */ + case 399: /* cmd ::= ALTER TABLE fullname RENAME TO ID_TAB_NEW */ { yy_destructor(yypParser,181,&yymsp[-3].minor); } break; - case 406: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */ + case 405: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm */ { yygotominor.yy399 = new SqliteCreateVirtualTable( *(yymsp[-4].minor.yy237), @@ -4845,7 +4835,7 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 407: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */ + case 406: /* create_vtab ::= CREATE VIRTUAL TABLE ifnotexists nm dbnm USING nm LP vtabarglist RP */ { yygotominor.yy399 = new SqliteCreateVirtualTable( *(yymsp[-7].minor.yy237), @@ -4862,14 +4852,14 @@ static void yy_reduce( objectForTokens = yygotominor.yy399; } break; - case 410: /* vtabarglist ::= vtabarg */ + case 409: /* vtabarglist ::= vtabarg */ { yygotominor.yy445 = new ParserStringList(); yygotominor.yy445->append((yymsp[0].minor.yy211)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg delete yymsp[0].minor.yy211; } break; - case 411: /* vtabarglist ::= vtabarglist COMMA vtabarg */ + case 410: /* vtabarglist ::= vtabarglist COMMA vtabarg */ { yymsp[-2].minor.yy445->append((yymsp[0].minor.yy211)->mid(1)); // mid(1) to skip the first whitespace added in vtabarg yygotominor.yy445 = yymsp[-2].minor.yy445; @@ -4877,19 +4867,19 @@ static void yy_reduce( DONT_INHERIT_TOKENS("vtabarglist"); } break; - case 413: /* vtabarg ::= vtabarg vtabargtoken */ + case 412: /* vtabarg ::= vtabarg vtabargtoken */ { yymsp[-1].minor.yy211->append(" "+ *(yymsp[0].minor.yy211)); yygotominor.yy211 = yymsp[-1].minor.yy211; delete yymsp[0].minor.yy211; } break; - case 414: /* vtabargtoken ::= ANY */ + case 413: /* vtabargtoken ::= ANY */ { yygotominor.yy211 = new QString(yymsp[0].minor.yy0->value); } break; - case 415: /* vtabargtoken ::= LP anylist RP */ + case 414: /* vtabargtoken ::= LP anylist RP */ { yygotominor.yy211 = new QString("("); yygotominor.yy211->append(*(yymsp[-1].minor.yy211)); @@ -4897,7 +4887,7 @@ static void yy_reduce( delete yymsp[-1].minor.yy211; } break; - case 417: /* anylist ::= anylist LP anylist RP */ + case 416: /* anylist ::= anylist LP anylist RP */ { yygotominor.yy211 = yymsp[-3].minor.yy211; yygotominor.yy211->append("("); @@ -4907,37 +4897,37 @@ static void yy_reduce( DONT_INHERIT_TOKENS("anylist"); } break; - case 418: /* anylist ::= anylist ANY */ + case 417: /* anylist ::= anylist ANY */ { yygotominor.yy211 = yymsp[-1].minor.yy211; yygotominor.yy211->append(yymsp[0].minor.yy0->value); DONT_INHERIT_TOKENS("anylist"); } break; - case 419: /* with ::= */ + case 418: /* with ::= */ {yygotominor.yy367 = nullptr;} break; - case 420: /* with ::= WITH wqlist */ + case 419: /* with ::= WITH wqlist */ { yygotominor.yy367 = yymsp[0].minor.yy367; objectForTokens = yygotominor.yy367; } break; - case 421: /* with ::= WITH RECURSIVE wqlist */ + case 420: /* with ::= WITH RECURSIVE wqlist */ { yygotominor.yy367 = yymsp[0].minor.yy367; yygotominor.yy367->recursive = true; objectForTokens = yygotominor.yy367; } break; - case 422: /* wqlist ::= nm idxlist_opt AS LP select RP */ + case 421: /* wqlist ::= nm idxlist_opt AS LP select RP */ { yygotominor.yy367 = SqliteWith::append(*(yymsp[-5].minor.yy211), *(yymsp[-4].minor.yy139), yymsp[-1].minor.yy123); delete yymsp[-5].minor.yy211; delete yymsp[-4].minor.yy139; } break; - case 423: /* wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP */ + case 422: /* wqlist ::= wqlist COMMA nm idxlist_opt AS LP select RP */ { yygotominor.yy367 = SqliteWith::append(yymsp[-7].minor.yy367, *(yymsp[-5].minor.yy211), *(yymsp[-4].minor.yy139), yymsp[-1].minor.yy123); delete yymsp[-5].minor.yy211; @@ -4945,7 +4935,7 @@ static void yy_reduce( DONT_INHERIT_TOKENS("wqlist"); } break; - case 424: /* wqlist ::= ID_TAB_NEW */ + case 423: /* wqlist ::= ID_TAB_NEW */ { parserContext->minorErrorBeforeNextToken("Syntax error"); yygotominor.yy367 = new SqliteWith(); diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y index 65a4dd7..0353e2c 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y +++ b/SQLiteStudio3/coreSQLiteStudio/parser/sqlite3_parse.y @@ -248,8 +248,8 @@ cmd(X) ::= CREATE temp(T) TABLE conslist_opt(CS) RP table_options(F). { X = new SqliteCreateTable( - *(T), *(E), + *(T), N->name1, N->name2, *(CL), @@ -268,8 +268,8 @@ cmd(X) ::= CREATE temp(T) TABLE ifnotexists(E) fullname(N) AS select(S). { X = new SqliteCreateTable( - *(T), *(E), + *(T), N->name1, N->name2, S @@ -1738,12 +1738,16 @@ exprx(X) ::= expr(E) not_opt(N) IN LP objectForTokens = X; parserContext->minorErrorBeforeNextToken("Syntax error"); } +/* +This introduces premature reduce for LP-expr and causes bug #2755 exprx(X) ::= LP expr(E). { X = new SqliteExpr(); X->initSubExpr(E); objectForTokens = X; parserContext->minorErrorBeforeNextToken("Syntax error"); } +*/ + exprx ::= expr not_opt IN ID_DB. [IN] {} exprx ::= expr not_opt IN nm DOT ID_TAB. [IN] {} diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp index 4f248b0..ba2ea37 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.cpp @@ -77,7 +77,7 @@ StatementTokenBuilder& StatementTokenBuilder::withFloat(double value) return with(Token::FLOAT, QString::number(value)); } -StatementTokenBuilder& StatementTokenBuilder::withInteger(int value) +StatementTokenBuilder& StatementTokenBuilder::withInteger(qint64 value) { return with(Token::INTEGER, QString::number(value)); } @@ -168,10 +168,10 @@ StatementTokenBuilder& StatementTokenBuilder::withLiteralValue(const QVariant& v } } - value.toInt(&ok); + qint64 longVal = value.toLongLong(&ok); if (ok) { - withInteger(value.toInt()); + withInteger(longVal); return *this; } diff --git a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h index fcf23be..3d748ad 100644 --- a/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h +++ b/SQLiteStudio3/coreSQLiteStudio/parser/statementtokenbuilder.h @@ -138,7 +138,7 @@ class StatementTokenBuilder * @param value Value for the token. * @return Reference to the builder for the further building. */ - StatementTokenBuilder& withInteger(int value); + StatementTokenBuilder& withInteger(qint64 value); /** * @brief Adds bind parameter token. diff --git a/SQLiteStudio3/coreSQLiteStudio/rsa/BigInt.h b/SQLiteStudio3/coreSQLiteStudio/rsa/BigInt.h index c78dc11..6d59c7a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/rsa/BigInt.h +++ b/SQLiteStudio3/coreSQLiteStudio/rsa/BigInt.h @@ -110,11 +110,12 @@ #ifndef BIGINT_H_
#define BIGINT_H_
+#include "coreSQLiteStudio_global.h"
#include <iostream> //ostream, istream
#include <cmath> //sqrt()
#include <string> //ToString(), BigInt(std::string)
-class BigInt
+class API_EXPORT BigInt
{
private:
/* An array of digits stored right to left,
diff --git a/SQLiteStudio3/coreSQLiteStudio/rsa/Key.h b/SQLiteStudio3/coreSQLiteStudio/rsa/Key.h index b193e2c..f1d2ee6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/rsa/Key.h +++ b/SQLiteStudio3/coreSQLiteStudio/rsa/Key.h @@ -34,9 +34,10 @@ #define KEY_H_ #include "BigInt.h" +#include "coreSQLiteStudio_global.h" #include <iostream> -class Key +class API_EXPORT Key { private: BigInt modulus; diff --git a/SQLiteStudio3/coreSQLiteStudio/rsa/KeyPair.h b/SQLiteStudio3/coreSQLiteStudio/rsa/KeyPair.h index 929ffe9..153195a 100644 --- a/SQLiteStudio3/coreSQLiteStudio/rsa/KeyPair.h +++ b/SQLiteStudio3/coreSQLiteStudio/rsa/KeyPair.h @@ -32,10 +32,11 @@ #ifndef KEYPAIR_H_ #define KEYPAIR_H_ +#include "coreSQLiteStudio_global.h" #include "Key.h" #include <iostream> -class KeyPair +class API_EXPORT KeyPair { private: const Key privateKey; diff --git a/SQLiteStudio3/coreSQLiteStudio/rsa/PrimeGenerator.h b/SQLiteStudio3/coreSQLiteStudio/rsa/PrimeGenerator.h index 8a9dfac..64ee9f6 100644 --- a/SQLiteStudio3/coreSQLiteStudio/rsa/PrimeGenerator.h +++ b/SQLiteStudio3/coreSQLiteStudio/rsa/PrimeGenerator.h @@ -30,9 +30,10 @@ #ifndef PRIMEGENERATOR_H_ #define PRIMEGENERATOR_H_ +#include "coreSQLiteStudio_global.h" #include "BigInt.h" -class PrimeGenerator +class API_EXPORT PrimeGenerator { private: /* Generates a random "number" such as 1 <= "number" < "top". diff --git a/SQLiteStudio3/coreSQLiteStudio/services/config.h b/SQLiteStudio3/coreSQLiteStudio/services/config.h index 6e1fd95..c7bebf3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/config.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/config.h @@ -162,6 +162,8 @@ class API_EXPORT Config : public QObject virtual void commit() = 0; virtual void rollback() = 0; + virtual QString getSqlite3Version() const = 0; + signals: void massSaveBegins(); void massSaveCommited(); diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp index bbfec32..046993f 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.cpp @@ -13,6 +13,7 @@ #include <QRegExp> #include <QDateTime> #include <QSysInfo> +#include <QCoreApplication> #include <QtConcurrent/QtConcurrentRun> static_qstring(DB_FILE_NAME, "settings3"); @@ -28,6 +29,8 @@ void ConfigImpl::init() initDbFile(); initTables(); + sqlite3Version = db->exec("SELECT sqlite_version()")->getSingleCell().toString(); + connect(this, SIGNAL(sqlHistoryRefreshNeeded()), this, SLOT(refreshSqlHistory())); connect(this, SIGNAL(ddlHistoryRefreshNeeded()), this, SLOT(refreshDdlHistory())); } @@ -175,6 +178,11 @@ QString ConfigImpl::getLastErrorString() const return msg; } +QString ConfigImpl::getSqlite3Version() const +{ + return sqlite3Version; +} + QList<ConfigImpl::CfgDbPtr> ConfigImpl::dbList() { QList<CfgDbPtr> entries; @@ -467,23 +475,42 @@ QString ConfigImpl::getConfigPath() QString ConfigImpl::getPortableConfigPath() { + QStringList paths = QStringList({"./sqlitestudio-cfg", qApp->applicationDirPath() + "/sqlitestudio-cfg"}); + QSet<QString> pathSet; + QDir dir; + for (const QString& path : paths) + { + dir = QDir(path); + pathSet << dir.absolutePath(); + } + + QString potentialPath; QFileInfo file; - QDir dir("./sqlitestudio-cfg"); + for (const QString& path : pathSet) + { + dir = QDir(path); + file = QFileInfo(dir.absolutePath()); + if (!file.exists()) + { + if (potentialPath.isNull()) + potentialPath = dir.absolutePath(); - file = QFileInfo(dir.absolutePath()); - if (!file.exists()) - return dir.absolutePath(); + continue; + } - if (!file.isDir() || !file.isReadable() || !file.isWritable()) - return QString::null; + if (!file.isDir() || !file.isReadable() || !file.isWritable()) + continue; - foreach (file, dir.entryInfoList()) - { - if (!file.isReadable() || !file.isWritable()) - return QString::null; + foreach (file, dir.entryInfoList()) + { + if (!file.isReadable() || !file.isWritable()) + continue; + } + + return dir.absolutePath(); } - return dir.absolutePath(); + return potentialPath; } void ConfigImpl::initTables() diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h index 63d1e1f..3bdb7a5 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/configimpl.h @@ -36,6 +36,7 @@ class API_EXPORT ConfigImpl : public Config bool removeDb(const QString& name); bool isDbInConfig(const QString& name); QString getLastErrorString() const; + QString getSqlite3Version() const; /** * @brief Provides list of all registered databases. @@ -120,6 +121,7 @@ class API_EXPORT ConfigImpl : public Config SqlHistoryModel* sqlHistoryModel = nullptr; DdlHistoryModel* ddlHistoryModel = nullptr; QMutex sqlHistoryMutex; + QString sqlite3Version; public slots: void refreshDdlHistory(); diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp index 43fc953..70aa568 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/dbmanagerimpl.cpp @@ -12,6 +12,7 @@ #include <QPluginLoader> #include <QDebug> #include <QUrl> +#include <QDir> #include <db/invaliddb.h> DbManagerImpl::DbManagerImpl(QObject *parent) : @@ -46,7 +47,13 @@ bool DbManagerImpl::addDb(const QString &name, const QString &path, const QHash< if (getByName(name)) { qWarning() << "Tried to add database with name that was already on the list:" << name; - return false; // db with this name exists + return false; + } + + if (getByPath(path)) + { + qWarning() << "Tried to add database with path that was already on the list:" << path; + return false; } QString errorMessage; @@ -74,24 +81,27 @@ bool DbManagerImpl::updateDb(Db* db, const QString &name, const QString &path, c return false; } + QDir pathDir(path); + QString normalizedPath = pathDir.absolutePath(); + listLock.lockForWrite(); nameToDb.remove(db->getName(), Qt::CaseInsensitive); pathToDb.remove(db->getPath()); - bool pathDifferent = db->getPath() != path; + bool pathDifferent = db->getPath() != normalizedPath; QString oldName = db->getName(); db->setName(name); - db->setPath(path); + db->setPath(normalizedPath); db->setConnectionOptions(options); bool result = false; if (permanent) { if (CFG->isDbInConfig(oldName)) - result = CFG->updateDb(oldName, name, path, options); + result = CFG->updateDb(oldName, name, normalizedPath, options); else - result = CFG->addDb(name, path, options); + result = CFG->addDb(name, normalizedPath, options); } else if (CFG->isDbInConfig(name)) // switched "permanent" off? result = CFG->removeDb(name); @@ -105,7 +115,7 @@ bool DbManagerImpl::updateDb(Db* db, const QString &name, const QString &path, c db = reloadedDb; nameToDb[name] = db; - pathToDb[path] = db; + pathToDb[normalizedPath] = db; listLock.unlock(); @@ -138,14 +148,17 @@ void DbManagerImpl::removeDbByName(const QString &name, Qt::CaseSensitivity cs) void DbManagerImpl::removeDbByPath(const QString &path) { + // Using QDir to normalize separator + QDir pathDir(path); + listLock.lockForRead(); - bool contains = pathToDb.contains(path); + bool contains = pathToDb.contains(pathDir.absolutePath()); listLock.unlock(); if (!contains) return; listLock.lockForWrite(); - Db* db = pathToDb[path]; + Db* db = pathToDb[pathDir.absolutePath()]; removeDbInternal(db); listLock.unlock(); @@ -230,7 +243,9 @@ Db* DbManagerImpl::getByName(const QString &name, Qt::CaseSensitivity cs) Db* DbManagerImpl::getByPath(const QString &path) { - return pathToDb.value(path); + // Using QDir to normalize separator + QDir pathDir(path); + return pathToDb.value(pathDir.absolutePath()); } Db* DbManagerImpl::createInMemDb() @@ -369,12 +384,13 @@ Db* DbManagerImpl::createDb(const QString &name, const QString &path, const QHas Db* db = nullptr; QStringList messages; QString message; + QDir pathDir(path); // Using QDir to normalize separator foreach (dbPlugin, dbPlugins) { if (options.contains("plugin") && options["plugin"] != dbPlugin->getName()) continue; - db = dbPlugin->getInstance(name, path, options, &message); + db = dbPlugin->getInstance(name, pathDir.absolutePath(), options, &message); if (!db) { messages << message; diff --git a/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp b/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp index c94e4c2..da732bd 100644 --- a/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/services/impl/functionmanagerimpl.cpp @@ -147,9 +147,9 @@ void FunctionManagerImpl::evaluateScriptAggregateInitial(ScriptFunction* func, D aggregateStorage["context"] = QVariant::fromValue(ctx); if (dbAwarePlugin) - dbAwarePlugin->evaluate(ctx, func->code, {}, db, false); + dbAwarePlugin->evaluate(ctx, func->initCode, {}, db, false); else - plugin->evaluate(ctx, func->code, {}); + plugin->evaluate(ctx, func->initCode, {}); if (plugin->hasError(ctx)) { @@ -203,9 +203,9 @@ QVariant FunctionManagerImpl::evaluateScriptAggregateFinal(ScriptFunction* func, QVariant result; if (dbAwarePlugin) - result = dbAwarePlugin->evaluate(ctx, func->code, {}, db, false); + result = dbAwarePlugin->evaluate(ctx, func->finalCode, {}, db, false); else - result = plugin->evaluate(ctx, func->code, {}); + result = plugin->evaluate(ctx, func->finalCode, {}); if (plugin->hasError(ctx)) { diff --git a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp index 8ff4f0d..2d2bbd3 100644 --- a/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/sqlitestudio.cpp @@ -39,7 +39,7 @@ DEFINE_SINGLETON(SQLiteStudio) -static const int sqlitestudioVersion = 30002; +static const int sqlitestudioVersion = 30003; SQLiteStudio::SQLiteStudio() { diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp index d064cb1..8dc36ee 100644 --- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.cpp @@ -111,11 +111,13 @@ void TableModifier::handleFks(const QString& tempTableName) subModifier.usedTempTableNames = usedTempTableNames; subModifier.tableColMap = tableColMap; + subModifier.triggerNameToDdlMap = triggerNameToDdlMap; subModifier.existingColumns = existingColumns; subModifier.newName = newName; subModifier.subHandleFks(originalTable, tempTableName); sqls += subModifier.generateSqls(); modifiedTables << fkTable; + triggerNameToDdlMap = subModifier.triggerNameToDdlMap; modifiedTables += subModifier.getModifiedTables(); modifiedIndexes += subModifier.getModifiedIndexes(); @@ -390,10 +392,67 @@ void TableModifier::handleTriggers() void TableModifier::handleTrigger(SqliteCreateTriggerPtr trigger) { - handleName(originalTable, trigger->table); - if (trigger->event->type == SqliteCreateTrigger::Event::UPDATE_OF) - handleColumnNames(trigger->event->columnNames); + trigger->rebuildTokens(); + QString originalQueryString = trigger->detokenize(); + bool forThisTable = (originalTable.compare(trigger->table, Qt::CaseInsensitive) == 0); + bool alreadyProcessedOnce = modifiedTriggers.contains(trigger->trigger, Qt::CaseInsensitive); + + if (forThisTable) + { + // Those routines should run only for trigger targeted for originalTable. + handleName(originalTable, trigger->table); + if (trigger->event->type == SqliteCreateTrigger::Event::UPDATE_OF) + handleColumnNames(trigger->event->columnNames); + } + + if (alreadyProcessedOnce) + { + // The trigger was already modified by handling of some referencing table. + QString oldDdl = triggerNameToDdlMap[trigger->trigger]; + Parser parser(dialect); + trigger = parser.parse<SqliteCreateTrigger>(oldDdl); + if (!trigger) + { + qCritical() << "Could not parse old (already processed once) trigger. Parser error:" << parser.getErrorString() << ", Old DDL: " << oldDdl; + warnings << QObject::tr("There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.") + .arg(trigger->trigger); + return; + } + } + + handleTriggerQueries(trigger); + + trigger->rebuildTokens(); + QString newQueryString = trigger->detokenize(); + if (originalQueryString == newQueryString && !forThisTable) + return; // No query modification was made and trigger is not deleted by this table drop. + + if (trigger->event->type == SqliteCreateTrigger::Event::UPDATE_OF && trigger->event->columnNames.size() == 0) + { + warnings << QObject::tr("All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.").arg(trigger->trigger); + return; + } + + if (alreadyProcessedOnce) + { + // We will add new sql to list, at the end, so it's executed after all tables were altered. + sqls.removeOne(triggerNameToDdlMap[trigger->trigger]); + } + + if (!forThisTable) + { + // If this is for other table, than trigger might be still existing, cause altering this table will not delete trigger. + sqls << QString("DROP TRIGGER IF EXISTS %1").arg(wrapObjIfNeeded(trigger->trigger, dialect)); + } + + sqls << newQueryString; + modifiedTriggers << trigger->trigger; + triggerNameToDdlMap[trigger->trigger] = newQueryString; +} + +void TableModifier::handleTriggerQueries(SqliteCreateTriggerPtr trigger) +{ SqliteQuery* newQuery = nullptr; QList<SqliteQuery*> newQueries; foreach (SqliteQuery* query, trigger->queries) @@ -406,17 +465,6 @@ void TableModifier::handleTrigger(SqliteCreateTriggerPtr trigger) errors << QObject::tr("Cannot not update trigger %1 according to table %2 modification.").arg(trigger->trigger, originalTable); } trigger->queries = newQueries; - - if (trigger->event->type == SqliteCreateTrigger::Event::UPDATE_OF && trigger->event->columnNames.size() == 0) - { - warnings << QObject::tr("All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.").arg(trigger->trigger); - } - else - { - trigger->rebuildTokens(); - sqls << trigger->detokenize(); - modifiedTriggers << trigger->trigger; - } } void TableModifier::handleViews() diff --git a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h index 62af492..d3977ee 100644 --- a/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h +++ b/SQLiteStudio3/coreSQLiteStudio/tablemodifier.h @@ -42,6 +42,7 @@ class API_EXPORT TableModifier void handleIndex(SqliteCreateIndexPtr index); void handleTriggers(); void handleTrigger(SqliteCreateTriggerPtr trigger); + void handleTriggerQueries(SqliteCreateTriggerPtr trigger); void handleViews(); void handleView(SqliteCreateViewPtr view); SqliteQuery* handleTriggerQuery(SqliteQuery* query, const QString& trigName); @@ -105,6 +106,7 @@ class API_EXPORT TableModifier QString newName; QStringList existingColumns; QHash<QString, QString> tableColMap; + QHash<QString, QString> triggerNameToDdlMap; QStringList modifiedTables; QStringList modifiedIndexes; QStringList modifiedTriggers; diff --git a/SQLiteStudio3/coreSQLiteStudio/translations.cpp b/SQLiteStudio3/coreSQLiteStudio/translations.cpp index 56dc5f6..362d4fa 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations.cpp +++ b/SQLiteStudio3/coreSQLiteStudio/translations.cpp @@ -7,7 +7,7 @@ #include <QRegularExpression> QHash<QString,QTranslator*> SQLITESTUDIO_TRANSLATIONS; -QStringList SQLITESTUDIO_TRANSLATION_DIRS = QStringList({":/msg", ":/msg/translations", "msg", "translations"}); +QStringList SQLITESTUDIO_TRANSLATION_DIRS = QStringList({"msg", "translations", ":/msg", ":/msg/translations"}); void loadTranslation(const QString& baseName) { @@ -106,3 +106,13 @@ QMap<QString,QString> getAvailableLanguages() return langs; } + +void setDefaultLanguage(const QString& lang) +{ + CFG_CORE.General.Language.set(lang); +} + +QString getConfigLanguageDefault() +{ + return CFG_CORE.General.Language.getDefultValue().toString(); +} diff --git a/SQLiteStudio3/coreSQLiteStudio/translations.h b/SQLiteStudio3/coreSQLiteStudio/translations.h index c130064..4ae6231 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations.h +++ b/SQLiteStudio3/coreSQLiteStudio/translations.h @@ -1,18 +1,21 @@ #ifndef TRANSLATIONS_H #define TRANSLATIONS_H +#include "coreSQLiteStudio_global.h" #include <QString> #include <QMap> -void loadTranslations(const QStringList& baseNames); -void loadTranslation(const QString& baseName); -void unloadTranslation(const QString& baseName); +API_EXPORT void loadTranslations(const QStringList& baseNames); +API_EXPORT void loadTranslation(const QString& baseName); +API_EXPORT void unloadTranslation(const QString& baseName); +API_EXPORT void setDefaultLanguage(const QString& lang); +API_EXPORT QString getConfigLanguageDefault(); /** * @brief Provides list of translations as code names. * @return List of available translations in their code names (pl, pt, de, ...). */ -QStringList getAvailableTranslations(); +API_EXPORT QStringList getAvailableTranslations(); /** * @brief Provides list of languages and their code names. @@ -20,6 +23,6 @@ QStringList getAvailableTranslations(); * * As the result is a QMap, it comes sorted by a translated names of languages. */ -QMap<QString, QString> getAvailableLanguages(); +API_EXPORT QMap<QString, QString> getAvailableLanguages(); #endif // TRANSLATIONS_H diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.qm Binary files differnew file mode 100644 index 0000000..9dad8df --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts new file mode 100644 index 0000000..7656d3b --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_de.ts @@ -0,0 +1,1278 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="de_DE"> +<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="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <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't support exporing query results.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' 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 '%1' 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="116"/> + <source>Error while exporting query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <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 '%1'. 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 '%1' 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="93"/> + <source>Table '%1' 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="98"/> + <source>Table '%1' 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="116"/> + <source>Could not create table to import to: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <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="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <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="88"/> + <source>Table '%1' 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'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="56"/> + <source>Error while populating table: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <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="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <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 '%2' statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' 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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' 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 '%2' 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="2170"/> + <source>Parser stack overflow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <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="307"/> + <source>Could not resolve data source for column: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/configimpl.cpp" line="617"/> + <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="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <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="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="433"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <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="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation 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'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'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="132"/> + <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="538"/> + <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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won'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'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="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <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="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <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="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <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="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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="363"/> + <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="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <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="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <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="677"/> + <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="694"/> + <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="730"/> + <source>Could not run new version for continuing update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <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="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <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="871"/> + <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="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <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_es.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.qm Binary files differnew file mode 100644 index 0000000..9dad8df --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts new file mode 100644 index 0000000..420d0bb --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_es.ts @@ -0,0 +1,1278 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="es_ES"> +<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="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <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't support exporing query results.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' 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 '%1' 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="116"/> + <source>Error while exporting query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <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 '%1'. 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 '%1' 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="93"/> + <source>Table '%1' 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="98"/> + <source>Table '%1' 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="116"/> + <source>Could not create table to import to: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <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="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <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="88"/> + <source>Table '%1' 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'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="56"/> + <source>Error while populating table: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <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="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <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 '%2' statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' 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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' 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 '%2' 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="2170"/> + <source>Parser stack overflow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <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="307"/> + <source>Could not resolve data source for column: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/configimpl.cpp" line="617"/> + <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="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <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="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="433"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <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="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation 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'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'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="132"/> + <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="538"/> + <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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won'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'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="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <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="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <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="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <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="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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="363"/> + <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="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <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="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <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="677"/> + <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="694"/> + <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="730"/> + <source>Could not run new version for continuing update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <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="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <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="871"/> + <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="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <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_fr.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm Binary files differnew file mode 100644 index 0000000..a0b0a53 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts new file mode 100644 index 0000000..46e3abc --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_fr.ts @@ -0,0 +1,1283 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="fr_FR"> +<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>Impossible d'exécuter la requête sur une base de données fermée.</translation> + </message> + <message> + <location filename="../db/abstractdb.cpp" line="603"/> + <source>Error attaching database %1: %2</source> + <translation>Erreur base de données attachée %1:%2</translation> + </message> +</context> +<context> + <name>BugReporter</name> + <message> + <location filename="../services/bugreporter.cpp" line="46"/> + <source>Invalid login or password</source> + <translation>Identifiant ou mot de passe incorrect</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>La base de données pour exécuter des requêtes n'était pas définie.</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>La base de données pour exécuter des requêtes n'est pas ouverte.</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>Impossible d'initialiser une transaction de la base de données:%1</translation> + </message> + <message> + <location filename="../db/chainexecutor.cpp" line="74"/> + <source>Interrupted</source> + <comment>chain executor</comment> + <translation>Interruption</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>Impossible d'enregistrer la transaction de la base de données:%1</translation> + </message> +</context> +<context> + <name>CompletionHelper</name> + <message> + <location filename="../completionhelper.cpp" line="196"/> + <source>New row reference</source> + <translation>Nouvelle référence de ligne</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="203"/> + <source>Old row reference</source> + <translation>Anncienne référence de ligne</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="208"/> + <source>New table name</source> + <translation>Nouveau nom de table</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="211"/> + <source>New index name</source> + <translation>Nouveau nom d'index</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="214"/> + <source>New view name</source> + <translation>Nouveau nom de vue</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="217"/> + <source>New trigger name</source> + <translation>Nouveau nom de déclencheur</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="220"/> + <source>Table or column alias</source> + <translation>Table ou alias colonne</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="223"/> + <source>transaction name</source> + <translation>Nom de transaction</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="226"/> + <source>New column name</source> + <translation>Nouveau nom de colonne</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="229"/> + <source>Column data type</source> + <translation>Type de données de la colonne</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="232"/> + <source>Constraint name</source> + <translation>Nom de la contrainte</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="245"/> + <source>Error message</source> + <translation>Message d'erreur</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="289"/> + <source>Collation name</source> + <translation>Nom de la collation</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="304"/> + <source>Any word</source> + <translation>N'importe quel mot</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="485"/> + <source>Default database</source> + <translation>Base de données par défaut</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="486"/> + <source>Temporary objects database</source> + <translation>Objets temporaires de base de données</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>Impossible d'ajouter une base de données %1: %2</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation>La base de données %1 ne peut ëtre mise à jour à cause de l'erreur: %2</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation>Le fichier de la base de données n'existe pas.</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translation>Aucun plugin supporté chargé.</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation>La base de données ne peut être initialisée.</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <source>No suitable database driver plugin found.</source> + <translation>Aucun pilote de base de données approprié trouvé.</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>Erreur lors de la creation de la table de la base de données: %1</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="380"/> + <source>Could not parse table.</source> + <translation>Impossible d'analyser la table.</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>La base de données %1 ne peut être attachée à la base de données %2, aussi les données de la table %3 seront copiées avec SQLiteStudio comme interpréteur. Cette méthode est lente pour des tables importantes, SVP soyer patient.</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="447"/> + <source>Error while copying data for table %1: %2</source> + <translation>Erreur lors de la copie des données vers la table %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>Erreur lors de la copie des données de la table %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>Erreur à la création de la vue %1: %2 +Tables, index, déclencheurs et vues copiés de la base de données %3 seront maintenus.</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="542"/> + <source>Error while creating view in target database: %1</source> + <translation>Erreur lors de la création de la vue de la base de données:%1</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="547"/> + <source>Error while creating index in target database: %1</source> + <translation>Erreur lors de la création de l'index de la base de données:%1</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="552"/> + <source>Error while creating trigger in target database: %1</source> + <translation>Erreur lors de la création du déclencheur de la base de données:%1</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>Le fichier cible existe, mais ne peut être remplacé.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="942"/> + <source>Could not find proper database plugin to create target database.</source> + <translation>Impossible de trouver le plugin correct pour créer la base de données cible.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="1176"/> + <source>Error while converting database: %1</source> + <translation>Erreur lors de la conversion de la base de données: %1</translation> + </message> +</context> +<context> + <name>DdlHistoryModel</name> + <message> + <location filename="../ddlhistorymodel.cpp" line="65"/> + <source>Database name</source> + <comment>ddl history header</comment> + <translation>Nom de la base</translation> + </message> + <message> + <location filename="../ddlhistorymodel.cpp" line="67"/> + <source>Database file</source> + <comment>ddl history header</comment> + <translation>Fichier de la base</translation> + </message> + <message> + <location filename="../ddlhistorymodel.cpp" line="69"/> + <source>Date of execution</source> + <comment>ddl history header</comment> + <translation>Date d'exécution</translation> + </message> + <message> + <location filename="../ddlhistorymodel.cpp" line="71"/> + <source>Changes</source> + <comment>ddl history header</comment> + <translation>Modifications</translation> + </message> +</context> +<context> + <name>ExportManager</name> + <message> + <location filename="../services/exportmanager.cpp" line="72"/> + <source>Export plugin %1 doesn't support exporing query results.</source> + <translation>Plugin d'export %1 ne supporte pas l'exportation de la requête.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation>Plugin d'export %1 ne supporte pas l'exportation de la table.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation>Plugin d'export %1 ne supporte pas l'exportation de la base de données.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' is not supported. Supported formats are: %2.</source> + <translation>Format d'export %1 n'est pas supporté. Les formats supportés sont: %2.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="218"/> + <source>Export to the clipboard was successful.</source> + <translation>Export vers le presse-papier avec succés.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="222"/> + <source>Export to the file '%1' was successful.</source> + <translation>Export vers le fichier '%1' avec succès.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="224"/> + <source>Export was successful.</source> + <translation>Export avec succès.</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>Impossible d'exporter vers le fichier '%1'. Le fichier ne peut être ouvert en écriture.</translation> + </message> +</context> +<context> + <name>ExportWorker</name> + <message> + <location filename="../exportworker.cpp" line="116"/> + <source>Error while exporting query results: %1</source> + <translation>Erreur lors de l'exportation des résultats de la requête:%1</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation>Erreur lors de la totalisation des données de colonne issu de la requête: %1</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation>Impossible d'analyser %1 afin de l'exporter. Celle-ci sera excluse de l'exportation.</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation>Erreur lors de la lecture des données à exporter de la table %1: %2</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation>Erreur lors du comptage des données à exporter de la table %1: %2</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <source>Error while counting data column width to export from table %1: %2</source> + <translation>Erreur lors de la totalisation des données à exporter de la table %1: %2</translation> + </message> +</context> +<context> + <name>FunctionManagerImpl</name> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/> + <source>Invalid number of arguments to function '%1'. Expected %2, but got %3.</source> + <translation>Nombre de paramètres invalide de la fonction%1. Attendu %2, obtenu %3.</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/> + <source>No such function registered in SQLiteStudio: %1(%2)</source> + <translation>Fonction inconnue avec SQLiteStudio: %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>La fonction %1(%2) est référencée avec le langage %3, mais le plugin supportant ce langage n'est actuellement pas chargé.</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/> + <source>Invalid regular expression pattern: %1</source> + <translation>Expression invalide: %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>Impossible d'ouvrir en lecture le ficher %1:%2</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/> + <source>Could not open file %1 for writting: %2</source> + <translation>Impossible d'ouvrir en écriture le ficher %1:%2</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/> + <source>Error while writting to file %1: %2</source> + <translation>Erreur lors de l'écriture du fichier %1:%2</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/> + <source>Unsupported scripting language: %1</source> + <translation>Langage script non supporté: %1</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>Impossible d'initialiser le paramètre texte por l'export. Utulisation du paramètre par défaut: %1</translation> + </message> +</context> +<context> + <name>ImportManager</name> + <message> + <location filename="../services/importmanager.cpp" line="93"/> + <source>Imported data to the table '%1' successfully.</source> + <translation>Importation des données de la table '%1' réussie.</translation> + </message> +</context> +<context> + <name>ImportWorker</name> + <message> + <location filename="../importworker.cpp" line="24"/> + <source>No columns provided by the import plugin.</source> + <translation>Aucune colonne fournie par le plugin d'importation.</translation> + </message> + <message> + <location filename="../importworker.cpp" line="30"/> + <source>Could not start transaction in order to import a data: %1</source> + <translation>Impossible d'initialiser la transaction d'import de données: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="48"/> + <source>Could not commit transaction for imported data: %1</source> + <translation>Impossible d'enregistrer la transaction d'import de données: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="93"/> + <source>Table '%1' has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source> + <translation>La table %1 a moins de colonnes que de données à importer. Les colonnes supplèmentaires seront ignorées.</translation> + </message> + <message> + <location filename="../importworker.cpp" line="98"/> + <source>Table '%1' has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source> + <translation>La table %1 a plus de colonnes que de colonnes de données à importer. Certaines colonnes de la table seront vides.</translation> + </message> + <message> + <location filename="../importworker.cpp" line="116"/> + <source>Could not create table to import to: %1</source> + <translation>Impossible de créer la table d'import: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation>Erreur lors de l'import des données: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation>Transaction interrompue.</translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation>Chargement impossible du plugin %1 celui-ci est en conflit avec le plugin %2.</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <source>Cannot load plugin %1, because its dependency was not loaded: %2.</source> + <translation>Chargement impossible du plugin %1, les dépendances n'ont pa été chargées: %2.</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation>Chargement impossible du plugin %1, Détails de l'erreur: %2</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation>Chargement impossible du plugin %1 (erreur à initialisation du plugin).</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation>min %1</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <source>max: %1</source> + <comment>plugin dependency version</comment> + <translation>max %1</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>Constante</translation> + </message> +</context> +<context> + <name>PopulateConstantConfig</name> + <message> + <location filename="../plugins/populateconstant.ui" line="20"/> + <source>Constant value:</source> + <translation>Valeur constante:</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>Dictionnaire</translation> + </message> +</context> +<context> + <name>PopulateDictionaryConfig</name> + <message> + <location filename="../plugins/populatedictionary.ui" line="20"/> + <source>Dictionary file</source> + <translation>Fichier du dictionnaire</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="29"/> + <source>Pick dictionary file</source> + <translation>Extrait du dictionnaire</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="39"/> + <source>Word separator</source> + <translation>Mot séparateur</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="45"/> + <source>Whitespace</source> + <translation>Espace</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="58"/> + <source>Line break</source> + <translation>Fin de ligne</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="74"/> + <source>Method of using words</source> + <translation>Méthode d'utilisation des mots</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="80"/> + <source>Ordered</source> + <translation>Trié</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="93"/> + <source>Randomly</source> + <translation>Aléatoire</translation> + </message> +</context> +<context> + <name>PopulateManager</name> + <message> + <location filename="../services/populatemanager.cpp" line="88"/> + <source>Table '%1' populated successfully.</source> + <translation>Table '%1' remplie avec succès.</translation> + </message> +</context> +<context> + <name>PopulateRandom</name> + <message> + <location filename="../plugins/populaterandom.cpp" line="12"/> + <source>Random number</source> + <translation>Nombre aléatoire</translation> + </message> +</context> +<context> + <name>PopulateRandomConfig</name> + <message> + <location filename="../plugins/populaterandom.ui" line="20"/> + <source>Constant prefix</source> + <translation>Préfixe constant</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="26"/> + <source>No prefix</source> + <translation>Aucun préfixe</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="39"/> + <source>Minimum value</source> + <translation>Valeur minimale</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="61"/> + <source>Maximum value</source> + <translation>Valeur maximale</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="86"/> + <source>Constant suffix</source> + <translation>Suffixe constant</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="92"/> + <source>No suffix</source> + <translation>Aucun suffixe</translation> + </message> +</context> +<context> + <name>PopulateRandomText</name> + <message> + <location filename="../plugins/populaterandomtext.cpp" line="12"/> + <source>Random text</source> + <translation>Text aléatoire</translation> + </message> +</context> +<context> + <name>PopulateRandomTextConfig</name> + <message> + <location filename="../plugins/populaterandomtext.ui" line="20"/> + <source>Use characters from common sets:</source> + <translation>Utilisez des caractères de la table standard:</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="36"/> + <source>Minimum length</source> + <translation>Longueur minimun</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="64"/> + <source>Letters from a to z.</source> + <translation>Caractères de a à z.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="67"/> + <source>Alpha</source> + <translation>Caractère alpha</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="77"/> + <source>Numbers from 0 to 9.</source> + <translation>Carctères numériques de 0 à 9.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="80"/> + <source>Numeric</source> + <translation>Numérique</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="90"/> + <source>A whitespace, a tab and a new line character.</source> + <translation>Espace, tabulation et retour chariot.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="93"/> + <source>Whitespace</source> + <translation>Espace</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="103"/> + <source>Includes all above and all others.</source> + <translation>Inclus ci dessus et tous les autres.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="106"/> + <source>Binary</source> + <translation>Binaire</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="119"/> + <source>Use characters from my custom set:</source> + <translation>Utilisez les catactères de ma table personalisée:</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="132"/> + <source>Maximum length</source> + <translation>Longueur maximum</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="160"/> + <source>If you type some character multiple times, it's more likely to be used.</source> + <translation>Si vous saisissez plusieurs fois le même caractère, la sécurité est faible.</translation> + </message> +</context> +<context> + <name>PopulateScript</name> + <message> + <location filename="../plugins/populatescript.cpp" line="13"/> + <source>Script</source> + <translation>Script</translation> + </message> +</context> +<context> + <name>PopulateScriptConfig</name> + <message> + <location filename="../plugins/populatescript.ui" line="26"/> + <source>Initialization code (optional)</source> + <translation>Code d'initialisation (optionel)</translation> + </message> + <message> + <location filename="../plugins/populatescript.ui" line="45"/> + <source>Per step code</source> + <translation>Code par étape</translation> + </message> + <message> + <location filename="../plugins/populatescript.ui" line="70"/> + <source>Language</source> + <translation>Langage</translation> + </message> + <message> + <location filename="../plugins/populatescript.ui" line="89"/> + <source>Help</source> + <translation>Aide</translation> + </message> +</context> +<context> + <name>PopulateSequence</name> + <message> + <location filename="../plugins/populatesequence.cpp" line="13"/> + <source>Sequence</source> + <translation>Séquence</translation> + </message> +</context> +<context> + <name>PopulateSequenceConfig</name> + <message> + <location filename="../plugins/populatesequence.ui" line="33"/> + <source>Start value:</source> + <translation>Valeur de départ:</translation> + </message> + <message> + <location filename="../plugins/populatesequence.ui" line="56"/> + <source>Step:</source> + <translation>Incrément:</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>Impossible d'initialiser la transaction pour remplir la table.Détails de l'erreur %1</translation> + </message> + <message> + <location filename="../populateworker.cpp" line="56"/> + <source>Error while populating table: %1</source> + <translation>Erreur lors du remplissage de la table: %1</translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <source>Could not commit transaction after table populating. Error details: %1</source> + <translation>Impossible d'enregistrer la transaction après le remplissage de la table. Erreur %1</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>Impossible d'ouvrir la base de données: %1</translation> + </message> + <message> + <location filename="../db/abstractdb2.h" line="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <source>Result set expired or no row available.</source> + <translation>Terminé ou aucune ligne valide.</translation> + </message> + <message> + <location filename="../db/abstractdb3.h" line="376"/> + <source>Could not close database: %1</source> + <translation>Impossible de clore la base de bonnées: %1</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 '%2' statement.</source> + <translation>SQLite %1 ne supporte pas l'instruction '%2'.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' statement, but the regular table can be created instead if you proceed.</source> + <translation>SQLite %1 ne supporte pas l'instruction '%2', mais la table normale peut être créée à la place si vous confirmez.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="424"/> + <source>Could not parse statement: %1 +Error details: %2</source> + <translation>Impossible d'analyser l'instruction: %1 +Détails erreur: %2</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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation>SQLite %1 ne supporte pas la clause '%2'. Impossible de convertir l'instruction '%3' avec cette clause.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' statement.</source> + <translation>SQLite %1 ne supporte pas la clause '%2' de l'instruction '%3'.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="756"/> + <source>SQLite %1 does not support current date or time clauses in expressions.</source> + <translation>SQLite %1 ne supporte pas la clause date ou l'heure actuelle dans l'expression.</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 '%2' clause in expressions.</source> + <translation>SQLite %1 ne supporte pas la clause '%2' dans l'expression.</translation> + </message> + <message> + <location filename="../impl/dbattacherimpl.cpp" line="109"/> + <source>Could not attach database %1: %2</source> + <translation>Impossible d'attacher la base de données %1: %2</translation> + </message> + <message> + <location filename="../parser/parsercontext.cpp" line="108"/> + <location filename="../parser/parsercontext.cpp" line="110"/> + <source>Incomplete query.</source> + <translation>Requête imcomplète.</translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="1904"/> + <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <source>Parser stack overflow</source> + <translation>Analyse dépassement pile</translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <source>Syntax error</source> + <translation>Erreur de syntaxe </translation> + </message> + <message> + <location filename="../plugins/populatedictionary.cpp" line="30"/> + <source>Could not open dictionary file %1 for reading.</source> + <translation>Impossible d'ouvrir en lecture le fichier dictionnaire %1.</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.cpp" line="91"/> + <source>Dictionary file must exist and be readable.</source> + <translation>Le fichier dictionnaire doit exister et être en lecture.</translation> + </message> + <message> + <location filename="../plugins/populaterandom.cpp" line="53"/> + <source>Maximum value cannot be less than minimum value.</source> + <translation>La valeur maximum ne peut être inférieure à la valeur minimum.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.cpp" line="77"/> + <source>Maximum length cannot be less than minimum length.</source> + <translation>Longueur maximum ne peut être inférieure à la longueur minimum.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.cpp" line="88"/> + <source>Custom character set cannot be empty.</source> + <translation>La table des caractères personalisés ne peut être vide.</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="40"/> + <source>Could not find plugin to support scripting language: %1</source> + <translation>Impossible de trouver le plugin supportant le script: %1</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="58"/> + <source>Error while executing populating initial code: %1</source> + <translation>Erreur à l'initialisation du code de remplissage: %1</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="80"/> + <source>Error while executing populating code: %1</source> + <translation>Erreur à l'exécution du code de remplissage: %1</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="112"/> + <source>Select implementation language.</source> + <translation>Sélectionnez l'application langage.</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="113"/> + <source>Implementation code cannot be empty.</source> + <translation>L'application de code ne peut être vide.</translation> + </message> + <message> + <location filename="../selectresolver.cpp" line="307"/> + <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"/> + <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'initialiser le fichier de configuration. Aucune modification et les requêtes seront perdues après redémarrage. Essayez d'initialiser le fichier avec cette localisation: %1.</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation>Objectif général</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation>Support base de données</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation>Format code</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation>Langages script</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation>Export</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation>Import</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <source>Table populating</source> + <comment>plugin category name</comment> + <translation>Peuplement de la table</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>La table %1 référence la table %2, mais la clé étrangère ne pourra être mise à jour pour la nouvelle table à cause de problèmes lors de l'analyse DDL de la table %3.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="379"/> + <source>All columns indexed by the index %1 are gone. The index will not be recreated after table modification.</source> + <translation>Toutes les colonnes indéxées par l'indexe %1 sont faites. L'indexe ne sera pas recréé après la modification de la table.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="418"/> + <source>There is problem with proper processing trigger %1. It may be not fully updated afterwards and will need your attention.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation>Impossible de mettre à jour le déclencheur%1 selon la modification de la table %2.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="433"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <translation>Toutes les colonnes couvertes par le déclencheur %1 sont faites. Le déclencheur ne sera pas recréé après la modification de la table.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="483"/> + <source>Cannot not update view %1 according to table %2 modifications. +The view will remain as it is.</source> + <translation>Impossible de mettre à jour les modifications de la vue %1 issue de la table %2 +La vue restera telque.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation>Il y a un problème à la mise à jour l'instruction %1 avec le déclencheur %2. Une partie de l'instruction SELECT référençant la table %3 ne ppermet pas sa modification. La mise à jour manuelle du déclencheur est nécessaire.</translation> + </message> + <message> + <location filename="../viewmodifier.cpp" line="25"/> + <source>Could not parse DDL of the view to be created. Details: %1</source> + <translation>Impossible d'analyser le DDL de création de vue. Détails: %1</translation> + </message> + <message> + <location filename="../viewmodifier.cpp" line="34"/> + <source>Parsed query is not CREATE VIEW. It's: %1</source> + <translation>L'expression CREATE VIEW est fausse. C'est: %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't be able to tell which triggers might fail during the recreation process.</source> + <translation>SQLiteStudio ne peut résoudre les colonnes résultant de la nouvelle vue, d'où le déclencheur en cause ne pourra être indiqué pendant le process.</translation> + </message> +</context> +<context> + <name>QueryExecutor</name> + <message> + <location filename="../db/queryexecutor.cpp" line="132"/> + <source>Execution interrupted.</source> + <translation>Exécution interrompue.</translation> + </message> + <message> + <location filename="../db/queryexecutor.cpp" line="174"/> + <source>Database is not open.</source> + <translation>La base de données n'est ouverte.</translation> + </message> + <message> + <location filename="../db/queryexecutor.cpp" line="182"/> + <source>Only one query can be executed simultaneously.</source> + <translation>Une seule requête peut être exécutée à la fois.</translation> + </message> + <message> + <location filename="../db/queryexecutor.cpp" line="264"/> + <location filename="../db/queryexecutor.cpp" line="538"/> + <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'est produite à l'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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won't be editable.</source> + <translation>SQLiteStudio ne peut extraire des métadonnées d'une requête. Les résultats ne peut être affichés.</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's %1 command.</source> + <translation>Aucune base de données validedans le context actuel, plutôtutiliser la commande QtScript %1.</translation> + </message> + <message> + <location filename="../plugins/scriptingqtdbproxy.cpp" line="65"/> + <source>Error from %1: %2</source> + <translation>Erreur de %1: %2</translation> + </message> +</context> +<context> + <name>SqlHistoryModel</name> + <message> + <location filename="../sqlhistorymodel.cpp" line="30"/> + <source>Database</source> + <comment>sql history header</comment> + <translation>Base de données</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="32"/> + <source>Execution date</source> + <comment>sql history header</comment> + <translation>Date d'exécution</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="34"/> + <source>Time spent</source> + <comment>sql history header</comment> + <translation>Temps passé</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="36"/> + <source>Rows affected</source> + <comment>sql history header</comment> + <translation>Lignes affectées</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="38"/> + <source>SQL</source> + <comment>sql history header</comment> + <translation>SQL</translation> + </message> +</context> +<context> + <name>UpdateManager</name> + <message> + <location filename="../services/updatemanager.cpp" line="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation>Une erreur est apparue lors du contrôle pour la mise à jour:%1. +</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source> + <translation>Impossible de vérifier la mise à jour, car le serveur a répondu avec un message invalide. Il est possible d'ignorer le warning.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation>Erreur lors de la lecture de mise des méta données: %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation>Impossibles de télécharger les mises à jour, car le serveur répond avec un format de message invalide. Vous pover essayer plus tard ou télécharger et mettre à jour manuellement. Voir <a href="%1">User Manual</a> for details.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <source>Could not create temporary directory for downloading the update. Updating aborted.</source> + <translation>Impossible de créer un répertoire temporaire pour télécharger la mise à jour. Mise à jour abandonnée.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation>Il n'y a aucune mise à jour à télécharger. Mise à jour abandonnée.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation>Téléchargement: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <source>Could not determinate file name from update URL: %1. Updating aborted.</source> + <translation>Impossible de déterminer le fichier de mise à jour URL: %1.Mise à jour abandonnée.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation>Erreur à l'ouverture du fichier %1 pour l'écriture: %2. Mise à jour abandonnée.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation>Installation des mises jour.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation>Impossible de copier le répertoire de l'application courante dans %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation>Impossible de créer le répertoire: %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation>Impossible de renommer le répertoire %1 en %2. Détails: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation>Impossible de renommer le répertoire %1 en %2.Détails: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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>Impossible de déplacer le répertoire %1 vers %2 d'où l'impossibilité de restaurer le répertoire original. SQLiteStudio est maintenant localisé: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="363"/> + <source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source> + <translation>Impossible de renommer le répertoire %1 en %2, retour vers la version originale SQLiteStudio.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation>Impossible d'extraire le composant %1 dans le répertoire %2.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <source>Could not find permissions elevator application to run update as a root. Looked for: %1</source> + <translation>Impossible d'élever les autorisations pour lancer la mise à jour en tantque root. Bloqué: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation>Impossible de finaliser la mis à jour en tant que root: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation>Impossible de finaliser la mis à jour en tant que admin: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation>Impossible de créer un répertoire temporaire pour la mise à jour.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation>impossible de créer le fichier du scripte de mise à jour.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation>Mise à jour suspendue.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation>Impossible de finaliser la mis à jour en tant qu'administrateur.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <source>Could not execute final updating steps as administrator. Updater startup timed out.</source> + <translation>Impossible de finaliser la mis à jour en tant qu'administrateur. Délai d'attente de lancement dépassé.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="677"/> + <source>Could not execute final updating steps as administrator. Updater operation timed out.</source> + <translation>Impossible de finaliser la mis à jour en tant qu'administrateur. Délai d'attente d'opération dépassé.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="694"/> + <source>Could not clean up temporary directory %1. You can delete it manually at any time.</source> + <translation>Impossible de nettoyer le répertoire temporaire %1. Vous pouver le supprimer manuellement plutard.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="730"/> + <source>Could not run new version for continuing update.</source> + <translation>Impossible de lancer la nouvelle version afin de continuer la mise à jour.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation>Installation impossible un paquet n'est pas au format tar.zg: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <source>Package %1 cannot be installed, because cannot move it to directory: %2</source> + <translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant déplacé dans le répertoire: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation>Installation impossible, un paquet est manquant: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source> + <translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé dans le répertoire %2: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="871"/> + <source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source> + <translation>Le paquet %1 ne peut être installé, celui-ci ne pouvant décompressé dans le répertoire: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation>Impossible de renommer le répertoire %1 en %2.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation>Impossible de supprimer le répertoire %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation>Erreur d'exécution de la commande de mise à jour: %1 +Message d'erreur: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <source>An error occurred while downloading updates: %1. Updating aborted.</source> + <translation>Erreur lors du téléchargement de la mise à jour: %1. Mise à jour abandonnée.</translation> + </message> +</context> +</TS> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm Binary files differindex 8011cf1..8d09cfa 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts index dc64023..9ca5ff5 100644 --- a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pl.ts @@ -5,12 +5,12 @@ <name>AbstractDb</name> <message> <location filename="../db/abstractdb.cpp" line="306"/> - <location filename="../db/abstractdb.cpp" line="324"/> + <location filename="../db/abstractdb.cpp" line="323"/> <source>Cannot execute query on closed database.</source> <translation>Nie można wykonać zapytania na zamkniÄ™tej bazie danych.</translation> </message> <message> - <location filename="../db/abstractdb.cpp" line="605"/> + <location filename="../db/abstractdb.cpp" line="603"/> <source>Error attaching database %1: %2</source> <translation>Błąd podczas dołączania bazy danych %1: %2</translation> </message> @@ -142,35 +142,35 @@ <context> <name>DbManagerImpl</name> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="56"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="63"/> <source>Could not add database %1: %2</source> <translation>Nie udaÅ‚o siÄ™ dodać bazÄ™ danych %1: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="115"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> <source>Database %1 could not be updated, because of an error: %2</source> <translation>Nie udaÅ‚o siÄ™ zaktualizować baza danych %1 z powodu błędu: %2</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="284"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="313"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> <source>Database file doesn't exist.</source> <translation>Plik bazy danych nie istnieje.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="286"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="315"/> - <location filename="../services/impl/dbmanagerimpl.cpp" line="467"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> <source>No supporting plugin loaded.</source> <translation>Nie zaÅ‚adowano obsÅ‚ugujÄ…cej wtyczki.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="386"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> <source>Database could not be initialized.</source> <translation>Nie udaÅ‚o siÄ™ zainicjalizować bazy danych.</translation> </message> <message> - <location filename="../services/impl/dbmanagerimpl.cpp" line="396"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> <source>No suitable database driver plugin found.</source> <translation>Nie znaleziono odpowiedniej wtyczki sterownika.</translation> </message> @@ -830,14 +830,14 @@ Szczegóły błędu: %2</translation> <translation>Niekompletne zapytanie.</translation> </message> <message> - <location filename="../parser/sqlite2_parse.cpp" line="1905"/> - <location filename="../parser/sqlite3_parse.cpp" line="2171"/> + <location filename="../parser/sqlite2_parse.cpp" line="1904"/> + <location filename="../parser/sqlite3_parse.cpp" line="2170"/> <source>Parser stack overflow</source> <translation>Przeciążenie stosu analizatora.</translation> </message> <message> - <location filename="../parser/sqlite2_parse.cpp" line="4471"/> - <location filename="../parser/sqlite3_parse.cpp" line="5086"/> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> <source>Syntax error</source> <translation>Błąd skÅ‚adni</translation> </message> @@ -897,7 +897,7 @@ Szczegóły błędu: %2</translation> <translation>Nie znaleziono źródÅ‚a danych dla kolumny: %1</translation> </message> <message> - <location filename="../services/impl/configimpl.cpp" line="590"/> + <location filename="../services/impl/configimpl.cpp" line="617"/> <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>Nie udaÅ‚o siÄ™ zainicjalizować pliku konfiguracyjnego. Jakiekolwiek zmiany w konfiguracji i historia zapytaÅ„ bÄ™dÄ… utracone po zrestartowaniu aplikacji. Próbowano zainicjalizować plik konfiguracyjny w nastÄ™pujÄ…cych lokalizacjach: %1.</translation> </message> @@ -944,36 +944,41 @@ Szczegóły błędu: %2</translation> <translation>Zaludnianie tabel</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="106"/> + <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>Tabela %1 odwoÅ‚uje siÄ™ do tabeli %2, ale definicja klucza obcego nie zostanie zaktualizowane dla definicji nowej tabeli w zwiÄ…zku z problemami przy analizowaniu DDL tabeli %3.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="373"/> + <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>Wszystkie kolumny indeksowane przez indeks %1 już nie istniejÄ…. Indeks ten nie bÄ™dzie odtworzony po modyfikacji tabeli.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="402"/> + <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>WystÄ…piÅ‚ problem z poprawnym przetworzeniem wyzwalacza %1. Może on zostać zaktualizowany tylko częściowo i bÄ™dzie wymagaÅ‚ twojej uwagi.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="465"/> <source>Cannot not update trigger %1 according to table %2 modification.</source> <translation>Nie można zaktualizować wyzwalacza %1 zgodnie z modyfikacjami tabeli %2.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="408"/> + <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>Wszystkie kolumny obsÅ‚ugiwane przez wyzwalacz %1 już nie istniejÄ…. Wyzwalacz ten nie bÄ™dzie odtworzony po modyfikacji tabeli.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="431"/> + <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>Nie można zaktualizować widoku %1 w zwiÄ…zku z modyfikacjami tabeli %2. Widok pozostanie nienaruszony.</translation> </message> <message> - <location filename="../tablemodifier.cpp" line="528"/> - <location filename="../tablemodifier.cpp" line="549"/> - <location filename="../tablemodifier.cpp" line="567"/> + <location filename="../tablemodifier.cpp" line="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> <translation>Jest problem ze zaktualizowaniem zapytania %1 w wyzwalaczu %2. Jedeno z podzapytaÅ„ SELECT, które może odwoÅ‚ywać siÄ™ do tabeli %2 nie może być poprawnie zmodyfikowane. RÄ™czna aktualizacja tego wyzwalacza może być niezbÄ™dna.</translation> </message> @@ -993,19 +998,19 @@ Widok pozostanie nienaruszony.</translation> <translation>SQLiteStudio nie byÅ‚o w stanie okreÅ›lić kolumn zwracanych przez nowy widok, w zwiÄ…zku z czym nie może okreÅ›lić które wyzwalacze mogÄ… siÄ™ nie powieść podczas procesu odtwarzania.</translation> </message> <message> - <location filename="../db/abstractdb2.h" line="198"/> - <location filename="../db/abstractdb3.h" line="355"/> + <location filename="../db/abstractdb2.h" line="199"/> + <location filename="../db/abstractdb3.h" line="356"/> <source>Could not open database: %1</source> <translation>Nie udaÅ‚o siÄ™ otworzyć bazy danych: %1</translation> </message> <message> - <location filename="../db/abstractdb3.h" line="375"/> + <location filename="../db/abstractdb3.h" line="376"/> <source>Could not close database: %1</source> <translation>Nie udaÅ‚o siÄ™ zamknąć bazy danych: %1</translation> </message> <message> - <location filename="../db/abstractdb2.h" line="791"/> - <location filename="../db/abstractdb3.h" line="1078"/> + <location filename="../db/abstractdb2.h" line="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> <source>Result set expired or no row available.</source> <translation>Wyniki zapytania sÄ… nieaktualne, lub nie ma dostÄ™pnych wierszy.</translation> </message> @@ -1020,28 +1025,28 @@ Widok pozostanie nienaruszony.</translation> <context> <name>QueryExecutor</name> <message> - <location filename="../db/queryexecutor.cpp" line="130"/> + <location filename="../db/queryexecutor.cpp" line="132"/> <source>Execution interrupted.</source> <translation>Wykonywanie przerwane.</translation> </message> <message> - <location filename="../db/queryexecutor.cpp" line="172"/> + <location filename="../db/queryexecutor.cpp" line="174"/> <source>Database is not open.</source> <translation>Baza danych nie jest otwarta.</translation> </message> <message> - <location filename="../db/queryexecutor.cpp" line="180"/> + <location filename="../db/queryexecutor.cpp" line="182"/> <source>Only one query can be executed simultaneously.</source> <translation>Tylko jedno zapytanie może być wykonywane w danym momencie.</translation> </message> <message> - <location filename="../db/queryexecutor.cpp" line="262"/> - <location filename="../db/queryexecutor.cpp" line="535"/> + <location filename="../db/queryexecutor.cpp" line="264"/> + <location filename="../db/queryexecutor.cpp" line="538"/> <source>An error occured while executing the count(*) query, thus data paging will be disabled. Error details from the database: %1</source> <translation>WystÄ…piÅ‚ błąd podczas wykonywania zapytania count(*), przez co stronicowanie danych bÄ™dzie wyłączone. Szczegóły błędy z bazy danych: %1</translation> </message> <message> - <location filename="../db/queryexecutor.cpp" line="446"/> + <location filename="../db/queryexecutor.cpp" line="449"/> <source>SQLiteStudio was unable to extract metadata from the query. Results won't be editable.</source> <translation>SQLiteStudio nie mogÅ‚o uzyskać metadanych z zapytania. Nie bÄ™dzie można edytować wyników zapytania.</translation> </message> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm Binary files differnew file mode 100644 index 0000000..c02994c --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts new file mode 100644 index 0000000..5c08361 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_pt_BR.ts @@ -0,0 +1,1278 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="pt_BR"> +<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="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <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't support exporing query results.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' 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 '%1' 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="116"/> + <source>Error while exporting query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <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 '%1'. 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 '%1' 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="93"/> + <source>Table '%1' 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="98"/> + <source>Table '%1' 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="116"/> + <source>Could not create table to import to: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <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="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <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="88"/> + <source>Table '%1' 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'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="56"/> + <source>Error while populating table: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <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="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <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 '%2' statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' 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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' 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 '%2' 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="2170"/> + <source>Parser stack overflow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <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="307"/> + <source>Could not resolve data source for column: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/configimpl.cpp" line="617"/> + <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="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <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="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="433"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <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="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation 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'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'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="132"/> + <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="538"/> + <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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won'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'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="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <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="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <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="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <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="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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="363"/> + <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="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <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="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <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="677"/> + <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="694"/> + <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="730"/> + <source>Could not run new version for continuing update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <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="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <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="871"/> + <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="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <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_ru.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm Binary files differnew file mode 100644 index 0000000..0b3d737 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts new file mode 100644 index 0000000..6890ba9 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_ru.ts @@ -0,0 +1,1284 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="ru_RU"> +<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>Ðевозможно выполнить Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð¿Ñ€Ð¸ закрытой базе данных.</translation> + </message> + <message> + <location filename="../db/abstractdb.cpp" line="603"/> + <source>Error attaching database %1: %2</source> + <translation>Ошибка во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¸ÑÐ¾ÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð±Ð°Ð·Ñ‹ данных %1: %2</translation> + </message> +</context> +<context> + <name>BugReporter</name> + <message> + <location filename="../services/bugreporter.cpp" line="46"/> + <source>Invalid login or password</source> + <translation>Ðеправильный логин или пароль</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>Ðе указана база данных Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов.</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>Ðе открыта база данных Ð´Ð»Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñов.</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>Ðевозможно начать транзакцию. ПодробноÑти: %1</translation> + </message> + <message> + <location filename="../db/chainexecutor.cpp" line="74"/> + <source>Interrupted</source> + <comment>chain executor</comment> + <translation>Прервано</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>Ðевозможно завершить транзакцию. ПодробноÑти: %1</translation> + </message> +</context> +<context> + <name>CompletionHelper</name> + <message> + <location filename="../completionhelper.cpp" line="196"/> + <source>New row reference</source> + <translation>ÐÐ¾Ð²Ð°Ñ ÑÑылка на Ñтроку</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="203"/> + <source>Old row reference</source> + <translation>Ð¡Ñ‚Ð°Ñ€Ð°Ñ ÑÑылка на Ñтроку</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="208"/> + <source>New table name</source> + <translation>Ðовое Ð¸Ð¼Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="211"/> + <source>New index name</source> + <translation>Ðовое Ð¸Ð¼Ñ Ð¸Ð½Ð´ÐµÐºÑа</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="214"/> + <source>New view name</source> + <translation></translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="217"/> + <source>New trigger name</source> + <translation>Ðовое Ð¸Ð¼Ñ Ñ‚Ñ€Ð¸Ð³Ð³ÐµÑ€Ð°</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="220"/> + <source>Table or column alias</source> + <translation>ПÑевдоним таблицы или Ñтолбца</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="223"/> + <source>transaction name</source> + <translation>Ð¸Ð¼Ñ Ñ‚Ñ€Ð°Ð½Ð·Ð°ÐºÑ†Ð¸Ð¸</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="226"/> + <source>New column name</source> + <translation>Ðовое Ð¸Ð¼Ñ Ñтолбца</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="229"/> + <source>Column data type</source> + <translation>Тип данных Ñтолбца</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="232"/> + <source>Constraint name</source> + <translation>Ð˜Ð¼Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="245"/> + <source>Error message</source> + <translation>Сообщение об ошибке</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="289"/> + <source>Collation name</source> + <translation>Ð˜Ð¼Ñ ÑравнениÑ</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="304"/> + <source>Any word</source> + <translation>Любое Ñлово</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="485"/> + <source>Default database</source> + <translation>База данных по умолчанию</translation> + </message> + <message> + <location filename="../completionhelper.cpp" line="486"/> + <source>Temporary objects database</source> + <translation>База данных временных объектов</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>Ðе удалоÑÑŒ добавить базу данных %1: %2</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation>Ðевозможно обновить базу данных %1 из-за ошибки: %2</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation>Файл базы данных не ÑущеÑтвует.</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translatorcomment>Unclear error string. Checking the source didn't help.</translatorcomment> + <translation>Модуль поддержки не загружен.</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation>Ðевозможно инициализировать базу данных.</translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <source>No suitable database driver plugin found.</source> + <translation>Ðе найден подходÑщий драйвер базы данных.</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>Ошибка при Ñоздании таблицы в целевой базе данных: %1</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="380"/> + <source>Could not parse table.</source> + <translation>Ðевозможно проанализировать Ñтруктуру таблицы.</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>Ðевозможно приÑоединить базу данных %1 к базе данных %2, поÑтому данные таблицы %3 будут Ñкопированы при поÑредничеÑтве SQLiteStudio. Ðтот метод может быть медленным Ð´Ð»Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ñ… таблиц, так что наберитеÑÑŒ терпениÑ.</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="447"/> + <source>Error while copying data for table %1: %2</source> + <translation>Ошибка при копировании данных из таблицы %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>Ошибка при копировании данных в таблицу %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>Ошибка при удалении иÑходного предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ %1: %2 +Таблицы, индекÑÑ‹, триггеры и предÑтавлениÑ, Ñкопированные в базу данных %3, ÑохранÑÑ‚ÑÑ.</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="542"/> + <source>Error while creating view in target database: %1</source> + <translation>Ошибка при Ñоздании предÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð² целевой базе данных: %1</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="547"/> + <source>Error while creating index in target database: %1</source> + <translation>Ошибка при Ñоздании индекÑа в целевой базе данных: %1</translation> + </message> + <message> + <location filename="../dbobjectorganizer.cpp" line="552"/> + <source>Error while creating trigger in target database: %1</source> + <translation>Ошибка при Ñоздании триггера в целевой базе данных: %1</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>Целевой файл ÑущеÑтвует, но не может быть перезапиÑан.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="942"/> + <source>Could not find proper database plugin to create target database.</source> + <translation>Ðевозможно найти подходÑщий модуль Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ†ÐµÐ»ÐµÐ²Ð¾Ð¹ базы данных.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="1176"/> + <source>Error while converting database: %1</source> + <translation>Ошибка при конвертации базы данных: %1</translation> + </message> +</context> +<context> + <name>DdlHistoryModel</name> + <message> + <location filename="../ddlhistorymodel.cpp" line="65"/> + <source>Database name</source> + <comment>ddl history header</comment> + <translation>Ð˜Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных</translation> + </message> + <message> + <location filename="../ddlhistorymodel.cpp" line="67"/> + <source>Database file</source> + <comment>ddl history header</comment> + <translation>Файл базы данных</translation> + </message> + <message> + <location filename="../ddlhistorymodel.cpp" line="69"/> + <source>Date of execution</source> + <comment>ddl history header</comment> + <translation>Дата выполнениÑ</translation> + </message> + <message> + <location filename="../ddlhistorymodel.cpp" line="71"/> + <source>Changes</source> + <comment>ddl history header</comment> + <translation>ИзменениÑ</translation> + </message> +</context> +<context> + <name>ExportManager</name> + <message> + <location filename="../services/exportmanager.cpp" line="72"/> + <source>Export plugin %1 doesn't support exporing query results.</source> + <translation>Модуль ÑкÑпорта %1 не поддерживает ÑкÑпорт результатов запроÑа.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation>Модуль ÑкÑпорта %1 не поддерживает ÑкÑпорт таблиц.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation>Модуль ÑкÑпорта %1 не поддерживает ÑкÑпорт баз данных.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' is not supported. Supported formats are: %2.</source> + <translation>Формат ÑкÑпорта %1 не поддерживаетÑÑ. Поддерживаемые форматы: %2</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="218"/> + <source>Export to the clipboard was successful.</source> + <translation>ÐкÑпорт в буфер обмена уÑпешно выполнен.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="222"/> + <source>Export to the file '%1' was successful.</source> + <translation>ÐкÑпорт в файл %1 уÑпешно выполнен.</translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="224"/> + <source>Export was successful.</source> + <translation>ÐкÑпорт уÑпешно выполнен.</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>Ðевозможно выполнить ÑкÑпорт в файл %1. Ðе удалоÑÑŒ открыть файл Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.</translation> + </message> +</context> +<context> + <name>ExportWorker</name> + <message> + <location filename="../exportworker.cpp" line="116"/> + <source>Error while exporting query results: %1</source> + <translation>Ошибка при ÑкÑпорте результатов запроÑа: %1</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation>Ошибка при подÑчёте ширины Ñтолбца данных Ð´Ð»Ñ ÑкÑпорта результатов запроÑа: %1</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation>Ðевозможно проанализировать Ñтруктуру %1. Данный объект будет иÑключён при выполнении ÑкÑпорта.</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation>Ошибка при Ñчитывании данных Ð´Ð»Ñ ÑкÑпорта из таблицы %1: %2</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation>Ошибка при подÑчёте количеÑтва данных Ð´Ð»Ñ ÑкÑпорта из таблицы %1: %2</translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <source>Error while counting data column width to export from table %1: %2</source> + <translation>Ошибка при подÑчёте ширины Ñтолбца данных Ð´Ð»Ñ ÑкÑпорта из таблицы %1: %2</translation> + </message> +</context> +<context> + <name>FunctionManagerImpl</name> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="232"/> + <source>Invalid number of arguments to function '%1'. Expected %2, but got %3.</source> + <translation>Ðеверное количеÑтво аргументов Ð´Ð»Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ '%1'. Ожидаемое количеÑтво: %2, передано: %3.</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="341"/> + <source>No such function registered in SQLiteStudio: %1(%2)</source> + <translation>Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ðµ зарегиÑтрирована в SQLiteStudio: %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>Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ %1(%2) зарегиÑтрирована Ð´Ð»Ñ Ñзыка %3, однако модуль поддержки Ñтого Ñзыка на данный момент не загружен.</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="365"/> + <source>Invalid regular expression pattern: %1</source> + <translation>Ðеверный шаблон регулÑрного выражениÑ: %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>Ðевозможно открыть файл %1 Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ: %2</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="439"/> + <source>Could not open file %1 for writting: %2</source> + <translation>Ðевозможно открыть файл %1 Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи: %2</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="459"/> + <source>Error while writting to file %1: %2</source> + <translation>Ошибка при запиÑи в файл %1: %2</translation> + </message> + <message> + <location filename="../services/impl/functionmanagerimpl.cpp" line="477"/> + <source>Unsupported scripting language: %1</source> + <translation>Ðеподдерживаемый Ñкриптовый Ñзык: %1</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>Ðевозможно инициализировать текÑтовый кодек Ð´Ð»Ñ ÑкÑпорта. ИÑпользуетÑÑ ÐºÐ¾Ð´ÐµÐº по умолчанию: %1</translation> + </message> +</context> +<context> + <name>ImportManager</name> + <message> + <location filename="../services/importmanager.cpp" line="93"/> + <source>Imported data to the table '%1' successfully.</source> + <translation>Импорт данных в таблицу '%1' выполнен уÑпешно.</translation> + </message> +</context> +<context> + <name>ImportWorker</name> + <message> + <location filename="../importworker.cpp" line="24"/> + <source>No columns provided by the import plugin.</source> + <translation>Модуль импорта не обнаружил ни одного Ñтолбца.</translation> + </message> + <message> + <location filename="../importworker.cpp" line="30"/> + <source>Could not start transaction in order to import a data: %1</source> + <translation>Ðевозможно начать транзакцию Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð° данных: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="48"/> + <source>Could not commit transaction for imported data: %1</source> + <translation>Ðевозможно завершить транзакцию Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð½Ñ‹Ñ… данных: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="93"/> + <source>Table '%1' has less columns than there are columns in the data to be imported. Excessive data columns will be ignored.</source> + <translation>Ð’ таблице '%1' Ñтолбцов меньше, чем в импортируемых данных. Лишние Ñтолбцы будут проигнорированы.</translation> + </message> + <message> + <location filename="../importworker.cpp" line="98"/> + <source>Table '%1' has more columns than there are columns in the data to be imported. Some columns in the table will be left empty.</source> + <translation>Ð’ таблице '%1' Ñтолбцов больше, чем в импортируемых данных. ÐедоÑтающие Ñтолбцы будут оÑтавлены пуÑтыми.</translation> + </message> + <message> + <location filename="../importworker.cpp" line="116"/> + <source>Could not create table to import to: %1</source> + <translation>Ðевозможно Ñоздать таблицу Ð´Ð»Ñ Ð¸Ð¼Ð¿Ð¾Ñ€Ñ‚Ð°: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation>Ошибка при импорте данных: %1</translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation>Прервано.</translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation>Ðевозможно загрузить модуль %1, так как он конфликтует Ñ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ %2.</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <source>Cannot load plugin %1, because its dependency was not loaded: %2.</source> + <translation>Ðевозможно загрузить модуль %1, так как не загружен необходимый ему модуль: %2.</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation>Ðевозможно загрузить модуль %1. ПодробноÑти ошибки: %2</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation>Ðевозможно загрузить модуль %1 (ошибка при инициализации модулÑ).</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation>минимальнаÑ: %1</translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <source>max: %1</source> + <comment>plugin dependency version</comment> + <translation>макÑимальнаÑ: %1</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>КонÑтанта</translation> + </message> +</context> +<context> + <name>PopulateConstantConfig</name> + <message> + <location filename="../plugins/populateconstant.ui" line="20"/> + <source>Constant value:</source> + <translation>Значение конÑтанты:</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>Словарь</translation> + </message> +</context> +<context> + <name>PopulateDictionaryConfig</name> + <message> + <location filename="../plugins/populatedictionary.ui" line="20"/> + <source>Dictionary file</source> + <translation>Файл ÑловарÑ</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="29"/> + <source>Pick dictionary file</source> + <translation>Выберите файл ÑловарÑ</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="39"/> + <source>Word separator</source> + <translation>Разделитель Ñлов</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="45"/> + <source>Whitespace</source> + <translation>Пробел</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="58"/> + <source>Line break</source> + <translation>ÐŸÐµÑ€ÐµÐ½Ð¾Ñ Ñтроки</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="74"/> + <source>Method of using words</source> + <translation>СпоÑоб иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñлов</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="80"/> + <source>Ordered</source> + <translation>По порÑдку</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.ui" line="93"/> + <source>Randomly</source> + <translation>Случайным образом</translation> + </message> +</context> +<context> + <name>PopulateManager</name> + <message> + <location filename="../services/populatemanager.cpp" line="88"/> + <source>Table '%1' populated successfully.</source> + <translation>Таблица '%1' уÑпешно заполнена.</translation> + </message> +</context> +<context> + <name>PopulateRandom</name> + <message> + <location filename="../plugins/populaterandom.cpp" line="12"/> + <source>Random number</source> + <translation>Случайное чиÑло</translation> + </message> +</context> +<context> + <name>PopulateRandomConfig</name> + <message> + <location filename="../plugins/populaterandom.ui" line="20"/> + <source>Constant prefix</source> + <translation>ÐŸÑ€ÐµÑ„Ð¸ÐºÑ ÐºÐ¾Ð½Ñтанты</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="26"/> + <source>No prefix</source> + <translation>Без префикÑа</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="39"/> + <source>Minimum value</source> + <translation>Минимальное значение</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="61"/> + <source>Maximum value</source> + <translation>МакÑимальное значение</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="86"/> + <source>Constant suffix</source> + <translation>Ð¡ÑƒÑ„Ñ„Ð¸ÐºÑ ÐºÐ¾Ð½Ñтанты</translation> + </message> + <message> + <location filename="../plugins/populaterandom.ui" line="92"/> + <source>No suffix</source> + <translation>Без ÑуффикÑа</translation> + </message> +</context> +<context> + <name>PopulateRandomText</name> + <message> + <location filename="../plugins/populaterandomtext.cpp" line="12"/> + <source>Random text</source> + <translation>Случайный текÑÑ‚</translation> + </message> +</context> +<context> + <name>PopulateRandomTextConfig</name> + <message> + <location filename="../plugins/populaterandomtext.ui" line="20"/> + <source>Use characters from common sets:</source> + <translation>ИÑпользовать Ñимволы из Ñтандартных наборов:</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="36"/> + <source>Minimum length</source> + <translation>ÐœÐ¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="64"/> + <source>Letters from a to z.</source> + <translation>Буквы от a до z.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="67"/> + <source>Alpha</source> + <translation>Буквенный</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="77"/> + <source>Numbers from 0 to 9.</source> + <translation>Цифры от 0 до 9.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="80"/> + <source>Numeric</source> + <translation>Цифровой</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="90"/> + <source>A whitespace, a tab and a new line character.</source> + <translation>Пробел, табулÑÑ†Ð¸Ñ Ð¸ Ñимвол переноÑа Ñтроки.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="93"/> + <source>Whitespace</source> + <translation>Ðепечатаемые Ñимволы</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="103"/> + <source>Includes all above and all others.</source> + <translation>Включает вÑе вышеперечиÑленные и вÑе оÑтальные.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="106"/> + <source>Binary</source> + <translation>Бинарный</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="119"/> + <source>Use characters from my custom set:</source> + <translation>ИÑпользовать Ñимволы из моего набора:</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="132"/> + <source>Maximum length</source> + <translation>МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð°</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.ui" line="160"/> + <source>If you type some character multiple times, it's more likely to be used.</source> + <translation>При указании одного Ñимвола неÑколько раз, вероÑтноÑть его иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÐ²ÐµÐ»Ð¸Ñ‡Ð¸Ð²Ð°ÐµÑ‚ÑÑ.</translation> + </message> +</context> +<context> + <name>PopulateScript</name> + <message> + <location filename="../plugins/populatescript.cpp" line="13"/> + <source>Script</source> + <translation>Скрипт</translation> + </message> +</context> +<context> + <name>PopulateScriptConfig</name> + <message> + <location filename="../plugins/populatescript.ui" line="26"/> + <source>Initialization code (optional)</source> + <translation>Инициализирующий код (необÑзательно)</translation> + </message> + <message> + <location filename="../plugins/populatescript.ui" line="45"/> + <source>Per step code</source> + <translation>Код Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ шага</translation> + </message> + <message> + <location filename="../plugins/populatescript.ui" line="70"/> + <source>Language</source> + <translation>Язык</translation> + </message> + <message> + <location filename="../plugins/populatescript.ui" line="89"/> + <source>Help</source> + <translation>Помощь</translation> + </message> +</context> +<context> + <name>PopulateSequence</name> + <message> + <location filename="../plugins/populatesequence.cpp" line="13"/> + <source>Sequence</source> + <translation>ПоÑледовательноÑть</translation> + </message> +</context> +<context> + <name>PopulateSequenceConfig</name> + <message> + <location filename="../plugins/populatesequence.ui" line="33"/> + <source>Start value:</source> + <translation>Ðачальное значение:</translation> + </message> + <message> + <location filename="../plugins/populatesequence.ui" line="56"/> + <source>Step:</source> + <translation>Шаг:</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>Ðевозможно начать транзакцию Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹. ПодробноÑти ошибки: %1</translation> + </message> + <message> + <location filename="../populateworker.cpp" line="56"/> + <source>Error while populating table: %1</source> + <translation>Ошибка при заполнении таблицы: %1</translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <source>Could not commit transaction after table populating. Error details: %1</source> + <translation>Ðевозможно завершить транзакцию поÑле Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ‹. ПодробноÑти ошибки: %1</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>Ðевозможно открыть базу данных: %1</translation> + </message> + <message> + <location filename="../db/abstractdb2.h" line="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <source>Result set expired or no row available.</source> + <translation>Ð ÐµÐ·ÑƒÐ»ÑŒÑ‚Ð¸Ñ€ÑƒÑŽÑ‰Ð°Ñ Ð²Ñ‹Ð±Ð¾Ñ€ÐºÐ° уÑтарела или ни одна Ñтрока не доÑтупна.</translation> + </message> + <message> + <location filename="../db/abstractdb3.h" line="376"/> + <source>Could not close database: %1</source> + <translation>Ðевозможно закрыть базу данных: %1</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 '%2' statement.</source> + <translation>SQLite %1 не поддерживает конÑтрукцию '%2'.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' statement, but the regular table can be created instead if you proceed.</source> + <translation>SQLite %1 не поддерживает конÑтрукцию '%2', однако можно Ñоздать обычную таблицу, еÑли вы продолжите.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="424"/> + <source>Could not parse statement: %1 +Error details: %2</source> + <translation>Ðевозможно проанализировать Ñтруктуру конÑтрукции: %1 ПодробноÑти ошибки: %2</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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation>SQLite %1 не поддерживает оператор '%2'. Ðевозможно Ñконвертировать конÑтрукцию '%3' Ñ Ñтим оператором.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' statement.</source> + <translation>SQLite %1 не поддерживает оператор '%2' в конÑтрукции '%3'.</translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="756"/> + <source>SQLite %1 does not support current date or time clauses in expressions.</source> + <translation>SQLite %1 не поддерживает операторы текущей даты и текущего времени в выражениÑÑ….</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 '%2' clause in expressions.</source> + <translation>SQLite %1 не поддерживает оператор '%2' в выражениÑÑ….</translation> + </message> + <message> + <location filename="../impl/dbattacherimpl.cpp" line="109"/> + <source>Could not attach database %1: %2</source> + <translation>Ðе удалоÑÑŒ приÑоединить базу данных %1: %2</translation> + </message> + <message> + <location filename="../parser/parsercontext.cpp" line="108"/> + <location filename="../parser/parsercontext.cpp" line="110"/> + <source>Incomplete query.</source> + <translation>Ðезавершённый запроÑ.</translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="1904"/> + <location filename="../parser/sqlite3_parse.cpp" line="2170"/> + <source>Parser stack overflow</source> + <translation>Переполнение Ñтека анализатора</translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <source>Syntax error</source> + <translation>СинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.cpp" line="30"/> + <source>Could not open dictionary file %1 for reading.</source> + <translation>Ðевозможно открыть файл ÑÐ»Ð¾Ð²Ð°Ñ€Ñ %1 Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.</translation> + </message> + <message> + <location filename="../plugins/populatedictionary.cpp" line="91"/> + <source>Dictionary file must exist and be readable.</source> + <translation>Файл ÑÐ»Ð¾Ð²Ð°Ñ€Ñ Ð´Ð¾Ð»Ð¶ÐµÐ½ ÑущеÑтвовать и быть доÑтупным Ð´Ð»Ñ Ñ‡Ñ‚ÐµÐ½Ð¸Ñ.</translation> + </message> + <message> + <location filename="../plugins/populaterandom.cpp" line="53"/> + <source>Maximum value cannot be less than minimum value.</source> + <translation>МакÑимальное значение не может быть меньше минимального.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.cpp" line="77"/> + <source>Maximum length cannot be less than minimum length.</source> + <translation>МакÑÐ¸Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð´Ð»Ð¸Ð½Ð° не может быть меньше минимальной.</translation> + </message> + <message> + <location filename="../plugins/populaterandomtext.cpp" line="88"/> + <source>Custom character set cannot be empty.</source> + <translation>Произвольный набор Ñимволов не может быть пуÑтым.</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="40"/> + <source>Could not find plugin to support scripting language: %1</source> + <translation>Ðевозможно найти модуль поддержки Ñкриптового Ñзыка: %1</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="58"/> + <source>Error while executing populating initial code: %1</source> + <translation>Ошибка при выполнении инициализирующего кода заполнениÑ: %1</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="80"/> + <source>Error while executing populating code: %1</source> + <translation>Ошибка при выполнении кода заполнениÑ: %1</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="112"/> + <source>Select implementation language.</source> + <translation>Выберите Ñзык реализации.</translation> + </message> + <message> + <location filename="../plugins/populatescript.cpp" line="113"/> + <source>Implementation code cannot be empty.</source> + <translation>ЗаполнÑющий код не может быть пуÑтым.</translation> + </message> + <message> + <location filename="../selectresolver.cpp" line="307"/> + <source>Could not resolve data source for column: %1</source> + <translation>Ðевозможно определить иÑточник данных Ð´Ð»Ñ Ñтолбца: %1</translation> + </message> + <message> + <location filename="../services/impl/configimpl.cpp" line="617"/> + <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> + <message> + <location filename="../sqlitestudio.cpp" line="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation>Общего назначениÑ</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation>Поддержка баз данных</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation>Форматирование кода</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation>Скриптовые Ñзыки</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation>ÐкÑпорт</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation>Импорт</translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <source>Table populating</source> + <comment>plugin category name</comment> + <translation>Заполнение таблиц</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>Таблица %1 ÑÑылаетÑÑ Ð½Ð° таблицу %2, но опиÑание внешнего ключа не будет обновлено Ð´Ð»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ таблицы из-за проблем Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð¾Ð¼ DDL таблицы %3.</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>Ð’Ñе Ñтолбцы, проиндекÑированные индекÑом %1, удалены. Ð˜Ð½Ð´ÐµÐºÑ Ð½Ðµ будет воÑÑоздан поÑле модификации таблицы.</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="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation>Ðевозможно обновить триггер %1 в ÑоответÑтвии Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸ÐµÐ¹ таблицы %2.</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>Ð’Ñе Ñтолбцы, затронутые в триггере %1, удалены. Триггер не будет воÑÑоздан поÑле модификации таблицы.</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>Ðевозможно обновить предÑтавление %1 в ÑоответÑтвии Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñми таблицы %2. +ПредÑтавление оÑтанетÑÑ ÐºÐ°Ðº еÑть.</translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation>Возникла проблема при обновлении конÑтрукции %1 внутри триггера %2. Одна из вложенных конÑтрукций SELECT, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ ÑÑылаетÑÑ Ð½Ð° таблицу %3, не может быть корректно модифицирована. Возможно необходима Ñ€ÑƒÑ‡Ð½Ð°Ñ Ð¿Ñ€Ð°Ð²ÐºÐ° триггера.</translation> + </message> + <message> + <location filename="../viewmodifier.cpp" line="25"/> + <source>Could not parse DDL of the view to be created. Details: %1</source> + <translation>Ðевозможно проанализировать DDL Ñоздаваемого предÑтавлениÑ. ПодробноÑти: %1</translation> + </message> + <message> + <location filename="../viewmodifier.cpp" line="34"/> + <source>Parsed query is not CREATE VIEW. It's: %1</source> + <translation>Проанализированный Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ðµ ÑвлÑетÑÑ Ð·Ð°Ð¿Ñ€Ð¾Ñом CREATE VIEW. Тип запроÑа: %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't be able to tell which triggers might fail during the recreation process.</source> + <translation>SQLiteStudio не удалоÑÑŒ определить Ñтолбцы, возвращаемые новым предÑтавлением, поÑтому невозможно указать, какие триггеры могут ÑломатьÑÑ Ð² процеÑÑе воÑÑозданиÑ.</translation> + </message> +</context> +<context> + <name>QueryExecutor</name> + <message> + <location filename="../db/queryexecutor.cpp" line="132"/> + <source>Execution interrupted.</source> + <translation>Выполнение прервано.</translation> + </message> + <message> + <location filename="../db/queryexecutor.cpp" line="174"/> + <source>Database is not open.</source> + <translation>База данных не открыта.</translation> + </message> + <message> + <location filename="../db/queryexecutor.cpp" line="182"/> + <source>Only one query can be executed simultaneously.</source> + <translation>Одновременно может быть выполнен только один запроÑ.</translation> + </message> + <message> + <location filename="../db/queryexecutor.cpp" line="264"/> + <location filename="../db/queryexecutor.cpp" line="538"/> + <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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won't be editable.</source> + <translation>SQLiteStudio не удалоÑÑŒ извлечь метаданные из запроÑа. Результаты Ð½ÐµÐ»ÑŒÐ·Ñ Ð±ÑƒÐ´ÐµÑ‚ редактировать.</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's %1 command.</source> + <translation>При вызове команды QtScript %1 в текущем контекÑте нет доÑтупных баз данных.</translation> + </message> + <message> + <location filename="../plugins/scriptingqtdbproxy.cpp" line="65"/> + <source>Error from %1: %2</source> + <translation>Ошибка в команде %1: %2</translation> + </message> +</context> +<context> + <name>SqlHistoryModel</name> + <message> + <location filename="../sqlhistorymodel.cpp" line="30"/> + <source>Database</source> + <comment>sql history header</comment> + <translation>База данных</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="32"/> + <source>Execution date</source> + <comment>sql history header</comment> + <translation>Дата выполнениÑ</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="34"/> + <source>Time spent</source> + <comment>sql history header</comment> + <translation>Затраченное времÑ</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="36"/> + <source>Rows affected</source> + <comment>sql history header</comment> + <translation>Затронуто Ñтрок</translation> + </message> + <message> + <location filename="../sqlhistorymodel.cpp" line="38"/> + <source>SQL</source> + <comment>sql history header</comment> + <translation>SQL</translation> + </message> +</context> +<context> + <name>UpdateManager</name> + <message> + <location filename="../services/updatemanager.cpp" line="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation>При проверке обновлений возникла ошибка: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <source>Could not check available updates, because server responded with invalid message format. It is safe to ignore this warning.</source> + <translation>Ðевозможно проверить наличие обновлений, так как ответ Ñервера имеет некорректный формат. Ðто предупреждение можно проигнорировать.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation>При чтении метаданных об обновлениÑÑ… возникла ошибка: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation>Ðевозможно загрузить обновлениÑ, так как ответ Ñервера имеет некорректный формат. Ð’Ñ‹ можете попробовать Ñнова позже или Ñкачать и уÑтановить Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ. ПодробноÑти Ñмотрите в <a href="%1">РуководÑтве пользователÑ</a>.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <source>Could not create temporary directory for downloading the update. Updating aborted.</source> + <translation>Ðевозможно Ñоздать временный каталог Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ обновлениÑ. Обновление прервано.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation>Ðет обновлений Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸. Обновление прервано.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation>Загрузка: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <source>Could not determinate file name from update URL: %1. Updating aborted.</source> + <translation>Ðевозможно определить Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° из URL обновлениÑ. Обновление прервано.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation>Ðе удалоÑÑŒ открыть файл %1 Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи: %2. Обновление прервано.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation>УÑтановка обновлений.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation>Ðевозможно Ñкопировать текущий каталог Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð² каталог %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation>Ðевозможно Ñоздать каталог %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation>Ðевозможно переименовать каталог %1 в %2. +ПодробноÑти: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation>Ðевозможно переименовать каталог %1 в %2. +ПодробноÑти: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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>Ðевозможно перемеÑтить каталог %1 в %2, а также не удалоÑÑŒ воÑÑтановить оригинальный каталог, поÑтому оригинальный каталог SQLiteStudio теперь раÑположен в: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="363"/> + <source>Could not rename directory %1 to %2. Rolled back to the original SQLiteStudio version.</source> + <translation>Ðевозможно переименовать каталог %1 в %2. ВоÑÑтановлена Ð¸Ð·Ð½Ð°Ñ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ SQLiteStudio.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation>Ðевозможно раÑпаковать компонент %1 в каталог %2.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <source>Could not find permissions elevator application to run update as a root. Looked for: %1</source> + <translation>Ðевозможно найти приложение Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸Ð²Ð¸Ð»ÐµÐ³Ð¸Ð¹ Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑка Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ root. Были иÑпробованы: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation>Ðевозможно выполнить финальные шаги Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ root: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation>Ðевозможно выполнить финальные шаги Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ админиÑтратора: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation>Ðевозможно Ñоздать временный каталог Ð´Ð»Ñ ÑƒÑтановщика обновлений.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation>Ðевозможно Ñоздать файл Ñкрипта обновлениÑ.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation>Обновление отменено.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation>Ðевозможно выполнить финальные шаги Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ админиÑтратора.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <source>Could not execute final updating steps as administrator. Updater startup timed out.</source> + <translation>Ðевозможно выполнить финальные шаги Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ админиÑтратора. Превышен тайм-аут запуÑка программы обновлениÑ.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="677"/> + <source>Could not execute final updating steps as administrator. Updater operation timed out.</source> + <translation>Ðевозможно выполнить финальные шаги Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸ админиÑтратора. Превышен тайм-аут операции программы обновлениÑ.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="694"/> + <source>Could not clean up temporary directory %1. You can delete it manually at any time.</source> + <translation>Ðевозможно очиÑтить временный каталог %1. Ð’Ñ‹ можете удалить его вручную в любое времÑ.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="730"/> + <source>Could not run new version for continuing update.</source> + <translation>Ðевозможно запуÑтить новую верÑию Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation>Пакет не в формате tar.gz, уÑтановка невозможна: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <source>Package %1 cannot be installed, because cannot move it to directory: %2</source> + <translation>Пакет %1 не может быть уÑтановлен, так как невозможно перенеÑти его в каталог: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation>Пакет %1 не может быть уÑтановлен, так как его невозможно раÑпаковать: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation>Пакет не в формате zip, уÑтановка невозможна: %1</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <source>Package %1 cannot be installed, because cannot unzip it to directory %2: %3</source> + <translation>Пакет %1 не может быть уÑтановлен, так как его невозможно раÑпаковать в каталог %2: %3</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="871"/> + <source>Package %1 cannot be installed, because cannot unzip it to directory: %2</source> + <translation>Пакет %1 не может быть уÑтановлен, так как его невозможно раÑпаковать в каталог: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation>Ðевозможно переименовать каталог %1 в %2.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation>Ðевозможно удалить каталог %1.</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation>Ошибка при выполнении команды обновлениÑ: %1 +Сообщение об ошибке: %2</translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <source>An error occurred while downloading updates: %1. Updating aborted.</source> + <translation>При загрузке обновлений произошла ошибка: %1. Обновление прервано.</translation> + </message> +</context> +</TS> diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm Binary files differnew file mode 100644 index 0000000..1776294 --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.qm diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts new file mode 100644 index 0000000..497b7fe --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_sk.ts @@ -0,0 +1,1278 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="sk_SK"> +<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="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <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't support exporing query results.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' 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 '%1' 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="116"/> + <source>Error while exporting query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <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 '%1'. 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 '%1' 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="93"/> + <source>Table '%1' 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="98"/> + <source>Table '%1' 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="116"/> + <source>Could not create table to import to: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <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="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <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="88"/> + <source>Table '%1' 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'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="56"/> + <source>Error while populating table: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <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="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <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 '%2' statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' 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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' 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 '%2' 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="2170"/> + <source>Parser stack overflow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <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="307"/> + <source>Could not resolve data source for column: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/configimpl.cpp" line="617"/> + <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="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <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="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="433"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <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="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation 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'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'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="132"/> + <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="538"/> + <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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won'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'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="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <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="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <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="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <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="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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="363"/> + <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="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <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="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <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="677"/> + <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="694"/> + <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="730"/> + <source>Could not run new version for continuing update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <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="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <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="871"/> + <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="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <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_zh_CN.qm b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.qm new file mode 100644 index 0000000..be651ee --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.qm @@ -0,0 +1 @@ +<¸dÊÍ!¿`¡½Ý
\ No newline at end of file diff --git a/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts new file mode 100644 index 0000000..0cfd10d --- /dev/null +++ b/SQLiteStudio3/coreSQLiteStudio/translations/coreSQLiteStudio_zh_CN.ts @@ -0,0 +1,1278 @@ +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE TS> +<TS version="2.0" language="zh_CN"> +<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="125"/> + <source>Database %1 could not be updated, because of an error: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="299"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="328"/> + <source>Database file doesn't exist.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="301"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="330"/> + <location filename="../services/impl/dbmanagerimpl.cpp" line="483"/> + <source>No supporting plugin loaded.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="402"/> + <source>Database could not be initialized.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/dbmanagerimpl.cpp" line="412"/> + <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't support exporing query results.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="98"/> + <source>Export plugin %1 doesn't support exporing tables.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="122"/> + <source>Export plugin %1 doesn't support exporing databases.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/exportmanager.cpp" line="155"/> + <source>Export format '%1' 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 '%1' 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="116"/> + <source>Error while exporting query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="175"/> + <source>Error while counting data column width to export from query results: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="275"/> + <location filename="../exportworker.cpp" line="326"/> + <source>Could not parse %1 in order to export it. It will be excluded from the export output.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="482"/> + <source>Error while reading data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="490"/> + <source>Error while counting data to export from table %1: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../exportworker.cpp" line="506"/> + <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 '%1'. 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 '%1' 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="93"/> + <source>Table '%1' 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="98"/> + <source>Table '%1' 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="116"/> + <source>Could not create table to import to: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="152"/> + <location filename="../importworker.cpp" line="158"/> + <source>Error while importing data: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../importworker.cpp" line="125"/> + <location filename="../importworker.cpp" line="158"/> + <source>Interrupted.</source> + <comment>import process status update</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>PluginManagerImpl</name> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="541"/> + <source>Cannot load plugin %1, because it's in conflict with plugin %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="552"/> + <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="561"/> + <source>Cannot load plugin %1. Error details: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="577"/> + <source>Cannot load plugin %1 (error while initializing plugin).</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="730"/> + <source>min: %1</source> + <comment>plugin dependency version</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/pluginmanagerimpl.cpp" line="731"/> + <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="88"/> + <source>Table '%1' 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'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="56"/> + <source>Error while populating table: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../populateworker.cpp" line="65"/> + <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="796"/> + <location filename="../db/abstractdb3.h" line="1082"/> + <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 '%2' statement.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="201"/> + <source>SQLite %1 does not support '%2' 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 '%2' clause. Cannot convert '%3' statement with that clause.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../dbversionconverter.cpp" line="488"/> + <source>SQLite %1 does not support the '%2' clause in the '%3' 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 '%2' 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="2170"/> + <source>Parser stack overflow</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../parser/sqlite2_parse.cpp" line="4461"/> + <location filename="../parser/sqlite3_parse.cpp" line="5076"/> + <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="307"/> + <source>Could not resolve data source for column: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/impl/configimpl.cpp" line="617"/> + <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="288"/> + <source>General purpose</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="289"/> + <source>Database support</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="290"/> + <source>Code formatter</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="291"/> + <source>Scripting languages</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="292"/> + <source>Exporting</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="293"/> + <source>Importing</source> + <comment>plugin category name</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../sqlitestudio.cpp" line="294"/> + <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="465"/> + <source>Cannot not update trigger %1 according to table %2 modification.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../tablemodifier.cpp" line="433"/> + <source>All columns covered by the trigger %1 are gone. The trigger will not be recreated after table modification.</source> + <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="580"/> + <location filename="../tablemodifier.cpp" line="601"/> + <location filename="../tablemodifier.cpp" line="619"/> + <source>There is a problem with updating an %1 statement within %2 trigger. One of the SELECT substatements which might be referring to table %3 cannot be properly modified. Manual update of the trigger may be necessary.</source> + <translation 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'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'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="132"/> + <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="538"/> + <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"/> + <source>SQLiteStudio was unable to extract metadata from the query. Results won'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'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="129"/> + <source>An error occurred while checking for updates: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="142"/> + <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="173"/> + <source>An error occurred while reading updates metadata: %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="186"/> + <source>Could not download updates, because server responded with invalid message format. You can try again later or download and install updates manually. See <a href="%1">User Manual</a> for details.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="193"/> + <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="204"/> + <source>There was no updates to download. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="239"/> + <source>Downloading: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="245"/> + <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="253"/> + <source>Failed to open file '%1' for writting: %2. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="274"/> + <source>Installing updates.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="285"/> + <source>Could not copy current application directory into %1 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="338"/> + <source>Could not create directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="346"/> + <source>Could not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="350"/> + <source>Cannot not rename directory %1 to %2. +Details: %3</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="358"/> + <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="363"/> + <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="442"/> + <source>Could not unpack component %1 into %2 directory.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="553"/> + <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="560"/> + <source>Could not execute final updating steps as root: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <location filename="../services/updatemanager.cpp" line="598"/> + <location filename="../services/updatemanager.cpp" line="611"/> + <location filename="../services/updatemanager.cpp" line="621"/> + <source>Could not execute final updating steps as admin: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="589"/> + <source>Cannot create temporary directory for updater.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="598"/> + <source>Cannot create updater script file.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="631"/> + <source>Updating canceled.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="659"/> + <source>Could not execute final updating steps as administrator.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="671"/> + <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="677"/> + <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="694"/> + <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="730"/> + <source>Could not run new version for continuing update.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="815"/> + <source>Package not in tar.gz format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="822"/> + <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="831"/> + <source>Package %1 cannot be installed, because cannot unpack it: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="850"/> + <source>Package not in zip format, cannot install: %1</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="857"/> + <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="871"/> + <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="921"/> + <location filename="../services/updatemanager.cpp" line="930"/> + <source>Could not rename directory %1 to %2.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="943"/> + <source>Could not delete directory %1.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="959"/> + <source>Error executing update command: %1 +Error message: %2</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../services/updatemanager.cpp" line="1026"/> + <source>An error occurred while downloading updates: %1. Updating aborted.</source> + <translation type="unfinished"></translation> + </message> +</context> +</TS> |
