From f68db612db90d2d3616c68e5c99a101216254755 Mon Sep 17 00:00:00 2001 From: Dan Ungureanu Date: Sat, 25 Jul 2015 14:27:42 +0300 Subject: [PATCH 01/13] Updated sql-parser library to udan11/sql-parser@7861701. Signed-off-by: Dan Ungureanu --- libraries/sql-parser/src/Component.php | 132 ++++++++++-------- .../sql-parser/src/Components/Expression.php | 5 +- .../src/Components/ExpressionArray.php | 5 +- .../src/Components/FieldDefinition.php | 7 + .../src/Components/OrderKeyword.php | 32 ++++- .../src/Components/SetOperation.php | 18 +++ .../src/Components/UnionKeyword.php | 41 ++++++ .../src/Contexts/ContextMySql50000.php | 11 +- .../src/Contexts/ContextMySql50100.php | 11 +- .../src/Contexts/ContextMySql50500.php | 11 +- .../src/Contexts/ContextMySql50600.php | 11 +- .../src/Contexts/ContextMySql50700.php | 11 +- libraries/sql-parser/src/Parser.php | 121 ++++++++++++---- libraries/sql-parser/src/Statement.php | 34 +++-- .../src/Statements/SelectStatement.php | 3 + .../src/Statements/TransactionStatement.php | 119 ++++++++++++++++ libraries/sql-parser/src/Utils/Query.php | 11 +- 17 files changed, 464 insertions(+), 119 deletions(-) create mode 100644 libraries/sql-parser/src/Components/UnionKeyword.php create mode 100644 libraries/sql-parser/src/Statements/TransactionStatement.php diff --git a/libraries/sql-parser/src/Component.php b/libraries/sql-parser/src/Component.php index 296ce77ade..7291ca5e31 100644 --- a/libraries/sql-parser/src/Component.php +++ b/libraries/sql-parser/src/Component.php @@ -10,64 +10,84 @@ * * @package SqlParser */ -namespace SqlParser; -/** - * A component (of a statement) is a part of a statement that is common to - * multiple query types. - * - * @category Components - * @package SqlParser - * @author Dan Ungureanu - * @license http://opensource.org/licenses/GPL-2.0 GNU Public License - */ -abstract class Component -{ +namespace { - /** - * Parses the tokens contained in the given list in the context of the given - * parser. - * - * @param Parser $parser The parser that serves as context. - * @param TokensList $list The list of tokens that are being parsed. - * @param array $options Parameters for parsing. - * - * @return mixed - */ - public static function parse( - Parser $parser, TokensList $list, array $options = array() - ) { - // This method should be abstract, but it can't be both static and - // abstract. - return null; - } + if (!function_exists('__')) { - /** - * Builds the string representation of a component of this type. - * - * In other words, this function represents the inverse function of - * `static::parse`. - * - * @param mixed $component The component to be built. - * - * @return string - */ - public static function build($component) - { - // This method should be abstract, but it can't be both static and - // abstract. - return null; - } - - /** - * Builds the string representation of a component of this type. - * - * @see static::build - * - * @return string - */ - public function __toString() - { - return static::build($this); + /** + * Translates the given string. + * + * @param string $str String to be translated. + * + * @return string + */ + function __($str) + { + return $str; + } + } +} + +namespace SqlParser { + + /** + * A component (of a statement) is a part of a statement that is common to + * multiple query types. + * + * @category Components + * @package SqlParser + * @author Dan Ungureanu + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ + abstract class Component + { + + /** + * Parses the tokens contained in the given list in the context of the given + * parser. + * + * @param Parser $parser The parser that serves as context. + * @param TokensList $list The list of tokens that are being parsed. + * @param array $options Parameters for parsing. + * + * @return mixed + */ + public static function parse( + Parser $parser, TokensList $list, array $options = array() + ) { + // This method should be abstract, but it can't be both static and + // abstract. + throw new \Exception(\__('Not implemented yet.')); + } + + /** + * Builds the string representation of a component of this type. + * + * In other words, this function represents the inverse function of + * `static::parse`. + * + * @param mixed $component The component to be built. + * + * @return string + */ + public static function build($component) + { + // This method should be abstract, but it can't be both static and + // abstract. + throw new \Exception(\__('Not implemented yet.')); + } + + /** + * Builds the string representation of a component of this type. + * + * @see static::build + * + * @return string + */ + public function __toString() + { + return static::build($this); + } } } diff --git a/libraries/sql-parser/src/Components/Expression.php b/libraries/sql-parser/src/Components/Expression.php index b9f257c7ed..d7d0d4a91c 100644 --- a/libraries/sql-parser/src/Components/Expression.php +++ b/libraries/sql-parser/src/Components/Expression.php @@ -175,7 +175,10 @@ class Expression extends Component continue; } - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + if (($token->type === Token::TYPE_KEYWORD) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ($token->value !== 'DUAL') + ) { // Keywords may be found only between brackets. if ($brackets === 0) { if ((empty($options['noAlias'])) && ($token->value === 'AS')) { diff --git a/libraries/sql-parser/src/Components/ExpressionArray.php b/libraries/sql-parser/src/Components/ExpressionArray.php index e006aafeda..2e082dc48e 100644 --- a/libraries/sql-parser/src/Components/ExpressionArray.php +++ b/libraries/sql-parser/src/Components/ExpressionArray.php @@ -67,7 +67,10 @@ class ExpressionArray extends Component continue; } - if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + if (($token->type === Token::TYPE_KEYWORD) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ($token->value !== 'DUAL') + ) { // No keyword is expected. break; } diff --git a/libraries/sql-parser/src/Components/FieldDefinition.php b/libraries/sql-parser/src/Components/FieldDefinition.php index 32a426ba00..351e8b551b 100644 --- a/libraries/sql-parser/src/Components/FieldDefinition.php +++ b/libraries/sql-parser/src/Components/FieldDefinition.php @@ -241,6 +241,13 @@ class FieldDefinition extends Component $state = 6; ++$list->idx; break; + } else { + $parser->error( + __('A comma or a closing bracket was expected.'), + $token + ); + $state = 0; + break; } } } diff --git a/libraries/sql-parser/src/Components/OrderKeyword.php b/libraries/sql-parser/src/Components/OrderKeyword.php index 26d0f20d80..7f1879c519 100644 --- a/libraries/sql-parser/src/Components/OrderKeyword.php +++ b/libraries/sql-parser/src/Components/OrderKeyword.php @@ -37,7 +37,19 @@ class OrderKeyword extends Component * * @var string */ - public $type = 'ASC'; + public $type; + + /** + * Constructor. + * + * @param Expression $field The field that we are sorting by. + * @param string $type The sorting type. + */ + public function __construct($field = null, $type = 'ASC') + { + $this->field = $field; + $this->type = $type; + } /** * @param Parser $parser The parser that serves as context. @@ -110,4 +122,22 @@ class OrderKeyword extends Component --$list->idx; return $ret; } + + /** + * @param OrderKeyword $component The component to be built. + * + * @return string + */ + public static function build($component) + { + if (is_array($component)) { + $ret = array(); + foreach ($component as $c) { + $ret[] = static::build($c); + } + return implode(", ", $ret); + } else { + return Expression::build($component->field) . ' ' . $component->type; + } + } } diff --git a/libraries/sql-parser/src/Components/SetOperation.php b/libraries/sql-parser/src/Components/SetOperation.php index a9e8ba1624..fc05cf7404 100644 --- a/libraries/sql-parser/src/Components/SetOperation.php +++ b/libraries/sql-parser/src/Components/SetOperation.php @@ -117,4 +117,22 @@ class SetOperation extends Component --$list->idx; return $ret; } + + /** + * @param SetOperation|SetOperation[] $component The component to be built. + * + * @return string + */ + public static function build($component) + { + if (is_array($component)) { + $ret = array(); + foreach ($component as $c) { + $ret[] = static::build($c); + } + return implode(", ", $ret); + } else { + return $component->column . ' = ' . $component->value; + } + } } diff --git a/libraries/sql-parser/src/Components/UnionKeyword.php b/libraries/sql-parser/src/Components/UnionKeyword.php new file mode 100644 index 0000000000..5a247bc46f --- /dev/null +++ b/libraries/sql-parser/src/Components/UnionKeyword.php @@ -0,0 +1,41 @@ + + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class UnionKeyword extends Component +{ + + /** + * @param SelectStatement[] $component The component to be built. + * + * @return string + */ + public static function build($component) + { + $ret = array(); + foreach ($component as $c) { + $ret[] = $c->build(); + } + return implode(" UNION ", $ret); + } +} diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50000.php b/libraries/sql-parser/src/Contexts/ContextMySql50000.php index 5069b917ab..ed86320ac4 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50000.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50000.php @@ -144,15 +144,18 @@ class ContextMySql50000 extends Context 'SQL_CALC_FOUND_ROWS' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'NO ACTION' => 7, - 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'INNER JOIN' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, + 'INNER JOIN' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'GENERATED ALWAYS' => 7, + 'START TRANSACTION' => 7, + 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, + 'WITH CONSISTENT SNAPSHOT' => 7, 'XML' => 9, 'ENUM' => 9, 'TEXT' => 9, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50100.php b/libraries/sql-parser/src/Contexts/ContextMySql50100.php index ad39eb7917..c71ff6cc22 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50100.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50100.php @@ -156,15 +156,18 @@ class ContextMySql50100 extends Context 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'NO ACTION' => 7, - 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'INNER JOIN' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, + 'INNER JOIN' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'GENERATED ALWAYS' => 7, + 'START TRANSACTION' => 7, + 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, + 'WITH CONSISTENT SNAPSHOT' => 7, 'XML' => 9, 'ENUM' => 9, 'TEXT' => 9, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50500.php b/libraries/sql-parser/src/Contexts/ContextMySql50500.php index c0074c709b..6f6bb66af6 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50500.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50500.php @@ -161,15 +161,18 @@ class ContextMySql50500 extends Context 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'NO ACTION' => 7, - 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'INNER JOIN' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, + 'INNER JOIN' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'GENERATED ALWAYS' => 7, + 'START TRANSACTION' => 7, + 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, + 'WITH CONSISTENT SNAPSHOT' => 7, 'XML' => 9, 'ENUM' => 9, 'TEXT' => 9, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50600.php b/libraries/sql-parser/src/Contexts/ContextMySql50600.php index 453d9e2629..62b75abae1 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50600.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50600.php @@ -166,15 +166,18 @@ class ContextMySql50600 extends Context 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'NO ACTION' => 7, - 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'INNER JOIN' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, + 'INNER JOIN' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'GENERATED ALWAYS' => 7, + 'START TRANSACTION' => 7, + 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, + 'WITH CONSISTENT SNAPSHOT' => 7, 'XML' => 9, 'ENUM' => 9, 'TEXT' => 9, diff --git a/libraries/sql-parser/src/Contexts/ContextMySql50700.php b/libraries/sql-parser/src/Contexts/ContextMySql50700.php index 9946a26361..8b0568b0cd 100644 --- a/libraries/sql-parser/src/Contexts/ContextMySql50700.php +++ b/libraries/sql-parser/src/Contexts/ContextMySql50700.php @@ -174,15 +174,18 @@ class ContextMySql50700 extends Context 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, - 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, 'NO ACTION' => 7, - 'ON DELETE' => 7, 'ON UPDATE' => 7, - 'INNER JOIN' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, - 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'NO ACTION' => 7, 'ON DELETE' => 7, 'ON UPDATE' => 7, + 'INNER JOIN' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'SQL SECURITY' => 7, 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'DATA DIRECTORY' => 7, 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'INDEX DIRECTORY' => 7, 'GENERATED ALWAYS' => 7, + 'START TRANSACTION' => 7, + 'SELECT TRANSACTION' => 7, 'DEFAULT CHARACTER SET' => 7, + 'WITH CONSISTENT SNAPSHOT' => 7, 'XML' => 9, 'ENUM' => 9, 'TEXT' => 9, diff --git a/libraries/sql-parser/src/Parser.php b/libraries/sql-parser/src/Parser.php index f00e442d95..911e71be4b 100644 --- a/libraries/sql-parser/src/Parser.php +++ b/libraries/sql-parser/src/Parser.php @@ -28,8 +28,9 @@ namespace { namespace SqlParser { - use SqlParser\Statements\SelectStatement; use SqlParser\Exceptions\ParserException; + use SqlParser\Statements\SelectStatement; + use SqlParser\Statements\TransactionStatement; /** * Takes multiple tokens (contained in a Lexer instance) as input and builds a @@ -50,47 +51,54 @@ namespace SqlParser { */ public static $STATEMENT_PARSERS = array( - 'EXPLAIN' => 'SqlParser\\Statements\\ExplainStatement', + 'EXPLAIN' => 'SqlParser\\Statements\\ExplainStatement', // Table Maintenance Statements // https://dev.mysql.com/doc/refman/5.7/en/table-maintenance-sql.html - 'ANALYZE' => 'SqlParser\\Statements\\AnalyzeStatement', - 'BACKUP' => 'SqlParser\\Statements\\BackupStatement', - 'CHECK' => 'SqlParser\\Statements\\CheckStatement', - 'CHECKSUM' => 'SqlParser\\Statements\\ChecksumStatement', - 'OPTIMIZE' => 'SqlParser\\Statements\\OptimizeStatement', - 'REPAIR' => 'SqlParser\\Statements\\RepairStatement', - 'RESTORE' => 'SqlParser\\Statements\\RestoreStatement', + 'ANALYZE' => 'SqlParser\\Statements\\AnalyzeStatement', + 'BACKUP' => 'SqlParser\\Statements\\BackupStatement', + 'CHECK' => 'SqlParser\\Statements\\CheckStatement', + 'CHECKSUM' => 'SqlParser\\Statements\\ChecksumStatement', + 'OPTIMIZE' => 'SqlParser\\Statements\\OptimizeStatement', + 'REPAIR' => 'SqlParser\\Statements\\RepairStatement', + 'RESTORE' => 'SqlParser\\Statements\\RestoreStatement', // Database Administration Statements // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-server-administration.html - 'SET' => '', - 'SHOW' => 'SqlParser\\Statements\\ShowStatement', + 'SET' => '', + 'SHOW' => 'SqlParser\\Statements\\ShowStatement', // Data Definition Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-definition.html - 'ALTER' => 'SqlParser\\Statements\\AlterStatement', - 'CREATE' => 'SqlParser\\Statements\\CreateStatement', - 'DROP' => 'SqlParser\\Statements\\DropStatement', - 'RENAME' => 'SqlParser\\Statements\\RenameStatement', - 'TRUNCATE' => 'SqlParser\\Statements\\TruncateStatement', + 'ALTER' => 'SqlParser\\Statements\\AlterStatement', + 'CREATE' => 'SqlParser\\Statements\\CreateStatement', + 'DROP' => 'SqlParser\\Statements\\DropStatement', + 'RENAME' => 'SqlParser\\Statements\\RenameStatement', + 'TRUNCATE' => 'SqlParser\\Statements\\TruncateStatement', // Data Manipulation Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-manipulation.html - 'CALL' => 'SqlParser\\Statements\\CallStatement', - 'DELETE' => 'SqlParser\\Statements\\DeleteStatement', - 'DO' => '', - 'HANDLER' => '', - 'INSERT' => 'SqlParser\\Statements\\InsertStatement', - 'LOAD' => '', - 'REPLACE' => 'SqlParser\\Statements\\ReplaceStatement', - 'SELECT' => 'SqlParser\\Statements\\SelectStatement', - 'UPDATE' => 'SqlParser\\Statements\\UpdateStatement', + 'CALL' => 'SqlParser\\Statements\\CallStatement', + 'DELETE' => 'SqlParser\\Statements\\DeleteStatement', + 'DO' => '', + 'HANDLER' => '', + 'INSERT' => 'SqlParser\\Statements\\InsertStatement', + 'LOAD' => '', + 'REPLACE' => 'SqlParser\\Statements\\ReplaceStatement', + 'SELECT' => 'SqlParser\\Statements\\SelectStatement', + 'UPDATE' => 'SqlParser\\Statements\\UpdateStatement', // Prepared Statements. // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html - 'PREPARE' => '', - 'EXECUTE' => '', + 'PREPARE' => '', + 'EXECUTE' => '', + + // Transactional and Locking Statements + // https://dev.mysql.com/doc/refman/5.7/en/commit.html + 'START TRANSACTION' => 'SqlParser\\Statements\\TransactionStatement', + 'BEGIN' => 'SqlParser\\Statements\\TransactionStatement', + 'COMMIT' => 'SqlParser\\Statements\\TransactionStatement', + 'ROLLBACK' => 'SqlParser\\Statements\\TransactionStatement', ); /** @@ -106,6 +114,12 @@ namespace SqlParser { 'field' => 'options', ), + // This is used only for building. + 'UNION' => array( + 'class' => 'SqlParser\\Components\\UnionKeyword', + 'field' => 'union', + ), + 'ALTER' => array( 'class' => 'SqlParser\\Components\\Expression', 'field' => 'table', @@ -311,6 +325,12 @@ namespace SqlParser { public function parse() { + /** + * Last transaction. + * @var TransactionStatement + */ + $lastTransaction = null; + /** * Last parsed statement. * @var Statement $lastStatement @@ -321,7 +341,7 @@ namespace SqlParser { * Whether a union is parsed or not. * @var bool $inUnion */ - $inUnion = true; + $inUnion = false; /** * The index of the last token from the last statement. @@ -400,21 +420,62 @@ namespace SqlParser { $statement->last = $list->idx; $prevLastIdx = $list->idx; - // Finally, storing the statement. + // Handles unions. if (($inUnion) && ($lastStatement instanceof SelectStatement) && ($statement instanceof SelectStatement) ) { + /** * Last SELECT statement. * @var SelectStatement $lastStatement */ $lastStatement->union[] = $statement; + + // if there are no no delimiting brackets, the `ORDER` and + // `LIMIT` keywords actually belong to the first statement. + $lastStatement->order = $statement->order; + $lastStatement->limit = $statement->limit; + $statement->order = array(); + $statement->limit = null; + + // The statement actually ends where the last statement in + // union ends. + $lastStatement->last = $statement->last; + $inUnion = false; + continue; + } + + // Handles transactions. + if ($statement instanceof TransactionStatement) { + if ($statement->type === TransactionStatement::TYPE_BEGIN) { + $lastTransaction = $statement; + $this->statements[] = $statement; + } elseif ($statement->type === TransactionStatement::TYPE_END) { + if ($lastTransaction === null) { + // Even though an error occurred, the query is being + // saved. + $this->statements[] = $statement; + $this->error( + __('No transaction was previously started.'), + $token + ); + } else { + $lastTransaction->end = $statement; + } + $lastTransaction = null; + } + continue; + } + + // Finally, storing the statement. + if ($lastTransaction !== null) { + $lastTransaction->statements[] = $statement; } else { $this->statements[] = $statement; - $lastStatement = $statement; } + $lastStatement = $statement; } } diff --git a/libraries/sql-parser/src/Statement.php b/libraries/sql-parser/src/Statement.php index 1494a0dd52..17a6002ad4 100644 --- a/libraries/sql-parser/src/Statement.php +++ b/libraries/sql-parser/src/Statement.php @@ -122,11 +122,6 @@ abstract class Statement */ $type = $clause[1]; - // Checking if there is any parser (builder) for this clause. - if (empty(Parser::$KEYWORD_PARSERS[$name])) { - continue; - } - /** * The builder (parser) of this clause. * @var string $class @@ -169,6 +164,16 @@ abstract class Statement */ public function parse(Parser $parser, TokensList $list) { + /** + * Whether the beginning of this statement was previously parsed. + * + * This is used to delimit statements that don't use the usual + * delimiters. + * + * @var bool + */ + $parsedBeginning = false; + // This may be corrected by the parser. $this->first = $list->idx; @@ -178,7 +183,7 @@ abstract class Statement * default. * @var bool $parsedOptions */ - $parsedOptions = !empty(static::$OPTIONS) ? false : true; + $parsedOptions = empty(static::$OPTIONS); for (; $list->idx < $list->count; ++$list->idx) { /** @@ -236,8 +241,21 @@ abstract class Statement } if (!empty(Parser::$STATEMENT_PARSERS[$token->value])) { + if ($parsedBeginning) { + // New statement has started. We let the parser construct a + // new statement and parse that one + $parser->error( + __('A new statement was found, but no delimiter between them.'), + $token + ); + break; + } + $parsedBeginning = true; if (!$parsedOptions) { - ++$list->idx; // Skipping keyword. + if (empty(static::$OPTIONS[$token->value])) { + // Skipping keyword because if it is not a option. + ++$list->idx; + } $this->options = OptionsArray::parse( $parser, $list, @@ -256,7 +274,7 @@ abstract class Statement // Parsing this keyword. if ($class !== null) { - ++$list->idx; // Skipping keyword. + ++$list->idx; // Skipping keyword or last option. $this->$field = $class::parse($parser, $list, $options); } diff --git a/libraries/sql-parser/src/Statements/SelectStatement.php b/libraries/sql-parser/src/Statements/SelectStatement.php index 954c2202ec..a19bd8e143 100644 --- a/libraries/sql-parser/src/Statements/SelectStatement.php +++ b/libraries/sql-parser/src/Statements/SelectStatement.php @@ -99,6 +99,9 @@ class SelectStatement extends Statement 'PROCEDURE' => array('PROCEDURE', 3), 'INTO' => array('INTO', 3), 'UNION' => array('UNION', 3), + // These are available only when `UNION` is present. + // 'ORDER BY' => array('ORDER BY', 3), + // 'LIMIT' => array('LIMIT', 3), ); /** diff --git a/libraries/sql-parser/src/Statements/TransactionStatement.php b/libraries/sql-parser/src/Statements/TransactionStatement.php new file mode 100644 index 0000000000..d7c9dbfedf --- /dev/null +++ b/libraries/sql-parser/src/Statements/TransactionStatement.php @@ -0,0 +1,119 @@ + + * @license http://opensource.org/licenses/GPL-2.0 GNU Public License + */ +class TransactionStatement extends Statement +{ + + /** + * START TRANSACTION and BEGIN + * + * @var int + */ + const TYPE_BEGIN = 1; + + /** + * COMMIT and ROLLBACK + * + * @var int + */ + const TYPE_END = 2; + + /** + * The type of this query. + * + * @var int + */ + public $type; + + /** + * The list of statements in this transaction. + * + * @var Statements[] + */ + public $statements; + + /** + * The ending transaction statement which may be a `COMMIT` or a `ROLLBACK`. + * + * @var TransactionStatement + */ + public $end; + + /** + * Options for this query. + * + * @var array + */ + public static $OPTIONS = array( + 'START TRANSACTION' => 1, + 'BEGIN' => 1, + 'COMMIT' => 1, + 'ROLLBACK' => 1, + 'WITH CONSISTENT SNAPSHOT' => 2, + 'WORK' => 2, + 'AND NO CHAIN' => 3, + 'AND CHAIN' => 3, + 'RELEASE' => 4, + 'NO RELEASE' => 4, + ); + + /** + * @param Parser $parser The instance that requests parsing. + * @param TokensList $list The list of tokens to be parsed. + * + * @return void + */ + public function parse(Parser $parser, TokensList $list) + { + parent::parse($parser, $list); + + // Checks the type of this query. + if (($this->options->has('START TRANSACTION')) + || ($this->options->has('BEGIN')) + ) { + $this->type = TransactionStatement::TYPE_BEGIN; + } elseif (($this->options->has('COMMIT')) + || ($this->options->has('ROLLBACK')) + ) { + $this->type = TransactionStatement::TYPE_END; + } + } + + /** + * @return string + */ + public function build() + { + $ret = OptionsArray::build($this->options); + if ($this->type === TransactionStatement::TYPE_BEGIN) { + foreach ($this->statements as $statement) { + $ret .= ';' . $statement->build(); + } + $ret .= ';' . $this->end->build(); + } + return $ret; + } +} diff --git a/libraries/sql-parser/src/Utils/Query.php b/libraries/sql-parser/src/Utils/Query.php index bec402ade8..c11e858bb7 100644 --- a/libraries/sql-parser/src/Utils/Query.php +++ b/libraries/sql-parser/src/Utils/Query.php @@ -533,6 +533,14 @@ class Query */ $clauses = array_flip(array_keys($statement::$CLAUSES)); + // This is a cheap fix for `SELECT` statements that contain `UNION`. + // Replacing the `ORDER BY` or `LIMIT` clauses should replace the last + // clause. + if (($statement instanceof SelectStatement) && (!empty($statement->union))) { + $clauses['ORDER BY'] = count($clauses) + 1; + $clauses['LIMIT'] = count($clauses) + 2; + } + /** * Lexer used for lexing the clause. * @var Lexer $lexer @@ -552,10 +560,9 @@ class Query $clauseIdx = $clauses[$clauseType]; $firstClauseIdx = $clauseIdx; - $lastClauseIdx = $clauseIdx + 1; - // Determining the behaviour of this function. + // Determining the behavior of this function. if ($type === -1) { $firstClauseIdx = -1; // Something small enough. $lastClauseIdx = $clauseIdx - 1; From 0174079f1e32125673200e5f1124849ff68d613f Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 25 Jul 2015 17:56:59 +0200 Subject: [PATCH 02/13] Translated using Weblate (Armenian) Currently translated at 34.1% (1090 of 3194 strings) [CI skip] --- po/hy.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/po/hy.po b/po/hy.po index 8972f54d37..38c13a855e 100644 --- a/po/hy.po +++ b/po/hy.po @@ -8,7 +8,7 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 06:41+0200\n" +"PO-Revision-Date: 2015-07-25 17:56+0200\n" "Last-Translator: Andrey Aleksanyants \n" "Language-Team: Armenian " "\n" @@ -918,7 +918,7 @@ msgstr "" #: js/messages.php:38 libraries/import.lib.php:125 sql.php:160 msgid "\"DROP DATABASE\" statements are disabled." -msgstr "\"DROP DATABASE\" դրույթները կասեցված են։" +msgstr "\"DROP DATABASE\" արտահայտությունները կասեցված են։" #: js/messages.php:44 msgid "Confirm" @@ -3531,7 +3531,6 @@ msgstr "Որոնել այս աղյուսակում" #: libraries/DisplayResults.class.php:973 libraries/Util.class.php:2535 #: libraries/Util.class.php:2538 -#, fuzzy msgctxt "First page" msgid "Begin" msgstr "Սկիզբ" From d3133d89f5a89a26ebfa70566408754218c9a949 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=9A=D0=B0=D1=80=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Sat, 25 Jul 2015 19:07:09 +0200 Subject: [PATCH 03/13] Translated using Weblate (Russian) Currently translated at 93.0% (2973 of 3194 strings) [CI skip] --- po/ru.po | 36 ++++++++++++++---------------------- 1 file changed, 14 insertions(+), 22 deletions(-) diff --git a/po/ru.po b/po/ru.po index 63b035bbe9..8791331c7b 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,16 +4,16 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-11 01:41+0200\n" -"Last-Translator: ddrmoscow \n" -"Language-Team: Russian \n" +"PO-Revision-Date: 2015-07-25 19:07+0200\n" +"Last-Translator: Олег Карпов \n" +"Language-Team: Russian " +"\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=" +"4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" "X-Generator: Weblate 2.4-dev\n" #: changelog.php:37 license.php:28 @@ -1023,10 +1023,9 @@ msgid "" msgstr "" #: js/messages.php:65 -#, fuzzy #| msgid "Do you really want to delete the search \"%s\"?" msgid "Do you really want to TRUNCATE the selected partition(s)?" -msgstr "Вы действительно хотите удалить поиск \"%s\"?" +msgstr "Вы действительно хотите ОБНУЛИТЬ выбранный(е) раздел(ы)?" #: js/messages.php:67 msgid "" @@ -2393,10 +2392,9 @@ msgstr "" "возможно отключение браузера." #: js/messages.php:495 -#, fuzzy #| msgid "Original string" msgid "Original length" -msgstr "Исходная строка" +msgstr "Исходный размер" #: js/messages.php:498 msgid "cancel" @@ -2626,16 +2624,14 @@ msgid "%s argument(s) passed" msgstr "" #: js/messages.php:602 -#, fuzzy #| msgid "Table comments" msgid "Show arguments" -msgstr "Комментарии к таблице" +msgstr "Отобразить аргументы" #: js/messages.php:603 -#, fuzzy #| msgid "Hide search results" msgid "Hide arguments" -msgstr "Скрыть результаты поиска" +msgstr "Скрыть аргументы" #: js/messages.php:604 libraries/Console.class.php:318 msgid "Time taken:" @@ -2909,28 +2905,24 @@ msgid "This field is required" msgstr "" #: js/messages.php:775 -#, fuzzy #| msgid "Use text field" msgid "Please fix this field" -msgstr "Использовать текстовое поле" +msgstr "Пожалуйста, исправьте это поле" #: js/messages.php:776 -#, fuzzy #| msgid "Please enter a valid page name" msgid "Please enter a valid email address" -msgstr "Введите правильное имя страницы" +msgstr "Введите правильный email" #: js/messages.php:777 -#, fuzzy #| msgid "Please enter a valid number!" msgid "Please enter a valid URL" -msgstr "Пожалуйста, введите правильное числовое значение!" +msgstr "Пожалуйста, введите правильный URL" #: js/messages.php:778 -#, fuzzy #| msgid "Please enter a valid page name" msgid "Please enter a valid date" -msgstr "Введите правильное имя страницы" +msgstr "Введите правильную дату" #: js/messages.php:779 msgid "Please enter a valid date ( ISO )" From ce6fce884369331e9bb67d04e468972b49cfb39c Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 25 Jul 2015 19:07:46 +0200 Subject: [PATCH 04/13] Translated using Weblate (Russian) Currently translated at 93.1% (2974 of 3194 strings) [CI skip] --- po/ru.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/po/ru.po b/po/ru.po index 8791331c7b..2952f35429 100644 --- a/po/ru.po +++ b/po/ru.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" "PO-Revision-Date: 2015-07-25 19:07+0200\n" -"Last-Translator: Олег Карпов \n" +"Last-Translator: Andrey Aleksanyants \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -2929,10 +2929,9 @@ msgid "Please enter a valid date ( ISO )" msgstr "Введите правильную дату ( ISO )" #: js/messages.php:780 -#, fuzzy #| msgid "Please enter a valid number!" msgid "Please enter a valid number" -msgstr "Пожалуйста, введите правильное числовое значение!" +msgstr "Пожалуйста, введите правильное числовое значение" #: js/messages.php:781 #, fuzzy From 636dbb2c5bda49bc495bad3697ab4acf0121c41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=9A=D0=B0=D1=80=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Sat, 25 Jul 2015 19:08:37 +0200 Subject: [PATCH 05/13] Translated using Weblate (Russian) Currently translated at 93.2% (2977 of 3194 strings) [CI skip] --- po/ru.po | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/po/ru.po b/po/ru.po index 2952f35429..26004afd1b 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 19:07+0200\n" -"Last-Translator: Andrey Aleksanyants \n" +"PO-Revision-Date: 2015-07-25 19:08+0200\n" +"Last-Translator: Олег Карпов \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -2934,16 +2934,14 @@ msgid "Please enter a valid number" msgstr "Пожалуйста, введите правильное числовое значение" #: js/messages.php:781 -#, fuzzy #| msgid "Please enter a valid number!" msgid "Please enter a valid credit card number" -msgstr "Пожалуйста, введите правильное числовое значение!" +msgstr "Пожалуйста, введите правильный номер кредитной карты" #: js/messages.php:782 -#, fuzzy #| msgid "Please enter a valid length!" msgid "Please enter only digits" -msgstr "Пожалуйста, введите правильную длину!" +msgstr "Пожалуйста, введите только цифровые символы" #: js/messages.php:783 msgid "Please enter the same value again" @@ -3318,10 +3316,9 @@ msgid "" msgstr "" #: libraries/Console.class.php:385 -#, fuzzy #| msgid "Switch to copied table" msgid "Switch to dark theme" -msgstr "Переключиться на скопированную таблицу" +msgstr "Переключиться на темную тему" #: libraries/DBQbe.class.php:405 libraries/DisplayResults.class.php:1476 #: libraries/DisplayResults.class.php:2264 From c49e0596032b806683075d3838bf69e3a2b9e768 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 25 Jul 2015 19:09:07 +0200 Subject: [PATCH 06/13] Translated using Weblate (Russian) Currently translated at 93.2% (2978 of 3194 strings) [CI skip] --- po/ru.po | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/po/ru.po b/po/ru.po index 26004afd1b..eb63617182 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 19:08+0200\n" -"Last-Translator: Олег Карпов \n" +"PO-Revision-Date: 2015-07-25 19:09+0200\n" +"Last-Translator: Andrey Aleksanyants \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -4029,10 +4029,9 @@ msgid "Databases" msgstr "Базы данных" #: libraries/Menu.class.php:566 -#, fuzzy #| msgid "User groups" msgid "User accounts" -msgstr "Группы пользователей" +msgstr "Учетные записи пользователей" #: libraries/Menu.class.php:593 libraries/ServerStatusData.class.php:121 #: libraries/Util.class.php:4346 libraries/server_common.lib.php:36 From e0f777a990c02d390f5dc3c193bea05de2917a41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=9A=D0=B0=D1=80=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Sat, 25 Jul 2015 19:09:45 +0200 Subject: [PATCH 07/13] Translated using Weblate (Russian) Currently translated at 93.2% (2980 of 3194 strings) [CI skip] --- po/ru.po | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/po/ru.po b/po/ru.po index eb63617182..00e099d9c2 100644 --- a/po/ru.po +++ b/po/ru.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" "PO-Revision-Date: 2015-07-25 19:09+0200\n" -"Last-Translator: Andrey Aleksanyants \n" +"Last-Translator: Олег Карпов \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -5191,16 +5191,14 @@ msgid "Server default" msgstr "Сервер по умолчанию" #: libraries/config.values.php:133 -#, fuzzy #| msgid "Enabled" msgid "Enable" -msgstr "Доступно" +msgstr "Включить" #: libraries/config.values.php:134 -#, fuzzy #| msgid "Disabled" msgid "Disable" -msgstr "Недоступно" +msgstr "Отключить" #: libraries/config.values.php:163 #: libraries/plugins/export/ExportHtmlword.class.php:69 From ffdcad6ffcf99aa94c75d3913c4b90baf1a561c4 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 25 Jul 2015 19:39:46 +0200 Subject: [PATCH 08/13] Translated using Weblate (Russian) Currently translated at 93.3% (2982 of 3194 strings) [CI skip] --- po/ru.po | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/po/ru.po b/po/ru.po index 00e099d9c2..c155be0499 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 19:09+0200\n" -"Last-Translator: Олег Карпов \n" +"PO-Revision-Date: 2015-07-25 19:39+0200\n" +"Last-Translator: Andrey Aleksanyants \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -5957,10 +5957,9 @@ msgid "Overwrite existing file(s)" msgstr "Перезаписать существующий(е) файл(ы)" #: libraries/config/messages.inc.php:167 -#, fuzzy #| msgid "Export table headers" msgid "Export as separate files" -msgstr "Экспорт заголовков таблиц" +msgstr "Экспорт в виде отдельных файлов" #: libraries/config/messages.inc.php:171 msgid "Remember file name template" @@ -6084,10 +6083,9 @@ msgstr "" "запросов." #: libraries/config/messages.inc.php:224 -#, fuzzy #| msgid "Foreign key check:" msgid "Foreign key checks" -msgstr "Проверка внешних ключей:" +msgstr "Проверка внешних ключей" #: libraries/config/messages.inc.php:225 msgid "Browse mode" From 9f3cef97086babd3b76523e87b2f4663e7ea8031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=9A=D0=B0=D1=80=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Sat, 25 Jul 2015 19:40:04 +0200 Subject: [PATCH 09/13] Translated using Weblate (Russian) Currently translated at 93.3% (2983 of 3194 strings) [CI skip] --- po/ru.po | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/po/ru.po b/po/ru.po index c155be0499..995e7e14fe 100644 --- a/po/ru.po +++ b/po/ru.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" "PO-Revision-Date: 2015-07-25 19:39+0200\n" -"Last-Translator: Andrey Aleksanyants \n" +"Last-Translator: Олег Карпов \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -6710,10 +6710,9 @@ msgid "Target for quick access icon" msgstr "Цель иконки быстрого доступа" #: libraries/config/messages.inc.php:464 -#, fuzzy #| msgid "Target for quick access icon" msgid "Target for second quick access icon" -msgstr "Цель иконки быстрого доступа" +msgstr "Цель второй иконки быстрого доступа" #: libraries/config/messages.inc.php:467 msgid "" From f00601ebebabf52c377c5e1f14af90ac96b0c2e9 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 25 Jul 2015 20:40:35 +0200 Subject: [PATCH 10/13] Translated using Weblate (Russian) Currently translated at 96.7% (3091 of 3194 strings) [CI skip] --- po/ru.po | 398 +++++++++++++++++++++---------------------------------- 1 file changed, 153 insertions(+), 245 deletions(-) diff --git a/po/ru.po b/po/ru.po index 995e7e14fe..5d0240edf0 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 19:39+0200\n" -"Last-Translator: Олег Карпов \n" +"PO-Revision-Date: 2015-07-25 20:40+0200\n" +"Last-Translator: Andrey Aleksanyants \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -388,7 +388,7 @@ msgstr "Показать" #: db_tracking.php:139 db_tracking.php:231 msgid "Delete tracking" -msgstr "Удалить отслеживание" +msgstr "Удаление данных слежени" #: db_tracking.php:140 msgid "Versions" @@ -6731,7 +6731,6 @@ msgid "Minimum number of databases to display the database filter box" msgstr "Минимальное количество баз данных для отображения поля фильтра" #: libraries/config/messages.inc.php:475 -#, fuzzy #| msgid "" #| "Group items in the navigation tree (determined by the separator defined " #| "below)." @@ -6739,8 +6738,8 @@ msgid "" "Group items in the navigation tree (determined by the separator defined in " "the Databases and Tables tabs above)." msgstr "" -"Группировать пункты в дереве навигации (определяется указанием разделителя " -"ниже)." +"Группировать пункты в дереве навигации (определяется разделителем, указанным " +"в закладках баз данных и таблиц сверху)." #: libraries/config/messages.inc.php:477 msgid "Group items in the tree" @@ -6775,47 +6774,40 @@ msgid "Enable highlighting" msgstr "Включить подсветку" #: libraries/config/messages.inc.php:489 -#, fuzzy #| msgid "Whether to disable the possibility of database expansion or not." msgid "" "Whether to offer the possibility of tree expansion in the navigation panel." -msgstr "Следует ли отключить возможность расширения базы данных или нет." +msgstr "Следует ли предлагать возможность раскрытия дерева в панели навигации." #: libraries/config/messages.inc.php:491 -#, fuzzy #| msgid "Table navigation bar" msgid "Enable navigation tree expansion" -msgstr "Строка навигации по таблице" +msgstr "Включить раскрытие навигационного дерева" #: libraries/config/messages.inc.php:492 -#, fuzzy #| msgid "Showing tables:" msgid "Show tables in tree" -msgstr "Отображение таблиц:" +msgstr "Отображение таблиц в дереве" #: libraries/config/messages.inc.php:494 -#, fuzzy #| msgid "Whether to disable the possibility of database expansion or not." msgid "Whether to show tables under database in the navigation tree" -msgstr "Следует ли отключить возможность расширения базы данных или нет." +msgstr "Следует ли отображать таблицы под базой данных в дереве навигации" #: libraries/config/messages.inc.php:495 -#, fuzzy #| msgid "Show versions" msgid "Show views in tree" -msgstr "Показать версии" +msgstr "Показать представления в дереве" #: libraries/config/messages.inc.php:497 -#, fuzzy #| msgid "Show hidden navigation tree items." msgid "Whether to show views under database in the navigation tree" -msgstr "Отображать скрытые пункты дерева навигации." +msgstr "Стоит ли отображать представления под базой данных в дереве навигации" #: libraries/config/messages.inc.php:498 -#, fuzzy #| msgid "Show function fields" msgid "Show functions in tree" -msgstr "Выводить поля функций" +msgstr "Отображать фунцкии в дереве" #: libraries/config/messages.inc.php:500 msgid "Whether to show functions under database in the navigation tree" @@ -6832,16 +6824,14 @@ msgid "Whether to show procedures under database in the navigation tree" msgstr "" #: libraries/config/messages.inc.php:504 -#, fuzzy #| msgid "Show versions" msgid "Show events in tree" -msgstr "Показать версии" +msgstr "Отображать события в дереве" #: libraries/config/messages.inc.php:506 -#, fuzzy #| msgid "Show hidden navigation tree items." msgid "Whether to show events under database in the navigation tree" -msgstr "Отображать скрытые пункты дерева навигации." +msgstr "Стоит ли отображать события под базой данных в дереве навигации" #: libraries/config/messages.inc.php:508 msgid "Maximum number of recently used tables; set 0 to disable." @@ -7042,10 +7032,9 @@ msgid "Relational display" msgstr "Отображение связанного поля" #: libraries/config/messages.inc.php:580 -#, fuzzy #| msgid "Servers display options." msgid "For display Options" -msgstr "Параметры отображения списка серверов." +msgstr "Для параметров отображения" #: libraries/config/messages.inc.php:581 msgid "Grid editing: save all edited cells at once" @@ -7274,10 +7263,9 @@ msgstr "" "[kbd]pma__savedsearches[/kbd]." #: libraries/config/messages.inc.php:659 -#, fuzzy #| msgid "Export views as tables" msgid "Export templates table" -msgstr "Экспортировать виды как таблицы" +msgstr "Экспортировать таблицу шаблонов" #: libraries/config/messages.inc.php:661 #, fuzzy @@ -7399,10 +7387,9 @@ msgstr "" "поле пустым, рекомендуется: [kbd]pma__recent[/kbd]." #: libraries/config/messages.inc.php:701 -#, fuzzy #| msgid "Favorite tables" msgid "Favorites table" -msgstr "Избранные таблицы" +msgstr "Таблица избранных" #: libraries/config/messages.inc.php:703 msgid "" @@ -7649,17 +7636,15 @@ msgid "Show create database form" msgstr "Вывести форму создания базы данных" #: libraries/config/messages.inc.php:779 -#, fuzzy #| msgid "" #| "Show or hide a column displaying the Creation timestamp for all tables." msgid "Show or hide a column displaying the comments for all tables." -msgstr "Выводить/скрывать столбец, отображающий время создания всех таблиц." +msgstr "Выводить/скрывать столбец, отображающий комментарии для всех таблиц." #: libraries/config/messages.inc.php:780 -#, fuzzy #| msgid "Table comments" msgid "Show table comments" -msgstr "Комментарии к таблице" +msgstr "Показать комментарии к таблице" #: libraries/config/messages.inc.php:781 msgid "Show or hide a column displaying the Creation timestamp for all tables." @@ -7774,12 +7759,13 @@ msgid "Skip locked tables" msgstr "Пропускать заблокированные таблицы" #: libraries/config/messages.inc.php:808 -#, fuzzy #| msgid "A warning is displayed on the main page if Suhosin is detected." msgid "" "Disable the default warning that is displayed on the main page if Suhosin is " "detected." -msgstr "Выводить предупреждение на главной странице при определении Suhosin." +msgstr "" +"Отключить изначальное предупреждение на главной странице при определении " +"Suhosin." #: libraries/config/messages.inc.php:809 msgid "Suhosin warning" @@ -7799,13 +7785,11 @@ msgstr "" "столбцов таблицы с именами, являющимися зарезервированными словами MySQL." #: libraries/config/messages.inc.php:812 -#, fuzzy #| msgid "Login cookie validity" msgid "Login cookie validity warning" -msgstr "Срок действия cookie" +msgstr "Предупреждение о сроке действия cookie" #: libraries/config/messages.inc.php:814 -#, fuzzy #| msgid "" #| "Textarea size (columns) in edit mode, this value will be emphasized for " #| "SQL query textareas (*2) and for query window (*1.25)." @@ -7814,15 +7798,13 @@ msgid "" "query textareas (*2)." msgstr "" "Размер (кол-во столбцов) текстового поля в режиме редактирования, данное " -"значение будет приоритетным для текстовых полей SQL запроса (*2) и для окна " -"запроса (*1.25)." +"значение будет приоритетным для текстовых полей SQL запроса (*2)." #: libraries/config/messages.inc.php:815 msgid "Textarea columns" msgstr "Столбцов в текстовом поле" #: libraries/config/messages.inc.php:816 -#, fuzzy #| msgid "" #| "Textarea size (rows) in edit mode, this value will be emphasized for SQL " #| "query textareas (*2) and for query window (*1.25)." @@ -7831,8 +7813,7 @@ msgid "" "query textareas (*2)." msgstr "" "Размер (кол-во строк) текстового поля в режиме редактирования, данное " -"значение будет приоритетным для текстовых полей SQL запроса (*2) и для окна " -"запроса (*1.25)." +"значение будет приоритетным для текстовых полей SQL запроса (*2)." #: libraries/config/messages.inc.php:817 msgid "Textarea rows" @@ -8001,10 +7982,9 @@ msgid "" msgstr "" #: libraries/config/messages.inc.php:855 -#, fuzzy #| msgid "Executed queries" msgid "Enter executes queries in console" -msgstr "Выполнено запросов" +msgstr "Enter выполняет запросы в консоли" #: libraries/config/messages.inc.php:858 msgid "" @@ -8019,10 +7999,11 @@ msgid "Enable Zero Configuration mode" msgstr "Включить режим нулевой конфигурации" #: libraries/config/page_settings.class.php:138 -#, fuzzy #| msgid "Cannot save settings, submitted form contains errors!" msgid "Cannot save settings, submitted configuration form contains errors!" -msgstr "Невозможно сохранить настройки, отправленная форма содержит ошибки!" +msgstr "" +"Невозможно сохранить настройки, отправленная форма конфигурации содержит " +"ошибки!" #: libraries/config/setup.forms.php:40 msgid "Config authentication" @@ -8101,16 +8082,14 @@ msgid "Table %1$s has been altered successfully." msgstr "Таблица %1$s была успешно изменена." #: libraries/controllers/TableRelationController.class.php:218 -#, fuzzy #| msgid "Thread %s was successfully killed." msgid "Display column was successfully updated." -msgstr "Процесс %s был успешно завершен." +msgstr "Отображаемый столбец был успешно обновлен." #: libraries/controllers/TableRelationController.class.php:283 -#, fuzzy #| msgid "Internal relation has been added." msgid "Internal relations were successfully updated." -msgstr "Добавлена внутренняя связь." +msgstr "Внутренние связи были успешно обновлены." #: libraries/core.lib.php:306 #, php-format @@ -8228,52 +8207,44 @@ msgid "Exporting rows from \"%s\" table" msgstr "Экспорт строк из таблицы \"%s\"" #: libraries/display_export.lib.php:203 -#, fuzzy #| msgid "Export type" msgid "Export templates:" -msgstr "Тип экспорта" +msgstr "Экспорт шаблонов:" #: libraries/display_export.lib.php:208 -#, fuzzy #| msgid "File name template:" msgid "New template:" -msgstr "Шаблон имени файла:" +msgstr "Новый шаблон:" #: libraries/display_export.lib.php:211 -#, fuzzy #| msgid "Table name" msgid "Template name" -msgstr "Имя таблицы" +msgstr "Имя шаблона" #: libraries/display_export.lib.php:220 -#, fuzzy #| msgid "File name template:" msgid "Existing templates:" -msgstr "Шаблон имени файла:" +msgstr "Имеющиеся шаблоны:" #: libraries/display_export.lib.php:221 -#, fuzzy #| msgid "Temp disk rate" msgid "Template:" -msgstr "Соотношение временных таблиц на диске" +msgstr "Шаблон:" #: libraries/display_export.lib.php:226 -#, fuzzy #| msgid "Updated" msgid "Update" -msgstr "Обновлёно" +msgstr "Обновление" #: libraries/display_export.lib.php:248 -#, fuzzy #| msgid "Select a table" msgid "Select a template" -msgstr "Выберите таблицу" +msgstr "Выберите шаблон" #: libraries/display_export.lib.php:294 -#, fuzzy #| msgid "Export method" msgid "Export method:" -msgstr "Метод экспорта" +msgstr "Метод экспорта:" #: libraries/display_export.lib.php:304 msgid "Quick - display only the minimal options" @@ -8391,16 +8362,14 @@ msgid "View output as text" msgstr "Отобразить вывод как текст" #: libraries/display_export.lib.php:753 -#, fuzzy #| msgid "Export views as tables" msgid "Export databases as separate files" -msgstr "Экспортировать виды как таблицы" +msgstr "Экспортировать базы данных в виде отдельных файлов" #: libraries/display_export.lib.php:755 -#, fuzzy #| msgid "Export table headers" msgid "Export tables as separate files" -msgstr "Экспорт заголовков таблиц" +msgstr "Экспортировать таблицы в виде отдельных файлов" #: libraries/display_export.lib.php:785 libraries/display_export.lib.php:910 msgid "Rename exported databases/tables/columns" @@ -8537,10 +8506,9 @@ msgstr "" "форматов), начиная со следующего:" #: libraries/display_import.lib.php:338 -#, fuzzy #| msgid "Options" msgid "Other Options:" -msgstr "Параметры" +msgstr "Прочие параметры:" #: libraries/display_import.lib.php:363 msgid "Format-Specific Options:" @@ -9336,10 +9304,9 @@ msgid "multilingual" msgstr "многоязычный" #: libraries/mysql_charsets.lib.php:273 -#, fuzzy #| msgid "File name" msgid "Vietnamese" -msgstr "Имя файла" +msgstr "Вьетнамский" #: libraries/mysql_charsets.lib.php:300 msgid "Central European" @@ -9391,10 +9358,9 @@ msgid "An error has occurred while loading the navigation display" msgstr "При загрузке панели навигации произошла ошибка" #: libraries/navigation/Navigation.class.php:192 -#, fuzzy #| msgid "Group name:" msgid "Groups:" -msgstr "Имя группы:" +msgstr "Группы:" #: libraries/navigation/Navigation.class.php:193 msgid "Events:" @@ -9429,10 +9395,9 @@ msgid "phpMyAdmin documentation" msgstr "Документация phpMyAdmin" #: libraries/navigation/NavigationHeader.class.php:207 -#, fuzzy #| msgid "Navigation panel" msgid "Navigation panel settings" -msgstr "Панель навигации" +msgstr "Настройки панели навигации" #: libraries/navigation/NavigationHeader.class.php:218 msgid "Reload navigation panel" @@ -9775,7 +9740,7 @@ msgstr "" "один столбец." #: libraries/normalization.lib.php:411 -#, fuzzy, php-format +#, php-format #| msgid "" #| "As per above partial dependencies, in order to put the original table " #| "'%1$s' into Second normal form we need to create the following tables:" @@ -9783,9 +9748,8 @@ msgid "" "In order to put the original table '%1$s' into Second normal form we need to " "create the following tables:" msgstr "" -"Из-за наличия приведенных выше частичных зависимостей, для того, чтобы " -"привести исходную таблицу '%1$s' ко второй нормальной форме, необходимо " -"создать следующие таблицы:" +"Для того, чтобы привести исходную таблицу '%1$s' ко второй нормальной форме, " +"необходимо создать следующие таблицы:" #: libraries/normalization.lib.php:447 #, php-format @@ -9798,7 +9762,7 @@ msgid "Error in processing!" msgstr "Ошибка при обработке!" #: libraries/normalization.lib.php:533 -#, fuzzy, php-format +#, php-format #| msgid "" #| "As per above dependencies, in order to put the original table '%1$s' into " #| "Third normal form we need to create the following tables:" @@ -9806,9 +9770,8 @@ msgid "" "In order to put the original table '%1$s' into Third normal form we need to " "create the following tables:" msgstr "" -"Из-за наличия приведенных выше зависимостей, для того, чтобы привести " -"исходную таблицу '%1$s' к третьей нормальной форме, необходимо создать " -"следующие таблицы:" +"Для того, чтобы привести исходную таблицу '%1$s' к третьей нормальной форме, " +"необходимо создать следующие таблицы:" #: libraries/normalization.lib.php:580 msgid "The third step of normalization is complete." @@ -9891,21 +9854,21 @@ msgstr "Переименовать базу данных в" #: libraries/operations.lib.php:861 libraries/operations.lib.php:955 #: libraries/operations.lib.php:1309 #: templates/columns_definitions/column_adjust_privileges.phtml:16 -#, fuzzy #| msgid "You don't have sufficient privileges to be here right now!" msgid "" "You don't have sufficient privileges to perform this operation; Please refer " "to the documentation for more details" -msgstr "Для доступа к данной странице у вас недостаточно прав!" +msgstr "" +"Для выполнения данного действия у вас недостаточно прав; пожалуйста, " +"обратитесь к документации" #: libraries/operations.lib.php:101 libraries/operations.lib.php:248 #: libraries/operations.lib.php:867 libraries/operations.lib.php:961 #: libraries/operations.lib.php:1315 libraries/rte/rte_routines.lib.php:907 #: templates/columns_definitions/table_fields_definitions.phtml:47 -#, fuzzy #| msgid "Edit Privileges" msgid "Adjust Privileges" -msgstr "Редактировать привилегии" +msgstr "Настроить привилегии" #: libraries/operations.lib.php:133 #, php-format @@ -10071,10 +10034,9 @@ msgid "Truncate" msgstr "" #: libraries/operations.lib.php:1607 -#, fuzzy #| msgid "Collapse" msgid "Coalesce" -msgstr "Свернуть" +msgstr "Объединить" #: libraries/operations.lib.php:1616 msgid "Partition maintenance" @@ -10221,10 +10183,9 @@ msgid "Please enter correct captcha!" msgstr "Пожалуйста, введите правильное значение captcha!" #: libraries/plugins/auth/AuthenticationCookie.class.php:423 -#, fuzzy #| msgid "Cannot log in to the MySQL server" msgid "You are not allowed to log in to this MySQL server!" -msgstr "Невозможно подключиться к серверу MySQL" +msgstr "У вас нет прав для подключения к серверу MySQL!" #: libraries/plugins/auth/AuthenticationHttp.class.php:101 msgid "Wrong username/password. Access denied." @@ -10450,16 +10411,14 @@ msgid "Report title:" msgstr "Заголовок отчета:" #: libraries/plugins/export/ExportPdf.class.php:230 -#, fuzzy #| msgid "Dumping data for table" msgid "Dumping data" -msgstr "Дамп данных таблицы" +msgstr "Дамп данных" #: libraries/plugins/export/ExportPdf.class.php:285 -#, fuzzy #| msgid "structure" msgid "View structure" -msgstr "структура" +msgstr "Просмотреть структуру" #: libraries/plugins/export/ExportPdf.class.php:288 #, fuzzy @@ -10489,10 +10448,9 @@ msgstr "" "последней проверки" #: libraries/plugins/export/ExportSql.class.php:161 -#, fuzzy #| msgid "Export method" msgid "Export metadata" -msgstr "Метод экспорта" +msgstr "Экспорт метаданных" #: libraries/plugins/export/ExportSql.class.php:176 msgid "" @@ -10624,16 +10582,15 @@ msgid "It appears your database uses functions;" msgstr "Похоже, что база данных использует функции;" #: libraries/plugins/export/ExportSql.class.php:978 -#, fuzzy #| msgid "Metadata Headers" msgid "Metadata" -msgstr "Заголовки метаданных" +msgstr "Метаданные" #: libraries/plugins/export/ExportSql.class.php:1055 -#, fuzzy, php-format +#, php-format #| msgid "Metadata Headers" msgid "Metadata for %s" -msgstr "Заголовки метаданных" +msgstr "Метаданные для %s" #: libraries/plugins/export/ExportSql.class.php:1318 #: libraries/plugins/schema/pdf/Pdf_Relation_Schema.class.php:1004 @@ -10721,10 +10678,9 @@ msgid "Purpose:" msgstr "" #: libraries/plugins/export/PMA_ExportPdf.class.php:500 -#, fuzzy #| msgid "MIME type" msgid "MIME" -msgstr "MIME-тип" +msgstr "MIME" #: libraries/plugins/import/AbstractImportCsv.class.php:55 msgid "" @@ -10855,10 +10811,9 @@ msgstr "" "Не использовать атрибут AUTO_INCREMENT для нулевых значений" #: libraries/plugins/import/ImportSql.class.php:195 -#, fuzzy #| msgid "Read misses" msgid "Read as multibytes" -msgstr "Пропуски при чтении" +msgstr "" #: libraries/plugins/import/ImportXml.class.php:54 msgid "XML" @@ -10907,22 +10862,19 @@ msgid "Data Dictionary" msgstr "Словарь данных" #: libraries/plugins/schema/SchemaPdf.class.php:99 -#, fuzzy #| msgid "neither of the above" msgid "Order of the tables" -msgstr "иначе, чем в вариантах выше" +msgstr "Порядок таблиц" #: libraries/plugins/schema/SchemaPdf.class.php:103 -#, fuzzy #| msgid "Ascending" msgid "Name (Ascending)" -msgstr "По возрастанию" +msgstr "Имя (По возрастанию)" #: libraries/plugins/schema/SchemaPdf.class.php:104 -#, fuzzy #| msgid "Descending" msgid "Name (Descending)" -msgstr "По убыванию" +msgstr "Имя (По убыванию)" #: libraries/plugins/schema/dia/TableStatsDia.class.php:65 #: libraries/plugins/schema/eps/TableStatsEps.class.php:80 @@ -11070,7 +11022,6 @@ msgstr "" "пикселях. Изначальное соотношение сторон, сохраняется." #: libraries/plugins/transformations/abstract/LongToIPv4TransformationsPlugin.class.php:31 -#, fuzzy #| msgid "" #| "Converts an (IPv4) Internet network address into a string in Internet " #| "standard dotted format." @@ -11078,8 +11029,8 @@ msgid "" "Converts an (IPv4) Internet network address stored as a BIGINT into a string " "in Internet standard dotted format." msgstr "" -"Конвертирует сетевой адрес (IPv4) в стандартную строку с разделителем в виде " -"точки." +"Конвертирует сетевой адрес (IPv4), хранящийся в виде BIGINT,в стандартную " +"строку с разделителем в виде точки." #: libraries/plugins/transformations/abstract/PreApPendTransformationsPlugin.class.php:32 msgid "" @@ -11167,7 +11118,6 @@ msgid "Syntax highlighted CodeMirror editor for XML (and HTML)." msgstr "" #: libraries/plugins/transformations/output/Text_Plain_Binarytoip.class.php:32 -#, fuzzy #| msgid "" #| "Converts an (IPv4) Internet network address into a string in Internet " #| "standard dotted format." @@ -11175,20 +11125,18 @@ msgid "" "Converts an Internet network address stored as a binary string into a string " "in Internet standard (IPv4/IPv6) format." msgstr "" -"Конвертирует сетевой адрес (IPv4) в стандартную строку с разделителем в виде " -"точки." +"Конвертирует сетевой адрес, хранящийся в виде двоичной строки, в стандартную " +"строку (IPv4/IPv6)." #: libraries/plugins/transformations/output/Text_Plain_Json.class.php:47 -#, fuzzy #| msgid "Formats text as SQL query with syntax highlighting." msgid "Formats text as JSON with syntax highlighting." -msgstr "Форматирует текст в виде SQL запроса с подсветкой синтаксиса." +msgstr "Форматирует текст в виде JSON с подсветкой синтаксиса." #: libraries/plugins/transformations/output/Text_Plain_Xml.class.php:47 -#, fuzzy #| msgid "Formats text as SQL query with syntax highlighting." msgid "Formats text as XML with syntax highlighting." -msgstr "Форматирует текст в виде SQL запроса с подсветкой синтаксиса." +msgstr "Форматирует текст в виде XML с подсветкой синтаксиса." #: libraries/pmd_common.php:538 msgid "Error: relation already exists." @@ -11199,10 +11147,9 @@ msgid "FOREIGN KEY relation has been added." msgstr "Добавлена связь FOREIGN KEY." #: libraries/pmd_common.php:589 -#, fuzzy #| msgid "Error: Relation could not be added!" msgid "Error: FOREIGN KEY relation could not be added!" -msgstr "Ошибка: связь невозможно добавить!" +msgstr "Ошибка: связь внешнего ключа невозможно добавить!" #: libraries/pmd_common.php:594 msgid "Error: Missing index on column(s)." @@ -11217,34 +11164,29 @@ msgid "Internal relation has been added." msgstr "Добавлена внутренняя связь." #: libraries/pmd_common.php:623 -#, fuzzy #| msgid "Error: Relation could not be added!" msgid "Error: Internal relation could not be added!" -msgstr "Ошибка: связь невозможно добавить!" +msgstr "Ошибка: внутреннюю связь невозможно добавить!" #: libraries/pmd_common.php:664 -#, fuzzy #| msgid "FOREIGN KEY relation has been added." msgid "FOREIGN KEY relation has been removed." -msgstr "Добавлена связь FOREIGN KEY." +msgstr "Связь внешнего ключа была удалена." #: libraries/pmd_common.php:670 -#, fuzzy #| msgid "Error: Relation could not be added!" msgid "Error: FOREIGN KEY relation could not be removed!" -msgstr "Ошибка: связь невозможно добавить!" +msgstr "Ошибка: связь внешнего ключа невозможно удалить!" #: libraries/pmd_common.php:697 -#, fuzzy #| msgid "Error: Relation could not be added!" msgid "Error: Internal relation could not be removed!" -msgstr "Ошибка: связь невозможно добавить!" +msgstr "Ошибка: внутреннюю связь невозможно удалить!" #: libraries/pmd_common.php:701 -#, fuzzy #| msgid "Internal relation has been added." msgid "Internal relation has been removed." -msgstr "Добавлена внутренняя связь." +msgstr "Внутренняя связь удалена." #: libraries/relation.lib.php:89 msgid "not OK" @@ -11301,10 +11243,9 @@ msgid "Persistent recently used tables" msgstr "Недавно использованные таблицы" #: libraries/relation.lib.php:233 -#, fuzzy #| msgid "Persistent recently used tables" msgid "Persistent favorite tables" -msgstr "Недавно использованные таблицы" +msgstr "Постоянно используемые таблицы избранных" #: libraries/relation.lib.php:244 msgid "Persistent tables' UI preferences" @@ -11331,29 +11272,27 @@ msgid "Managing Central list of columns" msgstr "Управление центральным списком столбцов" #: libraries/relation.lib.php:327 -#, fuzzy #| msgid "Remember table's sorting" msgid "Remembering Designer Settings" -msgstr "Запоминать сортировку таблиц" +msgstr "Запоминание настроек дизайна" #: libraries/relation.lib.php:338 -#, fuzzy #| msgid "Invalid export type" msgid "Saving export templates" -msgstr "Ошибочный тип экспорта" +msgstr "Сохранение шаблонов экспорта" #: libraries/relation.lib.php:346 msgid "Quick steps to setup advanced features:" msgstr "Шаги необходимые для установки дополнительных функций:" #: libraries/relation.lib.php:352 -#, fuzzy, php-format +#, php-format #| msgid "" #| "Create the needed tables with the examples/create_tables.sql." msgid "Create the needed tables with the %screate_tables.sql." msgstr "" -"Создайте необходимые таблицы с помощью скрипта examples/create_tables." -"sql." +"Создайте необходимые таблицы с помощью скрипта " +"%screate_tables.sql." #: libraries/relation.lib.php:360 msgid "Create a pma user and give access to these tables." @@ -11384,12 +11323,14 @@ msgid "" msgstr "" #: libraries/relation.lib.php:1925 -#, fuzzy, php-format +#, php-format #| msgid "Missing phpMyAdmin configuration storage tables" msgid "" "%sCreate%s a database named 'phpmyadmin' and setup the phpMyAdmin " "configuration storage there." -msgstr "Отсутствие таблиц хранения конфигурации phpMyAdmin" +msgstr "" +"%sСоздать%s базу данных с именем 'phpmyadmin' и настроить там хранение " +"конфигурации phpMyAdmin." #: libraries/relation.lib.php:1933 #, php-format @@ -11398,10 +11339,10 @@ msgid "" msgstr "%sСоздать%s хранилище конфигурации phpMyAdmin в текущей базе данных." #: libraries/relation.lib.php:1941 -#, fuzzy, php-format +#, php-format #| msgid "Missing phpMyAdmin configuration storage tables" msgid "%sCreate%s missing phpMyAdmin configuration storage tables." -msgstr "Отсутствие таблиц хранения конфигурации phpMyAdmin" +msgstr "%sСоздать%s отсутствующие таблицы хранения конфигурации phpMyAdmin." #: libraries/replication_gui.lib.php:46 libraries/replication_gui.lib.php:339 #: libraries/server_databases.lib.php:387 @@ -12428,10 +12369,9 @@ msgstr "Группа пользователей" #: libraries/server_privileges.lib.php:726 #: libraries/server_privileges.lib.php:837 -#, fuzzy #| msgid "Persistent connections" msgid "Requires SSL-encrypted connections." -msgstr "Постоянные соединения" +msgstr "Требует SSL-шифрованного соединения." #: libraries/server_privileges.lib.php:734 msgid "Require SSL" @@ -12559,19 +12499,17 @@ msgstr "" "уже существует." #: libraries/server_privileges.lib.php:1503 -#, fuzzy #| msgid "User name:" msgid "Host name:" -msgstr "Имя пользователя:" +msgstr "Имя хоста:" #: libraries/server_privileges.lib.php:1508 #: libraries/server_privileges.lib.php:1610 #: libraries/server_privileges.lib.php:2242 #: libraries/server_privileges.lib.php:3203 -#, fuzzy #| msgid "Log name" msgid "Host name" -msgstr "Файл журнала" +msgstr "Имя хоста" #: libraries/server_privileges.lib.php:1645 msgid "Do not change the password" @@ -12589,16 +12527,14 @@ msgstr "Вы отменили привилегии для %s." #: libraries/server_privileges.lib.php:1933 #: libraries/server_privileges.lib.php:4063 -#, fuzzy #| msgid "Add user group" msgid "Add user account" -msgstr "Добавить группу пользователей" +msgstr "Добавить учетную запись пользователя" #: libraries/server_privileges.lib.php:1942 -#, fuzzy #| msgid "Database for user" msgid "Database for user account" -msgstr "База данных для пользователя" +msgstr "База данных для учетных записей пользователей" #: libraries/server_privileges.lib.php:1946 msgid "Create database with same name and grant all privileges." @@ -12696,16 +12632,15 @@ msgstr "" "… удалить предыдущего из таблиц пользователей и перезагрузить привилегии." #: libraries/server_privileges.lib.php:2728 -#, fuzzy #| msgid "Change Login Information / Copy User" msgid "Change login information / Copy user account" -msgstr "Изменить регистрационные данные / Копировать пользователя" +msgstr "" +"Изменить регистрационные данные / Копировать учетную запись пользователя" #: libraries/server_privileges.lib.php:2734 -#, fuzzy #| msgid "Create a new user with the same privileges and …" msgid "Create a new user account with the same privileges and …" -msgstr "Создать нового пользователя с такими же привилегиями и …" +msgstr "Создать новую учетную запись пользователя с такими же привилегиями и …" #: libraries/server_privileges.lib.php:3036 msgid "Column-specific privileges" @@ -12726,10 +12661,9 @@ msgid "Add privileges on the following table:" msgstr "Добавить привилегии на следующую таблицу:" #: libraries/server_privileges.lib.php:3370 -#, fuzzy #| msgid "Remove selected users" msgid "Remove selected user accounts" -msgstr "Удалить выбранных пользователей" +msgstr "Удалить выбранные учетные записи пользователей" #: libraries/server_privileges.lib.php:3376 msgid "Revoke all active privileges from the users and delete them afterwards." @@ -12789,16 +12723,14 @@ msgid "New" msgstr "Новый" #: libraries/server_privileges.lib.php:4084 -#, fuzzy #| msgid "Edit Privileges:" msgid "Edit privileges:" msgstr "Редактировать привилегии:" #: libraries/server_privileges.lib.php:4085 -#, fuzzy #| msgid "User group" msgid "User account" -msgstr "Группа пользователей" +msgstr "Учетная запись пользователя" #: libraries/server_privileges.lib.php:4144 msgid "" @@ -12809,10 +12741,9 @@ msgstr "" "которого вы в настоящее время вошли в систему." #: libraries/server_privileges.lib.php:4164 libraries/server_users.lib.php:25 -#, fuzzy #| msgid "Users overview" msgid "User accounts overview" -msgstr "Обзор пользователей" +msgstr "Обзор учетных записей пользователей" #: libraries/server_privileges.lib.php:4232 msgid "" @@ -12892,10 +12823,9 @@ msgid "Sent" msgstr "Отправлено" #: libraries/server_status.lib.php:232 -#, fuzzy #| msgid "max. concurrent connections" msgid "Max. concurrent connections" -msgstr "макс. одновременных соединений" +msgstr "Макс. одновременных соединений" #: libraries/server_status.lib.php:242 msgid "Failed attempts" @@ -13148,10 +13078,9 @@ msgid "Filters" msgstr "Фильтры" #: libraries/server_status_processes.lib.php:260 -#, fuzzy #| msgid "Show only alert values" msgid "Show only active" -msgstr "Выводить только предупреждающие значения" +msgstr "Выводить только активные" #: libraries/server_status_queries.lib.php:33 #, php-format @@ -13978,10 +13907,9 @@ msgid "This is a read-only variable and can not be edited" msgstr "" #: libraries/sql-parser/src/Components/AlterOperation.php:191 -#, fuzzy #| msgid "Iconic table operations" msgid "Unrecognized alter operation." -msgstr "Иконки операций над таблицами" +msgstr "" #: libraries/sql-parser/src/Components/Array2d.php:90 #, php-format @@ -14020,16 +13948,14 @@ msgid "Unexpected dot." msgstr "" #: libraries/sql-parser/src/Components/Expression.php:324 -#, fuzzy #| msgid "No tables selected." msgid "An alias was expected." -msgstr "Ни одна таблица не выбрана." +msgstr "" #: libraries/sql-parser/src/Components/ExpressionArray.php:93 -#, fuzzy #| msgid "No rows selected" msgid "An expression was expected." -msgstr "Для совершения действия необходимо выбрать одну или несколько строк" +msgstr "Ожидалось выражение." #: libraries/sql-parser/src/Components/FieldDefinition.php:255 msgid "A closing bracket was expected." @@ -14046,32 +13972,28 @@ msgid "This option conflicts with \"%1$s\"." msgstr "" #: libraries/sql-parser/src/Components/RenameOperation.php:102 -#, fuzzy #| msgid "The number of tables that are open." msgid "The old name of the table was expected." -msgstr "Количество открытых таблиц." +msgstr "Ожидалось старое имя таблицы." #: libraries/sql-parser/src/Components/RenameOperation.php:112 msgid "Keyword \"TO\" was expected." msgstr "" #: libraries/sql-parser/src/Components/RenameOperation.php:129 -#, fuzzy #| msgid "The number of tables that are open." msgid "The new name of the table was expected." -msgstr "Количество открытых таблиц." +msgstr "Ожидалось новое имя таблицы." #: libraries/sql-parser/src/Components/RenameOperation.php:147 -#, fuzzy #| msgid "Template was deleted." msgid "A rename operation was expected." -msgstr "Шаблон удален." +msgstr "Ожидалась операция переименования." #: libraries/sql-parser/src/Lexer.php:252 -#, fuzzy #| msgid "Unexpected characters on line %s." msgid "Unexpected character." -msgstr "Неожиданные символы на строке %s." +msgstr "Неожиданный символ." #: libraries/sql-parser/src/Lexer.php:280 msgid "Expected whitespace(s) before delimiter." @@ -14082,22 +14004,20 @@ msgid "Expected delimiter." msgstr "" #: libraries/sql-parser/src/Lexer.php:688 -#, fuzzy, php-format +#, php-format #| msgid "Event %1$s has been created." msgid "Ending quote %1$s was expected." -msgstr "Было создано событие %1$s." +msgstr "Ожидалась закрывающая кавычка %1$s." #: libraries/sql-parser/src/Lexer.php:721 -#, fuzzy #| msgid "Table name template" msgid "Variable name was expected." -msgstr "Шаблон имени таблицы" +msgstr "Ожидалось имя переменной." #: libraries/sql-parser/src/Parser.php:355 -#, fuzzy #| msgid "At Beginning of Table" msgid "Unexpected beginning of statement." -msgstr "В начало таблицы" +msgstr "Неожиданное начало выражения." #: libraries/sql-parser/src/Parser.php:370 msgid "Unrecognized statement type." @@ -14114,10 +14034,9 @@ msgid "Unrecognized keyword." msgstr "" #: libraries/sql-parser/src/Statements/CreateStatement.php:293 -#, fuzzy #| msgid "The number of tables that are open." msgid "The name of the entity was expected." -msgstr "Количество открытых таблиц." +msgstr "" #: libraries/sql-parser/src/Statements/CreateStatement.php:310 msgid "At least one field definition was expected." @@ -14185,7 +14104,7 @@ msgid "Showing as PHP code" msgstr "Отображает как PHP-код" #: libraries/sql.lib.php:1711 -#, fuzzy, php-format +#, php-format #| msgid "" #| "Current selection does not contain a unique column. Grid edit, checkbox, " #| "Edit, Copy and Delete features are not available." @@ -14194,10 +14113,10 @@ msgid "" "Edit, Copy and Delete features are not available. %s" msgstr "" "Данное выделение не содержит уникального столбца. Изменение сетки, " -"выставление галочки, редактирование, копирование и удаление невозможно." +"выставление галочки, редактирование, копирование и удаление невозможно. %s" #: libraries/sql.lib.php:1722 -#, fuzzy, php-format +#, php-format #| msgid "" #| "Current selection does not contain a unique column. Grid edit, checkbox, " #| "Edit, Copy and Delete features are not available." @@ -14206,7 +14125,8 @@ msgid "" "and Delete features may result in undesired behavior. %s" msgstr "" "Данное выделение не содержит уникального столбца. Изменение сетки, " -"выставление галочки, редактирование, копирование и удаление невозможно." +"редактирование, копирование и удаление могут привести к нежелательному " +"поведению. %s" #: libraries/sql.lib.php:1761 #, php-format @@ -14224,20 +14144,19 @@ msgid "Run SQL query/queries on database %s" msgstr "Выполнить SQL-запрос(ы) к базе данных %s" #: libraries/sql_query_form.lib.php:179 -#, fuzzy, php-format +#, php-format #| msgid "Run SQL query/queries on database %s" msgid "Run SQL query/queries on table %s" -msgstr "Выполнить SQL-запрос(ы) к базе данных %s" +msgstr "Выполнить SQL-запрос(ы) к таблице %s" #: libraries/sql_query_form.lib.php:255 msgid "Get auto-saved query" msgstr "" #: libraries/sql_query_form.lib.php:261 -#, fuzzy #| msgid "Bad parameters!" msgid "Bind parameters" -msgstr "Ошибочные параметры!" +msgstr "Связать параметры" #: libraries/sql_query_form.lib.php:308 msgid "Bookmark this SQL query:" @@ -14304,10 +14223,9 @@ msgid "Show create" msgstr "Вывести форму создания" #: libraries/structure.lib.php:349 -#, fuzzy #| msgid "Add prefix" msgid "Prefix" -msgstr "Добавить префикс" +msgstr "Префикс" #: libraries/structure.lib.php:351 msgid "Add prefix to table" @@ -14423,10 +14341,9 @@ msgid "Add %s column(s)" msgstr "Добавить %s поле(я)" #: libraries/structure.lib.php:1757 -#, fuzzy #| msgid "At Beginning of Table" msgid "at beginning of table" -msgstr "В начало таблицы" +msgstr "в начале таблицы" #: libraries/structure.lib.php:1771 #: templates/columns_definitions/move_column.phtml:12 @@ -14540,10 +14457,10 @@ msgid "Create version %1$s of %2$s" msgstr "Создать версию %1$s из %2$s" #: libraries/tracking.lib.php:74 -#, fuzzy, php-format +#, php-format #| msgid "Create version" msgid "Create version %1$s" -msgstr "Создать версию" +msgstr "Создать версию %1$s" #: libraries/tracking.lib.php:79 msgid "Track these data definition statements:" @@ -14576,10 +14493,9 @@ msgid "Deactivate now" msgstr "Выключить" #: libraries/tracking.lib.php:287 libraries/tracking.lib.php:350 -#, fuzzy #| msgid "Create version" msgid "Delete version" -msgstr "Создать версию" +msgstr "Удалить версию" #: libraries/tracking.lib.php:460 msgid "Tracking statements" @@ -14681,10 +14597,10 @@ msgid "Tracking for %1$s was deactivated at version %2$s." msgstr "Слежение за %1$s было выключено на версии %2$s." #: libraries/tracking.lib.php:1314 -#, fuzzy, php-format +#, php-format #| msgid "Create version %1$s of %2$s" msgid "Version %1$s of %2$s was deleted." -msgstr "Создать версию %1$s из %2$s" +msgstr "Версия %1$s из %2$s удалена." #: libraries/tracking.lib.php:1345 #, php-format @@ -15034,13 +14950,13 @@ msgid "Row: %1$s, Column: %2$s, Error: %3$s" msgstr "Строка: %1$s, Столбец: %2$s, Ошибка: %3$s" #: tbl_structure.php:67 -#, fuzzy, php-format +#, php-format #| msgid "The column name '%s' is a MySQL reserved keyword." msgid "The name '%s' is a MySQL reserved keyword." msgid_plural "The names '%s' are MySQL reserved keywords." -msgstr[0] "Столбец с именем '%s' является зарезервированным словом MySQL." -msgstr[1] "Столбец с именем '%s' является зарезервированным словом MySQL." -msgstr[2] "Столбец с именем '%s' является зарезервированным словом MySQL." +msgstr[0] "Имя '%s' является зарезервированным словом MySQL." +msgstr[1] "Имена '%s' являются зарезервированными словами MySQL." +msgstr[2] "Имена '%s' являются зарезервированными словами MySQL." #: tbl_structure.php:118 msgid "No column selected." @@ -15052,16 +14968,14 @@ msgid "Tracking of %s is activated." msgstr "Слежение за %s включено." #: tbl_tracking.php:102 -#, fuzzy #| msgid "The selected users have been deleted successfully." msgid "Tracking versions deleted successfully." -msgstr "Выбранные пользователи были успешно удалены." +msgstr "Отслеживаемые версии были успешно удалены." #: tbl_tracking.php:107 -#, fuzzy #| msgid "No rows selected" msgid "No versions selected." -msgstr "Для совершения действия необходимо выбрать одну или несколько строк" +msgstr "Версии не выбраны." #: tbl_tracking.php:138 msgid "SQL statements executed." @@ -15114,10 +15028,9 @@ msgid "Pick from Central Columns" msgstr "Выбрать из центральных столбцов" #: templates/columns_definitions/column_virtuality.phtml:46 -#, fuzzy #| msgid "Compression" msgid "Expression" -msgstr "Упаковать" +msgstr "Выражение" #: templates/columns_definitions/move_column.phtml:7 msgid "first" @@ -15207,10 +15120,9 @@ msgid "Toggle" msgstr "" #: templates/designer/database_tables.phtml:40 -#, fuzzy #| msgid "Table structure" msgid "See table structure" -msgstr "Структура таблицы" +msgstr "Отобразить структуру таблицы" #: templates/designer/delete_relation_panel.phtml:21 msgid "Delete relation" @@ -15360,10 +15272,9 @@ msgstr "Переместить меню" #: templates/designer/side_menu.phtml:181 #: templates/designer/side_menu.phtml:186 -#, fuzzy #| msgid "Partial texts" msgid "Pin text" -msgstr "Сокращенные тексты" +msgstr "" #: templates/designer/table_list.phtml:4 msgid "Hide/Show all" @@ -15420,10 +15331,9 @@ msgid "" msgstr "Имя \"PRIMARY\" должен иметь только первичный индекс!" #: templates/index_form.phtml:40 -#, fuzzy #| msgid "Index cache size" msgid "Index choice:" -msgstr "Размер кеша индекса" +msgstr "Выбор индекса:" #: templates/index_form.phtml:57 msgid "Key block size:" @@ -15434,10 +15344,9 @@ msgid "Index type:" msgstr "Тип индекса :" #: templates/index_form.phtml:86 -#, fuzzy #| msgid "User:" msgid "Parser:" -msgstr "Пользователь:" +msgstr "Парсер:" #: templates/index_form.phtml:102 msgid "Comment:" @@ -15602,7 +15511,6 @@ msgid "Series column:" msgstr "Столбец серии:" #: templates/tbl_chart.phtml:130 -#, fuzzy #| msgid "Value column:" msgid "Value Column:" msgstr "Столбец значения:" @@ -16935,7 +16843,7 @@ msgid "The InnoDB log file size is inadequately large." msgstr "Размер файла журнала InnoDB неадекватно велик." #: libraries/advisory_rules.txt:447 -#, fuzzy, php-format +#, php-format #| msgid "" #| "It is usually sufficient to set {innodb_log_file_size} to 25%% of the " #| "size of {innodb_buffer_pool_size}. A very big {innodb_log_file_size} " @@ -16959,13 +16867,13 @@ msgid "" msgstr "" "Обычно бывает достаточно установить {innodb_log_file_size} в 25%% от размера " "{innodb_buffer_pool_size}. Очень большое значение {innodb_log_file_size} " -"заметно замедляет восстановление после сбоя. Смотрите данную статью. Необходимо остановить сервер, удалить файлы журналов " "InnoDB, установить новое значение в my.cnf, запустить сервер, и проверить " -"журнал ошибок на предмет наличия проблем. Смотрите так же данную запись блога" +"журнал ошибок на предмет наличия проблем. Смотрите так же данную запись блога" #: libraries/advisory_rules.txt:448 #, php-format @@ -16981,7 +16889,7 @@ msgid "Your InnoDB buffer pool is fairly small." msgstr "Буферный пул InnoDB имеет маленький размер." #: libraries/advisory_rules.txt:454 -#, fuzzy, php-format +#, php-format #| msgid "" #| "The InnoDB buffer pool has a profound impact on performance for InnoDB " #| "tables. Assign all your remaining memory to this buffer. For database " @@ -17013,9 +16921,9 @@ msgstr "" "случае, вы должны внимательно оценить потребление памяти другими службами и " "не InnoDB таблицами, соответственно установив данную переменную. При слишком " "высоком значении переменной, ваша система начнет использовать файл подкачки, " -"что значительно уменьшит ее производительность. Смотрите так же данную статью" +"что значительно уменьшит ее производительность. Смотрите так же " +"данную статью" #: libraries/advisory_rules.txt:455 #, php-format From 7f627b07d1aad03bd520f71055e45a1de67e2039 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=9A=D0=B0=D1=80=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Sat, 25 Jul 2015 20:42:17 +0200 Subject: [PATCH 11/13] Translated using Weblate (Russian) Currently translated at 97.0% (3100 of 3194 strings) [CI skip] --- po/ru.po | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/po/ru.po b/po/ru.po index 5d0240edf0..8dbca31e92 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 20:40+0200\n" -"Last-Translator: Andrey Aleksanyants \n" +"PO-Revision-Date: 2015-07-25 20:42+0200\n" +"Last-Translator: Олег Карпов \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -1021,6 +1021,8 @@ msgid "" "Do you really want to DROP the selected partition(s)? This will also DELETE " "the data related to the selected partition(s)!" msgstr "" +"Вы действительно хотите РАЗРУШИТЬ выбранный(е) раздел(ы)? Это также УДАЛИТ " +"данные, относящиеся к выбранному(ым) разделу(ам)!" #: js/messages.php:65 #| msgid "Do you really want to delete the search \"%s\"?" @@ -1035,14 +1037,18 @@ msgid "" "collation; in this case we suggest you revert to the original collation and " "refer to the tips at " msgstr "" +"Данная операция выполнит попытку конвертировать ваши данные в новую сверку. " +"В редких случаях, особенно, когда символ не существует, данный процесс может " +"привести к неправильному отображению данных в новой сверке; в таких случаях " +"мы рекомендуем вернуться к изначальной сверке и ссылаться на подсказки в " #: js/messages.php:73 msgid "Garbled Data" -msgstr "" +msgstr "Искаженные данные" #: js/messages.php:75 msgid "Are you sure you wish to change the collation and convert the data?" -msgstr "" +msgstr "Вы уверены, что хотите изменить сверку и конвертировать данные?" #: js/messages.php:77 msgid "" @@ -1053,12 +1059,18 @@ msgid "" "column(s) editing feature (the \"Change\" Link) on the table structure page. " "" msgstr "" +"Посредством данной операции MySQL делает попытку расположить значения данных " +"между сверками. Если наборы символов неполны, может произойти потеря данных " +"и потерянные данные НЕ смогут быть восстановлены посредством " +"обратного изменения сверки(ок) колонки. Чтобы конвертировать существующие " +"данные, рекомендуется использовать возможность редактировать колонку(и) (" +"ссылка \"Изменить\") на странице структуры таблицы." #: js/messages.php:85 msgid "" "Are you sure you wish to change all the column collations and convert the " "data?" -msgstr "" +msgstr "Вы уверены, что хотите изменить сверки колонок и конвертировать данные?" #: js/messages.php:88 msgid "Save & Close" @@ -1743,7 +1755,7 @@ msgstr "Отменить" #: js/messages.php:296 libraries/Header.class.php:459 msgid "Page-related settings" -msgstr "Настройки страницы" +msgstr "Настройки, касающиеся страницы" #: js/messages.php:297 libraries/config/FormDisplay.tpl.php:402 msgid "Apply" @@ -2621,7 +2633,7 @@ msgstr "%s запрос(ов) выполнено %s раз(а) за %s секу #: js/messages.php:601 #, php-format msgid "%s argument(s) passed" -msgstr "" +msgstr "%s аргумент(ов/а) передано" #: js/messages.php:602 #| msgid "Table comments" @@ -2635,7 +2647,7 @@ msgstr "Скрыть аргументы" #: js/messages.php:604 libraries/Console.class.php:318 msgid "Time taken:" -msgstr "" +msgstr "Занято времени:" #: js/messages.php:605 msgid "" @@ -2902,7 +2914,7 @@ msgstr "Секунда" #: js/messages.php:774 msgid "This field is required" -msgstr "" +msgstr "Это поле востребовано" #: js/messages.php:775 #| msgid "Use text field" From 2b84fccce9341e3046aceef4d42b9e6bb5528b21 Mon Sep 17 00:00:00 2001 From: Andrey Aleksanyants Date: Sat, 25 Jul 2015 20:42:45 +0200 Subject: [PATCH 12/13] Translated using Weblate (Russian) Currently translated at 97.0% (3100 of 3194 strings) [CI skip] --- po/ru.po | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/po/ru.po b/po/ru.po index 8dbca31e92..7990a62f1e 100644 --- a/po/ru.po +++ b/po/ru.po @@ -5,7 +5,7 @@ msgstr "" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" "PO-Revision-Date: 2015-07-25 20:42+0200\n" -"Last-Translator: Олег Карпов \n" +"Last-Translator: Andrey Aleksanyants \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -2914,7 +2914,7 @@ msgstr "Секунда" #: js/messages.php:774 msgid "This field is required" -msgstr "Это поле востребовано" +msgstr "Это обязательное поле" #: js/messages.php:775 #| msgid "Use text field" From c80734a0cb3ec7fb742023c04e9a2fb660c6cc08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9E=D0=BB=D0=B5=D0=B3=20=D0=9A=D0=B0=D1=80=D0=BF=D0=BE?= =?UTF-8?q?=D0=B2?= Date: Sat, 25 Jul 2015 20:45:01 +0200 Subject: [PATCH 13/13] Translated using Weblate (Russian) Currently translated at 97.2% (3106 of 3194 strings) [CI skip] --- po/ru.po | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/po/ru.po b/po/ru.po index 7990a62f1e..2ca8f469ea 100644 --- a/po/ru.po +++ b/po/ru.po @@ -4,8 +4,8 @@ msgstr "" "Project-Id-Version: phpMyAdmin 4.5.0-dev\n" "Report-Msgid-Bugs-To: phpmyadmin-devel@lists.sourceforge.net\n" "POT-Creation-Date: 2015-07-23 03:54-0700\n" -"PO-Revision-Date: 2015-07-25 20:42+0200\n" -"Last-Translator: Andrey Aleksanyants \n" +"PO-Revision-Date: 2015-07-25 20:45+0200\n" +"Last-Translator: Олег Карпов \n" "Language-Team: Russian " "\n" "Language: ru\n" @@ -3326,6 +3326,8 @@ msgid "" "Execute queries on Enter and insert new line with Shift + Enter. To make " "this permanent, view settings." msgstr "" +"Выполнить запрос по нажатию Enter и вставить новую строку по нажатию Shift + " +"Enter. Чтобы сделать эту опцию постоянной, смотрите настройки." #: libraries/Console.class.php:385 #| msgid "Switch to copied table" @@ -5573,6 +5575,10 @@ msgid "" "MySQL server is enabled by matching the IP or hostname of the MySQL server " "to the given regular expression." msgstr "" +"Ограничивает доступ к MySQL-серверам, в которые пользователь может войти, " +"когда авторизация на произвольном MySQL-сервере доступна посредством " +"прохождения IP-адреса или имени хоста MySQL-сервера заданного регулярного " +"выражения." #: libraries/config/messages.inc.php:25 msgid "Restrict login to MySQL server" @@ -5752,6 +5758,7 @@ msgstr "Подтверждать DROP запросы" msgid "" "Log SQL queries and their execution time, to be displayed in the console" msgstr "" +"Вести лог SQL-запросов и времени их выполнения для отображения в консоли" #: libraries/config/messages.inc.php:93 msgid "Tab that is displayed when entering a database." @@ -6090,9 +6097,7 @@ msgstr "Лимит внешних ключей" #: libraries/config/messages.inc.php:222 msgid "Default value for foreign key checks checkbox for some queries." -msgstr "" -"Значение по умолчанию для флажка проверок внешнего ключа для некоторых " -"запросов." +msgstr "Значение флажков внешних ключей по умолчанию для некоторых запросов." #: libraries/config/messages.inc.php:224 #| msgid "Foreign key check:" @@ -6456,11 +6461,11 @@ msgstr "Не прерывать при возникновении ошибки #: libraries/config/messages.inc.php:354 libraries/config/messages.inc.php:366 msgid "Add ON DUPLICATE KEY UPDATE" -msgstr "" +msgstr "Добавить ОБНОВЛЕНИЕ ПРИ ДУБЛИРОВАНИИ ДАННЫХ (ON DUPLICATE KEY UPDATE)" #: libraries/config/messages.inc.php:355 libraries/config/messages.inc.php:367 msgid "Update data when duplicate keys found on import" -msgstr "" +msgstr "Обновлять данные, если при импорте найдены дублированные ключи" #: libraries/config/messages.inc.php:358 msgid "" @@ -6671,7 +6676,7 @@ msgstr "Лимит памяти" #: libraries/config/messages.inc.php:443 msgid "In the navigation panel, replaces the database tree with a selector" -msgstr "" +msgstr "В панели навигации заменяет дерево базы данных селектором" #: libraries/config/messages.inc.php:445 msgid "Show databases navigation as tree"